

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.

# Surveiller Amazon ECR
<a name="monitoring"></a>

Vous pouvez surveiller l'utilisation de l'API Amazon ECR avec Amazon CloudWatch, qui collecte et traite les données brutes d'Amazon ECR pour en faire des indicateurs lisibles en temps quasi réel. Ces statistiques sont enregistrées pendant une période de deux semaines afin que vous puissiez accéder aux informations historiques et avoir une idée plus précise de votre utilisation des API. Les données métriques Amazon ECR sont automatiquement envoyées par intervalles CloudWatch d'une minute. Pour plus d'informations CloudWatch, consultez le [guide de CloudWatch l'utilisateur Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

Amazon ECR fournit des métriques basées sur l'utilisation de votre API en ce qui concerne les actions d'autorisation, de transmission d'image et d'extraction d'image.

La surveillance joue un rôle important dans le maintien de la fiabilité, de la disponibilité et des performances d'Amazon ECR et de vos AWS solutions. Nous vous recommandons de collecter des données de surveillance à partir des ressources qui constituent votre AWS solution afin de pouvoir corriger plus facilement une défaillance multipoint, le cas échéant. Avant de commencer à surveiller Amazon ECR, vous devez cependant créer un plan de surveillance qui contient les réponses aux questions suivantes :
+ Quels sont les objectifs de la surveillance ?
+ Quelles sont les ressources à surveiller ?
+ À quelle fréquence les ressources doivent-elles être surveillées ?
+ Quels outils de surveillance utiliser ?
+ Qui exécute les tâches de supervision ?
+ Qui doit être informé en cas de problème ?

L'étape suivante consiste à établir une référence de performances Amazon ECR normales dans votre environnement, en mesurant la performance à différents moments et dans différentes conditions de charge. Lorsque vous surveillez Amazon ECR, conservez les données de l'historique de surveillance afin de pouvoir les comparer aux nouvelles données de performances, d'identifier les modèles de performances normales et les anomalies de performances, et de concevoir des méthodes pour résoudre les problèmes.

