Comment autoriser un compte secondaire à transférer ou extraire des images dans mon référentiel d’images Amazon ECR ?

Dernière mise à jour : 16/02/2021

Je souhaite autoriser un compte secondaire à transférer ou extraire des images dans mon référentiel d’images Amazon Elastic Container Registry (Amazon ECR).

Résolution

Vous pouvez transférer ou extraire des images vers ou depuis un référentiel Amazon ECR dans un autre compte. Tout d'abord, vous devez créer une stratégie qui permet au compte secondaire d'effectuer des appels d'API au niveau du référentiel. Ensuite, utilisez un jeton d'authentification Docker généré à partir du compte secondaire pour utiliser des commandes push et pull au niveau du référentiel du compte principal.

Création d'une stratégie permettant au compte secondaire d'effectuer des appels d'API au niveau du référentiel

1.    Ouvrez la console Amazon ECR pour vous connecter à votre compte principal.

2.    Choisissez le Repository name (Nom du référentiel) lié par un hyperlien du référentiel que vous souhaitez modifier.

3.    Dans le volet de navigation de gauche, sous Amazon ECR - Référentiels, choisissez Permissions (Autorisations).

4.    Pour ajouter une stratégie de référentiel pour votre compte secondaire à partir de votre compte principal, choisissez Edit policy JSON (Modifier la stratégie JSON). Entrez votre stratégie dans l'éditeur de code, puis choisissez Save (Enregistrer).

Important : Dans votre stratégie, vous devez inclure le numéro du compte secondaire ainsi que les actions que ce dernier peut effectuer au niveau du référentiel.

L'exemple de stratégie suivant permet d'autoriser un compte spécifique à transmettre et extraire des images :

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload"
            ]
        }
    ]
}

5.    Dans la définition de tâche, définissez l'image que vous souhaitez utiliser avec Amazon ECS. Votre image est hébergée dans le référentiel Amazon ECR du compte principal.

Générez un jeton d'authentification Docker temporaire à partir du compte secondaire et effectuez un test push ou pull

Remarque : Si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Le compte secondaire ne peut pas effectuer d'actions de stratégie au niveau du référentiel tant qu'il n’a pas reçu un jeton d'authentification temporaire valide pendant 12 heures. Le jeton permet au compte secondaire d'utiliser les commandes Push and pull Docker au niveau du référentiel du compte principal. La commande get-login-password récupère et décode le jeton d'autorisation que vous pouvez ensuite diriger vers une commande docker login pour vous authentifier.

Remarque : Le compte qui obtient le jeton doit disposer des autorisations API AWS Identify and Access Management (IAM) appropriées pour modifier le référentiel. Pour consulter des exemples, reportez-vous à la section Stratégies gérées par Amazon ECR. Pour résoudre les problèmes liés à Docker, activez le mode de débogage sur votre démon Docker. Cette commande est prise en charge à l'aide de la dernière version de l'interface de ligne de commande AWS CLI version 2, ou de la version 1, v1.17.10 ou ultérieure. Pour plus d'informations, consultez get-login-password.

1.    Pour générer un jeton d'authentification Docker pour un compte qui envoie et extrait des images en dehors d'Amazon ECS, exécutez la commande suivante. Remplacez aws_account_id par votre ID de compte principal et remplacez RegionID par votre ID de région.

Depuis AWS CLI :

aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.regionID.amazonaws.com

Depuis les outils AWS pour Windows PowerShell :

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

Vous recevez la sortie suivante :

aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-south-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
Login Succeeded

2.    Effectuez une extraction ou un transfert d'image de test vers le compte principal.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?