View a markdown version of this page

Journalisation des actions Amazon ECR avec AWS CloudTrail - Amazon ECR

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.

Journalisation des actions Amazon ECR avec AWS CloudTrail

Amazon ECR est intégré à AWS CloudTrail, un service qui fournit un enregistrement des actions entreprises par un utilisateur, un rôle ou un AWS service dans Amazon ECR. CloudTrail capture les actions Amazon ECR suivantes sous forme d'événements :

  • Tous les appels d'API, notamment les appels à partir de la console Amazon ECR

  • Toutes les actions effectuées en raison des paramètres de chiffrement sur vos référentiels

  • Toutes les actions entreprises en vertu des règles de politique de cycle de vie, qu'elles réussissent ou qu'elles échouent

    Important

    En raison des limites de taille de chaque individu CloudTrail événements, pour les actions relatives à la politique de cycle de vie lorsque 10 images ou plus sont expirées, Amazon ECR envoie plusieurs événements à CloudTrail. En outre, Amazon ECR inclut un maximum de 100 identifications par image.

Lorsqu'un trail est créé, vous pouvez activer la diffusion continue de CloudTrail événements vers un compartiment Amazon S3, y compris des événements pour Amazon ECR. Si vous ne configurez pas de parcours, vous pouvez toujours consulter les événements les plus récents dans CloudTrail console dans Historique de l'événement. En utilisant ces informations, vous pouvez déterminer la demande qui a été envoyée à Amazon ECR, l'adresse IP source, qui a effectué la demande, quand, ainsi que d'autres informations.

Pour plus d’informations, consultez le Guide de l’utilisateur AWS CloudTrail.

Informations Amazon ECR dans CloudTrail

CloudTrail est activé sur votre AWS compte lorsque vous créez le compte. Lorsqu'une activité se produit dans Amazon ECR, elle est enregistrée dans un CloudTrail événement avec d'autres AWS événements de service en Historique de l'événement. Vous pouvez consulter, rechercher et télécharger les événements récents dans votre AWS compte. Pour plus d'informations, voir Afficher les événements avec CloudTrail Historique de l'événement.

Pour un enregistrement continu des événements survenus dans votre AWS compte, y compris les événements pour Amazon ECR, créez un parcours. Un sentier permet CloudTrail pour transmettre des fichiers journaux à un compartiment Amazon S3. Si vous créez un journal d'activité dans la console, vous pourrez l'appliquer à une seule région ou à toutes les régions. Le sentier enregistre les événements dans le AWS partitionnez et remettez les fichiers journaux au compartiment Amazon S3 que vous spécifiez. En outre, vous pouvez configurer d'autres AWS services pour analyser les données relatives aux événements collectées dans CloudTrail journaux. Pour plus d’informations, consultez :

Toutes les actions de l'API Amazon ECR sont enregistrées par CloudTrail et sont documentés dans Référence de l'API Amazon Elastic Container Registry. Lorsque vous effectuez des tâches courantes, des sections sont générées dans CloudTrail des fichiers journaux pour chaque action d'API faisant partie de cette tâche. Par exemple, lorsque vous créez un référentiel, GetAuthorizationToken, CreateRepository et SetRepositoryPolicy les sections sont générées dans CloudTrail fichiers journaux. Lorsque vous transférez une image vers un référentiel, InitiateLayerUpload, UploadLayerPart, CompleteLayerUpload, PutImage, et, si le montage de blobs est activé, MountLayer des sections sont générées. Lorsque vous extrayez une image, les sections GetDownloadUrlForLayer et BatchGetImage sont générées. Lorsque vous archivez ou restaurez une image UpdateImageStorageClass la section est générée. Quand OCI clients qui soutiennent OCI 1.1 specification récupère la liste des référents, ou artefacts de référence, pour une image à l'aide de l'API Referrers, une ListImageReferrers CloudTrail événement est émis. Pour obtenir des exemples de ces tâches courantes, consultez CloudTrail exemples d'entrées de journal.

Chaque événement ou entrée de journal contient des informations sur la personne ayant initié la demande. Les informations relatives à l’identité permettent de déterminer les éléments suivants :

  • Si la demande a été effectuée avec les informations d’identification utilisateur racine ou

  • Si la demande a été effectuée avec des informations d’identification de sécurité temporaires pour un rôle ou un utilisateur fédéré

  • Si la demande a été faite par un autre AWS service

