

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.

# Copiez les images des conteneurs Amazon ECR sur et Comptes AWS Régions AWS
<a name="copy-ecr-container-images-across-accounts-regions"></a>

*Faisal Shahdad, Amazon Web Services*

## Résumé
<a name="copy-ecr-container-images-across-accounts-regions-summary"></a>

Ce modèle vous montre comment utiliser une approche sans serveur pour répliquer des images balisées depuis des référentiels Amazon Elastic Container Registry (Amazon ECR) existants vers d'autres référentiels et. Comptes AWS Régions AWS La solution permet AWS Step Functions de gérer le flux de travail de réplication et de AWS Lambda copier des images de conteneurs de grande taille.

Amazon ECR utilise des fonctionnalités natives de réplication [entre régions](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-settings-examples.html#registry-settings-examples-crr-single) et [entre comptes](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-settings-examples.html#registry-settings-examples-crossaccount) qui répliquent les images de conteneurs entre les régions et les comptes. Mais ces fonctionnalités répliquent les images uniquement à partir du moment où la réplication est activée. Il n'existe aucun mécanisme permettant de répliquer des images existantes dans différentes régions et comptes. 

Ce modèle aide les équipes d'intelligence artificielle (IA) à distribuer des modèles, des frameworks (par exemple,, et Hugging Face) et des dépendances d'apprentissage automatique conteneurisé (ML) à d'autres comptes et régions. PyTorch TensorFlow Cela peut vous aider à surmonter les limites de service et à optimiser les ressources de calcul du GPU. Vous pouvez également répliquer de manière sélective les référentiels Amazon ECR à partir de comptes sources et de régions spécifiques. Pour plus d'informations, consultez la section [La réplication entre régions dans Amazon ECR a été lancée.](https://aws.amazon.com/blogs/containers/cross-region-replication-in-amazon-ecr-has-landed/)

## Conditions préalables et limitations
<a name="copy-ecr-container-images-across-accounts-regions-prereqs"></a>

**Conditions préalables**
+ Deux comptes actifs ou plus Comptes AWS (un compte source et un compte de destination, au minimum)
+ Autorisations appropriées Gestion des identités et des accès AWS (IAM) dans tous les comptes
+ Docker pour créer l'image du conteneur Lambda
+ AWS Command Line Interface (AWS CLI) configuré pour tous les comptes

**Limites**
+ **Exclusion d'images non balisées :** la solution copie uniquement les images de conteneur comportant des balises explicites. Il ignore les images non étiquetées qui existent avec `SHA256` des résumés.
+ **Contraintes de délai d'exécution Lambda : elles** AWS Lambda sont limitées à un délai d'exécution maximal de 15 minutes, ce qui peut être insuffisant pour copier de grandes images de conteneurs ou des référentiels.
+ **Gestion manuelle de l'image du conteneur :** le code `crane-app.py` Python nécessite la reconstruction et le redéploiement de l'image du conteneur Lambda.
+ **Capacité de traitement parallèle limitée :** le paramètre `MaxConcurrency` d'état limite le nombre de référentiels que vous pouvez copier simultanément. Vous pouvez toutefois modifier ce paramètre dans le AWS CloudFormation modèle du compte source. Notez que des valeurs de simultanéité plus élevées peuvent vous faire dépasser les limites de débit de service et les quotas d'exécution Lambda au niveau du compte.

## Architecture
<a name="copy-ecr-container-images-across-accounts-regions-architecture"></a>

**Pile cible**

Le motif comporte quatre éléments principaux :
+ **Infrastructure du compte source :** CloudFormation modèle qui crée les composants d'orchestration
+ **Infrastructure de comptes de destination :** CloudFormation modèle qui crée des rôles d'accès entre comptes
+ Fonction **Lambda : fonction** basée sur Python qui utilise Crane pour copier efficacement des images
+ **Image de conteneur —** Conteneur Docker qui regroupe la fonction Lambda avec les outils requis

**Architecture cible**

![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/787185e7-664b-4ed8-b30f-1d9507f13377/images/cc7d9823-3dc8-4090-a203-910b1ac4447c.png)


**Flux de travail Step Functions**

La machine d'état Step Functions orchestre les opérations suivantes, comme le montre le schéma suivant :
+ `PopulateRepositoryList`**—** Analyse les référentiels Amazon ECR et remplit Amazon DynamoDB
+ `GetRepositoryList`**—** Récupère une liste de référentiels unique depuis DynamoDB
+ `DeduplicateRepositories`**—** Garantit qu'il n'y a pas de double traitement
+ `CopyRepositories`**—** Gère la copie parallèle des référentiels
+ `NotifySuccess`/`NotifyFailure`**—** Notifications Amazon Simple Notification Service (Amazon SNS) basées sur le résultat de l'exécution

![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/787185e7-664b-4ed8-b30f-1d9507f13377/images/1b740084-ba2b-4956-aa12-ebbf52be5e7d.png)


## Outils
<a name="copy-ecr-container-images-across-accounts-regions-tools"></a>

**Outils Amazon**
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)est un service d'orchestration sans serveur qui vous aide à combiner des fonctions Lambda et d'autres fonctions pour créer des applications critiques Services AWS pour l'entreprise.

**Autres outils**
+ [Crane](https://michaelsauter.github.io/crane/index.html) est un outil d'orchestration Docker. Il est similaire à Docker Compose mais possède des fonctionnalités supplémentaires.
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.

**Référentiel de code**
+ Le code de ce modèle est disponible dans le GitHub [sample-ecr-copy référentiel](https://github.com/aws-samples/sample-ecr-copy). Vous pouvez utiliser le CloudFormation modèle du référentiel pour créer les ressources sous-jacentes.

## Bonnes pratiques
<a name="copy-ecr-container-images-across-accounts-regions-best-practices"></a>

Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="copy-ecr-container-images-across-accounts-regions-epics"></a>

### Préparez votre environnement
<a name="prepare-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez AWS CLI les profils. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur de données, ingénieur ML | 
| Rassemblez les informations requises. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur de données, ingénieur ML | 
| Pour cloner le référentiel. | Clonez le référentiel du modèle sur votre poste de travail local :<pre>git clone https://github.com/aws-samples/sample-ecr-copy</pre> | DevOps ingénieur, ingénieur de données, ingénieur ML | 

### Déployer l'infrastructure pour le compte de destination
<a name="deploy-infrastructure-for-the-destination-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez le modèle. | Validez le CloudFormation modèle :<pre>aws cloudformation validate-template \<br />  --template-body file://"Destination Account cf_template.yml" \<br />  --profile destination-account</pre> | DevOps ingénieur, ingénieur ML, ingénieur de données | 
| Déployez l'infrastructure de destination. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 
| Vérifier le déploiement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur ML, ingénieur de données | 

### Création et déploiement de l'image du conteneur Lambda
<a name="build-and-deploy-the-lam-container-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez la construction du conteneur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 
| Créez l'image du conteneur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 
| Créez un référentiel et téléchargez l'image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 
| Vérifiez l'image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 

### Déployer l'infrastructure du compte source
<a name="deploy-the-source-account-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez les paramètres de déploiement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, DevOps ingénieur, ingénieur ML | 
| Validez le modèle source. | Validez le CloudFormation modèle source :<pre>aws cloudformation validate-template \<br />  --template-body file://"Source Account Cf template.yml" \<br />  --profile source-account</pre> | Ingénieur de données, ingénieur ML, DevOps ingénieur | 
| Déployez l'infrastructure source. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 
| Vérifiez le déploiement et collectez les résultats. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur ML, ingénieur de données | 
| Confirmez votre abonnement par e-mail. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingénieur de données, ingénieur ML, DevOps ingénieur | 

### Exécuter et surveiller le processus de copie
<a name="run-and-monitor-the-copy-process"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez et surveillez le processus de copie. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur ML, ingénieur de données | 
| Exécutez la fonction step. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur ML, ingénieur de données | 
| Surveillez les progrès. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur ML, ingénieur de données | 
| Vérifiez les résultats. | Attendez que le processus soit terminé (mis à jour toutes les 30 secondes) :<pre>while true; do<br />  STATUS=$(aws stepfunctions describe-execution \<br />    --execution-arn $EXECUTION_ARN \<br />    --profile source-account \<br />    --region $SOURCE_REGION \<br />    --query 'status' \<br />    --output text)<br />  <br />  echo "Current status: $STATUS"<br />  <br />  if [[ "$STATUS" == "SUCCEEDED" || "$STATUS" == "FAILED" || "$STATUS" == "TIMED_OUT" || "$STATUS" == "ABORTED" ]]; then<br />    break<br />  fi<br />  <br />  sleep 30<br />done<br /><br />echo "Final execution status: $STATUS"</pre> | DevOps ingénieur, ingénieur ML, ingénieur de données | 
| Vérifiez les images. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingénieur, ingénieur de données, ingénieur ML | 

## Résolution des problèmes
<a name="copy-ecr-container-images-across-accounts-regions-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les fonctions Step ne s'exécutent pas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | 

## Ressources connexes
<a name="copy-ecr-container-images-across-accounts-regions-resources"></a>
+ [Documentation sur les grues](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md)
+ [Qu'est-ce qu'Amazon Elastic Container Registry ?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Qu'est-ce que c'est AWS Lambda ?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Qu'est-ce que Step Functions ?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)

## Informations supplémentaires
<a name="copy-ecr-container-images-across-accounts-regions-additional"></a>

**Paramètres de configuration**


| 
| 
| Paramètre | Description | Exemple | 
| --- |--- |--- |
| `SourceAccountId` |  Compte AWS Identifiant de la source | `11111111111` | 
| `DestinationAccountId` |  Compte AWS Identifiant de destination | `22222222222` | 
| `DestinationRegion` | Cible Région AWS | `us-east-2` | 
| `SourceRegion` | La source Région AWS | `us-east-1` | 
| `NotificationEmail` | E-mail pour les notifications | `abc@xyz.com` | 
| `RepositoryList` | Référentiels à copier | `repo1,repo2,repo3` | 
| `LambdaImageUri` | URI de l'image du conteneur Lambda | `${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com/ecr-copy-lambda:latest` | 