Utilisation d’images de conteneur autre qu’AWS dans Amazon ECS - Amazon Elastic Container Service

Utilisation d’images de conteneur autre qu’AWS dans Amazon ECS

Utilisez un registre privé pour stocker vos informations d’identification dans AWS Secrets Manager, puis référencez-les dans votre définition de tâche. Cela permet de référencer des images de conteneurs qui existent dans des registres privés en dehors d'AWS qui nécessitent une authentification dans vos définitions de tâches. Cette fonction est prise en charge par les tâches hébergées sur Fargate, les instances Amazon EC2 et les instances externes utilisant Amazon ECS Anywhere.

Important

Si votre définition de tâche fait référence à une image stockée dans Amazon ECR, cette rubrique ne s'applique pas. Pour plus d'informations, consultez Utilisation d'images Amazon ECR avec Amazon ECS dans le Guide de l'utilisateur Amazon Elastic Container Registry.

Pour les tâches hébergées sur des instances Amazon EC2, cette fonction exige nécessite la version 1.19.0 ou ultérieure de l'agent de conteneur. Cependant, nous vous recommandons d'utiliser la dernière version de l'agent de conteneur. Pour plus d'informations sur la vérification de la version de votre agent et la mise à jour à la dernière version, consultez Mise à jour de l'agent de conteneur Amazon ECS.

Pour les tâches hébergées sur Fargate, cette fonction nécessite une version 1.2.0 de la plateforme ou une version ultérieure. Pour plus d'informations, veuillez consulter Versions de la plateforme Fargate pour Amazon ECS.

Dans votre définition du conteneur, spécifiez l'objet repositoryCredentials avec les détails du secret que vous avez créé. Le secret référencé peut provenir d’une Région AWS ou d’un compte différent de celui de la tâche qui l’utilise.

Note

Lorsque vous utilisez l'API Amazon ECS, la AWS CLI ou le kit SDK AWS, si le secret existe dans la même Région AWS que la tâche que vous lancez, vous pouvez utiliser le nom ou l'ARN complet du secret. Si le secret existe dans un autre compte, l'ARN complet du secret doit être spécifié. Lorsque vous utilisez AWS Management Console, vous devez toujours spécifier l'ARN complet du secret.

Voici un extrait de code d'une définition de tâche indiquant les paramètres requis :

Remplacez les paramètres suivants :

  • private-repo par le nom d’hôte du référentiel privé

  • private-image par le nom de l’image

  • arn:aws:secretsmanager:region:aws_account_id:secret:secret_name par l’Amazon Resource Name (ARN) du secret

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
Note

Une autre méthode d'activation de l'authentification de registre privé utilise des variables d'environnement d'agent de conteneur Amazon ECS pour s'authentifier auprès de registres privés. Cette méthode est prise en charge uniquement pour les tâches hébergées sur des instances Amazon EC2. Pour de plus amples informations, consultez Configuration des instances de conteneur Amazon ECS pour les images Docker privées .

Pour utiliser un registre privé
  1. La définition de tâche doit comporter un rôle d’exécution de tâche. Cela permet à l'agent de conteneur d'extraire l'image de conteneur. Pour de plus amples informations, consultez Rôle IAM d'exécution de tâche Amazon ECS.

    L’authentification du registre privé permet à vos tâches Amazon ECS d’extraire des images de conteneur à partir de registres privés en dehors d’AWS (tels que Docker Hub, Quay.io ou votre propre registre privé) qui nécessitent des informations d’identification d’authentification. Cette fonctionnalité utilise Secrets Manager pour stocker en toute sécurité vos informations d’identification de registre, qui sont ensuite référencées dans votre définition de tâche à l’aide du paramètre repositoryCredentials.

    Pour plus d’informations sur la configuration de l’authentification du registre privé, consultez la section Utilisation d’images de conteneur non-AWS dans Amazon ECS.

    Pour donner accès aux secrets contenant vos informations d’identification du registre privé, ajoutez les autorisations suivantes en tant que politique intégrée au rôle d’exécution des tâches. Pour plus d'informations, consultez Ajout et suppression de politiques IAM.

    • secretsmanager:GetSecretValue : nécessaire pour récupérer les informations d’identification du registre privé auprès de Secrets Manager.

    • kms:Decrypt  : obligatoire uniquement si votre secret utilise une clé KMS personnalisée et non la clé par défaut. L'Amazon Resource Name (ARN) de votre clé personnalisée doit être ajouté en tant que ressource.

    Voici un exemple de stratégie en ligne qui ajoute les autorisations.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }
  2. Utilisez AWS Secrets Manager pour créer un secret pour vos informations d'identification de registre privé. Pour plus d’informations sur la création d’un secret, consultez la section Création d’un secret AWS Secrets Manager dans le Guide de l’utilisateur AWS Secrets Manager.

    Saisissez vos informations d’identification de registre privé en utilisant le format suivant :

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  3. Enregistrer une définition de tâche. Pour de plus amples informations, consultez Création d’une définition de tâche Amazon ECS à l’aide de la console.