Pour plus d’informations, consultez l’élément userIdentity CloudTrail.

Présentation des entrées des fichiers journaux Amazon ECR

Un journal est une configuration qui permet de transmettre des événements sous forme de fichiers journaux à un compartiment Amazon S3 que vous spécifiez. CloudTrail les fichiers journaux contiennent une ou plusieurs entrées de journal. Un événement représente une demande unique provenant de n'importe quelle source et inclut des informations sur l'action demandée, la date et l'heure de l'action, les paramètres de la demande et d'autres informations. CloudTrail les fichiers journaux ne constituent pas une pile ordonnée des appels d'API publics, ils n'apparaissent donc pas dans un ordre spécifique.

CloudTrail exemples d'entrées de journal

Les éléments suivants sont CloudTrail exemples d'entrées de journal pour quelques tâches Amazon ECR courantes.

Ces exemples ont été mis en forme pour faciliter la lecture. Dans un CloudTrail fichier journal, toutes les entrées et tous les événements sont concaténés sur une seule ligne. En outre, cet exemple se limite à une seule entrée Amazon ECR. Dans un vrai CloudTrail fichier journal, vous voyez les entrées et les événements de plusieurs AWS services.

Important

Le Adresse IP source est l'adresse IP à partir de laquelle la demande a été faite. Pour les actions qui proviennent de la console de service, l'adresse indiquée est celle de votre ressource sous-jacente et non celle du serveur Web de la console. Pour les services en AWS, seul le nom DNS est affiché. Nous évaluons toujours l'authentification avec l'adresse IP source du client, même si elle est expurgée pour AWS nom DNS du service.

Exemple : Créer une action de référentiel

L'exemple suivant montre un CloudTrail entrée de journal qui montre CreateRepository action.

