Exemplos do CloudTrail usando a AWS CLI - AWS Command Line Interface

Esta documentação é somente para a versão 1 da AWS CLI. Para obter a documentação relacionada à AWS CLI versão 2, consulte o Guia do usuário da versão 2.

Exemplos do CloudTrail usando a AWS CLI

Os exemplos de código a seguir mostram como realizar ações e implementar cenários comuns usando o AWS Command Line Interface com o CloudTrail.

Ações são trechos de código de programas maiores e devem ser executadas em contexto. Embora as ações mostrem como chamar funções de serviço individuais, você pode ver as ações no contexto em seus cenários relacionados.

Cada exemplo inclui um link para o código-fonte completo, em que você pode encontrar instruções sobre como configurar e executar o código.

Tópicos

Ações

O código de exemplo a seguir mostra como usar add-tags.

AWS CLI

Para adicionar tags à trilha

O comando add-tags a seguir adiciona tags à Trail1:

aws cloudtrail add-tags --resource-id arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --tags-list Key=name,Value=Alice Key=location,Value=us
  • Para ver detalhes da API, consulte AddTags na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar create-subscription.

AWS CLI

Para criar e configurar recursos da AWS em uma trilha

O comando create-subscription a seguir cria um novo bucket do S3 e um tópico do SNS para Trail1:

aws cloudtrail create-subscription --name Trail1 --s3-new-bucket my-bucket --sns-new-topic my-topic

Saída:

Setting up new S3 bucket my-bucket... Setting up new SNS topic my-topic... Creating/updating CloudTrail configuration... CloudTrail configuration: { "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "my-bucket", "SnsTopicName": "my-topic", "HomeRegion": "us-east-1" } ], "ResponseMetadata": { "HTTPStatusCode": 200, "RequestId": "f39e51f6-c615-11e5-85bd-d35ca21ee3e2" } } Starting CloudTrail service... Logs will be delivered to my-bucket
  • Para ver detalhes da API, consulte CreateSubscription na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar create-trail.

AWS CLI

Para criar uma trilha

O comando create-trail a seguir cria uma trilha multirregional chamada Trail1 e especifica um bucket do S3:

aws cloudtrail create-trail --name Trail1 --s3-bucket-name my-bucket --is-multi-region-trail

Saída:

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "my-bucket" }
  • Para ver detalhes da API, consulte CreateTrail na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar delete-trail.

AWS CLI

Como para excluir uma trilha

O comando delete-trail a seguir cria uma trilha chamada Trail1:

aws cloudtrail delete-trail --name Trail1
  • Para ver detalhes da API, consulte DeleteTrail na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar describe-trails.

AWS CLI

Para descrever uma trilha

O comando describe-trails a seguir retorna as configurações de Trail1 e Trail2:

aws cloudtrail describe-trails --trail-name-list Trail1 Trail2

Saída:

{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "my-bucket", "CloudWatchLogsRoleArn": "arn:aws:iam::123456789012:role/CloudTrail_CloudWatchLogs_Role", "CloudWatchLogsLogGroupArn": "arn:aws:logs:us-east-1:123456789012:log-group:CloudTrail:*", "SnsTopicName": "my-topic", "HomeRegion": "us-east-1" }, { "IncludeGlobalServiceEvents": true, "Name": "Trail2", "S3KeyPrefix": "my-prefix", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "my-bucket", "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c5ae5ac-3c13-421e-8335-c7868ef6a769", "HomeRegion": "us-east-1" } ] }
  • Para ver detalhes da API, consulte DescribeTrails na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar get-event-selectors.

AWS CLI

Como visualizar as configurações do seletor de eventos de uma trilha

O comando get-event-selectors a seguir retorna as configurações da Trail1:

aws cloudtrail get-event-selectors --trail-name Trail1

Saída:

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1" }
  • Para ver detalhes da API, consulte GetEventSelectors na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar get-trail-status.

AWS CLI

Para obter o status de uma trilha

O comando get-trail-status a seguir retorna os detalhes de entrega e registro em log da Trail1:

aws cloudtrail get-trail-status --name Trail1

Saída:

{ "LatestNotificationTime": 1454022144.869, "LatestNotificationAttemptSucceeded": "2016-01-28T23:02:24Z", "LatestDeliveryAttemptTime": "2016-01-28T23:02:24Z", "LatestDeliveryTime": 1454022144.869, "TimeLoggingStarted": "2015-11-06T18:36:38Z", "LatestDeliveryAttemptSucceeded": "2016-01-28T23:02:24Z", "IsLogging": true, "LatestCloudWatchLogsDeliveryTime": 1454022144.918, "StartLoggingTime": 1446834998.695, "StopLoggingTime": 1446834996.933, "LatestNotificationAttemptTime": "2016-01-28T23:02:24Z", "TimeLoggingStopped": "2015-11-06T18:36:36Z" }
  • Para ver detalhes da API, consulte GetTrailStatus na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar list-public-keys.

AWS CLI

Para listar todas as chaves públicas de uma trilha

O comando list-public-keys a seguir retorna todas as chaves públicas cujas chaves privadas foram usadas para assinar os arquivos de resumo dentro do período especificado:

aws cloudtrail list-public-keys --start-time 2016-01-01T20:30:00.000Z

Saída:

{ "PublicKeyList": [ { "ValidityStartTime": 1453076702.0, "ValidityEndTime": 1455668702.0, "Value": "MIIBCgKCAQEAlSS3cl92HDycr/MTj0moOhas8habjrraXw+KzlWF0axSI2tcF+3iJ9BKQAVSKxGwxwu3m0wG3J+kUl1xboEcEPHYoIYMbgfSw7KGnuDKwkLzsQWhUJ0cIbOHASox1vv/5fNXkrHhGbDCHeVXm804c83nvHUEFYThr1PfyP/8HwrCtR3FX5OANtQCP61C1nJtSSkC8JSQUOrIP4CuwJjc+4WGDk+BGH5m9iuiAKkipEHWmUl8/P7XpfpWQuk4h8g3pXZOrNXr08lbh4d39svj7UqdhvOXoBISp9t/EXYuePGEtBdrKD9Dz+VHwyUPtBQvYr9BnkF88qBnaPNhS44rzwIDAQAB", "Fingerprint": "7f3f401420072e50a65a141430817ab3" } ] }
  • Para ver detalhes da API, consulte ListPublicKeys na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar list-tags.

AWS CLI

Para listar as tags de uma trilha

O comando list-tags a seguir lista as tags de Trail1 e Trail2:

aws cloudtrail list-tags --resource-id-list arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2

Saída:

{ "ResourceTagList": [ { "ResourceId": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "TagsList": [ { "Value": "Alice", "Key": "name" }, { "Value": "us", "Key": "location" } ] }, { "ResourceId": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2", "TagsList": [ { "Value": "Bob", "Key": "name" } ] } ] }
  • Para obter detalhes da API, consulte ListTags na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar lookup-events.

AWS CLI

Como pesquisar eventos em uma trilha

O comando lookup-events a seguir pesquisa eventos de atividade da API pelo atributo EventName:

aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin

Saída:

{ "Events": [ { "EventId": "654ccbc0-ba0d-486a-9076-dbf7274677a7", "Username": "my-session-name", "EventTime": "2021-11-18T09:41:02-08:00", "CloudTrailEvent": "{\"eventVersion\":\"1.02\",\"userIdentity\":{\"type\":\"AssumedRole\",\"principalId\":\"AROAJIKPFTA72SWU4L7T4:my-session-name\",\"arn\":\"arn:aws:sts::123456789012:assumed-role/my-role/my-session-name\",\"accountId\":\"123456789012\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2016-01-26T21:42:12Z\"},\"sessionIssuer\":{\"type\":\"Role\",\"principalId\":\"AROAJIKPFTA72SWU4L7T4\",\"arn\":\"arn:aws:iam::123456789012:role/my-role\",\"accountId\":\"123456789012\",\"userName\":\"my-role\"}}},\"eventTime\":\"2016-01-26T21:42:12Z\",\"eventSource\":\"signin.amazonaws.com\",\"eventName\":\"ConsoleLogin\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"72.21.198.70\",\"userAgent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36\",\"requestParameters\":null,\"responseElements\":{\"ConsoleLogin\":\"Success\"},\"additionalEventData\":{\"MobileVersion\":\"No\",\"MFAUsed\":\"No\"},\"eventID\":\"654ccbc0-ba0d-486a-9076-dbf7274677a7\",\"eventType\":\"AwsConsoleSignIn\",\"recipientAccountId\":\"123456789012\"}", "EventName": "ConsoleLogin", "Resources": [] } ] }
  • Para ver detalhes da API, consulte LookupEvents na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar put-event-selectors.

AWS CLI

Exemplo 1: configurar uma trilha para fazer o log de eventos de gerenciamento e eventos de dados usando seletores de eventos avançados

Você pode adicionar seletores de eventos avançados e condições para seus seletores de eventos avançados, até um máximo de 500 valores para todas as condições e seletores em uma trilha. É possível usar seletores de eventos avançados para fazer o log de todos os tipos de eventos de dados. Você pode usar seletores de eventos avançados ou seletores de eventos básicos, mas não ambos. Se você aplicar seletores de eventos avançados a uma trilha, todos os seletores de eventos básicos existentes serão substituídos.

O exemplo a seguir cria um seletor de eventos avançado para uma trilha chamada myTrail para fazer log de todos os eventos de gerenciamento, fazer log das chamadas das APIs S3 PutObject e DeleteObject para todos, exceto um, bucket do S3, fazer log das chamadas da API de dados para uma função do Lambda chamada myFunction e fazer log das chamadas da API Publish em um tópico do SNS chamado myTopic.

aws cloudtrail put-event-selectors \ --trail-name myTrail \ --advanced-event-selectors '[{"Name": "Log all management events", "FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Management"] }] },{"Name": "Log PutObject and DeleteObject events for all but one bucket","FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Data"] },{ "Field": "resources.type", "Equals": ["AWS::S3::Object"] },{ "Field": "eventName", "Equals": ["PutObject","DeleteObject"] },{ "Field": "resources.ARN", "NotStartsWith": ["arn:aws:s3:::sample_bucket_name/"] }]},{"Name": "Log data events for a specific Lambda function","FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Data"] },{ "Field": "resources.type", "Equals": ["AWS::Lambda::Function"] },{ "Field": "resources.ARN", "Equals": ["arn:aws:lambda:us-east-1:123456789012:function:myFunction"] }]},{"Name": "Log all Publish API calls on a specific SNS topic","FieldSelectors": [{ "Field": "eventCategory", "Equals": ["Data"] },{ "Field": "resources.type", "Equals": ["AWS::SNS::Topic"] },{ "Field": "eventName", "Equals": ["Publish"] },{ "Field": "resources.ARN", "Equals": ["arn:aws:sns:us-east-1:123456789012:myTopic.fifo"] }]}]'

Saída:

{ "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/myTrail", "AdvancedEventSelectors": [ { "Name": "Log all management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] }, { "Name": "Log PutObject and DeleteObject events for all but one bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "eventName", "Equals": [ "PutObject", "DeleteObject" ] }, { "Field": "resources.ARN", "NotStartsWith": [ "arn:aws:s3:::sample_bucket_name/" ] } ] }, { "Name": "Log data events for a specific Lambda function", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::Lambda::Function" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:lambda:us-east-1:123456789012:function:myFunction" ] } ] }, { "Name": "Log all Publish API calls on a specific SNS topic", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::SNS::Topic" ] }, { "Field": "eventName", "Equals": [ "Publish" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:sns:us-east-1:123456789012:myTopic.fifo" ] } ] } ] }

Para obter mais informações, consulte Eventos de logs utilizando seletores de eventos avançados no Guia do usuário do AWS CloudTrail.

Exemplo 2: configurar seletores de eventos para uma trilha para fazer o log de todos os eventos de gerenciamento e eventos de dados

Você pode configurar até 5 seletores de eventos para uma trilha e até 250 recursos de dados para uma trilha. Os seletores de eventos também são chamados de seletores de eventos básicos. Você pode usar seletores de eventos para fazer o log de eventos de gerenciamento e eventos de dados para objetos do S3, funções do Lambda e tabelas do DynnamoDB. Para fazer o log de eventos de dados em outros tipos de recursos, use seletores de eventos avançados.

O exemplo a seguir cria um seletor de eventos para uma trilha denominada TrailName com o objetivo de incluir todos os eventos de gerenciamento, eventos de dados para duas combinações de bucket/prefixo do Amazon S3 e eventos de dados para uma única função do AWS Lambda chamada hello-world-python-function.

aws cloudtrail put-event-selectors \ --trail-name TrailName \ --event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"DataResources": [{"Type":"AWS::S3::Object", "Values": ["arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda:us-west-2:999999999999:function:hello-world-python-function"]}]}]'

Saída:

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2" ], "Type": "AWS::S3::Object" }, { "Values": [ "arn:aws:lambda:us-west-2:123456789012:function:hello-world-python-function" ], "Type": "AWS::Lambda::Function" }, ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

Para obter mais informações, consulte Eventos de logs utilizando seletores de eventos básicos no Guia do usuário do AWS CloudTrail.

Exemplo 3: configurar seletores de eventos para uma trilha para fazer o log de eventos de gerenciamento, todos os eventos de dados do S3 em objetos do S3 e todos os eventos de dados do Lambda em funções em sua conta

O exemplo a seguir cria um seletor de eventos de uma trilha denominada TrailName2 que inclui todos os eventos de gerenciamento e todos os eventos de dados para todos os buckets do Amazon S3 e as funções do AWS Lambda na conta da AWS.

aws cloudtrail put-event-selectors \ --trail-name TrailName2 \ --event-selectors '[{"ReadWriteType": "All","IncludeManagementEvents": true,"DataResources": [{"Type":"AWS::S3::Object", "Values": ["arn:aws:s3"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda"]}]}]'

Saída:

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3" ], "Type": "AWS::S3::Object" }, { "Values": [ "arn:aws:lambda" ], "Type": "AWS::Lambda::Function" }, ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName2" }

Para obter mais informações, consulte Eventos de logs utilizando seletores de eventos básicos no Guia do usuário do AWS CloudTrail.

  • Para ver detalhes da API, consulte PutEventSelectors na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar remove-tags.

AWS CLI

Para remover etiquetas de uma trilha

O comando remove-tags a seguir marca as tags especificadas da Trail1:

aws cloudtrail remove-tags --resource-id arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --tags-list Key=name Key=location
  • Para ver detalhes da API, consulte RemoveTags na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar start-logging.

AWS CLI

Para iniciar o registro de uma trilha

O comando start-logging a seguir ativa o registro em log da Trail1:

aws cloudtrail start-logging --name Trail1
  • Para ver detalhes da API, consulte StartLogging na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar stop-logging.

AWS CLI

Como parar de registrar uma trilha

O comando stop-logging a seguir desativa o registro em log da Trail1:

aws cloudtrail stop-logging --name Trail1
  • Para ver detalhes da API, consulte StopLogging na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar update-subscription.

AWS CLI

Para atualizar as configurações de uma trilha

O comando update-subscription a seguir atualiza a trilha para especificar um novo bucket do S3 e um tópico do SNS:

aws cloudtrail update-subscription --name Trail1 --s3-new-bucket my-bucket-new --sns-new-topic my-topic-new

Saída:

Setting up new S3 bucket my-bucket-new... Setting up new SNS topic my-topic-new... Creating/updating CloudTrail configuration... CloudTrail configuration: { "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "my-bucket-new", "SnsTopicName": "my-topic-new", "HomeRegion": "us-east-1" } ], "ResponseMetadata": { "HTTPStatusCode": 200, "RequestId": "31126f8a-c616-11e5-9cc6-2fd637936879" } }
  • Para ver detalhes da API, consulte UpdateSubscription na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar update-trail.

AWS CLI

Para atualizar uma trilha

O comando update-trail a seguir atualiza uma trilha para usar um bucket existente para entrega de logs:

aws cloudtrail update-trail --name Trail1 --s3-bucket-name my-bucket

Saída:

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "my-bucket" }
  • Para ver detalhes da API, consulte UpdateTrail na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar validate-logs.

AWS CLI

Para validar um arquivo de log

O comando validate-logs a seguir valida os logs da Trail1:

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --start-time 20160129T19:00:00Z

Saída:

Validating log files for trail arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 between 2016-01-29T19:00:00Z and 2016-01-29T22:15:43Z Results requested for 2016-01-29T19:00:00Z to 2016-01-29T22:15:43Z Results found for 2016-01-29T19:24:57Z to 2016-01-29T21:24:57Z: 3/3 digest files valid 15/15 log files valid
  • Para ver detalhes da API, consulte ValidateLogs na Referência de comandos da AWS CLI.