

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Copia le immagini dei container Amazon ECR su e Account AWS Regioni AWS
<a name="copy-ecr-container-images-across-accounts-regions"></a>

*Faisal Shahdad, Amazon Web Services*

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

Questo modello mostra come utilizzare un approccio serverless per replicare immagini con tag da repository Amazon Elastic Container Registry (Amazon ECR) esistenti su altri e. Account AWS Regioni AWS La soluzione consente di gestire il flusso AWS Step Functions di lavoro di replica e le AWS Lambda funzioni per copiare immagini di contenitori di grandi dimensioni.

Amazon ECR utilizza funzionalità di replica native [tra regioni](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-settings-examples.html#registry-settings-examples-crr-single) e [account che replicano le immagini dei container tra](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-settings-examples.html#registry-settings-examples-crossaccount) regioni e account. Tuttavia, queste funzionalità replicano le immagini solo dal momento in cui la replica viene attivata. Non esiste alcun meccanismo per replicare le immagini esistenti in diverse regioni e account. 

Questo modello aiuta i team di intelligenza artificiale (AI) a distribuire modelli, framework (ad esempio, e TensorFlow Hugging Face) e dipendenze di machine learning (ML) containerizzati ad altri account e regioni. PyTorch Questo può aiutarti a superare i limiti del servizio e ottimizzare le risorse di calcolo della GPU. Puoi anche replicare selettivamente i repository Amazon ECR da account e regioni di origine specifici. Per ulteriori informazioni, consulta la pagina [Cross-Region Replication in Amazon ECR](https://aws.amazon.com/blogs/containers/cross-region-replication-in-amazon-ecr-has-landed/) has landed.

## Prerequisiti e limitazioni
<a name="copy-ecr-container-images-across-accounts-regions-prereqs"></a>

**Prerequisiti**
+ Due o più account attivi Account AWS (almeno un account di origine e un account di destinazione)
+ Autorizzazioni appropriate AWS Identity and Access Management (IAM) in tutti gli account
+ Docker per creare l'immagine del contenitore Lambda
+ AWS Command Line Interface (AWS CLI) configurato per tutti gli account

**Limitazioni**
+ **Esclusione di immagini senza tag:** la soluzione copia solo le immagini dei contenitori con tag espliciti. Ignora le immagini senza tag che esistono con i digest. `SHA256`
+ **Vincoli di timeout di esecuzione Lambda:** AWS Lambda è limitato a un timeout di esecuzione massimo di 15 minuti, che potrebbe essere insufficiente per copiare immagini di contenitori o repository di grandi dimensioni.
+ **Gestione manuale dell'immagine del contenitore:** il codice `crane-app.py` Python richiede la ricostruzione e la ridistribuzione dell'immagine del contenitore Lambda.
+ **Capacità di elaborazione parallela limitata:** l'impostazione `MaxConcurrency` dello stato limita il numero di repository che è possibile copiare contemporaneamente. Tuttavia, puoi modificare questa impostazione nel AWS CloudFormation modello dell'account di origine. Tieni presente che valori di concorrenza più elevati possono causare il superamento dei limiti di velocità di servizio e delle quote di esecuzione Lambda a livello di account.

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

**Pila di obiettivi**

Il pattern ha quattro componenti principali:
+ **Infrastruttura dell'account di origine:** CloudFormation modello che crea i componenti di orchestrazione
+ **Infrastruttura dell'account di destinazione:** CloudFormation modello che crea ruoli di accesso tra account
+ Funzione **Lambda: funzione** basata su Python che utilizza Crane per una copia efficiente delle immagini
+ **Immagine del contenitore:** contenitore Docker che racchiude la funzione Lambda con gli strumenti richiesti

**Architettura Target**

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


**Flusso di lavoro Step Functions**

La macchina a stati Step Functions orchestra quanto segue, come mostrato nel diagramma seguente:
+ `PopulateRepositoryList`**—** Scansiona i repository Amazon ECR e popola Amazon DynamoDB
+ `GetRepositoryList`**—** Recupera un elenco di repository univoco da DynamoDB
+ `DeduplicateRepositories`**—** Assicura che non vi siano elaborazioni duplicate
+ `CopyRepositories`**—** Gestisce la copia parallela dei repository
+ `NotifySuccess`/`NotifyFailure`**—** Notifiche Amazon Simple Notification Service (Amazon SNS) basate sul risultato dell'esecuzione

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


## Tools (Strumenti)
<a name="copy-ecr-container-images-across-accounts-regions-tools"></a>

**Strumenti Amazon**
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ti CloudWatch aiuta a monitorare i parametri delle tue AWS risorse e delle applicazioni su cui esegui AWS in tempo reale.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)è un servizio di orchestrazione serverless che consente di combinare funzioni Lambda e altro Servizi AWS per creare applicazioni aziendali critiche.

**Altri strumenti**
+ [Crane](https://michaelsauter.github.io/crane/index.html) è uno strumento di orchestrazione Docker. È simile a Docker Compose ma ha funzionalità aggiuntive.
+ [Docker](https://www.docker.com/) è un insieme di prodotti Platform as a Service (PaaS) che utilizzano la virtualizzazione a livello di sistema operativo per fornire software in contenitori.

**Archivio di codici**
+ Il codice per questo pattern è disponibile nel GitHub [sample-ecr-copy repository](https://github.com/aws-samples/sample-ecr-copy). È possibile utilizzare il CloudFormation modello del repository per creare le risorse sottostanti.

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

Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le [best practice relative alla [concessione dei privilegi minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e alla sicurezza nella documentazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM.

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

### Prepara un ambiente
<a name="prepare-your-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura AWS CLI i profili. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere dei dati, ingegnere ML | 
| Raccogli le informazioni richieste. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere dati, ingegnere ML | 
| Clonare il repository. | Clona il repository del pattern sulla tua workstation locale:<pre>git clone https://github.com/aws-samples/sample-ecr-copy</pre> | DevOps ingegnere, ingegnere dei dati, ingegnere ML | 

### Implementa l'infrastruttura per l'account di destinazione
<a name="deploy-infrastructure-for-the-destination-account"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida il modello. | Convalida il modello: CloudFormation <pre>aws cloudformation validate-template \<br />  --template-body file://"Destination Account cf_template.yml" \<br />  --profile destination-account</pre> | DevOps ingegnere, ingegnere ML, ingegnere dati | 
| Implementa l'infrastruttura di destinazione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 
| Verifica l'implementazione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere ML, ingegnere dati | 

### Crea e distribuisci l'immagine del contenitore Lambda
<a name="build-and-deploy-the-lam-container-image"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Prepara la costruzione del contenitore. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 
| Crea l'immagine del contenitore. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 
| Crea un repository e carica l'immagine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 
| Verifica l'immagine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 

### Implementa l'infrastruttura dell'account di origine
<a name="deploy-the-source-account-infrastructure"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Preparare i parametri di distribuzione. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, DevOps ingegnere, ingegnere ML | 
| Convalida il modello sorgente. | Convalida il modello sorgente: CloudFormation <pre>aws cloudformation validate-template \<br />  --template-body file://"Source Account Cf template.yml" \<br />  --profile source-account</pre> | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 
| Implementa l'infrastruttura di origine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 
| Verifica l'implementazione e raccogli gli output. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere ML, ingegnere dati | 
| Conferma la tua iscrizione via e-mail. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | Ingegnere dei dati, ingegnere ML, DevOps ingegnere | 

### Esegui e monitora il processo di copia
<a name="run-and-monitor-the-copy-process"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui e monitora il processo di copia. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere ML, ingegnere dati | 
| Esegui la funzione step. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere ML, ingegnere dati | 
| Monitora i progressi. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere ML, ingegnere dati | 
| Controlla i risultati. | Attendi il completamento del processo (aggiornato ogni 30 secondi):<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 ingegnere, ingegnere ML, ingegnere dati | 
| Verifica le immagini. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | DevOps ingegnere, ingegnere dei dati, ingegnere ML | 

## risoluzione dei problemi
<a name="copy-ecr-container-images-across-accounts-regions-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Le funzioni Step non vengono eseguite. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/copy-ecr-container-images-across-accounts-regions.html) | 

## Risorse correlate
<a name="copy-ecr-container-images-across-accounts-regions-resources"></a>
+ [Documentazione Crane](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md)
+ [Cos'è Amazon Elastic Container Registry?](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Che cos'è AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Che cos'è Step Functions?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)

## Informazioni aggiuntive
<a name="copy-ecr-container-images-across-accounts-regions-additional"></a>

**Parametri di configurazione**


| 
| 
| Parametro | Description | Esempio | 
| --- |--- |--- |
| `SourceAccountId` |  Account AWS ID di origine | `11111111111` | 
| `DestinationAccountId` |  Account AWS ID di destinazione | `22222222222` | 
| `DestinationRegion` | Obiettivo Regione AWS | `us-east-2` | 
| `SourceRegion` | Fonte Regione AWS | `us-east-1` | 
| `NotificationEmail` | Email per le notifiche | `abc@xyz.com` | 
| `RepositoryList` | Archivi da copiare | `repo1,repo2,repo3` | 
| `LambdaImageUri` | URI dell'immagine del contenitore Lambda | `${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com/ecr-copy-lambda:latest` | 