Otorgue a los servicios de contenedores de Lightsail acceso a los repositorios privados de Amazon ECR - Amazon Lightsail

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.

Otorgue a los servicios de contenedores de Lightsail acceso a los repositorios privados de Amazon ECR

Amazon Elastic Container Registry (Amazon ECR) es AWS un servicio gestionado de registro de imágenes de contenedores que admite repositorios privados con permisos basados en recursos mediante (IAM). AWS Identity and Access Management Puedes dar acceso a tus servicios de contenedores de Amazon Lightsail a tus repositorios privados de Amazon ECR. Región de AWS A continuación, puede implementar imágenes desde su repositorio privado a sus servicios de contenedor.

Puede gestionar el acceso a sus servicios de contenedores de Lightsail y a sus repositorios privados de Amazon ECR mediante la consola de Lightsail o el (). AWS Command Line Interface AWS CLI Sin embargo, le recomendamos que utilice la consola Lightsail porque simplifica el proceso.

Para obtener más información acerca de los servicios de contenedor, consulte Servicios de contenedores. Para obtener más información sobre Amazon ECR, consulte la Guía del usuario de Amazon ECR.

Contenido

Permisos necesarios

El usuario que administrará el acceso de los servicios de contenedores de Lightsail a los repositorios privados de Amazon ECR debe tener una de las siguientes políticas de permisos en IAM. Para obtener más información, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de AWS Identity and Access Management .

Conceder acceso a cualquier repositorio privado de Amazon ECR

