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
.dkr.ecr.aws_account_id
region
.amazonaws.com -
Get-ECRLoginCommand (AWS Tools for Windows PowerShell)
(Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin
.dkr.ecr.aws_account_id
region
.amazonaws.com
-
Uso de la autenticación de la API HTTP
Amazon ECR es compatible con la API HTTP de Docker Registry-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
-
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')
-
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/listLa 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"]}