

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Personalización de las imágenes de Docker para Amazon EMR en EKS
<a name="docker-custom-images"></a>

Puede utilizar imágenes de Docker personalizadas con Amazon EMR en EKS. La personalización de la imagen de tiempo de ejecución de Amazon EMR en EKS ofrece las siguientes ventajas: 
+ Empaquete las dependencias de las aplicaciones y el entorno de tiempo de ejecución en un único contenedor inmutable que promueva la portabilidad y simplifique la administración de dependencias para cada carga de trabajo.
+ Instale y configure paquetes optimizados para sus cargas de trabajo. Es posible que estos paquetes no estén ampliamente disponibles en la distribución pública de los tiempos de ejecución de Amazon EMR.
+ Integre Amazon EMR en EKS con los procesos de compilación, prueba e implementación establecidos actualmente en su organización, incluido el desarrollo y las pruebas locales.
+ Aplique procesos de seguridad establecidos, como el escaneo de imágenes, que cumplan con los requisitos de cumplimiento y gobernanza de su organización.

**Topics**
+ [

# Cómo personalizar las imágenes de Docker
](docker-custom-images-steps.md)
+ [

# Información sobre cómo seleccionar un URI de imagen base
](docker-custom-images-tag.md)
+ [

# Consideraciones para personalizar imágenes
](docker-custom-images-considerations.md)

# Cómo personalizar las imágenes de Docker
<a name="docker-custom-images-steps"></a>

