Uso de imagens de contêiner que não são da AWS no Amazon ECS
Use o registro privado para armazenar suas credenciais no AWS Secrets Manager e referenciá-las na definição de tarefa. Isso fornece uma maneira de fazer referência a imagens de contêiner que existem em registros privados fora da AWS que exijam autenticação em suas definições de tarefa. Há suporte para esse recurso em tarefas hospedadas no Fargate, instâncias do Amazon EC2 e instâncias externas usando o Amazon ECS Anywhere.
Importante
Se a definição de tarefa faz referência a uma imagem armazenada no Amazon ECR, esse tópico não se aplica. Para obter mais informações, consulte Usar imagens do Amazon ECR com o Amazon ECS no Guia do usuário do Amazon Elastic Container Registry.
Para tarefas hospedadas em instâncias do Amazon EC2, sesse recurso requer a versão 1.19.0
ou posterior do agente de contêiner. No entanto, recomendamos usar a versão mais recente do agente de contêiner. Para obter informações sobre como verificar a versão do agente e atualizar para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.
Para tarefas hospedadas no Fargate, esse recurso requer a versão da plataforma 1.2.0
ou posterior. Para ter mais informações, consulte Versões da plataforma do Fargate para o Amazon ECS.
Em sua definição do contêiner, especifique o objeto repositoryCredentials
com os detalhes do segredo que você criou. O segredo referenciado pode estar em uma Região da AWS diferente ou em uma conta distinta daquela que o utiliza para a tarefa.
nota
Quando você usar a API do Amazon ECS, a AWS CLI ou o AWS SDK, se o segredo existir na mesma Região da AWS da tarefa que estiver sendo inicializada, será possível usar o ARN completo ou o nome do segredo. Se o segredo existir em outra conta, o ARN completo do segredo deve ser especificado. Ao usar o AWS Management Console, o ARN completo do segredo deve ser sempre especificado.
Veja a seguir um trecho de uma definição de tarefa que mostra os parâmetros necessários.
Substitua os seguintes parâmetros:
-
private-repo
pelo nome do host do repositório privado -
private-image
pelo nome da imagem arn:aws:secretsmanager:region:aws_account_id:secret:secret_name
com o nome do recurso da Amazon (ARN) secreto
"containerDefinitions": [ { "image": "
private-repo/private-image
", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name
" } } ]
nota
Outro método para habilitar a autenticação de registro privado usa variáveis de ambiente do agente de contêiner do Amazon ECS para autenticar registros privados. Só há suporte para esse método para tarefas hospedadas em instâncias do Amazon EC2. Para ter mais informações, consulte Configuração de instâncias de contêiner do Amazon ECS para imagens do Docker privadas .
Para usar o registro privado
-
A definição de tarefa deve ter um perfil de execução de tarefas. Isso permite que o agente de contêiner obtenha a imagem do contêiner. Para ter mais informações, consulte Função do IAM de execução de tarefas do Amazon ECS.
Para fornecer acesso aos segredos criados por você, adicione as permissões a seguir como uma política em linha à função de execução da tarefa. Para obter mais informações, consulte Adicionar e remover políticas do IAM.
-
secretsmanager:GetSecretValue
-
kms:Decrypt
: exigido somente se a chave usar uma chave do KMS personalizada e não a chave padrão. O nome do recurso da Amazon (ARN) da chave personalizada deve ser adicionado como um recurso.
Veja a seguir um exemplo de política em linha que adiciona as permissões.
{ "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" ] } ] }
-
-
Use o AWS Secrets Manager para criar um segredo para suas credenciais de registro privado. Para obter informações sobre como criar segredos, consulte Create an AWS Secrets Manager secret no Guia do usuário do AWS Secrets Manager.
Insira suas credenciais de registro privado usando o seguinte formato:
{ "username" : "
privateRegistryUsername
", "password" : "privateRegistryPassword
" } -
Registre uma definição de tarefa. Para ter mais informações, consulte Criar uma definição de tarefa do Amazon ECS usando o console.