

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à.

# Personalizzazione delle immagini Docker per Amazon EMR su EKS
<a name="docker-custom-images"></a>

È possibile utilizzare immagini Docker personalizzate con Amazon EMR su EKS. La personalizzazione dell'immagine di runtime di Amazon EMR su EKS fornisce i seguenti vantaggi: 
+ Confezionare le dipendenze delle applicazioni e l'ambiente di runtime in un unico container immutabile che promuove la portabilità e semplifica la gestione delle dipendenze per ogni carico di lavoro.
+ Installare e configurare pacchetti ottimizzati per i carichi di lavoro. Questi pacchetti potrebbero non essere ampiamente disponibili nella distribuzione pubblica dei runtime Amazon EMR.
+ Integra Amazon EMR su EKS con i processi correnti di costruzione, test e implementazione all'interno della tua organizzazione, inclusi sviluppo e test locali.
+ Applica processi di sicurezza consolidati, quali la scansione delle immagini, che soddisfano i requisiti di conformità e governance all'interno dell'organizzazione.

**Topics**
+ [Come personalizzare le immagini Docker](docker-custom-images-steps.md)
+ [Dettagli per la selezione dell'URI di un'immagine di base](docker-custom-images-tag.md)
+ [Considerazioni sulla personalizzazione delle immagini](docker-custom-images-considerations.md)

# Come personalizzare le immagini Docker
<a name="docker-custom-images-steps"></a>

