Le Blog Amazon Web Services

Comment utiliser des images ECR entre comptes dans AWS CodeBuild pour votre environnement de construction

L’utilisation de conteneurs nécessite la sécurisation et la gestion fine des permissions sur les images Docker utilisées et publiées sur un registre.

Afin de faciliter les processus de build, publication et déploiement dans ce contexte de séparation de responsabilité entre la chaîne de build et le registre d’image, AWS CodeBuild vous permet d’accéder aux images Docker à partir de n’importe quel registre Amazon Elastic Container Registry sur un autre compte avec une gestion fine des autorisations et des droits.

Dans cet article, nous allons vous montrer comment mettre en service un environnement de construction à l’aide d’une image provenant d’un autre compte AWS.

Voici un aperçu rapide des services utilisés dans notre exemple:

AWS CodeBuild est un service d’intégration continue entièrement géré qui compile le code source, exécute des tests et génère des packages logiciels prêts à être déployés. Il fournit une plate-forme de build entièrement préconfigurée pour les langages de programmation les plus courants et des outils de build, notamment Apache Maven, Gradle, etc.

Amazon Elastic ECR est un registre de conteneurs Docker entièrement géré qui facilite le stockage, la gestion et le déploiement des images de conteneurs Docker pour les développeurs.

Nous allons utiliser un exemple d’image Docker dans un référentiel Amazon ECR dans le compte AWS B. Le projet CodeBuild dans le compte AWS A extraira les images du référentiel d’images Amazon ECR dans le compte AWS B.

Conditions préalables:

Pour commencer, vous avez besoin de:

  • Deux comptes AWS (comptes AWS A et AWS B).
  • Dans le compte AWS B, un reférentiel Amazon ECR. Dans le compte AWS B, les images que vous souhaitez utiliser pour votre environnement de build. Si vous ne disposez pas d’un registre d’images et d’un exemple d’image, consultez Exemple de Docker dans le Guide de l’utilisateur d’AWS CodeBuild
  • Dans le compte AWS A, un référentiel AWS CodeCommit avec un fichier buildspec.yml et un exemple de code.
    En utilisant les étapes suivantes, autorisations dans AWS CodeBuild dans votre référentie Amazon ECR pour extraire l’image Docker du référentiel dans l’environnement de construction.

Pour accorder à CodeBuild les autorisations permettant d’extraire l’image Docker dans l’environnement de construction

  1. Ouvrez la console Amazon ECS à l’adresse https://console.aws.amazon.com/ecs/.
  2. Choisissez le nom du référentiel que vous avez créé.
  3. Dans l’onglet Autorisations, choisissez Modifier la stratégie JSON.
  4. Appliquez la stratégie suivante et enregistrez.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CodeBuildAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "<arn du service, par exemple arn:${Partition}:codebuild:${Region}:${Account}:build/ pour un build donné 
                                    avec l’ajoût de conditions pour le type de build"  
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ]
        }
    ]
}

Pour utiliser une image du compte B et configurer un projet de build dans le compte A

1. Ouvrez la console AWS CodeBuild à l’adresse https://console.aws.amazon.com/codesuite/codebuild/home.

2. Choisissez Create project.

3. Dans Configuration du projet, entrez un nom et une description pour le projet de construction.

4. Dans Source, pour Fournisseur source, choisissez le type de fournisseur de code source. Dans cet exemple, nous utilisons le nom du référentiel AWS CodeCommit.

5. Pour Environment, nous allons extraire l’image Docker du compte AWS B et utiliser l’image pour créer l’environnement de construction afin de générer des artefacts. Pour configurer l’environnement de construction, choisissez Image personnalisée. Pour le registre d’images, choisissez Amazon ECR. Pour un compte ECR, choisissez Autre compte ECR.

6. Dans l’URI du référentiel Amazon ECR, entrez l’URI du référentiel d’images à partir du compte AWS B, puis choisissez Créer un projet de construction.

7. Accédez au projet de construction que vous venez de créer et choisissez Démarrer la construction. L’ exécution de la release va télécharger le code source à partir du référentiel AWS CodeCommit et mettre en service l’environnement de build à l’aide de l’image extraite du registre d’images.

Prochaines étapes

Maintenant que vous avez vu comment utiliser les images ECR entre comptes, vous pouvez intégrer une étape de build dans AWS CodePipeline et utiliser l’environnement de build pour créer des artefacts et déployer votre application. Pour intégrer une étape de génération dans votre pipeline, consultez la rubrique Utilisation de déploiements dans AWS
CodeDeploy dans le AWS CodeDeploy Guide de l’utilisateur.

Si vous avez des commentaires, veuillez les laisser dans la section Commentaires ci-dessous. Si vous avez des questions, commencez une discussion sur le forum AWS CodeBuild ou contactez le support AWS.

Traduit en français par Guillaume Fediere, Solutions Architect chez AWS.

Source