Uso de imágenes de contenedor que no sean de AWS en Amazon ECS
Utilice el registro privado para almacenar las credenciales en AWS Secrets Manager y hacer referencia a ellas en la definición de tarea. Esto proporciona una forma de hacer referencia a las imágenes de contenedores que existen en registros privados fuera de AWS que requieren autenticación en las definiciones de tareas. Esta función es compatible con tareas alojadas en Fargate, Amazon EC2 instances (Instancias de Amazon EC2) e instancias externas que utilizan Amazon ECS Anywhere.
importante
Si la definición de la tarea hace referencia a una imagen que está almacenada en Amazon ECR, este tema no es válido. Para obtener más información, consulte Utilización de imágenes de Amazon ECR con Amazon ECS en la Guía del usuario de Amazon Elastic Container Registry.
Para las tareas alojadas en instancias de Amazon EC2, esta característica requiere la versión 1.19.0
del agente de contenedor o una posterior. No obstante, recomendamos utilizar la versión del agente de contenedor más reciente. Para obtener información acerca de cómo comprobar la versión del agente y actualizar a la versión más reciente, consulte Actualización del agente de contenedor de Amazon ECS.
Para las tareas alojadas en Fargate, esta función requiere la versión de plataforma 1.2.0
o posterior. Para obtener más información, consulta Versiones de la plataforma Fargate para Amazon ECS.
En la definición de contenedor, especifique el objeto repositoryCredentials
con los detalles del secreto que ha creado. El secreto al que se hace referencia puede proceder de una Región de AWS o cuenta distintas de la tarea que lo utiliza.
nota
Cuando se utiliza la API de Amazon ECS, la AWS CLI o el SDK de AWS, si el secreto existe en la misma Región de AWS que la tarea que se va a lanzar, se puede utilizar el ARN completo o el nombre del secreto. Si el secreto existe en otra cuenta, debe especificarse el ARN completo del secreto. Cuando se utiliza la AWS Management Console, siempre debe especificarse el ARN completo del secreto.
A continuación, se incluye un fragmento de definición de tareas que muestra los parámetros necesarios:
Sustituya los siguientes parámetros:
-
private-repo
con el nombre de host del repositorio privado -
private-image
con el nombre de la imagen arn:aws:secretsmanager:region:aws_account_id:secret:secret_name
con el nombre de recurso de Amazon (ARN) secreto
"containerDefinitions": [ { "image": "
private-repo/private-image
", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name
" } } ]
nota
Otro método para habilitar la autenticación de registros privados consiste en utilizar las variables de entorno del agente de contenedor de Amazon ECS para la autenticación en registros privados. Este método solo se admite para tareas alojadas en Amazon EC2 instances (Instancias de Amazon EC2). Para obtener más información, consulte Configuración de instancias de contenedor de Amazon ECS para imágenes de Docker privadas .
Para utilizar el registro privado
-
La definición de tareas debe tener un rol de ejecución de tareas. Esto permite que el agente de contenedor extraiga la imagen del contenedor. Para obtener más información, consulte Rol de IAM de ejecución de tareas de Amazon ECS.
Para proporcionar acceso a los secretos que cree, agregue los siguientes permisos como una política insertada al rol de ejecución de tareas. Para obtener más información, consulte Adición y eliminación de políticas de IAM.
-
secretsmanager:GetSecretValue
-
kms:Decrypt
: solo se requiere si la clave utiliza una clave de KMS personalizada y no la clave de KMS predeterminada. Se debe agregar el nombre de recurso de Amazon (ARN) de la clave de personalizada como un recurso.
Es siguiente es un ejemplo de política insertada que agrega los permisos.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }
-
-
Utilice AWS Secrets Manager para crear un secreto para sus credenciales de registros privados. Para obtener información acerca de la creación de un secreto, consulte Create an AWS Secrets Manager secret en la Guía del usuario de AWS Secrets Manager.
Ingrese las credenciales de registros privados con el siguiente formato:
{ "username" : "
privateRegistryUsername
", "password" : "privateRegistryPassword
" } -
Registre una definición de tareas. Para obtener más información, consulte Creación de una definición de tareas de Amazon ECS mediante la consola.