Siga estos pasos para personalizar las imágenes de Docker de Amazon EMR en EKS. Los pasos muestran cómo obtener una imagen base, personalizarla y publicarla, y cómo enviar una carga de trabajo mediante la imagen.
+ [Requisitos previos](#docker-custom-images-prereq)
+ [Paso 1: recuperar una imagen base de Amazon Elastic Container Registry (Amazon ECR)](#docker-custom-images-retrieve)
+ [Paso 2: personalizar una imagen base](#docker-custom-images-customize)
+ [Paso 3: (opcional, pero recomendado) validar una imagen personalizada](#docker-custom-images-validate)
+ [Paso 4: publicar una imagen personalizada](#docker-custom-images-publish)
+ [Paso 5: enviar una carga de trabajo de Spark en Amazon EMR mediante una imagen personalizada](#docker-custom-images-submit)

**nota**  
Otras opciones que quizás desee tener en cuenta al personalizar las imágenes de Docker son la personalización para puntos de conexión interactivos, lo que se hace para garantizar que cuenta con las dependencias necesarias, o el uso de imágenes de contenedor con varias arquitecturas:  
[Personalice las imágenes de Docker para puntos de conexión interactivos](docker-custom-images-managed-endpoint.md)
[Uso de imágenes multiarquitectura](docker-custom-images-multi-architecture.md)

## Requisitos previos
<a name="docker-custom-images-prereq"></a>
+ Complete los pasos [Configuración de Amazon EMR en EKS](setting-up.md) de Amazon EMR en EKS. 
+ Instale Docker en su entorno. Para obtener más información, consulte [Obtener Docker](https://docs.docker.com/get-docker/).

## Paso 1: recuperar una imagen base de Amazon Elastic Container Registry (Amazon ECR)
<a name="docker-custom-images-retrieve"></a>

La imagen base contiene el tiempo de ejecución de Amazon EMR y los conectores que se utilizan para acceder a otros servicios de AWS . Para Amazon EMR 6.9.0 y versiones posteriores, puede obtener las imágenes base en Amazon ECR Public Gallery. Navegue por la galería para encontrar el enlace a la imagen y llevarla a su espacio de trabajo local. Por ejemplo, para la versión 7.12.0 de Amazon EMR, el siguiente `docker pull` comando le proporciona la imagen base estándar más reciente. Puede sustituir `emr-7.12.0:latest` por `emr-7.12.0-spark-rapids:latest` para recuperar la imagen que tiene el acelerador de Nvidia RAPIDS. También puede sustituir `emr-7.12.0:latest` por `emr-7.12.0-java11:latest` para recuperar la imagen con el tiempo de ejecución de Java 11.

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

Si desea recuperar la imagen base de Amazon EMR 6.9.0 o versiones anteriores, o si prefiere recuperarla de las cuentas de registro de Amazon ECR de cada región, siga estos pasos:

1. Elija un URI de imagen base. El URI de imagen sigue este formato, `ECR-registry-account.dkr.ecr.Region.amazonaws.com/spark/container-image-tag`, tal como se muestra en el siguiente ejemplo.

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

   Para elegir una imagen base en su región, consulte [Información sobre cómo seleccionar un URI de imagen base](docker-custom-images-tag.md). 

1. Inicie sesión en el repositorio de Amazon ECR donde está almacenada la imagen base. Sustituya *895885662937* y *us-west-2* por la cuenta de registro de Amazon ECR y la AWS región que haya seleccionado. 

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

1. Coloque la imagen base en su espacio de trabajo local. *emr-6.6.0:latest*Sustitúyala por la etiqueta de imagen del contenedor que hayas seleccionado.

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

## Paso 2: personalizar una imagen base
<a name="docker-custom-images-customize"></a>

Siga estos pasos para personalizar la imagen base que ha obtenido de Amazon ECR. 

1. Cree un `Dockerfile` nuevo en su espacio de trabajo local.

1. Edite el `Dockerfile` que acaba de crear y agregue el siguiente contenido. Este `Dockerfile` usa la imagen del contenedor de la que ha extraído de `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. Agregue comandos en el `Dockerfile` para personalizar la imagen base. Por ejemplo, agregue un comando para instalar bibliotecas de Python, como se muestra en el siguiente `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. Desde el mismo directorio en el que `Dockerfile` se creó, ejecute el siguiente comando para crear la imagen de Docker. Proporcione un nombre para la imagen de Docker, por ejemplo,*emr6.6\$1custom*. 

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

## Paso 3: (opcional, pero recomendado) validar una imagen personalizada
<a name="docker-custom-images-validate"></a>

Le recomendamos que pruebe la compatibilidad de la imagen personalizada antes de publicarla. Puede utilizar la [CLI de imágenes personalizadas de Amazon EMR en EKS](https://github.com/awslabs/amazon-emr-on-eks-custom-image-cli) para comprobar si la imagen tiene las estructuras de archivos requeridas y las configuraciones correctas para ejecutarse en Amazon EMR en EKS. 

**nota**  
La CLI de imagen personalizada de Amazon EMR en EKS no puede confirmar que la imagen no contenga errores. Tenga cuidado al eliminar las dependencias de las imágenes base.

Siga estos pasos para validar la imagen personalizada. 

1. Descargue e instale Amazon EMR en EKS en la CLI de imágenes personalizadas. Para obtener más información, consulte la [Guía de instalación de la CLI de imagen personalizada de Amazon EMR en EKS](https://github.com/awslabs/amazon-emr-on-eks-custom-image-cli/blob/main/installer/assets/INSTALLATION_GUIDE.md).

1. Ejecute el siguiente comando para evaluar la instalación.

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

   A continuación se muestra un ejemplo de este resultado.

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

1. Ejecute el siguiente comando para validar la imagen personalizada.

   ```
   emr-on-eks-custom-image validate-image -i image_name -r release_version [-t image_type]
   ```
   + `-i` especifica el URI de imagen local que debe validarse. Puede ser el URI de imagen o cualquier nombre o etiqueta que haya definido para la imagen.
   + `-r` especifica la versión de lanzamiento exacta de la imagen base, por ejemplo, `emr-6.6.0-latest`.
   + `-t` especifica el tipo de imagen. Si se trata de una imagen de Spark, ingrese `spark`. El valor predeterminado es `spark`. La versión actual de la CLI de imágenes personalizadas de Amazon EMR en EKS solo admite imágenes en tiempo de ejecución de Spark.

   Si ejecuta el comando correctamente y la imagen personalizada cumple con todas las configuraciones y estructuras de archivos requeridas, el resultado devuelto muestra los resultados de todas las pruebas, tal y como se muestra en el siguiente ejemplo.

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

   Si la imagen personalizada no cumple con las configuraciones o estructuras de archivos requeridas, aparecen mensajes de error. El resultado devuelto proporciona información sobre las configuraciones o estructuras de archivos incorrectas.

## Paso 4: publicar una imagen personalizada
<a name="docker-custom-images-publish"></a>

Publique la nueva imagen de Docker en su registro de Amazon ECR. 

1. Ejecute el siguiente comando para crear un repositorio de Amazon ECR para almacenar la imagen de Docker. Proporcione un nombre para su repositorio, por ejemplo,*emr6.6\$1custom\$1repo*. Reemplace la *us-west-2* por su región. 

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

   Para obtener más información, consulte [Crear un repositorio](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-create-repository) en la *Guía del usuario de Amazon ECR*.

1. Ejecute el siguiente comando para autenticarse en el registro predeterminado.

   ```
   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
   ```

   Para obtener más información, consulte [Autenticar en su registro predeterminado](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) en la *Guía del usuario de Amazon ECR*.

1. Etiquete y publique una imagen en el repositorio de Amazon ECR que ha creado. 

   Etiquete la imagen.

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

   Inserte la imagen.

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

   Para obtener más información, consulte [Insertar una imagen en Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-push-image) en la *Guía del usuario de Amazon ECR*.

## Paso 5: enviar una carga de trabajo de Spark en Amazon EMR mediante una imagen personalizada
<a name="docker-custom-images-submit"></a>

Una vez creada y publicada una imagen personalizada, puede enviar un trabajo de Amazon EMR en EKS mediante una imagen personalizada. 

En primer lugar, cree un start-job-run-request archivo.json y especifique el `spark.kubernetes.container.image` parámetro para hacer referencia a la imagen personalizada, como se muestra en el siguiente archivo JSON de ejemplo. 

**nota**  
Puede usar el esquema `local://` para hacer referencia a los archivos disponibles en la imagen personalizada, tal como se muestra con el argumento `entryPoint` en el siguiente fragmento de código JSON. También puede usar el esquema `local://` para hacer referencia a las dependencias de las aplicaciones. Todos los archivos y dependencias a los que se hace referencia mediante el esquema `local://` ya deben estar presentes en la ruta especificada en la imagen personalizada.

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

También puede hacer referencia a la imagen personalizada con las propiedades `applicationConfiguration`, tal como se muestra en el siguiente ejemplo.

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

A continuación, ejecute el comando `start-job-run` para enviar el trabajo.

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

En los ejemplos de JSON anteriores, *emr-6.6.0-latest* sustitúyalo por la versión de lanzamiento de Amazon EMR. Le recomendamos que utilice la versión de lanzamiento `-latest` para asegurarse de que la versión seleccionada contenga las actualizaciones de seguridad más recientes. Para obtener más información sobre las versiones de lanzamiento de Amazon EMR y sus etiquetas de imagen, consulte [Información sobre cómo seleccionar un URI de imagen base](docker-custom-images-tag.md). 

**nota**  
Puede usar `spark.kubernetes.driver.container.image` y `spark.kubernetes.executor.container.image` para especificar una imagen diferente para los pods controladores y ejecutores. 

# Personalice las imágenes de Docker para puntos de conexión interactivos
<a name="docker-custom-images-managed-endpoint"></a>

También puede personalizar las imágenes de Docker de puntos de conexión interactivos, de modo que pueda ejecutar imágenes base del kernel personalizadas. Esto le ayuda a garantizar que disponga de las dependencias que necesita al ejecutar cargas de trabajo interactivas desde EMR Studio.

1. Siga los [pasos 1-4](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/docker-custom-images-steps.html#docker-custom-images-retrieve) descritos anteriormente para personalizar una imagen de Docker. Para las versiones 6.9.0 y posteriores de Amazon EMR, puede obtener el URI de imagen base en Amazon ECR Public Gallery. Para las versiones anteriores a Amazon EMR 6.9.0, puede obtener la imagen en las cuentas de Amazon ECR Registry de cada Región de AWS, y la única diferencia es el URI de la imagen base de su archivo de Docker. El URI de imagen base sigue el siguiente formato:

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

   Debe usar `notebook-spark` en el URI de imagen base en lugar de `spark`. La imagen base contiene el tiempo de ejecución de Spark y los kernels del cuaderno que se ejecutan con él. Para obtener más información sobre cómo seleccionar las regiones y las etiquetas de imagen de contenedores, consulte [Información sobre cómo seleccionar un URI de imagen base](docker-custom-images-tag.md). 
**nota**  
Actualmente, solo se admiten las modificaciones de las imágenes base y no se admite la introducción de núcleos completamente nuevos de tipos distintos de los que AWS proporcionan las imágenes base.

1. Cree un punto de conexión interactivo que se pueda utilizar con la imagen personalizada. 

   Primero, cree un archivo JSON denominado `custom-image-managed-endpoint.json` con el siguiente contenido.

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

   A continuación, cree un punto de conexión interactivo con las configuraciones especificadas en el archivo JSON, tal como se muestra en el siguiente ejemplo.

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

   Para obtener más información, consulte [Crear un punto de conexión interactivo para su clúster virtual](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-create-eks-cluster.html#emr-studio-create-managed-endpoint).

1. Conéctese al punto de conexión interactivo a través de EMR Studio. Para obtener más información, consulte [Conexión desde Studio](https://emr-on-eks.workshop.aws/advanced/emr-studio/connecting-from-studio.html).

# Uso de imágenes multiarquitectura
<a name="docker-custom-images-multi-architecture"></a>

Amazon EMR en EKS es compatible con imágenes de contenedor multiarquitectura de Amazon Elastic Container Registry (Amazon ECR). Para obtener más información, consulte [Introducción a las imágenes de contenedores de varias arquitecturas de Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/).

Las imágenes personalizadas de Amazon EMR en EKS admiten tanto las instancias EC2 AWS basadas en Graviton como las instancias EC2. non-Graviton-based Las imágenes basadas en Graviton se almacenan en los mismos repositorios de imágenes de Amazon ECR que las imágenes. non-Graviton-based 

Por ejemplo, para inspeccionar la lista de manifiesto de Docker en busca de imágenes de 6.6.0, ejecute el siguiente comando.

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

Esta es la salida. La arquitectura `arm64` es para la instancia de Graviton. `amd64` es para una instancia que no es de 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"
         }
      }
   ]
}
```

Siga estos pasos para crear imágenes multiarquitectura:

1. Cree un `Dockerfile` con el siguiente contenido para poder extraer la imagen `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. Para crear una imagen multiarquitectura en Amazon ECR, siga las instrucciones de [Introducción a las imágenes de contenedores de varias arquitecturas de Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/). 
**nota**  
Debe crear imágenes `arm64` en las instancias `arm64`. Del mismo modo, debe crear imágenes `amd64` en las instancias `amd64`.

   También puede crear imágenes de varias arquitecturas sin tener que basarse en cada tipo de instancia específico con el comando `buildx` de Docker. Para obtener más información, consulte [Aprovechar la compatibilidad con arquitectura de múltiples CPU](https://docs.docker.com/desktop/multi-arch/). 

1. Tras crear la imagen multiarquitectura, puede enviar un trabajo con el mismo parámetro `spark.kubernetes.container.image` y dirigirlo a la imagen. En un clúster heterogéneo con instancias AWS basadas en Graviton y non-Graviton-based EC2, la instancia determina la imagen de arquitectura correcta en función de la arquitectura de la instancia que extrae la imagen.

# Información sobre cómo seleccionar un URI de imagen base
<a name="docker-custom-images-tag"></a>

**nota**  
Para Amazon EMR 6.9.0 y versiones posteriores, puede recuperar la imagen base de Amazon ECR Public Gallery, por lo que no necesita crear el URI de imagen base como se indica en las instrucciones de esta página. Para encontrar la etiqueta de imagen de contenedor para su imagen base, consulte la [página de notas de la versión](emr-eks-releases.md) de la versión correspondiente de Amazon EMR en EKS.

Las imágenes de Docker base que puede seleccionar se almacenan en Amazon Elastic Container Registry (Amazon ECR). El URI de imagen sigue este formato: `ECR-registry-account.dkr.ecr.Region.amazonaws.com/spark/container-image-tag`, tal como se muestra en el siguiente ejemplo. 

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

El URI de imagen de los puntos de conexión interactivos sigue este formato: `ECR-registry-account.dkr.ecr.Region.amazonaws.com/notebook-spark/container-image-tag`, tal como se muestra en el siguiente ejemplo. Debe usar `notebook-spark` en el URI de imagen base en lugar de `spark`. 

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

Del mismo modo, para las imágenes de `python3` que no son de Spark para puntos de conexión interactivos, el URI de imagen es `ECR-registry-account.dkr.ecr.Region.amazonaws.com/notebook-python/container-image-tag`. El siguiente ejemplo de URI tiene el formato correcto: 

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

Para encontrar la etiqueta de imagen de contenedor para su imagen base, consulte la [página de notas de la versión](emr-eks-releases.md) de la versión correspondiente de Amazon EMR en EKS.

## Cuentas de registro de Amazon ECR por región
<a name="docker-custom-images-ECR"></a>

Para evitar una alta latencia de red, extraiga una imagen base de su dispositivo más cercano. Región de AWS Seleccione la cuenta de registro de Amazon ECR que corresponda con la región de la que extrae la imagen según la siguiente tabla.


| Regions | Cuentas de registro de 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 | 

# Consideraciones para personalizar imágenes
<a name="docker-custom-images-considerations"></a>

Al personalizar las imágenes de Docker, puede elegir el tiempo de ejecución exacto para su trabajo a un nivel granular. Tenga en cuenta estas prácticas recomendadas al utilizar esta característica. Estas incluyen consideraciones de seguridad, configuración y montaje de una imagen:
+ La seguridad es una responsabilidad compartida entre usted AWS y usted. Es responsable de aplicar los parches de seguridad a los archivos binarios que agregue a la imagen. Siga las [Prácticas recomendadas de seguridad de Amazon EMR en EKS](security-best-practices.md), especialmente [Obtener las actualizaciones de seguridad más recientes para imágenes personalizadas](security-best-practices.md#security-custom-image) y [Aplicar el principio de privilegio mínimo](security-best-practices.md#security-least-privilege).
+ Al personalizar una imagen base, debe cambiar el usuario de Docker a `hadoop:hadoop` para que los trabajos no se ejecuten con el usuario raíz.
+ Amazon EMR en EKS monta los archivos sobre las configuraciones de la imagen, como `spark-defaults.conf`, en tiempo de ejecución. Para anular estos archivos de configuración, le recomendamos que utilice el parámetro `applicationOverrides` durante el envío del trabajo y no modifique directamente los archivos de la imagen personalizada.
+ Amazon EMR en EKS monta determinadas carpetas en tiempo de ejecución. Las modificaciones que haga en estas carpetas no están disponibles en el contenedor. Si desea agregar una aplicación o sus dependencias para imágenes personalizadas, le recomendamos que elija un directorio que no forme parte de las siguientes rutas predefinidas: 
  + `/var/log/fluentd`
  + `/var/log/spark/user`
  + `/var/log/spark/apps`
  + `/mnt`
  + `/tmp`
  + `/home/hadoop`
+ Puede cargar su imagen personalizada en cualquier repositorio compatible con Docker, como Amazon ECR, Docker Hub o un repositorio empresarial privado. Para obtener más información sobre cómo configurar la autenticación del clúster de Amazon EKS con el repositorio de Docker seleccionado, consulte [Extraer una imagen de un registro privado](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). 