Exemples d’utilisation de l’AWS CLI avec CloudTrail - AWS Command Line Interface

Exemples d’utilisation de l’AWS CLI avec CloudTrail

Les exemples de code suivants montrent comment réaliser des actions et mettre en œuvre des scénarios courants en utilisant l’AWS Command Line Interface avec CloudTrail.

Les actions sont des extraits de code de programmes plus larges et doivent être exécutées dans leur contexte. Alors que les actions vous indiquent comment appeler des fonctions de service individuelles, vous pouvez les voir en contexte dans leurs scénarios associés.

Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la configuration et l’exécution du code en contexte.

Rubriques

Actions

L’exemple de code suivant montre comment utiliser add-tags.

AWS CLI

Pour ajouter des balises au journal de suivi

La commande add-tags suivante ajoute des balises à 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
  • Pour plus de détails sur l’API, consultez AddTags dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-subscription.

AWS CLI

Pour créer et configurer des ressources AWS pour un journal de suivi

La commande create-subscription suivante crée un compartiment S3 et une rubrique SNS pour Trail1.

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

Sortie :

Setting up new S3 bucket amzn-s3-demo-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": "amzn-s3-demo-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
  • Pour plus de détails sur l’API, consultez CreateSubscription dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-trail.

AWS CLI

Pour créer un journal de suivi

L’exemple create-trail suivant crée un journal de suivi multi-régions nommé Trail1 et spécifie un compartiment S3.

aws cloudtrail create-trail \ --name Trail1 \ --s3-bucket-name amzn-s3-demo-bucket \ --is-multi-region-trail

Sortie :

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "amzn-s3-demo-bucket" }
  • Pour plus de détails sur l’API, consultez CreateTrail dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser delete-trail.

AWS CLI

Pour supprimer un journal de suivi

La commande delete-trail suivante supprime un journal de suivi nommé Trail1 :

aws cloudtrail delete-trail --name Trail1
  • Pour plus de détails sur l’API, consultez DeleteTrail dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-trails.

AWS CLI

Pour décrire un journal de suivi

L’exemple describe-trails suivant renvoie les paramètres pour Trail1 et Trail2.

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

Sortie :

{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": false, "S3BucketName": "amzn-s3-demo-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": "amzn-s3-demo-bucket2", "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/4c5ae5ac-3c13-421e-8335-c7868ef6a769", "HomeRegion": "us-east-1" } ] }
  • Pour plus de détails sur l’API, consultez DescribeTrails dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-event-selectors.

AWS CLI

Pour afficher les paramètres du sélecteur d’événements pour un journal de suivi

La commande get-event-selectors suivante renvoie les paramètres pour Trail1 :

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

Sortie :

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1" }
  • Pour plus de détails sur l’API, consultez GetEventSelectors dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser get-trail-status.

AWS CLI

Pour obtenir le statut d’un journal de suivi

La commande get-trail-status suivante renvoie les informations de livraison et de journalisation pour Trail1 :

aws cloudtrail get-trail-status --name Trail1

Sortie :

{ "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" }
  • Pour plus de détails sur l’API, consultez GetTrailStatus dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-public-keys.

AWS CLI

Pour répertorier toutes les clés publiques d’un journal de suivi

La commande list-public-keys suivante renvoie toutes les clés publiques dont les clés privées ont été utilisées pour signer les fichiers de résumé dans la plage de temps spécifiée :

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

Sortie :

{ "PublicKeyList": [ { "ValidityStartTime": 1453076702.0, "ValidityEndTime": 1455668702.0, "Value": "MIIBCgKCAQEAlSS3cl92HDycr/MTj0moOhas8habjrraXw+KzlWF0axSI2tcF+3iJ9BKQAVSKxGwxwu3m0wG3J+kUl1xboEcEPHYoIYMbgfSw7KGnuDKwkLzsQWhUJ0cIbOHASox1vv/5fNXkrHhGbDCHeVXm804c83nvHUEFYThr1PfyP/8HwrCtR3FX5OANtQCP61C1nJtSSkC8JSQUOrIP4CuwJjc+4WGDk+BGH5m9iuiAKkipEHWmUl8/P7XpfpWQuk4h8g3pXZOrNXr08lbh4d39svj7UqdhvOXoBISp9t/EXYuePGEtBdrKD9Dz+VHwyUPtBQvYr9BnkF88qBnaPNhS44rzwIDAQAB", "Fingerprint": "7f3f401420072e50a65a141430817ab3" } ] }
  • Pour plus de détails sur l’API, consultez ListPublicKeys dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-tags.

AWS CLI

Pour répertorier les balises d’un journal de suivi

La commande list-tags suivante répertorie les balises pour Trail1 et 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

Sortie :

{ "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" } ] } ] }
  • Pour plus de détails sur l’API, consultez ListTags dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser lookup-events.

AWS CLI

Pour rechercher des événements pour un journal de suivi

La commande lookup-events suivante recherche les événements d’activité de l’API par attribut EventName :

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

Sortie :

{ "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": [] } ] }
  • Pour plus de détails sur l’API, consultez LookupEvents dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser put-event-selectors.

AWS CLI

Exemple 1 : pour configurer un journal de suivi afin de journaliser les événements de gestion et de données à l’aide de sélecteurs d’événements avancés

Vous pouvez ajouter des sélecteurs d’événements avancés et des conditions pour ceux-ci, jusqu’à 500 valeurs maximum pour toutes les conditions et tous les sélecteurs d’un journal de suivi. Vous pouvez utiliser des sélecteurs d’événements avancés pour journaliser tous les types d’événements de données disponibles. Vous pouvez utiliser des sélecteurs d’événements avancés ou des sélecteurs d’événements de base, mais pas les deux. Si vous appliquez des sélecteurs d’événements avancés à un journal de suivi, tous les sélecteurs d’événements de base existants sont remplacés.

