CloudTrail exemples utilisant AWS CLI - Exemples de code de l'AWS SDK

D'autres AWS SDK exemples sont disponibles dans le GitHub dépôt AWS Doc SDK Examples.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

CloudTrail exemples utilisant AWS CLI

Les exemples de code suivants vous montrent comment effectuer des actions et implémenter des scénarios courants à l'aide du AWS Command Line Interface with 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 montrent comment appeler des fonctions de service individuelles, vous pouvez les visualiser dans leur contexte dans leurs scénarios associés.

Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la façon de configurer et d'exécuter le code en contexte.

Rubriques

Actions

L'exemple de code suivant montre comment utiliseradd-tags.

AWS CLI

Pour ajouter des balises au parcours

La add-tags commande suivante ajoute des balises pour 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 API plus de détails, voir AddTagsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisercreate-subscription.

AWS CLI

Pour créer et configurer AWS des ressources pour un parcours

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

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

Sortie :

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
  • Pour API plus de détails, voir CreateSubscriptionla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utilisercreate-trail.

AWS CLI

Pour créer un parcours

La create-trail commande suivante crée un journal multirégional nommé Trail1 et spécifie un compartiment S3 :

aws cloudtrail create-trail --name Trail1 --s3-bucket-name my-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": "my-bucket" }
  • Pour API plus de détails, voir CreateTrailla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserdelete-trail.

AWS CLI

Pour supprimer un parcours

La delete-trail commande suivante supprime une piste nommée Trail1 :

aws cloudtrail delete-trail --name Trail1
  • Pour API plus de détails, voir DeleteTrailla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserdescribe-trails.

AWS CLI

Pour décrire un sentier

La describe-trails commande suivante 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": "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" } ] }
  • Pour API plus de détails, voir DescribeTrailsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserget-event-selectors.

AWS CLI

Pour consulter les paramètres du sélecteur d'événements pour un parcours

La get-event-selectors commande 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 API plus de détails, voir GetEventSelectorsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserget-trail-status.

AWS CLI

Pour obtenir le statut d'une piste

La get-trail-status commande 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 API plus de détails, voir GetTrailStatusla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserlist-public-keys.

AWS CLI

Pour répertorier toutes les clés publiques d'un parcours

La list-public-keys commande 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 le délai spécifié :

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 API plus de détails, voir ListPublicKeysla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserlist-tags.

AWS CLI

Pour répertorier les balises d'un parcours

La list-tags commande 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 API plus de détails, voir ListTagsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserlookup-events.

AWS CLI

Pour rechercher des événements pour un parcours

La lookup-events commande suivante recherche les événements API d'activité 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 API plus de détails, voir LookupEventsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserput-event-selectors.

AWS CLI

Exemple 1 : configurer un journal pour consigner les événements de gestion et les événements 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 vos sélecteurs d'événements avancés, jusqu'à un maximum de 500 valeurs pour toutes les conditions et tous les sélecteurs d'un sentier. Vous pouvez utiliser des sélecteurs d'événements avancés pour enregistrer 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 suivant crée un sélecteur d'événements avancé pour un journal nommé myTrail afin de consigner tous les événements de gestion, de consigner S3 PutObject et les DeleteObject API appels pour tous les compartiments S3 sauf un, de consigner les API appels de données pour une fonction Lambda myFunction nommée et de consigner les appels de API publication sur SNS un sujet nommé. 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"] }]}]'

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:::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" ] } ] } ] }

Pour plus d'informations, voir Enregistrer les événements à l'aide de sélecteurs d'événements avancés dans le Guide de l'AWS CloudTrail utilisateur.

Exemple 2 : configurer les sélecteurs d'événements pour un journal afin de consigner tous les événements de gestion et les événements 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 consigner les événements de gestion et les événements de données pour les objets S3, les fonctions Lambda et les tables DynnaMoDB. Pour enregistrer des événements de données pour d'autres types de ressources, vous devez utiliser des sélecteurs d'événements avancés.

L'exemple suivant crée un sélecteur d'événements pour un journal nommé de manière TrailName à inclure tous les événements de gestion, les événements de données pour deux combinaisons de compartiments et de préfixes Amazon S3 et les événements de données pour une seule fonction Lambda AWS 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:::mybucket/prefix","arn:aws:s3:::mybucket2/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:::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" }

Pour plus d'informations, consultez la section Consigner les événements à l'aide des sélecteurs d'événements de base du Guide de l'AWS CloudTrail utilisateur.

Exemple 3 : configurer des sélecteurs d'événements pour un journal afin de consigner les é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 suivant crée un sélecteur d'événements pour un journal nommé TrailName2 qui inclut tous les événements de gestion et tous les événements de données pour tous les buckets Amazon S3 et les fonctions AWS Lambda du 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 la section Consigner les événements à l'aide des sélecteurs d'événements de base du Guide de l'AWS CloudTrail utilisateur.

  • Pour API plus de détails, voir PutEventSelectorsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserremove-tags.

AWS CLI

Pour supprimer les balises d'un parcours

La remove-tags commande 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 API plus de détails, voir RemoveTagsla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserstart-logging.

AWS CLI

Pour commencer à enregistrer un parcours

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

aws cloudtrail start-logging --name Trail1
  • Pour API plus de détails, voir StartLoggingla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserstop-logging.

AWS CLI

Pour arrêter d'enregistrer un parcours

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

aws cloudtrail stop-logging --name Trail1
  • Pour API plus de détails, voir StopLoggingla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserupdate-subscription.

AWS CLI

Pour mettre à jour les paramètres de configuration d'un parcours

La update-subscription commande suivante met à jour le journal pour spécifier un nouveau compartiment et une nouvelle SNS rubrique S3 :

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

Sortie :

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" } }
  • Pour API plus de détails, voir UpdateSubscriptionla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliserupdate-trail.

AWS CLI

Pour mettre à jour un parcours

La update-trail commande suivante met à jour un journal afin d'utiliser un bucket existant pour la livraison du journal :

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

Sortie :

{ "IncludeGlobalServiceEvents": true, "Name": "Trail1", "TrailARN": "arn:aws:cloudtrail:us-west-2:123456789012:trail/Trail1", "LogFileValidationEnabled": false, "IsMultiRegionTrail": true, "S3BucketName": "my-bucket" }
  • Pour API plus de détails, voir UpdateTrailla section Référence des AWS CLI commandes.

L'exemple de code suivant montre comment utiliservalidate-logs.

AWS CLI

Pour valider un fichier journal

La validate-logs commande 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 API plus de détails, voir ValidateLogsla section Référence des AWS CLI commandes.