**Topics**
+ [Visualiser vos quotas de service et définir des alarmes](monitoring-quotas-alarms.md)
+ [Métriques d'utilisation Amazon ECR](monitoring-usage.md)
+ [Rapports d'utilisation d'Amazon ECR](usage-reports.md)
+ [Métriques de référentiel Amazon ECR](ecr-repository-metrics.md)
+ [Événements Amazon ECR et EventBridge](ecr-eventbridge.md)
+ [Journalisation des actions Amazon ECR avec AWS CloudTrail](logging-using-cloudtrail.md)

# Visualiser vos quotas de service et définir des alarmes
<a name="monitoring-quotas-alarms"></a>

Vous pouvez utiliser la CloudWatch console pour visualiser vos quotas de service et comparer votre utilisation actuelle aux quotas de service. Vous pouvez également définir des alarmes afin d'être averti lorsque vous approchez un quota.

**Visualiser un quota de service et définir éventuellement une alarme**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Métriques**.

1. Sous l'onglet **Toutes les métriques**, choisissez **Utilisation**, puis choisissez **Par ressource AWS **.

   La liste des métriques d'utilisation des Service Quotas s'affiche.

1. Cochez la case en regard de l'une des métriques.

   Le graphique indique votre utilisation actuelle de cette AWS ressource.

1. Pour ajouter votre quota de service au graphique, procédez comme suit :

   1. Sélectionnez l'onglet **Graphed metrics (Graphiques des métriques)**.

   1. Choisissez **Math expression (Expression mathématique)**, puis **Start with an empty expression (Commencer par une expression vide)**. Ensuite, dans la nouvelle ligne, sous **Détails**, saisissez **SERVICE\$1QUOTA(m1)**.

      Une nouvelle ligne est ajoutée au graphique avec le quota de service de la ressource représentée dans la métrique.

1. Pour afficher votre utilisation actuelle sous forme de pourcentage du quota, ajoutez une nouvelle expression ou modifiez l'expression **SERVICE\$1QUOTA** actuelle. Pour la nouvelle expression, utilisez **m1/60/SERVICE\$1QUOTA(m1)\$1100**

1. (Facultatif) Pour définir une alerte qui vous avertit si vous approchez du quota de service, procédez comme suit :

   1. Sur la ligne **m1/60/SERVICE\$1QUOTA(m1)\$1100**, sous **Actions**, choisissez l'icône d'alarme. Elle ressemble à une cloche.

      La page de création d'alerte s'affiche.

   1. Sous **Conditions**, vérifiez que le **Threshold type** (Type de seuil) est **Static** (Statique) et que **Whenever Expression1 is** (Lorsque Expression1 est) est défini sur **Greater** (Supérieur). Sous **than (à)**, entrez **80**. Cela crée une alerte qui passe à l'état alerte lorsque votre utilisation dépasse 80 % du quota.

   1. Choisissez **Suivant**.

   1. Dans la page suivante, sélectionnez une rubrique Amazon SNS ou créez-en une nouvelle. Cette rubrique est notifiée lorsque l'alarme passe à l'état ALARME. Ensuite, choisissez **Suivant**.

   1. Dans la page suivante, saisissez le nom et la description de l'alarme, puis choisissez **Suivant**.

   1. Choisissez **Créer une alarme**.

# Métriques d'utilisation Amazon ECR
<a name="monitoring-usage"></a>

Vous pouvez utiliser les statistiques CloudWatch d'utilisation pour obtenir une visibilité sur l'utilisation des ressources par votre compte. Utilisez ces indicateurs pour visualiser l'utilisation actuelle de vos services sur CloudWatch des graphiques et des tableaux de bord.

Les métriques d'utilisation d'Amazon ECR correspondent aux quotas AWS de service. Vous pouvez configurer des alarmes qui vous alertent lorsque votre utilisation approche d’un quota de service. Pour en savoir plus sur les quotas de service par défaut d'Amazon ECR, consultez [Service Quotas Amazon ECR.](service-quotas.md).

Amazon ECR publie les métriques suivantes dans l'espace de noms `AWS/Usage`.


|  Métrique  |  Description  | 
| --- | --- | 
|  `CallCount`  |  Nombre d'appels d'action d'API depuis votre compte. Les ressources sont définies par les dimensions associées à la métrique. La statistique la plus utile pour cette métrique est `SUM`, qui représente la somme des valeurs de tous les contributeurs pendant la période définie.  | 
|  `ResourceCount`  |  Le nombre de ressources spécifiées dans votre compte. Les ressources sont définies par les dimensions associées à la métrique. La statistique la plus utile pour cette métrique est`MAXIMUM`, qui représente le nombre maximum de ressources utilisées pendant la période de 5 minutes.  | 

Les dimensions suivantes sont utilisées pour affiner les métriques d'utilisation des API publiées par Amazon ECR.


|  Dimension  |  Description  | 
| --- | --- | 
|  `Service`  |  Nom du AWS service contenant la ressource. Pour les métriques d’utilisation d'Amazon ECR, la valeur de cette dimension est `ECR`.  | 
|  `Type`  |  Type d’entité faisant l’objet d’un rapport. Actuellement, la seule valeur valide pour les métriques d'utilisation de l'API Amazon ECR est`API`.  | 
|  `Resource`  |  Type de ressource en cours d’exécution. Actuellement, Amazon ECR renvoie des informations sur l'utilisation de votre API pour les actions d'API suivantes. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECR/latest/userguide/monitoring-usage.html)  | 
|  Class  |  Classe de ressource suivie. Actuellement, Amazon ECR n'utilise pas la dimension Class.  | 

Les dimensions suivantes sont utilisées pour affiner les métriques d'utilisation des ressources publiées par Amazon ECR.


|  Dimension  |  Description  | 
| --- | --- | 
|  `Service`  |  Nom du AWS service contenant la ressource. Pour les métriques d’utilisation d'Amazon ECR, la valeur de cette dimension est `ECR`.  | 
|  `Type`  |  Type d’entité faisant l’objet d’un rapport. Actuellement, la seule valeur valide pour les métriques d'utilisation des ressources Amazon ECR est`RESOURCE`.  | 
|  `Resource`  |  Type de ressource en cours d’exécution. Actuellement, Amazon ECR renvoie des informations sur votre utilisation des ressources pour les métriques suivantes. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECR/latest/userguide/monitoring-usage.html)  | 
|  `ResourceId`  |  Identifiant de la ressource à l'origine de l'utilisation. Actuellement, ResourceId ne concerne que `ImagesPerRepositoryCount` et sa valeur est formatée comme suit : « repository/your\$1repository\$1name. For example: "repository/my -repo » renvoie le nombre d'images du référentiel avec le nom « my-repo ».  | 