L’exemple put-event-selectors suivant crée un sélecteur d’événements avancé pour un journal nommé myTrail afin de journaliser tous les événements de gestion, de journaliser les appels d’API PutObject et DeleteObject S3 pour tous les compartiments S3 sauf un, de journaliser les appels d’API de données pour une fonction Lambda nommée myFunction et de journaliser les appels d’API Publish sur une rubrique SNS nommée 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:::amzn-s3-demo-bucket/"] }]},{"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"] }]}]'

Sortie :

{ "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:::amzn-s3-demo-bucket/" ] } ] }, { "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" ] } ] } ] }

Pour plus d’informations, consultez Journaliser les événements à l’aide de sélecteurs d’événements avancés dans le Guide de l’utilisateur AWS CloudTrail.

Exemple 2 : pour configurer les sélecteurs d’événements pour un journal de suivi afin de journaliser tous les événements de gestion et de données

Vous pouvez configurer jusqu’à 5 sélecteurs d’événements et jusqu’à 250 ressources de données pour un journal de suivi. Les sélecteurs d’événements sont également appelés sélecteurs d’événements de base. Vous pouvez utiliser des sélecteurs d’événements pour journaliser les événements de gestion et de données pour les objets S3, les fonctions Lambda et les tables DynamoDB. Afin de journaliser des événements de données sur ces types de ressources, vous devez utiliser des sélecteurs d’événements avancés.

L’exemple put-event-selectors suivant crée un sélecteur d’événements pour un journal de suivi nommé TrailName de façon à inclure des événements de gestion, des événements de données pour deux combinaisons compartiment/préfixe Amazon S3 et des événements de données pour une seule fonction AWS Lambda nommée 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:::amzn-s3-demo-bucket/prefix","arn:aws:s3:::amzn-s3-demo-bucket2/prefix2"]},{"Type": "AWS::Lambda::Function","Values": ["arn:aws:lambda:us-west-2:999999999999:function:hello-world-python-function"]}]}]'

Sortie :

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::amzn-s3-demo-bucket/prefix", "arn:aws:s3:::amzn-s3-demo-bucket2/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" }

Pour plus d’informations, consultez Journaliser les événements à l’aide de sélecteurs d’événements de base dans le Guide de l’utilisateur AWS CloudTrail.

Exemple 3 : pour configurer des sélecteurs d’événements pour un journal de suivi afin de journaliser des événements de gestion, tous les événements de données S3 sur les objets S3 et tous les événements de données Lambda sur les fonctions de votre compte

L’exemple put-event-selectors suivant crée un sélecteur d’événements pour un journal de suivi nommé TrailName2 qui inclut tous les événements de gestion et tous les événements de données pour tous les compartiments Amazon S3 et les fonctions AWS Lambda dans le compte 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"]}]}]'

Sortie :

{ "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" }

Pour plus d’informations, consultez Journaliser les événements à l’aide de sélecteurs d’événements de base dans le Guide de l’utilisateur AWS CloudTrail.

  • Pour plus de détails sur l’API, consultez PutEventSelectors dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser remove-tags.

AWS CLI

Pour supprimer les balises d’un journal de suivi

La commande remove-tags suivante supprime les balises spécifiées pour Trail1 :

aws cloudtrail remove-tags --resource-id arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1 --tags-list Key=name Key=location
  • Pour plus de détails sur l’API, consultez RemoveTags dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser start-logging.

AWS CLI

Pour démarrer la journalisation pour un journal de suivi

La commande start-logging suivante active la journalisation pour Trail1 :

aws cloudtrail start-logging --name Trail1
  • Pour plus de détails sur l’API, consultez StartLogging dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser stop-logging.

AWS CLI

Pour arrêter la journalisation d’un journal de suivi

La commande stop-logging suivante désactive la journalisation pour Trail1 :

aws cloudtrail stop-logging --name Trail1
  • Pour plus de détails sur l’API, consultez StopLogging dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser update-subscription.

AWS CLI

Pour mettre à jour les paramètres de configuration d’un journal de suivi

L’exemple update-subscription suivant met à jour le journal de suivi pour spécifier un nouveau compartiment S3 et une nouvelle rubrique SNS.

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

Sortie :

Setting up new S3 bucket amzn-s3-demo-bucket... 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": "amzn-s3-demo-bucket", "SnsTopicName": "my-topic-new", "HomeRegion": "us-east-1" } ], "ResponseMetadata": { "HTTPStatusCode": 200, "RequestId": "31126f8a-c616-11e5-9cc6-2fd637936879" } }
  • Pour plus de détails sur l’API, consultez UpdateSubscription dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser update-trail.

AWS CLI

Pour mettre à jour un journal de suivi

L’exemple update-trail suivant met à jour un journal afin d’utiliser un compartiment existant pour la livraison du journal.

aws cloudtrail update-trail \ --name Trail1 \ --s3-bucket-name amzn-s3-demo-bucket

Sortie :

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "amzn-s3-demo-bucket" }
  • Pour plus de détails sur l’API, consultez UpdateTrail dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser validate-logs.

AWS CLI

Pour valider un fichier journal

La commande validate-logs suivante valide les journaux pour Trail1 :

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

Sortie :

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
  • Pour plus de détails sur l’API, consultez ValidateLogs dans la Référence des commandes de l’AWS CLI.