

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.

# Inserción de una imagen en un repositorio privado de Amazon ECR
<a name="image-push"></a>

Puede insertar las imágenes Docker, las listas de manifiesto, las imágenes de Open Container Initiative (OCI) y los artefactos compatibles con OCI a sus repositorios privados.

Amazon ECR proporciona una forma de replicar sus imágenes en otros repositorios. Al especificar parámetros de replicación en la configuración del registro privado, puede replicar en otras regiones de su propio registro y en diferentes cuentas. Para obtener más información, consulte [Configuración del registro privado en Amazon ECR](registry-settings.md).

**nota**  
Si inserta una imagen que está archivada actualmente, esa imagen se restaurará automáticamente y se eliminará del archivo. Para obtener más información sobre el archivado y la restauración de imágenes, consulte. [Archivar una imagen en Amazon ECR](archive_restore_image.md)

Cuando el montaje de bloques de registro está activado y se incluyen los parámetros de montaje, Amazon ECR comprueba automáticamente las capas existentes en el registro durante las operaciones de inserción. Si ya existe una capa en otro repositorio dentro del mismo registro, Amazon ECR montará la capa existente en lugar de cargar un duplicado. Para obtener más información, consulte [Montaje de blobs en Amazon ECR](blob-mounting.md).

**Topics**
+ [Permisos de IAM para la inserción de una imagen en un repositorio privado de Amazon ECR](image-push-iam.md)
+ [Inserción de una imagen de Docker en un repositorio privado de Amazon ECR](docker-push-ecr-image.md)
+ [Inserción de una imagen multiarquitectura a un repositorio privado de Amazon ECR](docker-push-multi-architecture-image.md)
+ [Inserción de un gráfico de Helm en un repositorio privado de Amazon ECR](push-oci-artifact.md)

# Permisos de IAM para la inserción de una imagen en un repositorio privado de Amazon ECR
<a name="image-push-iam"></a>

Los usuarios necesitan contar con permisos de IAM para insertar imágenes en repositorios privados de Amazon ECR. Puede seguir la práctica recomendada de conceder privilegios mínimos y conceder acceso a un repositorio específico. También puede conceder acceso a todos los repositorios.

Un usuario debe autenticarse en cada registro de Amazon ECR al que desee insertar imágenes solicitando un token de autorización. Amazon ECR proporciona varias políticas AWS administradas para controlar el acceso de los usuarios en distintos niveles. Para obtener más información, consulte [AWS políticas gestionadas para Amazon Elastic Container Registry](security-iam-awsmanpol.md).

También puede crear sus propias políticas de IAM. La siguiente política de IAM otorga los permisos necesarios para insertar una imagen en un repositorio específico. Para limitar los permisos de un repositorio específico, utilice el Nombre de recurso de Amazon (ARN) completo del repositorio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:CompleteLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:InitiateLayerUpload",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/repository-name"
        },
        {
            "Effect": "Allow",
            "Action": "ecr:GetAuthorizationToken",
            "Resource": "*"
        }
    ]
}
```

------

La siguiente política de IAM otorga los permisos necesarios para insertar una imagen en todos los repositorios.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                    "ecr:CompleteLayerUpload",
                    "ecr:GetAuthorizationToken",
                    "ecr:UploadLayerPart",
                    "ecr:InitiateLayerUpload",
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:PutImage",
                    "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-west-2:111122223333:repository/*"
        } 
    ]
}
```

# Inserción de una imagen de Docker en un repositorio privado de Amazon ECR
<a name="docker-push-ecr-image"></a>

Puede insertar las imágenes de contenedor a un repositorio de Amazon ECR con el comando **docker push**.

Amazon ECR también es compatible con la creación e inserción de listas de manifiesto de Docker que se utilizan para imágenes multiarquitectura. Para obtener información, consulte [Inserción de una imagen multiarquitectura a un repositorio privado de Amazon ECR](docker-push-multi-architecture-image.md).

**Inserción de una imagen de Docker en un repositorio de Amazon ECR**

El repositorio de Amazon ECR debe existir antes de insertar la imagen o debe tener definida una plantilla de creación de repositorios. Para obtener más información, consulte [Creación de un repositorio privado de Amazon ECR para almacenar imágenes](repository-create.md) y [Plantillas para controlar los repositorios creados durante una acción de extracción, creación mediante inserción o replicación](repository-creation-templates.md).

1. Autentique su cliente de Docker en el registro de Amazon ECR en el que va a insertar la imagen. Debe obtener tokens de autenticación para cada registro usado, cuya validez es de 12 horas. Para obtener más información, consulte [Autenticación de registro privado en Amazon ECR](registry_auth.md).

   Para autenticar Docker en un registro de Amazon ECR, ejecute el comando **aws ecr get-login-password**. Al pasar el token de autenticación al comando **docker login**, utilice el valor `AWS` para el nombre de usuario y especifique el URI del registro de Amazon ECR en el que desea autenticarse. Si se autentica en varios registros, deberá repetir el comando con cada registro.