{ "eventVersion": "1.04", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-07-11T21:54:07Z" }, "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" } } }, "eventTime": "2018-07-11T22:17:43Z", "eventSource": "ecr.amazonaws.com", "eventName": "CreateRepository", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "console.amazonaws.com", "requestParameters": { "repositoryName": "testrepo" }, "responseElements": { "repository": { "repositoryArn": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "repositoryName": "testrepo", "repositoryUri": "123456789012.dkr.ecr.us-east-2.amazonaws.com/testrepo", "createdAt": "Jul 11, 2018 10:17:44 PM", "registryId": "123456789012" } }, "requestID": "cb8c167e-EXAMPLE", "eventID": "e3c6f4ce-EXAMPLE", "resources": [ { "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Exemple : AWS KMS CreateGrant Action d'API lors de la création d'un référentiel Amazon ECR

L'exemple suivant montre un CloudTrail entrée de journal qui montre AWS KMS CreateGrant action lors de la création d'un référentiel Amazon ECR avec le cryptage KMS activé. Pour chaque référentiel créé avec le chiffrement KMS activé, vous devriez voir deux CreateGrant enregistrer les entrées dans CloudTrail.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDAIEP6W46J43IG7LXAQ", "arn": "arn:aws:iam::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "sessionIssuer": { }, "webIdFederationData": { }, "attributes": { "mfaAuthenticated": "false", "creationDate": "2020-06-10T19:22:10Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2020-06-10T19:22:10Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.12", "userAgent": "console.amazonaws.com", "requestParameters": { "keyId": "4b55e5bf-39c8-41ad-b589-18464af7758a", "granteePrincipal": "ecr.us-west-2.amazonaws.com", "operations": [ "GenerateDataKey", "Decrypt" ], "retiringPrincipal": "ecr.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:ecr:arn": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo" } } }, "responseElements": { "grantId": "3636af9adfee1accb67b83941087dcd45e7fadc4e74ff0103bb338422b5055f3" }, "requestID": "047b7dea-b56b-4013-87e9-a089f0f6602b", "eventID": "af4c9573-c56a-4886-baca-a77526544469", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:123456789012:key/4b55e5bf-39c8-41ad-b589-18464af7758a" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Exemple : Action de transmission d’image

L'exemple suivant montre un CloudTrail entrée de journal qui montre un push d'image qui utilise le PutImage action.

Note

Lorsque vous appuyez sur une image, vous verrez également InitiateLayerUpload, UploadLayerPart, et CompleteLayerUpload références dans CloudTrail journaux.

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T16:45:00Z", "eventSource": "ecr.amazonaws.com", "eventName": "PutImage", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "repositoryName": "testrepo", "imageTag": "latest", "registryId": "123456789012", "imageManifest": "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n \"size\": 5543,\n \"digest\": \"sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a\"\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 43252507,\n \"digest\": \"sha256:3b37166ec61459e76e33282dda08f2a9cd698ca7e3d6bc44e6a6e7580cdeff8e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 846,\n \"digest\": \"sha256:504facff238fde83f1ca8f9f54520b4219c5b8f80be9616ddc52d31448a044bd\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 615,\n \"digest\": \"sha256:ebbcacd28e101968415b0c812b2d2dc60f969e36b0b08c073bf796e12b1bb449\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 850,\n \"digest\": \"sha256:c7fb3351ecad291a88b92b600037e2435c84a347683d540042086fe72c902b8a\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 168,\n \"digest\": \"sha256:2e3debadcbf7e542e2aefbce1b64a358b1931fb403b3e4aeca27cb4d809d56c2\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 37720774,\n \"digest\": \"sha256:f8c9f51ad524d8ae9bf4db69cd3e720ba92373ec265f5c390ffb21bb0c277941\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 30432107,\n \"digest\": \"sha256:813a50b13f61cf1f8d25f19fa96ad3aa5b552896c83e86ce413b48b091d7f01b\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 197,\n \"digest\": \"sha256:7ab043301a6187ea3293d80b30ba06c7bf1a0c3cd4c43d10353b31bc0cecfe7d\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 154,\n \"digest\": \"sha256:67012cca8f31dc3b8ee2305e7762fee20c250513effdedb38a1c37784a5a2e71\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 176,\n \"digest\": \"sha256:3bc892145603fffc9b1c97c94e2985b4cb19ca508750b15845a5d97becbd1a0e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 183,\n \"digest\": \"sha256:6f1c79518f18251d35977e7e46bfa6c6b9cf50df2a79d4194941d95c54258d18\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:b7bcfbc2e2888afebede4dd1cd5eebf029bb6315feeaf0b56e425e11a50afe42\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:2b220f8b0f32b7c2ed8eaafe1c802633bbd94849b9ab73926f0ba46cdae91629\"\n }\n ]\n}" }, "responseElements": { "image": { "repositoryName": "testrepo", "imageManifest": "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n \"size\": 5543,\n \"digest\": \"sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a\"\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 43252507,\n \"digest\": \"sha256:3b37166ec61459e76e33282dda08f2a9cd698ca7e3d6bc44e6a6e7580cdeff8e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 846,\n \"digest\": \"sha256:504facff238fde83f1ca8f9f54520b4219c5b8f80be9616ddc52d31448a044bd\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 615,\n \"digest\": \"sha256:ebbcacd28e101968415b0c812b2d2dc60f969e36b0b08c073bf796e12b1bb449\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 850,\n \"digest\": \"sha256:c7fb3351ecad291a88b92b600037e2435c84a347683d540042086fe72c902b8a\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 168,\n \"digest\": \"sha256:2e3debadcbf7e542e2aefbce1b64a358b1931fb403b3e4aeca27cb4d809d56c2\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 37720774,\n \"digest\": \"sha256:f8c9f51ad524d8ae9bf4db69cd3e720ba92373ec265f5c390ffb21bb0c277941\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 30432107,\n \"digest\": \"sha256:813a50b13f61cf1f8d25f19fa96ad3aa5b552896c83e86ce413b48b091d7f01b\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 197,\n \"digest\": \"sha256:7ab043301a6187ea3293d80b30ba06c7bf1a0c3cd4c43d10353b31bc0cecfe7d\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 154,\n \"digest\": \"sha256:67012cca8f31dc3b8ee2305e7762fee20c250513effdedb38a1c37784a5a2e71\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 176,\n \"digest\": \"sha256:3bc892145603fffc9b1c97c94e2985b4cb19ca508750b15845a5d97becbd1a0e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 183,\n \"digest\": \"sha256:6f1c79518f18251d35977e7e46bfa6c6b9cf50df2a79d4194941d95c54258d18\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:b7bcfbc2e2888afebede4dd1cd5eebf029bb6315feeaf0b56e425e11a50afe42\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:2b220f8b0f32b7c2ed8eaafe1c802633bbd94849b9ab73926f0ba46cdae91629\"\n }\n ]\n}", "registryId": "123456789012", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e", "imageTag": "latest" } } }, "requestID": "cf044b7d-5f9d-11e9-9b2a-95983139cc57", "eventID": "2bfd4ee2-2178-4a82-a27d-b12939923f0f", "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Exemple : Action d'extraction d'image

L'exemple suivant montre CloudTrail entrée de journal qui montre une extraction d'image qui utilise le BatchGetImage action.

Note

Lors de l'extraction d'une image, si vous ne disposez pas déjà de l'image en local, des références GetDownloadUrlForLayer apparaîtront également dans les journaux CloudTrail .

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T17:23:20Z", "eventSource": "ecr.amazonaws.com", "eventName": "BatchGetImage", "awsRegion": "us-east-2", "sourceIPAddress": "ecr.amazonaws.com", "userAgent": "ecr.amazonaws.com", "requestParameters": { "imageIds": [{ "imageTag": "latest" }], "acceptedMediaTypes": [ "application/json", "application/vnd.oci.image.manifest.v1+json", "application/vnd.oci.image.index.v1+json", "application/vnd.docker.distribution.manifest.v2+json", "application/vnd.docker.distribution.manifest.list.v2+json", "application/vnd.docker.distribution.manifest.v1+prettyjws" ], "repositoryName": "testrepo", "registryId": "123456789012" }, "responseElements": null, "requestID": "2a1b97ee-5fa3-11e9-a8cd-cd2391aeda93", "eventID": "c84f5880-c2f9-4585-9757-28fa5c1065df", "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Exemple : Action de politique de cycle de vie d'image

L'exemple suivant montre un CloudTrail entrée de journal qui indique quand une image est arrivée à expiration en raison d'une règle de politique de cycle de vie. Ce type d'événement peut être localisé en filtrant le PolicyExecutionEvent pour le champ du nom d’événement.

Lorsque vous testez un aperçu de la politique de cycle de vie, Amazon ECR génère un CloudTrail entrée de journal avec le champ du nom de l'événement de DryRunEvent, avec exactement la même structure que le PolicyExecutionEvent. En changeant le nom de l'événement en DryRunEvent, vous pouvez plutôt filtrer en fonction des événements de course à vide.

Important

En raison des limites de taille de chaque individu CloudTrail événements, pour les actions relatives à la politique de cycle de vie lorsque 10 images ou plus sont expirées, Amazon ECR envoie plusieurs événements à CloudTrail. En outre, Amazon ECR inclut un maximum de 100 identifications par image.

{ "eventVersion": "1.05", "userIdentity": { "accountId": "123456789012", "invokedBy": "AWS Internal" }, "eventTime": "2020-03-12T20:22:12Z", "eventSource": "ecr.amazonaws.com", "eventName": "PolicyExecutionEvent", "awsRegion": "us-west-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "9354dd7f-9aac-4e9d-956d-12561a4923aa", "readOnly": true, "resources": [ { "ARN": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo", "accountId": "123456789012", "type": "AWS::ECR::Repository" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "123456789012", "serviceEventDetails": { "repositoryName": "testrepo", "lifecycleEventPolicy": { "lifecycleEventRules": [ { "rulePriority": 1, "description": "remove all images > 2", "lifecycleEventSelection": { "tagStatus": "Any", "tagPrefixList": [], "countType": "Image count more than", "countNumber": 2 }, "action": "expire" } ], "lastEvaluatedAt": 0, "policyVersion": 1, "policyId": "ceb86829-58e7-9498-920c-aa042e33037b" }, "lifecycleEventImageActions": [ { "lifecycleEventImage": { "digest": "sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45", "tagStatus": "Tagged", "tagList": [ "alpine" ], "pushedAt": 1584042813000 }, "rulePriority": 1 }, { "lifecycleEventImage": { "digest": "sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf", "tagStatus": "Tagged", "tagList": [ "centos" ], "pushedAt": 1584042842000 }, "rulePriority": 1 } ], "lifecycleEventFailureDetails": [ { "lifecycleEventImage": { "digest": "sha256:9117e1bc28cd20751e584b4ccd19b1178d14cf02d134b04ce6be0cc51bff762a", "tagStatus": "Untagged", "tagList": [], "pushedAt": 1584042844000 }, "rulePriority": 1, "failureCode": "ImageReferencedByManifestList", "failureReason": "Requested image referenced by manifest list: [sha256:4b27c83d44a18c31543039d9e8b2786043ec6c8d00804d5800c5148d6b6f65bc]" } ] } }

Exemple : action d'archivage d'images

L'exemple suivant montre un CloudTrail entrée de journal qui montre qu'une image est archivée à l'aide du UpdateImageStorageClass action avec targetStorageClass réglé sur ARCHIVE.

{ "eventVersion": "1.11", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T16:45:00Z", "eventSource": "ecr.amazonaws.com", "eventName": "UpdateImageStorageClass", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "targetStorageClass": "ARCHIVE", "registryId": "123456789012" }, "responseElements": { "image": { "registryId": "123456789012", "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "imageStatus": "ARCHIVED" } }, "requestID": "cf044b7d-EXAMPLE", "eventID": "2bfd4ee2-EXAMPLE", "readOnly": false, "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }

Exemple : action de restauration d'image

Les exemples suivants montrent CloudTrail entrées de journal qui montrent qu'une image est en cours de restauration. Lorsque vous restaurez une image archivée, deux événements sont générés :

  1. Un événement d'appel d'API lorsque la restauration est lancée

  2. Un événement de service lorsque l'opération de restauration asynchrone est terminée

Événement d'appel d'API (lancement de la restauration)

L'exemple suivant montre l'appel d'API initial pour restaurer une image à l'aide du UpdateImageStorageClass action avec targetStorageClass réglé sur STANDARD. La réponse indique l'état de l'image comme ACTIVATING.

{ "eventVersion": "1.11", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T16:45:00Z", "eventSource": "ecr.amazonaws.com", "eventName": "UpdateImageStorageClass", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "targetStorageClass": "STANDARD", "registryId": "123456789012" }, "responseElements": { "image": { "registryId": "123456789012", "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "imageStatus": "ACTIVATING" } }, "requestID": "cf044b7d-EXAMPLE", "eventID": "2bfd4ee2-EXAMPLE", "readOnly": false, "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }

Événement de service (fin de la restauration)

L'exemple suivant montre l'événement de service généré lorsque l'opération de restauration asynchrone est terminée. Ce type d'événement peut être localisé en filtrant le ImageActivationEvent pour le champ du nom d’événement. Le serviceEventDetails La section contient le résultat de la restauration et l'état final de l'image.

{ "eventVersion": "1.11", "userIdentity": { "accountId": "123456789012", "invokedBy": "AWS Internal" }, "eventTime": "2020-03-12T20:22:12Z", "eventSource": "ecr.amazonaws.com", "eventName": "ImageActivationEvent", "awsRegion": "us-west-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "9354dd7f-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo", "accountId": "123456789012", "type": "AWS::ECR::Repository" } ], "eventType": "AwsServiceEvent", "managementEvent": true, "recipientAccountId": "123456789012", "serviceEventDetails": { "repositoryName": "testrepo", "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e", "targetStorageClass": "STANDARD", "result": "SUCCESS", "imageStatus": "ACTIVE" }, "eventCategory": "Management" }

Exemple : action relative aux référents d'images

L'exemple suivant montre un AWS CloudTrail entrée de journal qui indique quand OCI 1.1 un client conforme récupère une liste de référents, ou artefacts de référence, pour une image à l'aide du Referrers API.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-10-08T16:38:39Z", "mfaAuthenticated": "false" }, "ec2RoleDelivery": "2.0" }, "invokedBy": "ecr.amazonaws.com" }, "eventTime": "2024-10-08T17:22:51Z", "eventSource": "ecr.amazonaws.com", "eventName": "ListImageReferrers", "awsRegion": "us-east-2", "sourceIPAddress": "ecr.amazonaws.com", "userAgent": "ecr.amazonaws.com", "requestParameters": { "registryId": "123456789012", "repositoryName": "testrepo", "subjectId": { "imageDigest": "sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a" }, "nextToken": "urD72mdD/mC8b5-EXAMPLE" }, "responseElements": null, "requestID": "cb8c167e-EXAMPLE", "eventID": "e3c6f4ce-EXAMPLE", "readOnly": true, "resources": [ { "accountId": "123456789012", "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }