Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez et envoyez des images Docker vers Amazon ECR à l'aide d' GitHub Actions et de Terraform
Créée par Ruchika Modi (AWS)
Récapitulatif
Ce modèle explique comment créer des GitHub flux de travail réutilisables pour créer votre Dockerfile et transférer l'image résultante vers Amazon Elastic Container Registry (Amazon ECR). Le modèle automatise le processus de création de vos Dockerfiles à l'aide de Terraform et d'Actions. GitHub Cela minimise le risque d'erreur humaine et réduit considérablement le temps de déploiement.
Une action GitHub push sur la branche principale de votre GitHub dépôt déclenche le déploiement des ressources. Le flux de travail crée un référentiel Amazon ECR unique basé sur la combinaison de l' GitHub organisation et du nom du référentiel. Il envoie ensuite l'image Dockerfile vers le référentiel Amazon ECR.
Conditions préalables et limitations
Prérequis
Un compte AWS actif.
Un GitHub compte actif.
Terraform version 1 ou ultérieure installée et configurée
. Un bucket Amazon Simple Storage Service (Amazon S3) pour le backend Terraform.
Une table Amazon DynamoDB
pour le verrouillage de l'état et la cohérence de Terraform. La table doit avoir une clé de partition nommée LockID
avec un type deString
. Si cela n'est pas configuré, le verrouillage d'état sera désactivé.Rôle AWS Identity and Access Management (IAM) autorisé à configurer le backend Amazon S3 pour Terraform. Pour les instructions de configuration, consultez la documentation Terraform
.
Limites
Ce code réutilisable a été testé uniquement avec des GitHub actions.
Architecture
Pile technologique cible
Référentiel Amazon ECR
GitHub Les actions
Terraform
Architecture cible

Le diagramme illustre les éléments suivants :
1. Un utilisateur ajoute un Dockerfile et des modèles Terraform au référentiel. GitHub
2. Ces ajouts initient un flux de travail GitHub Actions.
3. Le flux de travail vérifie l'existence d'un référentiel Amazon ECR. Dans le cas contraire, il crée le référentiel en fonction de l' GitHub organisation et du nom du référentiel.
4. Le flux de travail crée le Dockerfile et envoie l'image vers le référentiel Amazon ECR.
Outils
Services Amazon
Amazon Elastic Container Registry (Amazon ECR) est un service de registre de conteneurs géré qui est sécurisé, évolutif et fiable.
Autres outils
GitHub Actions
est intégré à la GitHub plateforme pour vous aider à créer, partager et exécuter des flux de travail au sein de vos GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser des tâches telles que la création, le test et le déploiement de votre code. Terraform
est un outil d'infrastructure open source sous forme de code (IaC) HashiCorp qui vous aide à créer et à gérer une infrastructure cloud et sur site.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel GitHub Docker ECR Actions Workflow
Lorsque vous créez des GitHub actions, les fichiers de flux de travail Docker sont enregistrés dans le
/.github/workflows/
dossier de ce référentiel. Le flux de travail de cette solution se trouve dans le fichier workflow.yaml.Le
e2e-test
dossier fournit un exemple de Dockerfile à des fins de référence et de test.
Bonnes pratiques
Pour connaître les meilleures pratiques en matière d'écriture de Dockerfiles, consultez la documentation Docker
. Utilisez un point de terminaison VPC pour Amazon ECR. Les points de terminaison VPC sont alimentés par AWS PrivateLink, une technologie qui vous permet d'accéder en privé à Amazon ECR APIs via des adresses IP privées. Pour les tâches Amazon ECS qui utilisent le type de lancement Fargate, le point de terminaison VPC permet à la tâche d'extraire des images privées d'Amazon ECR sans attribuer d'adresse IP publique à la tâche.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Configurez OpenID Connect. | Créez un fournisseur OpenID Connect (OIDC). Vous utiliserez le fournisseur dans la politique de confiance pour le rôle IAM utilisé dans cette action. Pour obtenir des instructions, consultez la section Configuration d'OpenID Connect dans Amazon Web Services | Administrateur AWS, AWS DevOps, AWS général |
Clonez le GitHub dépôt. | Clonez le référentiel GitHub Docker ECR Actions Workflow
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Personnalisez l'événement qui lance le flux de travail Docker. | Le flux de travail de cette solution se trouve dans workflow.yaml | DevOps ingénieur |
Personnalisez le flux de travail. | Le fichier workflow.yaml
| DevOps ingénieur |
Déployez les modèles Terraform. | Le flux de travail déploie automatiquement les modèles Terraform qui créent le référentiel Amazon ECR, en fonction de l' GitHub événement que vous avez configuré. Ces modèles sont disponibles sous forme de | AWS DevOps, DevOps ingénieur |
Résolution des problèmes
Problème | Solution |
---|---|
Problèmes ou erreurs lorsque vous configurez Amazon S3 et DynamoDB en tant que backend distant Terraform. | Suivez les instructions de la documentation Terraform |
Impossible d'exécuter ou de démarrer le flux de travail avec l' | Le flux de travail configuré pour être déployé à partir de l' |
Ressources connexes
Réutilisation des flux de travail
(GitHub documentation) Déclenchement d'un flux de travail
(GitHub documentation)