**importante**  
Si recibe un error, instale o actualice a la versión más reciente de la AWS CLI. Para obtener más información, consulte [Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) en la *Guía del usuario de AWS Command Line Interface *.

   ```
   aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```

1. Si su repositorio de imágenes aún no existe en el registro al que pretende subirlo y ha definido una plantilla de creación de repositorios, puede insertar la imagen utilizando el prefijo de la plantilla de creación de repositorios y el nombre de repositorio que desee. ECR creará el repositorio automáticamente por usted utilizando la configuración predefinida de su plantilla de creación de repositorios.

   Si no ha definido una plantilla de creación de repositorios coincidente, tendrá que crear un repositorio. Para obtener más información, consulte [Plantillas para controlar los repositorios creados durante una acción de extracción, creación mediante inserción o replicación](repository-creation-templates.md) o [Creación de un repositorio privado de Amazon ECR para almacenar imágenes](repository-create.md).

1. Identifique la imagen local que va a insertar. Ejecute el comando **docker images** para mostrar las imágenes de contenedor en el sistema.

   ```
   docker images
   ```

   Puede identificar una imagen con el *repository:tag* valor o el ID de la imagen en el resultado del comando resultante.

1. <a name="image-tag-step"></a>Etiquete su imagen con la combinación de nombres del registro, repositorio y etiqueta de imagen opcional de Amazon ECR que se van a usar. El formato de registro es `aws_account_id.dkr.ecr.region.amazonaws.com`. El nombre del repositorio debe coincidir con el repositorio que ha creado para su imagen. Si omite la etiqueta de imagen, se presupone que la etiqueta es `latest`.

   El siguiente ejemplo etiqueta una imagen local con el identificador * e9ae3c220b23* como`aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag`.

   ```
   docker tag e9ae3c220b23 aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
   ```

1. <a name="image-push-step"></a>Inserte la imagen mediante el comando **docker push**:

   ```
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
   ```