# Rapports d'utilisation d'Amazon ECR
<a name="usage-reports"></a>

AWS fournit un outil de reporting gratuit appelé Cost Explorer qui vous permet d'analyser le coût et l'utilisation de vos ressources Amazon ECR.

Utilisez Cost Explorer pour afficher les graphiques de votre utilisation et de vos coûts. Vous pouvez afficher les données des 13 mois précédents et prévoir vos dépenses pour les trois prochains mois. Vous pouvez utiliser Cost Explorer pour afficher des modèles de vos dépenses en ressources  AWS au fil du temps, identifier les domaines qui méritent d'être approfondis et connaître les tendances que vous pouvez utiliser pour comprendre vos coûts. Vous pouvez également préciser des plages de temps pour les données et afficher des données temporelles par jour ou par mois.

Les données de métriques de vos rapports sur les coûts et l'utilisation illustrent l'utilisation dans l'ensemble de vos référentiels Amazon ECR. Pour de plus amples informations, veuillez consulter [Identification de vos ressources pour facturation](ecr-using-tags.md#tag-resources-for-billing).

Pour plus d'informations sur la création d'un rapport sur les AWS coûts et l'utilisation, consultez le rapport sur [les AWS coûts et l'utilisation](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-reports-costusage.html) dans le *guide de AWS Billing l'utilisateur*.

# Métriques de référentiel Amazon ECR
<a name="ecr-repository-metrics"></a>

Amazon ECR envoie les statistiques du nombre d'appels du référentiel à Amazon CloudWatch. Les données métriques Amazon ECR sont automatiquement envoyées par tranches CloudWatch d'une minute. Pour plus d'informations CloudWatch, consultez le [guide de CloudWatch l'utilisateur Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

