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-tagssuivante ajoute des balises àTrail1:aws cloudtrail add-tags --resource-idarn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1--tags-listKey=name,Value=AliceKey=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-subscriptionsuivante crée un compartiment S3 et une rubrique SNS pourTrail1.aws cloudtrail create-subscription \ --nameTrail1\ --s3-new-bucketamzn-s3-demo-bucket\ --sns-new-topicmy-topicSortie :
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-trailsuivant crée un journal de suivi multi-régions nomméTrail1et spécifie un compartiment S3.aws cloudtrail create-trail \ --nameTrail1\ --s3-bucket-nameamzn-s3-demo-bucket\ --is-multi-region-trailSortie :
{ "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-trailsuivante supprime un journal de suivi nomméTrail1:aws cloudtrail delete-trail --nameTrail1-
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-trailssuivant renvoie les paramètres pourTrail1etTrail2.aws cloudtrail describe-trails \ --trail-name-listTrail1Trail2Sortie :
{ "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-selectorssuivante renvoie les paramètres pourTrail1:aws cloudtrail get-event-selectors --trail-nameTrail1Sortie :
{ "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-statussuivante renvoie les informations de livraison et de journalisation pourTrail1:aws cloudtrail get-trail-status --nameTrail1Sortie :
{ "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-keyssuivante 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-time2016-01-01T20:30:00.000ZSortie :
{ "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-tagssuivante répertorie les balises pourTrail1etTrail2:aws cloudtrail list-tags --resource-id-listarn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1arn:aws:cloudtrail:us-east-1:123456789012:trail/Trail2Sortie :
{ "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-eventssuivante recherche les événements d’activité de l’API par attributEventName:aws cloudtrail lookup-events --lookup-attributesAttributeKey=EventName,AttributeValue=ConsoleLoginSortie :
{ "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-selectorssuivant crée un sélecteur d’événements avancé pour un journal nommémyTrailafin 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éemyFunctionet de journaliser les appels d’API Publish sur une rubrique SNS nomméemyTopic.aws cloudtrail put-event-selectors \ --trail-namemyTrail\ --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-selectorssuivant crée un sélecteur d’événements pour un journal de suivi nomméTrailNamede 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éehello-world-python-function.aws cloudtrail put-event-selectors \ --trail-nameTrailName\ --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-selectorssuivant crée un sélecteur d’événements pour un journal de suivi nomméTrailName2qui 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-nameTrailName2\ --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-tagssuivante supprime les balises spécifiées pourTrail1:aws cloudtrail remove-tags --resource-idarn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1--tags-listKey=nameKey=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-loggingsuivante active la journalisation pourTrail1:aws cloudtrail start-logging --nameTrail1-
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-loggingsuivante désactive la journalisation pourTrail1:aws cloudtrail stop-logging --nameTrail1-
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-subscriptionsuivant met à jour le journal de suivi pour spécifier un nouveau compartiment S3 et une nouvelle rubrique SNS.aws cloudtrail update-subscription \ --nameTrail1\ --s3-new-bucketamzn-s3-demo-bucket\ --sns-new-topicmy-topic-newSortie :
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-trailsuivant met à jour un journal afin d’utiliser un compartiment existant pour la livraison du journal.aws cloudtrail update-trail \ --nameTrail1\ --s3-bucket-nameamzn-s3-demo-bucketSortie :
{ "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-logssuivante valide les journaux pourTrail1:aws cloudtrail validate-logs --trail-arnarn:aws:cloudtrail:us-east-1:123456789012:trail/Trail1--start-time20160129T19:00:00ZSortie :
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.
-