1. (Opcional) Aplique todas las demás etiquetas a su imagen e insértelas en Amazon ECR repitiendo [Step 4](#image-tag-step) y [Step 5](#image-push-step).

# Inserción de una imagen multiarquitectura a un repositorio privado de Amazon ECR
<a name="docker-push-multi-architecture-image"></a>

Puede insertar imágenes multiarquitectura en un repositorio de Amazon ECR mediante la creación e inserción de listas de manifiesto de Docker. Una *lista de manifiesto* es una lista de imágenes que se crea especificando uno o más nombres de imagen. En la mayoría de los casos, la lista de manifiesto se crea a partir de imágenes que cumplen la misma función, pero se utilizan para diferentes sistemas operativos o arquitecturas. La lista de manifiesto no es obligatoria. Para obtener más información, consulte [manifiesto de docker](https://docs.docker.com/engine/reference/commandline/manifest/).

Se puede extraer o hacer referencia a una lista de manifiesto en una definición de tarea de Amazon ECS o especificación de pod de Amazon EKS como otras imágenes de Amazon ECR.

 **Requisitos previos** 
+ En la CLI de Docker, active las características experimentales. Para obtener información acerca de las características experimentales, consulte [Experimental features](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features) en la documentación de Docker.
+ El repositorio de Amazon ECR debe existir antes de insertar la imagen. Para obtener más información, consulte [Creación de un repositorio privado de Amazon ECR para almacenar imágenes](repository-create.md).
+ Las imágenes deben insertarse en el repositorio antes de crear el manifiesto de Docker. Para obtener información acerca de cómo insertar una imagen, consulte [Inserción de una imagen de Docker en un repositorio privado de Amazon ECR](docker-push-ecr-image.md).

**Inserción de una imagen de Docker multiarquitectura a un repositorio de Amazon ECR**

1. Autentique su cliente de Docker en el registro de Amazon ECR en el que va a insertar la imagen. Debe obtener tokens de autenticación para cada registro usado, cuya validez es de 12 horas. Para obtener más información, consulte [Autenticación de registro privado en Amazon ECR](registry_auth.md).

   Para autenticar Docker en un registro de Amazon ECR, ejecute el comando **aws ecr get-login-password**. Al pasar el token de autenticación al comando **docker login**, utilice el valor `AWS` para el nombre de usuario y especifique el URI del registro de Amazon ECR en el que desea autenticarse. Si se autentica en varios registros, deberá repetir el comando con cada registro.
**importante**  
Si recibe un error, instale o actualice a la versión más reciente de la AWS CLI. Para obtener más información, consulte [Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) en la *Guía del usuario de AWS Command Line Interface *.

   ```
   aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```

1. Enumere las imágenes en su repositorio, confirmando las etiquetas de imagen.

   ```
   aws ecr describe-images --repository-name my-repository
   ```

1. Cree la lista de manifiestos de Docker. El comando `manifest create` verifica que las imágenes a las que se hace referencia ya estén en su repositorio y crea el manifiesto localmente.

   ```
   docker manifest create aws_account_id.dkr.ecr.region.amazonaws.com/my-repository aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:image_one_tag aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:image_two
   ```

1. (Opcional) Inspeccione la lista de manifiestos de Docker. Esto le permite confirmar el tamaño y la síntesis de cada manifiesto de imagen al que se hace referencia en la lista de manifiestos.

   ```
   docker manifest inspect aws_account_id.dkr.ecr.region.amazonaws.com/my-repository
   ```

1. Inserte la lista de manifiesto de Docker en su repositorio de Amazon ECR.

   ```
   docker manifest push aws_account_id.dkr.ecr.region.amazonaws.com/my-repository
   ```

# Inserción de un gráfico de Helm en un repositorio privado de Amazon ECR
<a name="push-oci-artifact"></a>

Puede insertar artefactos de iniciativa de contenedores abiertos (OCI) en un repositorio de Amazon ECR. Para ver un ejemplo de esta funcionalidad, siga los pasos siguientes a fin de insertar un gráfico de Helm en Amazon ECR.

Para obtener información acerca del uso de los gráficos de Helm alojados en Amazon ECR con Amazon EKS, consulte [Instalación de un gráfico de Helm en un clúster de Amazon EKS](using-helm-charts-eks.md).

**Inserción de un gráfico de Helm a un repositorio de Amazon ECR**

1. Instale la última versión del cliente Helm. Estos pasos se han escrito con la versión `3.18.6` de Helm. Para obtener compatibilidad con las versiones de Kubernetes que admiten Amazon EKS, utilice la versión 3.9 de Helm o posterior. Para obtener más información, consulte [Instalación de Helm](https://helm.sh/docs/intro/install/).

1. Complete los pasos siguientes para crear un gráfico de Helm de prueba. Para obtener más información, consulte [Documentación de Helm: Introducción](https://helm.sh/docs/chart_template_guide/getting_started/).

   1. Cree un gráfico de Helm llamado `helm-test-chart` y borre el contenido del directorio `templates`.

      ```
      helm create helm-test-chart
      rm -rf ./helm-test-chart/templates/*
      ```

   1. Cree un `ConfigMap` en la carpeta `templates`.

      ```
      cd helm-test-chart/templates
      cat <<EOF > configmap.yaml
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: helm-test-chart-configmap
      data:
        myvalue: "Hello World"
      EOF
      ```

1. Empaquete el gráfico. La salida incluirá el nombre de archivo del gráfico empaquetado que se utiliza al insertar el gráfico de Helm.

   ```
   cd ../..
   helm package helm-test-chart
   ```

   Output

   ```
   Successfully packaged chart and saved it to: /Users/username/helm-test-chart-0.1.0.tgz
   ```

1. Cree un repositorio para almacenar el gráfico de Helm. El nombre del repositorio debe coincidir con el que utiliza al crear el gráfico de Helm en el paso 2. Para obtener más información, consulte [Creación de un repositorio privado de Amazon ECR para almacenar imágenes](repository-create.md).

   ```
   aws ecr create-repository \
        --repository-name helm-test-chart \
        --region us-west-2
   ```

1. Autentique el cliente Helm en el registro de Amazon ECR en el que tiene previsto insertar el gráfico de Helm. Debe obtener tokens de autenticación para cada registro usado, cuya validez es de 12 horas. Para obtener más información, consulte [Autenticación de registro privado en Amazon ECR](registry_auth.md).

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

1. Inserte el gráfico de Helm con el comando **helm push**. La salida debe incluir el URI del repositorio de Amazon ECR y el resumen del Algoritmo hash seguro.

   ```
   helm push helm-test-chart-0.1.0.tgz oci://aws_account_id.dkr.ecr.region.amazonaws.com/
   ```

1. Describa el gráfico de Helm.

   ```
   aws ecr describe-images \
        --repository-name helm-test-chart \
        --region us-west-2
   ```

   En el resultado, compruebe que el parámetro `artifactMediaType` indica el tipo de artefacto adecuado.

   ```
   {
       "imageDetails": [
           {
               "registryId": "aws_account_id",
               "repositoryName": "helm-test-chart",
               "imageDigest": "sha256:dd8aebdda7df991a0ffe0b3d6c0cf315fd582cd26f9755a347a52adEXAMPLE",
               "imageTags": [
                   "0.1.0"
               ],
               "imageSizeInBytes": 1620,
               "imagePushedAt": "2021-09-23T11:39:30-05:00",
               "imageManifestMediaType": "application/vnd.oci.image.manifest.v1+json",
               "artifactMediaType": "application/vnd.cncf.helm.config.v1+json"
           }
       ]
   }
   ```

1. (Opcional) Para obtener más pasos, instale el `ConfigMap` de Helm y comience a utilizar Amazon EKS. Para obtener más información, consulte [Instalación de un gráfico de Helm en un clúster de Amazon EKS](using-helm-charts-eks.md).