Segui questi passaggi per personalizzare le immagini Docker per Amazon EMR su EKS. I passaggi mostrano come ottenere un'immagine di base, personalizzarla e pubblicarla e inviare un carico di lavoro utilizzando l'immagine.
+ [Prerequisiti](#docker-custom-images-prereq)
+ [Fase 1: recupero di un'immagine di base da Amazon Elastic Container Registry (Amazon ECR)](#docker-custom-images-retrieve)
+ [Fase 2: personalizzazione di un'immagine di base](#docker-custom-images-customize)
+ [Fase 3: (facoltativo ma consigliato) convalida di un'immagine personalizzata](#docker-custom-images-validate)
+ [Fase 4: Pubblicazione di un'immagine personalizzata](#docker-custom-images-publish)
+ [Fase 5: Invio di un carico di lavoro Spark in Amazon EMR utilizzando un'immagine personalizzata](#docker-custom-images-submit)

**Nota**  
Altre opzioni da prendere in considerazione quando si personalizzano le immagini Docker sono la personalizzazione per gli endpoint interattivi, cosa che si fa per assicurarsi di avere le dipendenze richieste, o l'utilizzo di immagini di contenitori multiarchitetturali:  
[Personalizzazione delle immagini Docker per endpoint interattivi](docker-custom-images-managed-endpoint.md)
[Lavorare con immagini multi-architettura](docker-custom-images-multi-architecture.md)

## Prerequisiti
<a name="docker-custom-images-prereq"></a>
+ Completa le fasi [Configurazione di Amazon EMR su EKS](setting-up.md) per Amazon EMR su EKS. 
+ Installa Docker nel tuo ambiente. Per ulteriori informazioni, consulta [Ottieni Docker](https://docs.docker.com/get-docker/).

## Fase 1: recupero di un'immagine di base da Amazon Elastic Container Registry (Amazon ECR)
<a name="docker-custom-images-retrieve"></a>

L'immagine di base contiene il runtime Amazon EMR e i connettori utilizzati per accedere ad altri servizi AWS . Per Amazon EMR 6.9.0 e versioni successive, è possibile ottenere le immagini di base da Amazon ECR Public Gallery. Sfoglia la galleria per trovare il collegamento all'immagine e trasferiscila nel tuo Workspace locale. Ad esempio, per la versione Amazon EMR 7.12.0, il `docker pull` comando seguente consente di ottenere l'immagine di base standard più recente. Puoi sostituire `emr-7.12.0:latest` con `emr-7.12.0-spark-rapids:latest` per recuperare l'immagine che dispone dell'acceleratore RAPIDS Nvidia. Puoi anche sostituire `emr-7.12.0:latest` con `emr-7.12.0-java11:latest` per recuperare l'immagine con runtime Java 11.

```
docker pull public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest
```

Se desideri recuperare l'immagine di base per il rilascio 6.9.0 o precedenti di Amazon EMR o se preferisci recuperarla dagli account di registro Amazon ECR in ogni Regione, completa la procedura seguente:

1. Scegli un URI dell'immagine di base. L'URI dell'immagine presenta questo formato, `ECR-registry-account.dkr.ecr.Region.amazonaws.com/spark/container-image-tag`, come illustrato nell'esempio seguente.

   ```
   895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
   ```

   Per scegliere un'immagine di base nella tua Regione, consulta [Dettagli per la selezione dell'URI di un'immagine di base](docker-custom-images-tag.md). 

1. Accedi al repository Amazon ECR in cui è memorizzata l'immagine di base. Sostituisci *895885662937* e *us-west-2* con l'account del registro Amazon ECR e la AWS regione che hai selezionato. 

   ```
   aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 895885662937.dkr.ecr.us-west-2.amazonaws.com
   ```

1. Estrai l'immagine di base nel Workspace locale. *emr-6.6.0:latest*Sostituiscilo con il tag dell'immagine del contenitore che hai selezionato.

   ```
   docker pull 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
   ```

## Fase 2: personalizzazione di un'immagine di base
<a name="docker-custom-images-customize"></a>

Segui questi passaggi per personalizzare l'immagine di base che hai estratto da Amazon ECR. 

1. Crea un nuovo `Dockerfile` nel Workspace locale.

1. Modifica il `Dockerfile` appena creato e aggiungi i seguenti contenuti. Questo `Dockerfile` usa l'immagine di container estratto da `895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest`. 

   ```
   FROM 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
   USER root
   ### Add customization commands here ####
   USER hadoop:hadoop
   ```

1. Aggiungi comandi in `Dockerfile` per personalizzare l'immagine di base. Ad esempio, aggiungi un comando per installare le librerie Python, come mostrato qui di seguito in `Dockerfile`. 

   ```
   FROM 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
   USER root
   RUN pip3 install --upgrade boto3 pandas numpy // For python 3
   USER hadoop:hadoop
   ```

1. Dalla stessa directory in cui viene creato `Dockerfile`, esegui il comando seguente per generare l'immagine Docker. Fornisci un nome per l'immagine Docker, ad esempio. *emr6.6\$1custom* 

   ```
   docker build -t emr6.6_custom .
   ```

## Fase 3: (facoltativo ma consigliato) convalida di un'immagine personalizzata
<a name="docker-custom-images-validate"></a>

Si consiglia di testare la compatibilità dell'immagine personalizzata prima di pubblicarla. Puoi utilizzare la [CLI di immagine personalizzata di Amazon EMR su EKS](https://github.com/awslabs/amazon-emr-on-eks-custom-image-cli) per verificare se l'immagine ha le strutture di file richieste e le configurazioni corrette per l'esecuzione su Amazon EMR su EKS. 

**Nota**  
La CLI di immagine personalizzata di Amazon EMR su EKS non può confermare che l'immagine sia priva di errori. Prestare attenzione quando si rimuovono le dipendenze dalle immagini di base.

Seguire i seguenti fasi per convalidare l'immagine personalizzata. 

1. Download e installa la CLI di immagine personalizzata di Amazon EMR su EKS. Per ulteriori informazioni, consulta [Guida all'installazione della CLI di immagine personalizzata di Amazon EMR su EKS](https://github.com/awslabs/amazon-emr-on-eks-custom-image-cli/blob/main/installer/assets/INSTALLATION_GUIDE.md).

1. Eseguire il comando seguente per testare l'installazione.

   ```
   emr-on-eks-custom-image --version
   ```

   Di seguito è illustrato un esempio di output.

   ```
   Amazon EMR on EKS Custom Image CLI
   Version: x.xx
   ```

1. Eseguire il comando seguente per convalidare l'immagine personalizzata.

   ```
   emr-on-eks-custom-image validate-image -i image_name -r release_version [-t image_type]
   ```
   + `-i` specifica l'URI dell'immagine locale che deve essere convalidato. Questo può essere l'URI dell'immagine, qualsiasi nome o tag definito per l'immagine.
   + `-r` specifica la versione di rilascio esatta per l'immagine di base, ad esempio `emr-6.6.0-latest`.
   + `-t` specifica il tipo di immagine. Se si tratta di un'immagine Spark, inserisci `spark`. Il valore predefinito è `spark`. L'attuale versione CLI per immagine personalizzata di Amazon EMR su EKS supporta solo le immagini runtime Spark.

   Se si esegue correttamente il comando e l'immagine personalizzata soddisfa tutte le configurazioni e le strutture di file richieste, l'output restituito visualizza i risultati di tutti i test, come dimostra l'esempio seguente.

   ```
   Amazon EMR on EKS Custom Image Test
   Version: x.xx
   ... Checking if docker cli is installed
   ... Checking Image Manifest
   [INFO] Image ID: xxx
   [INFO] Created On: 2021-05-17T20:50:07.986662904Z
   [INFO] Default User Set to hadoop:hadoop : PASS
   [INFO] Working Directory Set to /home/hadoop : PASS
   [INFO] Entrypoint Set to /usr/bin/entrypoint.sh : PASS
   [INFO] SPARK_HOME is set with value: /usr/lib/spark : PASS
   [INFO] JAVA_HOME is set with value: /etc/alternatives/jre : PASS
   [INFO] File Structure Test for spark-jars in /usr/lib/spark/jars: PASS
   [INFO] File Structure Test for hadoop-files in /usr/lib/hadoop: PASS
   [INFO] File Structure Test for hadoop-jars in /usr/lib/hadoop/lib: PASS
   [INFO] File Structure Test for bin-files in /usr/bin: PASS
   ... Start Running Sample Spark Job
   [INFO] Sample Spark Job Test with local:///usr/lib/spark/examples/jars/spark-examples.jar : PASS
   -----------------------------------------------------------------
   Overall Custom Image Validation Succeeded.
   -----------------------------------------------------------------
   ```

   Se l'immagine personalizzata non soddisfa le configurazioni o le strutture di file richieste, si verificano messaggi di errore. L'output restituito fornisce informazioni sulle configurazioni o sulle strutture di file errate.

## Fase 4: Pubblicazione di un'immagine personalizzata
<a name="docker-custom-images-publish"></a>

Pubblica la nuova immagine Docker nel registro Amazon ECR. 

1. Esegui il comando seguente per creare un repository Amazon ECR per archiviare l'immagine Docker. Fornisci un nome per il tuo repository, ad esempio. *emr6.6\$1custom\$1repo* Sostituisci *us-west-2* con la tua regione. 

   ```
   aws ecr create-repository \
       --repository-name emr6.6_custom_repo \
       --image-scanning-configuration scanOnPush=true \
       --region us-west-2
   ```

   Per ulteriori informazioni, consulta [Creazione di un repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-create-repository) nella *Guida per l'utente di Amazon ECR*.

1. Esegui il comando seguente per autenticarti nel registro di default.

   ```
   aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-west-2.amazonaws.com
   ```

   Per ulteriori informazioni, consulta [Autenticazione nel registro di default](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) nella *Guida per l'utente di Amazon ECR*.

1. Tagga e pubblica un'immagine nel repository Amazon ECR creato. 

   Tagga l'immagine.

   ```
   docker tag emr6.6_custom aws_account_id.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repo
   ```

   Invia l'immagine.

   ```
   docker push aws_account_id.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repo
   ```

   Per ulteriori informazioni, consulta [Invio di un'immagine ad Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-push-image) nella *Guida per l'utente di Amazon ECR*.

## Fase 5: Invio di un carico di lavoro Spark in Amazon EMR utilizzando un'immagine personalizzata
<a name="docker-custom-images-submit"></a>

Dopo aver creato e pubblicato un'immagine personalizzata, puoi inviare un processo Amazon EMR su EKS utilizzando un'immagine personalizzata. 

Innanzitutto, crea un start-job-run-request file.json e specifica il `spark.kubernetes.container.image` parametro per fare riferimento all'immagine personalizzata, come dimostra il seguente file JSON di esempio. 

**Nota**  
Puoi utilizzare lo schema `local://` per fare riferimento ai file disponibili nell'immagine personalizzata come mostrato con l'argomento `entryPoint` nel frammento JSON riportato di seguito. È possibile utilizzare anche la schema `local://` per fare riferimento alle dipendenze dell'applicazione. Tutti i file e le dipendenze a cui si fa riferimento utilizzando lo schema `local://` devono essere già presenti nel percorso specificato nell'immagine personalizzata.

```
{
    "name": "spark-custom-image", 
    "virtualClusterId": "virtual-cluster-id", 
    "executionRoleArn": "execution-role-arn", 
    "releaseLabel": "emr-6.6.0-latest", 
    "jobDriver": {
      "sparkSubmitJobDriver": {
        "entryPoint": "local:///usr/lib/spark/examples/jars/spark-examples.jar", 
        "entryPointArguments": [
                  "10"
              ],
         "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.kubernetes.container.image=123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repo"
       }
    }
}
```

Puoi fare riferimento all'immagine personalizzata con le proprietà `applicationConfiguration` come illustrato nell'esempio seguente.

```
{
    "name": "spark-custom-image", 
    "virtualClusterId": "virtual-cluster-id", 
    "executionRoleArn": "execution-role-arn", 
    "releaseLabel": "emr-6.6.0-latest", 
    "jobDriver": {
      "sparkSubmitJobDriver": {
        "entryPoint": "local:///usr/lib/spark/examples/jars/spark-examples.jar", 
        "entryPointArguments": [
                  "10"
              ],
         "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi"
       }
    },
    "configurationOverrides": {
        "applicationConfiguration": [
            {
                "classification": "spark-defaults",
                "properties": {
                    "spark.kubernetes.container.image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.6_custom_repo"
                }
            }
        ]
    }
}
```

Successivamente, esegui il comando `start-job-run` per inviare il processo.

```
aws emr-containers start-job-run --cli-input-json file://./start-job-run-request.json
```

Negli esempi JSON precedenti, sostituiscilo *emr-6.6.0-latest* con la tua versione di rilascio di Amazon EMR. Consigliamo vivamente di utilizzare la versione `-latest` per garantire che la versione selezionata contenga gli aggiornamenti di sicurezza più recenti. Per ulteriori informazioni sulle versioni di Amazon EMR e sui relativi tag di immagine, consulta [Dettagli per la selezione dell'URI di un'immagine di base](docker-custom-images-tag.md). 

**Nota**  
È possibile utilizzare `spark.kubernetes.driver.container.image` e `spark.kubernetes.executor.container.image` per specificare un'immagine diversa per i pod di driver ed executor. 

# Personalizzazione delle immagini Docker per endpoint interattivi
<a name="docker-custom-images-managed-endpoint"></a>

È anche possibile personalizzare le immagini Docker per gli endpoint interattivi in modo da poter eseguire immagini kernel di base personalizzate. In questo modo puoi garantire di disporre delle dipendenze necessarie quando esegui carichi di lavoro interattivi da EMR Studio.

1. Segui le [fasi da 1 a 4](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/docker-custom-images-steps.html#docker-custom-images-retrieve) descritte in precedenza per personalizzare un'immagine Docker. Per i rilasci 6.9.0 e successivi di Amazon EMR, puoi ottenere le immagini di base da Amazon ECR Public Gallery. Per le versioni precedenti ad Amazon EMR 6.9.0, puoi ottenere l'immagine negli account di Amazon ECR Registry in ciascuna Regione AWS e l'unica differenza è l'URI dell'immagine di base nel tuo Dockerfile. L'URI dell'immagine di base segue il formato:

   ```
   ECR-registry-account.dkr.ecr.Region.amazonaws.com/notebook-spark/container-image-tag
   ```

   Nell'URI dell'immagine di base è necessario utilizzare `notebook-spark`, anziché `spark`. L'immagine di base contiene il runtime Spark e i kernel del notebook che vengono eseguiti con esso. Per ulteriori informazioni sulla selezione delle Regioni e dei tag di immagine di container, consulta [Dettagli per la selezione dell'URI di un'immagine di base](docker-custom-images-tag.md). 
**Nota**  
Attualmente sono supportate solo le sostituzioni delle immagini di base e non è supportata l'introduzione di kernel completamente nuovi di tipo diverso da quello fornito dalle immagini AWS di base.

1. Crea un endpoint interattivo che si possa utilizzare con l'immagine personalizzata. 

   Innanzitutto, crea un file JSON denominato `custom-image-managed-endpoint.json` con i seguenti contenuti.

   ```
   {
       "name": "endpoint-name",
       "virtualClusterId": "virtual-cluster-id",
       "type": "JUPYTER_ENTERPRISE_GATEWAY",
       "releaseLabel": "emr-6.6.0-latest",
       "executionRoleArn": "execution-role-arn",
       "certificateArn": "certificate-arn",
       "configurationOverrides": {
           "applicationConfiguration": [
               {
                   "classification": "jupyter-kernel-overrides",
                   "configurations": [
                       {
                           "classification": "python3",
                           "properties": {
                               "container-image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/custom-notebook-python:latest"
                           }
                       },
                       {
                           "classification": "spark-python-kubernetes",
                           "properties": {
                               "container-image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/custom-notebook-spark:latest"
                           }
                       }
                   ] 
               }
           ]
       }
   }
   ```

   Successivamente, crea un endpoint interattivo utilizzando le configurazioni specificate nel file JSON, come dimostrato nell'esempio seguente.

   ```
   aws emr-containers create-managed-endpoint --cli-input-json custom-image-managed-endpoint.json
   ```

   Per ulteriori informazioni, consulta [Creazione di un endpoint interattivo per il cluster virtuale](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-create-eks-cluster.html#emr-studio-create-managed-endpoint).

1. Connettiti all'endpoint interattivo attraverso EMR Studio. Per ulteriori informazioni, consulta [Connessione da Studio](https://emr-on-eks.workshop.aws/advanced/emr-studio/connecting-from-studio.html).

# Lavorare con immagini multi-architettura
<a name="docker-custom-images-multi-architecture"></a>

Amazon EMR su EKS supporta le immagini di container multi-architettura per Amazon Elastic Container Registry (Amazon ECR). Per ulteriori informazioni, consulta [Presentazione delle immagini di container multi-architettura per Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/).

Le immagini personalizzate di Amazon EMR su EKS supportano sia le istanze EC2 AWS basate su Graviton che le istanze EC2. non-Graviton-based Le immagini basate su Graviton sono archiviate negli stessi archivi di immagini in Amazon ECR delle immagini. non-Graviton-based 

Ad esempio, per ispezionare l'elenco manifest Docker per le immagini 6.6.0, esegui il comando seguente.

```
docker manifest inspect 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest 
```

Ecco l'output. L'architettura `arm64` è per un'istanza Graviton. Quella `amd64` è per un'istanza non Graviton. 

```
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1805,
         "digest": "xxx123:6b971cb47d11011ab3d45fff925e9442914b4977ae0f9fbcdcf5cfa99a7593f0",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1805,
         "digest": "xxx123:6f2375582c9c57fa9838c1d3a626f1b4fc281e287d2963a72dfe0bd81117e52f",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      }
   ]
}
```

Completa la procedura seguente per creare immagini multi-architettura:

1. Crea un `Dockerfile` con i seguenti contenuti in modo da poter estrarre l'immagine `arm64`.

   ```
   FROM --platform=arm64 895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.6.0:latest
   USER root
    
   RUN pip3 install boto3 // install customizations here
   USER hadoop:hadoop
   ```

1. Segui le istruzioni riportate in [Presentazione delle immagini di container multi-architettura per Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/) per creare un'immagine multi-architettura. 
**Nota**  
Devi creare immagini `arm64` su istanze `arm64`. Analogamente, devi creare immagini `amd64` su istanze `amd64`.

   Puoi anche creare immagini multi-architettura senza basarti su ogni tipo di istanza specifico utilizzando il comando Docker `buildx`. Per ulteriori informazioni, consulta [Uso del supporto per l'architettura multi-CPU](https://docs.docker.com/desktop/multi-arch/). 

1. Dopo aver creato l'immagine multi-architettura, puoi inviare un processo con lo stesso parametro `spark.kubernetes.container.image` e indirizzarlo verso l'immagine. In un cluster eterogeneo con istanze sia basate su AWS Graviton che non-Graviton-based EC2, l'istanza determina l'immagine dell'architettura corretta in base all'architettura dell'istanza che estrae l'immagine.

# Dettagli per la selezione dell'URI di un'immagine di base
<a name="docker-custom-images-tag"></a>

**Nota**  
Per i rilasci 6.9.0 e successivi di Amazon EMR, puoi recuperare l'immagine di base da Amazon ECR Public Gallery, quindi non è necessario creare l'URI dell'immagine di base come indicato nelle istruzioni in questa pagina. Per trovare il tag dell'immagine di container per la tua immagine di base, consulta la [pagina delle note di rilascio](emr-eks-releases.md) della versione corrispondente di Amazon EMR su EKS.

Le immagini Docker di base che puoi selezionare sono archiviate in Amazon Elastic Container Registry (Amazon ECR). L'URI dell'immagine presenta il formato `ECR-registry-account.dkr.ecr.Region.amazonaws.com/spark/container-image-tag`, come illustrato nell'esempio seguente. 

```
895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-7.12.0:latest
```

L'URI dell'immagine per gli endpoint interattivi presenta il formato `ECR-registry-account.dkr.ecr.Region.amazonaws.com/notebook-spark/container-image-tag`, come illustrato nell'esempio seguente. Nell'URI dell'immagine di base è necessario utilizzare `notebook-spark`, anziché `spark`. 

```
895885662937.dkr.ecr.us-west-2.amazonaws.com/notebook-spark/emr-7.12.0:latest
```

Analogamente, per immagini `python3` non Spark per gli endpoint interattivi, l'URI dell'immagine è `ECR-registry-account.dkr.ecr.Region.amazonaws.com/notebook-python/container-image-tag`. Il seguente URI di esempio presenta la formattazione corretta: 

```
895885662937.dkr.ecr.us-west-2.amazonaws.com/notebook-python/emr-7.12.0:latest
```

Per trovare il tag dell'immagine di container per la tua immagine di base, consulta la [pagina delle note di rilascio](emr-eks-releases.md) della versione corrispondente di Amazon EMR su EKS.

## Account di registro Amazon ECR per Regione
<a name="docker-custom-images-ECR"></a>

Per evitare un'elevata latenza di rete, estraete un'immagine di base dalla vostra immagine più vicina Regione AWS. Seleziona l'account di registro Amazon ECR che corrisponde alla Regione da cui stai estraendo l'immagine in base alla tabella seguente.


| Regioni | Account del registro Amazon ECR | 
| --- | --- | 
| ap-east-1 | 736135916053 | 
| ap-northeast-1 | 059004520145 | 
| ap-northeast-2 | 996579266876 | 
| ap-northeast-3 | 705689932349 | 
| ap-southeast-3 | 946962994502 | 
| ap-south-1 | 235914868574 | 
| ap-south-2 | 691480105545 | 
| ap-southeast-1 | 671219180197 | 
| ap-southeast-2 | 038297999601 | 
| ca-central-1 | 351826393999 | 
| eu-central-1 | 107292555468 | 
| eu-central-2 | 314408114945 | 
| eu-north-1 | 830386416364 | 
| eu-west-1 | 483788554619 | 
| eu-west-2 | 118780647275 | 
| eu-west-3 | 307523725174 | 
| eu-south-1 | 238014973495 | 
| eu-south-2 | 350796622945 | 
|  il-central-1 | 395734710648 | 
| me-south-1 | 008085056818 | 
| me-central-1 | 818935616732 | 
| sa-east-1 | 052806832358 | 
| us-gov-west-1 | 299385240661 | 
| us-gov-east-1 | 299393998622 | 
| us-east-1 | 755674844232 | 
| us-east-2 | 711395599931 | 
| us-west-1 | 608033475327 | 
| us-west-2 | 895885662937 | 
| af-south-1 | 358491847878 | 
| cn-north-1 | 068337069695 | 
| cn-northwest-1 | 068420816659 | 

# Considerazioni sulla personalizzazione delle immagini
<a name="docker-custom-images-considerations"></a>

Quando personalizzi le immagini Docker, puoi scegliere il runtime esatto per il tuo processo a livello granulare. Prendi in considerazione queste best practice quando utilizzi questa funzionalità. Queste includono considerazioni sulla sicurezza, sulla configurazione e sul montaggio di un'immagine:
+ La sicurezza è una responsabilità condivisa tra te AWS e te. Sei responsabile dell'applicazione di patch di sicurezza dei dati binari che aggiungi all'immagine. Attieniti a [Best practice di sicurezza per Amazon EMR su EKS](security-best-practices.md), in particolare [Ricevi gli ultimi aggiornamenti di sicurezza per le immagini personalizzate](security-best-practices.md#security-custom-image) e [Applicazione del principio del privilegio minimo](security-best-practices.md#security-least-privilege).
+ Quando personalizzi un'immagine di base, devi modificare l'utente Docker in `hadoop:hadoop` per garantire che i processi non vengano eseguiti con l'utente root.
+ Amazon EMR su EKS monta i file sulle configurazioni dell'immagine, come ad esempio `spark-defaults.conf`, durante il runtime. Per ignorare questi file di configurazione, consigliamo di utilizzare il parametro `applicationOverrides` durante l'invio del processo e di non modificare i file nell'immagine personalizzata.
+ Amazon EMR su EKS monta determinate cartelle durante il runtime. Le eventuali modifiche che apporti a tali cartelle non sono disponibili nel container. Se desideri aggiungere un'applicazione o le relative dipendenze per le immagini personalizzate, consigliamo di scegliere una directory che non faccia parte dei percorsi predefiniti seguenti: 
  + `/var/log/fluentd`
  + `/var/log/spark/user`
  + `/var/log/spark/apps`
  + `/mnt`
  + `/tmp`
  + `/home/hadoop`
+ Puoi caricare l'immagine personalizzata su qualsiasi repository compatibile con Docker, ad esempio Amazon ECR, Docker Hub o un repository aziendale privato. Per ulteriori informazioni su come configurare l'autenticazione del cluster Amazon EKS con il repository Docker selezionato, consulta [Estrazione di un'immagine da un registro privato](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). 