**Topics**
+ [CloudWatch Indicateurs habilitants](#enable_cloudwatch)
+ [Métriques et dimensions disponibles](#available_cloudwatch_metrics)
+ [Afficher les métriques Amazon ECR à l'aide de la console CloudWatch](#viewing_metrics_console)

## CloudWatch Indicateurs habilitants
<a name="enable_cloudwatch"></a>

Amazon ECR envoie des métriques de référentiel automatiquement pour tous les référentiels. Il n'est pas nécessaire d'effectuer des étapes manuelles.

## Métriques et dimensions disponibles
<a name="available_cloudwatch_metrics"></a>

Les sections suivantes répertorient les métriques et les dimensions qu'Amazon ECR envoie à Amazon CloudWatch.

### Métriques Amazon ECR
<a name="ecr-metrics"></a>

Amazon ECR fournit des métriques pour vous permettre de contrôler vos référentiels. Vous pouvez mesurer le nombre d'extractions.

L’espace de noms `AWS/ECR` inclut les métriques suivantes.

`RepositoryPullCount`  
Le nombre total d'extractions pour les images dans le référentiel.  
Dimensions valides : `RepositoryName`.  
Statistiques valides : Moyenne, Minimum, Maximum, Somme, Nombre d'échantillons. La statistique la plus utile est Sum (Somme).  
Unité : Entier.

### Dimensions pour les métriques Amazon ECR
<a name="ecs-metrics-dimensions"></a>

Les métriques Amazon ECR utilisent l'espace de noms `AWS/ECR` et fournissent des métriques pour les dimensions suivantes.

`RepositoryName`  
Cette dimension filtre les données que vous demandez pour toutes les images de conteneur dans un référentiel spécifié.

## Afficher les métriques Amazon ECR à l'aide de la console CloudWatch
<a name="viewing_metrics_console"></a>

Vous pouvez consulter les métriques du référentiel Amazon ECR sur la CloudWatch console. La CloudWatch console fournit un affichage précis et personnalisable de vos ressources. Pour plus d'informations, consultez le [guide de CloudWatch l'utilisateur Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

# Événements Amazon ECR et EventBridge
<a name="ecr-eventbridge"></a>

Amazon vous EventBridge permet d'automatiser vos AWS services et de répondre automatiquement aux événements du système tels que les problèmes de disponibilité des applications ou les modifications des ressources. Les événements AWS liés aux services sont diffusés EventBridge en temps quasi réel. Vous pouvez écrire des règles simples pour indiquer quels événements vous intéressent et inclure les actions automatisées à effectuer quand un événement correspond à une règle. Les actions pouvant être déclenchées automatiquement sont les suivantes :
+ Ajouter des événements à des groupes de CloudWatch journaux dans Logs
+ Invoquer une fonction AWS Lambda 
+ Appel de la fonctionnalité Exécuter la commande d’Amazon EC2
+ Relais de l’événement à Amazon Kinesis Data Streams
+ Activation d'une machine à AWS Step Functions états
+ Notification d’une rubrique Amazon SNS ou d’une file d’attente Amazon SQS

Pour plus d'informations, consultez [Getting Started with Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html) dans le *guide de EventBridge l'utilisateur Amazon*.

## Exemples d'événements d'Amazon ECR
<a name="ecr-eventbridge-bus"></a>

Voici des exemples d'événements à partir d'Amazon ECR. Les événements sont générés dans la mesure du possible.

**Événement pour un transfert d’image terminée**

L'événement suivant est envoyé lorsque chaque transfert d'image est terminé. Pour de plus amples informations, veuillez consulter [Transférer une image Docker vers un référentiel privé Amazon ECR](docker-push-ecr-image.md).

```
{
    "version": "0",
    "id": "13cde686-328b-6117-af20-0e5566167482",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-11-16T01:54:34Z",
    "region": "us-west-2",
    "resources": [],
    "detail": {
        "result": "SUCCESS",
        "repository-name": "my-repository-name",
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "action-type": "PUSH",
        "image-tag": "latest"
    }
}
```

**Événement pour une action de mise en cache par extraction**

L'événement suivant est envoyé lorsqu'une action de mise en cache par extraction est tentée. Pour de plus amples informations, veuillez consulter [Synchroniser un registre en amont avec un registre privé Amazon ECR](pull-through-cache.md).

```
{
    "version": "0",
    "id": "85fc3613-e913-7fc4-a80c-a3753e4aa9ae",
    "detail-type": "ECR Pull Through Cache Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2023-02-29T02:36:48Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ecr:us-west-2:123456789012:repository/docker-hub/alpine"
    ],
    "detail": {
        "rule-version": "1",
        "sync-status": "SUCCESS",
        "ecr-repository-prefix": "docker-hub",
        "repository-name": "docker-hub/alpine",
        "upstream-registry-url": "public.ecr.aws",
        "image-tag": "3.17.2",
        "image-digest": "sha256:4aa08ef415aecc80814cb42fa41b658480779d80c77ab15EXAMPLE",
    }
}
```

**Événement pour une analyse d'image terminée (analyse de base)**

Lorsque l'analyse de base est activée pour votre registre, l'événement suivant est envoyé lorsque chaque analyse d'image est terminée. Le paramètre `finding-severity-counts` ne retournera une valeur pour un niveau de gravité que s'il en existe un. Par exemple, si l'image ne contient pas de résultats au niveau `CRITICAL`, aucun nombre critique ne sera renvoyé. Pour de plus amples informations, veuillez consulter [Scannez les images pour détecter les vulnérabilités du système d'exploitation dans Amazon ECR](image-scanning-basic.md).

**Note**  
Pour plus de détails sur les événements qu'Amazon Inspector émet lorsque l'analyse améliorée est activée, consultez [EventBridge événements envoyés pour une analyse améliorée dans Amazon ECR](image-scanning-enhanced-events.md).

```
{
    "version": "0",
    "id": "85fc3613-e913-7fc4-a80c-a3753e4aa9ae",
    "detail-type": "ECR Image Scan",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-10-29T02:36:48Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ecr:us-east-1:123456789012:repository/my-repository-name"
    ],
    "detail": {
        "scan-status": "COMPLETE",
        "repository-name": "my-repository-name",
        "finding-severity-counts": {
	       "CRITICAL": 10,
	       "MEDIUM": 9
	     },
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "image-tags": []
    }
}
```

**Événement pour une notification de changement sur une ressource dont l'analyse améliorée est activée (analyse améliorée)**

Lorsque l'analyse améliorée est activée pour votre registre, l'événement suivant est envoyé par Amazon ECR lorsqu'il y a un changement avec une ressource dont l'analyse améliorée est activée. Cela inclut la création de nouveaux référentiels, la modification de la fréquence d'analyse d'un référentiel ou la création ou la suppression d'images dans des référentiels dont l'analyse améliorée est activée. Pour de plus amples informations, veuillez consulter [Scannez les images pour détecter les vulnérabilités logicielles dans Amazon ECR](image-scanning.md).

```
{
	"version": "0",
	"id": "0c18352a-a4d4-6853-ef53-0ab8638973bf",
	"detail-type": "ECR Scan Resource Change",
	"source": "aws.ecr",
	"account": "123456789012",
	"time": "2021-10-14T20:53:46Z",
	"region": "us-east-1",
	"resources": [],
	"detail": {
		"action-type": "SCAN_FREQUENCY_CHANGE",
		"repositories": [{
				"repository-name": "repository-1",
				"repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-1",
				"scan-frequency": "SCAN_ON_PUSH",
				"previous-scan-frequency": "MANUAL"
			},
			{
				"repository-name": "repository-2",
				"repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-2",
				"scan-frequency": "CONTINUOUS_SCAN",
				"previous-scan-frequency": "SCAN_ON_PUSH"
			},
			{
				"repository-name": "repository-3",
				"repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-3",
				"scan-frequency": "CONTINUOUS_SCAN",
				"previous-scan-frequency": "SCAN_ON_PUSH"
			}
		],
		"resource-type": "REPOSITORY",
		"scan-type": "ENHANCED"
	}
}
```

**Événement pour une suppression d'image**

L'événement suivant est envoyé lorsqu'une image est supprimée. Pour de plus amples informations, veuillez consulter [Supprimer une image dans Amazon ECR](delete_image.md).

```
{
    "version": "0",
    "id": "dd3b46cb-2c74-f49e-393b-28286b67279d",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-11-16T02:01:05Z",
    "region": "us-west-2",
    "resources": [],
    "detail": {
        "result": "SUCCESS",
        "repository-name": "my-repository-name",
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "action-type": "DELETE",
        "image-tag": "latest"
    }
}
```

**Evénement pour une action d'archivage d'images**

L'événement suivant est envoyé lorsqu'une image est archivée. Le `target-storage-class` champ sera défini sur`ARCHIVE`. L'événement inclut les types de média manifeste et artefact pour identifier le type de contenu archivé.

```
{
    "version": "0",
    "id": "4f5ec4d5-4de4-7aad-a046-EXAMPLE",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-08-06T00:58:09Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "action-type": "UPDATE_STORAGE_CLASS",
        "target-storage-class": "ARCHIVE",
        "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
        "repository-name": "ubuntu",
        "result": "SUCCESS",
        "manifest-media-type": "application/vnd.oci.image.manifest.v1+json",
        "artifact-media-type": "application/vnd.oci.image.config.v1+json"
    }
}
```

**Evénement relatif à une action de restauration d'image**

L'événement suivant est envoyé lorsqu'une image archivée est restaurée. Le `target-storage-class` champ sera défini sur`STANDARD`. L'événement inclut un `last-activated-at` champ indiquant la date de dernière restauration de l'image.

```
{
    "version": "0",
    "id": "7b8fc5e6-5ef5-8bbe-b157-EXAMPLE",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-08-06T01:15:22Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "action-type": "UPDATE_STORAGE_CLASS",
        "target-storage-class": "STANDARD",
        "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
        "repository-name": "ubuntu",
        "result": "SUCCESS",
        "manifest-media-type": "application/vnd.oci.image.manifest.v1+json",
        "artifact-media-type": "application/vnd.oci.image.config.v1+json",
        "last-activated-at": "2025-10-10T19:13:02.74Z"
    }
}
```

**Événement pour une action de restauration du référent**

L'événement suivant est envoyé lorsqu'un référent archivé (artefact de référence tel qu'un SBOM, une signature ou une attestation) est restauré. Notez que `detail-type` c'est `ECR Referrer Action` pour le distinguer des actions classiques sur les images. Les `artifact-media-type` champs `manifest-media-type` et identifient le type spécifique de référent à restaurer. Dans cet exemple, un artefact SBOM est en cours de restauration.

```
{
    "version": "0",
    "id": "8c9gd6f7-6fg6-9ccf-c268-EXAMPLE",
    "detail-type": "ECR Referrer Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-08-06T01:20:45Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "action-type": "UPDATE_STORAGE_CLASS",
        "target-storage-class": "STANDARD",
        "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
        "repository-name": "sbom",
        "result": "SUCCESS",
        "manifest-media-type": "application/vnd.cncf.oras.artifact.manifest.v1+json",
        "artifact-media-type": "text/sbom+json",
        "last-activated-at": "2025-10-10T19:13:02.74Z"
    }
}
```

**Evénement relatif à une réplication d'image terminée**

L'événement suivant est envoyé lorsque chaque réplication d'image est terminée. Pour de plus amples informations, veuillez consulter [Réplication d’images privées sur Amazon ECR](replication.md).

```
{
  "version": "0",
  "id": "c8b133b1-6029-ee73-e2a1-4f466b8ba999",
  "detail-type": "ECR Replication Action",
  "source": "aws.ecr",
  "account": "123456789012",
  "time": "2024-05-08T20:44:54Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ecr:us-east-1:123456789012:repository/docker-hub/alpine"
  ],
  "detail": {
    "result": "SUCCESS",
    "repository-name": "docker-hub/alpine",
    "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
    "source-account": "123456789012",
    "action-type": "REPLICATE",
    "source-region": "us-west-2",
    "image-tag": "3.17.2"
  }
}
```

**Evénement lié à un échec de réplication d'image**

L'événement suivant est envoyé lorsqu'une réplication d'image échoue. Le `result` champ contiendra `FAILED` et des informations d'erreur supplémentaires peuvent être incluses dans les détails de l'événement.

```
{
  "version": "0",
  "id": "d9c244c2-7130-ff84-f3b2-5g577c9cb000",
  "detail-type": "ECR Replication Action",
  "source": "aws.ecr",
  "account": "123456789012",
  "time": "2024-05-08T20:45:12Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ecr:us-east-1:123456789012:repository/my-app"
  ],
  "detail": {
    "result": "FAILED",
    "repository-name": "my-app",
    "image-digest": "sha256:8g6c3751gf7gc5g47603ege4511d5a80ead5g90f5893543f1489bde2345",
    "source-account": "123456789012",
    "action-type": "REPLICATE",
    "source-region": "us-west-2",
    "image-tag": "latest"
  }
}
```

# Journalisation des actions Amazon ECR avec AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

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 des CloudTrail événements individuels, pour les actions politiques relatives au cycle de vie impliquant l'expiration de 10 images ou plus, Amazon ECR envoie plusieurs événements à CloudTrail. En outre, Amazon ECR inclut un maximum de 100 identifications par image.

Lorsqu'un suivi est créé, vous pouvez activer la diffusion continue d' CloudTrail événements vers un compartiment Amazon S3, y compris des événements pour Amazon ECR. Si vous ne configurez pas de suivi, vous pouvez toujours consulter les événements les plus récents dans la CloudTrail console dans **Historique des événements**. 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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Informations Amazon ECR dans CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail est activé sur votre AWS compte lorsque vous le créez. Lorsqu'une activité se produit dans Amazon ECR, cette activité est enregistrée dans un CloudTrail événement avec d'autres événements de AWS service dans **l'historique** des événements. Vous pouvez consulter, rechercher et télécharger les événements récents dans votre AWS compte. Pour plus d'informations, consultez la section [Affichage des événements avec l'historique des CloudTrail événements](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Pour un enregistrement continu des événements de votre AWS compte, y compris des événements pour Amazon ECR, créez un historique. Un suivi permet CloudTrail de fournir 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 journal enregistre les événements dans la AWS partition et transmet 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 d'événements collectées dans les CloudTrail journaux et agir en conséquence. Pour en savoir plus, consultez : 
+ [Création d'un parcours pour votre AWS compte](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [AWS intégrations de services avec journaux CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuration des notifications Amazon SNS pour CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Réception de fichiers CloudTrail journaux de plusieurs régions](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) et [réception de fichiers CloudTrail journaux de plusieurs comptes](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Toutes les actions de l'API Amazon ECR sont enregistrées CloudTrail et documentées dans le manuel [Amazon Elastic Container Registry API Reference](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/). Lorsque vous effectuez des tâches courantes, des sections sont générées dans les fichiers CloudTrail 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 que `SetRepositoryPolicy` des sections sont générées dans les fichiers CloudTrail journaux. Lorsque vous transférez une image vers un référentiel,,`InitiateLayerUpload`,`UploadLayerPart`, `CompleteLayerUpload``PutImage`, et si le montage par blob est activé, des `MountLayer` 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 `UpdateImageStorageClass` section d'image est générée. Lorsque OCI les clients qui prennent en charge la OCI 1.1 spécification récupèrent la liste des référents, ou artefacts de référence, pour une image à l'aide de l'API Referrers, un événement est émis. `ListImageReferrers` CloudTrail Pour obtenir des exemples de ces tâches courantes, consultez [CloudTrail exemples de saisie de journal](#cloudtrail-examples).

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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Présentation des entrées des fichiers journaux Amazon ECR
<a name="understanding-service-name-entries"></a>

Un suivi 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 trace ordonnée des appels d'API publics, ils n'apparaissent donc pas dans un ordre spécifique. 

### CloudTrail exemples de saisie de journal
<a name="cloudtrail-examples"></a>

Vous trouverez ci-dessous des exemples de saisie de CloudTrail journal pour quelques tâches Amazon ECR courantes.

Ces exemples ont été mis en forme pour faciliter la lecture. Dans un fichier CloudTrail 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 véritable fichier CloudTrail journal, vous pouvez voir les entrées et les événements de plusieurs AWS services.

**Important**  
La **source IPAddress** est l'adresse IP à partir de laquelle la demande a été effectuée. 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 entrée, 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 sous le nom DNS du AWS service.

**Topics**
+ [Exemple : Créer une action de référentiel](#cloudtrail-examples-create-repository)
+ [Exemple : action d' AWS KMS `CreateGrant`API lors de la création d'un référentiel Amazon ECR](#cloudtrail-examples-create-repository-kms)
+ [Exemple : Action de transmission d’image](#cloudtrail-examples-push-image)
+ [Exemple : Action d'extraction d'image](#cloudtrail-examples-image-pull)
+ [Exemple : Action de politique de cycle de vie d'image](#cloudtrail-examples-lcp)
+ [Exemple : action d'archivage d'images](#cloudtrail-examples-image-archive)
+ [Exemple : action de restauration d'image](#cloudtrail-examples-image-restore)
+ [Exemple : action des référents d'images](#cloudtrail-examples-image-referrers-action)

#### Exemple : Créer une action de référentiel
<a name="cloudtrail-examples-create-repository"></a>

L'exemple suivant montre une entrée de CloudTrail journal illustrant l'`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 : action d' AWS KMS `CreateGrant`API lors de la création d'un référentiel Amazon ECR
<a name="cloudtrail-examples-create-repository-kms"></a>

L'exemple suivant montre une entrée de CloudTrail journal qui illustre l' AWS KMS `CreateGrant`action à effectuer lors de la création d'un référentiel Amazon ECR avec le chiffrement KMS activé. Pour chaque dépôt créé avec le chiffrement KMS activé, vous devriez voir apparaître deux entrées de `CreateGrant` journal 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
<a name="cloudtrail-examples-push-image"></a>

L'exemple suivant montre une entrée de CloudTrail journal qui illustre une image push qui utilise l'`PutImage`action.

**Note**  
Lorsque vous insérez une image, vous verrez `InitiateLayerUpload` également des `CompleteLayerUpload` références et des références dans les CloudTrail journaux. `UploadLayerPart`

```
{
    "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
<a name="cloudtrail-examples-image-pull"></a>

L'exemple suivant montre une entrée de CloudTrail journal qui illustre une extraction d'image utilisant l'`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
<a name="cloudtrail-examples-lcp"></a>

L'exemple suivant montre une entrée de CloudTrail journal qui montre quand une image a expiré 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 d'une politique de cycle de vie, Amazon ECR génère une entrée de CloudTrail journal avec le champ du nom de l'événement de`DryRunEvent`, avec exactement la même structure que le`PolicyExecutionEvent`. En modifiant le nom de l'événement en`DryRunEvent`, vous pouvez plutôt filtrer les événements de course à sec.

**Important**  
En raison des limites de taille des CloudTrail événements individuels, pour les actions politiques relatives au cycle de vie impliquant l'expiration de 10 images ou plus, 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
<a name="cloudtrail-examples-image-archive"></a>

L'exemple suivant montre une entrée de CloudTrail journal qui montre qu'une image est archivée à l'aide de l'`UpdateImageStorageClass`action `targetStorageClass` définie 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
<a name="cloudtrail-examples-image-restore"></a>

Les exemples suivants présentent des entrées de CloudTrail journal illustrant la restauration d'une image. 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

1. 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 de l'`UpdateImageStorageClass`action `targetStorageClass` définie sur`STANDARD`. La réponse indique l'état de l'image sous la forme`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. La `serviceEventDetails` 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 des référents d'images
<a name="cloudtrail-examples-image-referrers-action"></a>

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

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