Извлечение ключевых значений из CloudTrail Lookup-Events из AWS-CLI с помощью jq

я выполнил команду, чтобы получить события поиска для действий ConsoleLogin в учетной записи AWS. Я хочу извлечь ключевые значения для mfaAuthenticated , eventSource и eventType из этого заданного вывода json

Вывод, который я получил от приведенной выше команды

{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "XXXXXXXXXXXXXXXXX:dkboss",
    "arn": "XXXXXXXXXXXXXXXXXXXXXXXXX/dkboss",
    "accountId": "XXXXXXXXXXXXXXXX",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
        "arn": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "accountId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "userName": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
      },
      "webIdFederationData": {},
      "attributes": {
        "creationDate": "2022-11-27T15:24:28Z",
        "mfaAuthenticated": "false"             ---------> i want this key value
      }
    }
  },
  "eventTime": "2022-11-27T15:24:29Z",
  "eventSource": "signin.amazonaws.com", ---------> i want this key value
  "eventName": "ConsoleLogin",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "1.1.1.1",
  "userAgent": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "requestParameters": null,
  "responseElements": {
    "ConsoleLogin": "Success"
  },
  "additionalEventData": {
    "MobileVersion": "No",
    "MFAUsed": "No"
  },
  "eventID": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "readOnly": false,
  "eventType": "AwsConsoleSignIn",      ---------> i want this key value
  "managementEvent": true,
  "recipientAccountId": "XXXXXXXXXXXXXXXXXXXXXXX",
  "eventCategory": "Management",
  "tlsDetails": {
    "tlsVersion": "TLSv1.2",
    "cipherSuite": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "clientProvidedHostHeader": "signin.aws.amazon.com"
  }
}

Я выполнил эту команду, чтобы получить приведенный выше вывод json:

aws cloudtrail --region us-east-1 lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin --start-time $(date -d "-60 минут" +%s) --query 'Events[ ].CloudTrailEvent.attributes' --output text | jq

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
183
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не указали никаких условий, как выбирать узлы или как форматировать вывод. Итак, как насчет того, чтобы просто перейти к их местонахождению. С опцией --raw-output (или -r) jq будет выводить их декодированные значения. Сделав его потоком в фильтре (разделив их запятыми ,), вы сделаете его списком, разделенным новой строкой.

jq --raw-output '
  .userIdentity.sessionContext.attributes.mfaAuthenticated,
  .eventSource,
  .eventType
'
false
signin.amazonaws.com
AwsConsoleSignIn

спасибо @pmf. Есть ли способ получить весь вывод json, отфильтровав заданные значения ключа? Вот команда для этого, я попробовал это, чтобы получить события cloudtrail, выполнив запрос для входа в систему аутентификации mfa. Команда: aws cloudtrail --region us-east-1 lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin --start-time $(date -d "-90 минут" +%s) --query «Events[].CloudTrailEvent.userIdentity.sessionContext.attrib‌​utes.mfaA прошел проверку подлинности» Это не сработало

danish 27.11.2022 17:31

Если вы предоставите в своем вопросе ожидаемый образец вывода на основе предоставленного вами образца ввода, я могу адаптировать к нему свой ответ.

pmf 27.11.2022 17:37

Другие вопросы по теме

Можно ли использовать формирование облака для развертывания Cloud9 ide на образе EC2, который не устарел?
Команда входа в CLI AWS
Я хочу удалить пользователей IAM со скриптом, который имеет префикс «хранилище-» и старше 2 дней
AWS SageMaker (с отключенным Интернетом) не может подключиться к STS
Интерфейс командной строки AWS: как расширить переменную в целях отправки команд aws ssm?
CLI Bash/AWS: попытка выяснить, как проверить массив времени безотказной работы с двумя проверками при перезагрузке групп экземпляров EC2 через AWS SSM
AWS: ускорьте копирование большого количества очень маленьких файлов
Как массово удалить несколько моментальных снимков AWS с помощью интерфейса командной строки AWS?
Не удается установить идентификатор отправителя с помощью интерфейса командной строки AWS для SMS через Amazon SNS
Конвейер Jenkins — проверьте, существует ли служба ECS