La siguiente política de permisos concede a un usuario permiso para configurar el acceso a cualquier repositorio privado de Amazon ECR.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:*:AwsAccountId:repository/*" } ] }

En la política, sustitúyalo por tu número de ID de AwsAccountIdcuenta. AWS

Conceder acceso a un determinado repositorio privado de Amazon ECR

La siguiente política de permisos concede a un usuario permiso para configurar el acceso a un determinado repositorio privado de Amazon ECR en una Región de AWS específica.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:AwsRegion:AwsAccountId:repository/RepositoryName" } ] }

En el comando, sustituya el texto del ejemplo siguiente por el suyo:

  • AwsRegion— El Región de AWS código (por ejemplous-east-1) del repositorio privado. El servicio de contenedores de Lightsail debe estar en el Región de AWS mismo lugar que los repositorios privados a los que desea acceder.

  • AwsAccountId— El número de identificación de su AWS cuenta.

  • RepositoryName— El nombre del repositorio privado al que quieres gestionar el acceso.

A continuación se muestra un ejemplo de la política de permisos rellenada con valores de ejemplo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageEcrPrivateRepositoriesAccess", "Effect": "Allow", "Action": [ "ecr:SetRepositoryPolicy", "ecr:DescribeRepositories", "ecr:DeleteRepositoryPolicy", "ecr:GetRepositoryPolicy" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/my-private-repo" } ] }

Utilice la consola de Lightsail para gestionar el acceso a los repositorios privados

Complete el siguiente procedimiento para utilizar la consola de Lightsail para gestionar el acceso de un servicio de contenedores de Lightsail a un repositorio privado de Amazon ECR.

  1. Inicie sesión en la consola de Lightsail.

  2. En la página de inicio de Lightsail, elija la pestaña Contenedores.

  3. Elija el nombre del servicio de contenedor para el que desea configurar el acceso a un repositorio privado de Amazon ECR.

    Servicio de contenedores en la consola de Lightsail
  4. Elija la pestaña Imágenes.

    Pestaña Imágenes en la página de administración de servicios de contenedores de la consola Lightsail
  5. Elija Agregar repositorio para conceder acceso a su servicio de contenedor a un repositorio privado de Amazon ECR.

    nota

    Puede elegir Eliminar para eliminar el acceso de su servicio de contenedor a un repositorio privado de Amazon ECR agregado anteriormente.

    Sección de repositorios privados de Amazon ECR de la pestaña Imágenes
  6. En el menú desplegable que aparece, seleccione el repositorio privado al que desea acceder y luego elija Add (Agregar).

    Selección desplegable de repositorios privados de Amazon ECR

    Lightsail tarda unos minutos en activar la función de IAM del extractor de imágenes Amazon ECR para su servicio de contenedores, que incluye un nombre de recurso principal de Amazon (ARN). A continuación, Lightsail añade automáticamente el ARN principal del rol de IAM a la política de permisos del repositorio privado de Amazon ECR que haya seleccionado. Esto otorga al servicio de contenedor acceso al repositorio privado y a sus imágenes. No cierre la ventana del navegador hasta que el modal que aparece indique que el proceso se completó y pueda elegir Continue (Continuar).

    Modal que confirma que se están agregando permisos al repositorio privado de Amazon ECR
  7. Elija Continue (Continuar) cuando se complete la activación.

    Después de agregar el repositorio privado de Amazon ECR seleccionado, aparecerá en la sección Repositorios privados de Amazon ECR de la página. La página incluye instrucciones sobre cómo implementar una imagen del repositorio privado en su servicio de contenedores de Lightsail. Para usar una imagen de su repositorio privado, especifique el formato URI que se muestra en la página como valor Image (Imagen) al crear la implementación de su servicio de contenedor. En el URI que especificó, sustituya la {image tag} de ejemplo por la etiqueta de la imagen que desea implementar. Para obtener más información, consulte Creación y administración de implementaciones del servicio de contenedor.

    Pasos siguientes después de agregar un repositorio privado de Amazon ECR

Úselo AWS CLI para administrar el acceso a los repositorios privados

La administración del acceso de un servicio de contenedores de Lightsail a un repositorio privado de Amazon ECR mediante AWS CLI() requiere AWS Command Line Interface los siguientes pasos:

importante

Le recomendamos que utilice la consola de Lightsail para gestionar el acceso de un servicio de contenedores de Lightsail a un repositorio privado de Amazon ECR, ya que simplifica el proceso. Para obtener más información, consulte Uso de la consola de Lightsail para administrar el acceso a los repositorios privados, anteriormente en esta guía.

  1. Activar o desactivar la función de IAM del extractor de imágenes de Amazon ECR: utilice el comando de Lightsail AWS CLI update-container-service para activar o desactivar la función de IAM del extractor de imágenes de Amazon ECR. Se crea un nombre de recurso de Amazon (ARN) de entidad principal para el rol de IAM del extractor de imágenes de Amazon ECR cuando lo activa. Para más información, consulte la sección Activar o desactivar el rol de IAM del extractor de imágenes de Amazon ECR de esta guía.

  2. Determinar si el repositorio privado de Amazon ECR tiene una declaración de política: después de activar el rol de IAM de extractor de imágenes de Amazon ECR, debe determinar si el repositorio privado de Amazon ECR al que desea acceder con su servicio de contenedor tiene una declaración de política existente. Para obtener más información, consulte Determinar si el repositorio privado de Amazon ECR tiene una declaración de política más adelante en esta guía.

    Agregue el rol de IAM de entidad principal ARN a su repositorio mediante uno de los siguientes métodos, dependiendo de si su repositorio tiene una declaración de política existente:

    1. Agregue una política a un repositorio privado que no tenga una declaración de política: utilice el AWS CLI set-repository-policy comando para Amazon ECR para agregar el ARN principal del rol de extractor de imágenes de Amazon ECR para su servicio de contenedores a un repositorio privado que tenga una política existente. Para más información, consulte Agregar una política a un repositorio privado que no tiene una declaración de política más adelante en esta guía.

    2. Añadir una política a un repositorio privado que tenga una declaración de política: utilice el AWS CLI set-repository-policy comando de Amazon ECR para añadir la función de extractor de imágenes de Amazon ECR para su servicio de contenedores a un repositorio privado que no tenga una política existente. Para más información, consulte Agregar una política a un repositorio privado que tiene una declaración de política más adelante en esta guía.

Activar o desactivar el rol de IAM del extractor de imágenes de Amazon ECR

Complete el siguiente procedimiento para activar o desactivar la función IAM del extractor de imágenes Amazon ECR para su servicio de contenedores Lightsail. Puede activar o desactivar la función de IAM del extractor de imágenes Amazon ECR mediante el comando AWS CLI update-container-service de Lightsail. Para obtener más información, consulte la Referencia de comandos. update-container-serviceAWS CLI

nota

Debe instalar AWS CLI y configurar Lightsail para poder continuar con este procedimiento. Para obtener más información, consulte Configurar AWS CLI para que funcione con Lightsail.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Ingrese el siguiente comando para actualizar un servicio de contenedor y activar o desactivar el rol de IAM del extractor de imágenes de Amazon ECR.

    aws lightsail update-container-service --service-name ContainerServiceName --private-registry-access ecrImagePullerRole={isActive=RoleActivationState} --region AwsRegionCode

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • ContainerServiceName— El nombre del servicio de contenedores para el que se va a activar o desactivar la función de IAM del extractor de imágenes Amazon ECR.

    • RoleActivationState— El estado de activación de la función de IAM del extractor de imágenes Amazon ECR. Especifique true para activar el rol, o false para desactivarlo.

    • AwsRegionCode— El Región de AWS código del servicio de contenedores (por ejemplo,). us-east-1

    Ejemplos:

    • Para activar el rol de IAM del extractor de imágenes de Amazon ECR:

      aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=true} --region us-east-1
    • Para desactivar el rol de IAM del extractor de imágenes de Amazon ECR:

      aws lightsail update-container-service --service-name my-container-service --private-registry-access ecrImagePullerRole={isActive=false} --region us-east-1
  3. Si:

    • Activó el rol del extractor de imágenes de Amazon ECR: espere al menos 30 segundos después de recibir la respuesta anterior. Luego, continúe al siguiente paso para obtener el ARN de entidad principal del rol de IAM del extractor de imágenes de Amazon ECR para su servicio de contenedor.

    • Desactivó el rol de extractor de imágenes de Amazon ECR: si previamente agregó el ARN de entidad principal del rol de IAM del extractor de imágenes de Amazon ECR a la política de permisos del repositorio privado de Amazon ECR, debe eliminar esa política de permisos del repositorio. Para más información, consulte Eliminación de una declaración de política de repositorio privado en la Guía del usuario de Amazon ECR.

  4. Escriba el siguiente comando para obtener el ARN de entidad principal del rol de IAM del extractor de imágenes de Amazon ECR para el servicio de contenedor.

    aws lightsail get-container-services --service-name ContainerServiceName --region AwsRegionCode

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • ContainerServiceName— El nombre del servicio de contenedores del que va a obtener el ARN principal del rol de IAM del extractor de imágenes Amazon ECR.

    • AwsRegionCode— El Región de AWS código del servicio de contenedores (por ejemplo,). us-east-1

    Ejemplo:

    aws lightsail get-container-services --service-name my-container-service --region us-east-1

    Busque el ARN de entidad principal del rol de IAM del extractor de imágenes ECR en la respuesta. Si aparece un rol, cópielo o anótelo. Lo necesitará para la siguiente sección de esta guía. A continuación, debe determinar si existe una declaración de política existente en el repositorio privado de Amazon ECR al que desea acceder mediante su servicio de contenedor. Siga en la sección Determinar si el repositorio privado de Amazon ECR tiene una declaración de política de esta guía.

Determinar si el repositorio privado de Amazon ECR tiene una declaración de política

Use el siguiente procedimiento para determinar si el repositorio privado de Amazon ECR tiene una declaración de política. Puede usar el AWS CLI get-repository-policy comando para Amazon ECR. Para obtener más información, consulte update-container-servicela Referencia de AWS CLI comandos.

nota

Debe instalarlo AWS CLI y configurarlo para Amazon ECR antes de poder continuar con este procedimiento. Para obtener más información, consulte Configuración de Amazon ECR en la Guía del usuario de Amazon ECR.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Escriba el siguiente comando para obtener la declaración de política correspondiente a un repositorio privado específico.

    aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • RepositoryName— El nombre del repositorio privado para el que desea configurar el acceso a un servicio de contenedores de Lightsail.

    • AwsRegionCode— El Región de AWS código del repositorio privado (por ejemplo,us-east-1).

    Ejemplo:

    aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1

    Debería ver una de las siguientes respuestas:

Agregar una política a un repositorio privado que no tenga una declaración de política

Complete el siguiente procedimiento para agregar una política a un repositorio privado de Amazon ECR que no tenga una declaración de política. La política que añada debe incluir el ARN principal del rol de IAM del extractor de imágenes Amazon ECR de su servicio de contenedores Lightsail. Esto otorga acceso a su servicio de contenedor para desplegar imágenes desde el repositorio privado.

importante

Lightsail añade automáticamente la función de extractor de imágenes de Amazon ECR a sus repositorios privados de Amazon ECR cuando utiliza la consola de Lightsail para configurar el acceso. En ese caso, no tiene que agregar manualmente el rol de extractor de imágenes de Amazon ECR a sus repositorios privados mediante el procedimiento en esta sección. Para obtener más información, consulte Uso de la consola de Lightsail para administrar el acceso a los repositorios privados, anteriormente en esta guía.

Puede agregar una política a un repositorio privado mediante la AWS CLI. Para ello, cree un archivo JSON que contenga la política y, a continuación, haga referencia a ese archivo mediante el comando set-repository-policy para Amazon ECR. Para obtener más información, consulte la Referencia de set-repository-policycomandos.AWS CLI

nota

Debe instalarlo AWS CLI y configurarlo para Amazon ECR antes de continuar con este procedimiento. Para obtener más información, consulte Configuración de Amazon ECR en la Guía del usuario de Amazon ECR.

  1. Abra un editor de texto y pegue la siguiente declaración de política en un nuevo archivo de texto.

    { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowLightsailPull-ecr-private-repo-demo", "Effect": "Allow", "Principal": { "AWS": "IamRolePrincipalArn" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }

    En el texto, IamRolePrincipalArnsustitúyalo por el ARN principal del rol de IAM del extractor de imágenes Amazon ECR de tu servicio de contenedores que obtuviste anteriormente en esta guía.

  2. Guarde el archivo como ecr-policy.json en una ubicación accesible del equipo (por ejemplo, C:\Temp\ecr-policy.json en Windows o /tmp/ecr-policy.json en macOS o Linux).

  3. Anote la ubicación de la ruta del ecr-policy.json archivo creado. Especificará en un comando más adelante en este procedimiento.

  4. Abra una ventana del símbolo del sistema o del terminal.

  5. Ingrese el siguiente comando para establecer la declaración de política para el repositorio privado al que desea acceder con su servicio de contenedor.

    aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • RepositoryName— El nombre del repositorio privado para el que desea añadir la política.

    • path/to/: la ruta al archivo ecr-policy.json en su equipo que creó anteriormente en esta guía.

    • AwsRegionCode— El Región de AWS código del repositorio privado (por ejemplo,us-east-1).

    Ejemplos:

    • En Windows:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
    • En Linux o macOS:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1

    El servicio de contenedor ahora puede acceder a su repositorio privado y a sus imágenes. Para usar una imagen del repositorio, especifique el siguiente URI como valor de Imagen para la implementación del servicio de contenedor. En el URI, sustituya la etiqueta de ejemplo por la etiqueta de la imagen que desea implementar. Para obtener más información, consulte Creación y administración de implementaciones del servicio de contenedor.

    AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag

    En el URI, sustituya el texto del ejemplo siguiente por el suyo propio:

    • AwsAccountId— Tu número AWS de ID de cuenta.

    • AwsRegionCode— El Región de AWS código del repositorio privado (por ejemplo,us-east-1).

    • RepositoryName— El nombre del repositorio privado desde el que se va a implementar una imagen de contenedor.

    • ImageTag— La etiqueta de la imagen del contenedor del repositorio privado que se va a implementar en el servicio de contenedores.

    Ejemplo:

    111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage

Agregar una política a un repositorio privado que tenga una declaración de política

Complete el siguiente procedimiento para agregar una política a un repositorio privado de Amazon ECR que tiene una declaración de política. La política que añada debe incluir la política existente y una nueva política que contenga el ARN principal del rol de IAM del extractor de imágenes de Amazon ECR de su servicio de contenedores Lightsail. Esto mantiene los permisos existentes en su repositorio privado a la vez que otorga acceso a su servicio de contenedor para implementar imágenes desde el repositorio privado.

importante

Lightsail añade automáticamente la función de extractor de imágenes de Amazon ECR a sus repositorios privados de Amazon ECR cuando utiliza la consola de Lightsail para configurar el acceso. En ese caso, no tiene que agregar manualmente el rol de extractor de imágenes de Amazon ECR a sus repositorios privados mediante el procedimiento en esta sección. Para obtener más información, consulte Uso de la consola de Lightsail para administrar el acceso a los repositorios privados, anteriormente en esta guía.

Puede agregar una política a un repositorio privado mediante la AWS CLI. Para ello, se crea un archivo JSON que contiene la política existente y la nueva política. A continuación, haga referencia a ese archivo con el comando set-repository-policy para Amazon ECR. Para obtener más información, consulte la Referencia de set-repository-policycomandos.AWS CLI

nota

Debe instalarlo AWS CLI y configurarlo para Amazon ECR antes de poder continuar con este procedimiento. Para obtener más información, consulte Configuración de Amazon ECR en la Guía del usuario de Amazon ECR.

  1. Abra una ventana del símbolo del sistema o del terminal.

  2. Escriba el siguiente comando para obtener la declaración de política correspondiente a un repositorio privado específico.

    aws ecr get-repository-policy --repository-name RepositoryName --region AwsRegionCode

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • RepositoryName— El nombre del repositorio privado para el que desea configurar el acceso a un servicio de contenedores de Lightsail.

    • AwsRegionCode— El Región de AWS código del repositorio privado (por ejemplo,us-east-1).

    Ejemplo:

    aws ecr get-repository-policy --repository-name my-private-repo --region us-east-1
  3. En la respuesta, copie la política existente y continúe con el siguiente paso.

    Debe copiar solo el contenido del policyText que aparece entre las comillas dobles, como se destaca en el siguiente ejemplo.

    Respuesta al get-repository-policy comando para un repositorio privado que no tiene una declaración de política
  4. Abra un editor de texto y pegue la política existente de su repositorio privado que copió en el paso anterior.

    El resultado debe ser similar al siguiente ejemplo:

    Ejemplo de archivo JSON de declaración de política
  5. En el texto que pegó, reemplace \n con saltos de línea y borre el resto \.

    El resultado debe ser similar al siguiente ejemplo:

    Ejemplo de archivo JSON de instrucción de política editada
  6. Pegue la siguiente declaración política al final del archivo de texto.

    , { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowLightsailPull-ecr-private-repo-demo", "Effect": "Allow", "Principal": { "AWS": "IamRolePrincipalArn" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ] } ] }
  7. En el texto, IamRolePrincipalArnsustitúyalo por el ARN principal del rol de IAM del extractor de imágenes Amazon ECR de tu servicio de contenedores que obtuviste anteriormente en esta guía.

    El resultado debe ser similar al siguiente ejemplo:

    Ejemplo de archivo JSON de declaración de política completa
  8. Guarde el archivo como ecr-policy.json en una ubicación accesible del equipo (por ejemplo, C:\Temp\ecr-policy.json en Windows o /tmp/ecr-policy.json en macOS o Linux).

  9. Anote la ubicación de la ruta del archivo ecr-policy.json. Especificará en un comando más adelante en este procedimiento.

  10. Abra una ventana del símbolo del sistema o del terminal.

  11. Ingrese el siguiente comando para establecer la declaración de política para el repositorio privado al que desea acceder con su servicio de contenedor.

    aws ecr set-repository-policy --repository-name RepositoryName --policy-text file://path/to/ecr-policy.json --region AwsRegionCode

    En el comando, sustituya el texto del ejemplo siguiente por el suyo propio:

    • RepositoryName— El nombre del repositorio privado para el que desea añadir la política.

    • path/to/: la ruta al archivo ecr-policy.json en su equipo que creó anteriormente en esta guía.

    • AwsRegionCode— El Región de AWS código del repositorio privado (por ejemplo,us-east-1).

    Ejemplos:

    • En Windows:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file://C:\Temp\ecr-policy.json --region us-east-1
    • En Linux o macOS:

      aws ecr set-repository-policy --repository-name my-private-repo --policy-text file:///tmp/ecr-policy.json --region us-east-1

    Debería ver una respuesta similar a la del siguiente ejemplo.

    Respuesta al set-repository-policy comando

    Si ejecuta el comando get-repository-policy de nuevo, debería ver la nueva declaración de política adicional en su repositorio privado. El servicio de contenedor ahora puede acceder a su repositorio privado y a sus imágenes. Para usar una imagen del repositorio, especifique el siguiente URI como valor de Imagen para la implementación del servicio de contenedor. En el URI, sustituya la etiqueta de ejemplo por la etiqueta de la imagen que desea implementar. Para obtener más información, consulte Creación y administración de implementaciones del servicio de contenedor.

    AwsAccountId.dkr.ecr.AwsRegionCode.amazonaws.com/RepositoryName:ImageTag

    En el URI, sustituya el texto del ejemplo siguiente por el suyo propio:

    • AwsAccountId— Su número AWS de ID de cuenta.

    • AwsRegionCode— El Región de AWS código del repositorio privado (por ejemplo,us-east-1).

    • RepositoryName— El nombre del repositorio privado desde el que se va a implementar una imagen de contenedor.

    • ImageTag— La etiqueta de la imagen del contenedor del repositorio privado que se va a implementar en el servicio de contenedores.

    Ejemplo:

    111122223333.dkr.ecr.us-east-1.amazonaws.com/my-private-repo:myappimage