Autenticación de registro privado en Amazon ECR - Amazon ECR

Autenticación de registro privado en Amazon ECR

Puede utilizar la AWS Management Console, la AWS CLI o los SDK de AWS para crear y administrar repositorios privados. También puede utilizar estos métodos para realizar determinadas acciones con las imágenes, por ejemplo listarlas o eliminarlas. Estos clientes usan métodos de autenticación de AWS estándar. Aunque es posible usar la API de Amazon ECR para insertar y extraer imágenes, es más probable que use la CLI de Docker o una biblioteca de Docker específica del lenguaje.

La CLI de Docker no admite métodos de autenticación de IAM nativos. Se deben tomar pasos adicionales para que Amazon ECR pueda autenticar y autorizar solicitudes de inserción y extracción de Docker.

Los métodos de autenticación del registro que se detallan en la sección siguiente están disponibles.

Uso del ayudante de credenciales de Amazon ECR

Amazon ECR proporciona un ayudante de credenciales de Docker que hace que sea más fácil almacenar y usar credenciales de Docker cuando se insertan y se extraen imágenes de Amazon ECR. Para obtener información sobre los pasos de instalación y configuración, consulte Amazon ECR Docker Credential Helper.

nota

El asistente de credenciales de Amazon ECR Docker no admite la autenticación multifactor (MFA).

Uso de un token de autorización

El ámbito de permiso de un token de autorización es igual que el de la entidad de seguridad de IAM que se utiliza para recuperar el token de autenticación. Se utiliza un token de autenticación para acceder a un registro de Amazon ECR al que la entidad de seguridad de IAM tiene acceso y que es válido durante 12 horas. Para obtener un token de autorización, debe utilizar la operación de la API GetAuthorizationToken para recuperar un token de autorización codificado en Base64 que contiene el nombre de usuario AWS y una contraseña codificada. Con el comando get-login-password de la AWS CLI, este proceso resulta más sencillo, ya que recupera y descodifica el token de autorización, que después puede canalizarse a un comando docker login para realizar la autenticación.

Autenticación de Docker en un registro privado de Amazon ECR con get-login
  • Para autenticar Docker en un registro de Amazon ECR con get-login-password, 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 en la Guía del usuario de AWS Command Line Interface.

    • get-login-password (AWS CLI)

      aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
    • Get-ECRLoginCommand (AWS Tools for Windows PowerShell)

      (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

Uso de la autenticación de la API HTTP

Amazon ECR es compatible con la API HTTP de Docker Registry. No obstante, dado que Amazon ECR es un registro privado, debe proporcionar un token de autorización con cada solicitud HTTP. Puede añadir un encabezado de autorización HTTP con la opción -H de curl para curl y pasar el token de autorización que proporciona el comando get-authorization-token de la AWS CLI .

Autenticación con la API HTTP de Amazon ECR
  1. Recupere un token de autorización con la AWS CLI y establézcalo en una variable de entorno.

    TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
  2. Para autenticar en la API, pase la variable $TOKEN a la opción -H de curl. Por ejemplo, el siguiente comando muestra las etiquetas de imagen de un repositorio de Amazon ECR. Para obtener más información, consulte la documentación de referencia de la API HTTP de Docker Registry.

    curl -i -H "Authorization: Basic $TOKEN" https://aws_account_id.dkr.ecr.region.amazonaws.com/v2/amazonlinux/tags/list

    La salida es la siguiente:

    HTTP/1.1 200 OK
    Content-Type: text/plain; charset=utf-8
    Date: Thu, 04 Jan 2018 16:06:59 GMT
    Docker-Distribution-Api-Version: registry/2.0
    Content-Length: 50
    Connection: keep-alive
    
    {"name":"amazonlinux","tags":["2017.09","latest"]}