{"meta":{"title":"Déploiement sur Amazon Elastic Container Service","intro":"Découvrez comment déployer un projet sur Amazon Elastic Container Service (ECS) dans le cadre d’un flux de travail de déploiement continu (CD).","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/actions","title":"GitHub Actions"},{"href":"/fr/actions/how-tos","title":"Guides pratiques"},{"href":"/fr/actions/how-tos/deploy","title":"Déployer"},{"href":"/fr/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"Déployer sur des plateformes tierces"},{"href":"/fr/actions/how-tos/deploy/deploy-to-third-party-platforms/amazon-elastic-container-service","title":"Amazon Elastic Container Service"}],"documentType":"article"},"body":"# Déploiement sur Amazon Elastic Container Service\n\nDécouvrez comment déployer un projet sur Amazon Elastic Container Service (ECS) dans le cadre d’un flux de travail de déploiement continu (CD).\n\n## Prérequis\n\nAvant de créer votre GitHub Actions flux de travail, vous devez d’abord effectuer les étapes de configuration suivantes pour Amazon ERC et ECS :\n\n1. Créez un référentiel Amazon ECR pour stocker vos images.\n\n   Par exemple à l’aide de l’interface [CLI AWS](https://aws.amazon.com/cli/) :\n\n   ```bash copy\n   aws ecr create-repository \\\n       --repository-name MY_ECR_REPOSITORY \\\n       --region MY_AWS_REGION\n\n   ```\n\n   Vérifiez que vous utilisez le même nom de référentiel Amazon ECR (représenté ici par `MY_ECR_REPOSITORY`) pour la variable `ECR_REPOSITORY` dans le flux de travail ci-dessous.\n\n   Vérifiez que vous utilisez la même valeur de région AWS pour la variable `AWS_REGION` (représentée ici par `MY_AWS_REGION`) dans le flux de travail ci-dessous.\n\n2. Créez une définition de tâche, un cluster et un service Amazon ECS.\n\n   Pour plus d’informations, suivez [l’assistant de démarrage sur la console Amazon ECS](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun) ou le [guide de démarrage](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html) dans la documentation Amazon ECS.\n\n   Veillez à noter les noms que vous avez définis pour le service et le cluster Amazon ECS et à les utiliser pour les variables `ECS_SERVICE` et `ECS_CLUSTER` dans le flux de travail ci-dessous.\n\n3. Stockez votre définition de tâche Amazon ECS en tant que fichier JSON dans votre GitHub dépôt.\n\n   Le format du fichier doit être identique à la sortie générée par :\n\n   ```bash copy\n\n   aws ecs register-task-definition --generate-cli-skeleton\n\n   ```\n\n   Vérifiez que vous définissez la variable `ECS_TASK_DEFINITION` dans le flux de travail ci-dessous comme chemin d’accès au fichier JSON.\n\n   Vérifiez que vous définissez la variable `CONTAINER_NAME` dans le flux de travail ci-dessous comme nom du conteneur dans la section `containerDefinitions` de la définition de tâche.\n\n4. Créez des GitHub Actions secrets nommés `AWS_ACCESS_KEY_ID` et `AWS_SECRET_ACCESS_KEY` pour stocker les valeurs de votre clé d’accès Amazon IAM.\n\n   Pour plus d’informations sur la création de secrets pour GitHub Actions, consultez [Utilisation de secrets dans GitHub Actions](/fr/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository).\n\n   Consultez la documentation de chaque action utilisée ci-dessous pour les stratégies IAM recommandées pour l’utilisateur IAM et les méthodes de gestion des informations d’identification de clé d’accès.\n\n5. Si vous le souhaitez, configurez un environnement de déploiement. Les environnements sont utilisés pour décrire une cible de déploiement général comme `production`, `staging` ou `development`. Lorsqu’un GitHub Actions flux de travail est déployé dans un environnement, l’environnement s’affiche sur la page principale du référentiel. Vous pouvez utiliser les environnements pour exiger l’approbation d’un travail, restreindre les branches pouvant déclencher un flux de travail, contrôler les déploiements avec des règles personnalisées de protection des déploiements ou limiter l’accès aux secrets. Pour plus d’informations sur la création d’environnements, consultez [Gestion des environnements pour le déploiement](/fr/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments).\n\n## Création du workflow\n\nUne fois les conditions préalables remplies, vous pouvez procéder à la création du workflow.\n\nL’exemple de flux de travail suivant montre comment créer une image conteneur et l’envoyer à Amazon ECR. Il met ensuite à jour la définition de tâche avec le nouvel ID d’image et déploie la définition de tâche sur Amazon ECS.\n\nVérifiez que vous fournissez vos propres valeurs pour toutes les variables dans la clé `env` du flux de travail.\n\nSi vous avez configuré un environnement de déploiement, remplacez la valeur `environment` par le nom de votre environnement. Si vous n’avez pas configuré d’environnement  ou si votre workflow se trouve dans un référentiel privé et que vous n’utilisez pas GitHub Enterprise Cloud, supprimez la clé `environment`.\n\n```yaml copy\n# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.\n# Elles sont fournies par un tiers et régies par\n# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.\n# documentation en ligne.\n\n# GitHub recommande d’épingler les actions à un SHA de commit.\n# Pour obtenir une version plus récente, vous devez mettre à jour le SHA.\n# Vous pouvez également référencer une balise ou une branche, mais l’action peut changer sans avertissement.\n\nname: Deploy to Amazon ECS\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  AWS_REGION: MY_AWS_REGION                   # set this to your preferred AWS region, e.g. us-west-1\n  ECR_REPOSITORY: MY_ECR_REPOSITORY           # set this to your Amazon ECR repository name\n  ECS_SERVICE: MY_ECS_SERVICE                 # set this to your Amazon ECS service name\n  ECS_CLUSTER: MY_ECS_CLUSTER                 # set this to your Amazon ECS cluster name\n  ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION # set this to the path to your Amazon ECS task definition\n                                               # file, e.g. .aws/task-definition.json\n  CONTAINER_NAME: MY_CONTAINER_NAME           # set this to the name of the container in the\n                                               # containerDefinitions section of your task definition\n\njobs:\n  deploy:\n    name: Deploy\n    runs-on: ubuntu-latest\n    environment: production\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83\n        with:\n          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n          aws-region: ${{ env.AWS_REGION }}\n\n      - name: Login to Amazon ECR\n        id: login-ecr\n        uses: aws-actions/amazon-ecr-login@62f4f872db3836360b72999f4b87f1ff13310f3a\n\n      - name: Build, tag, and push image to Amazon ECR\n        id: build-image\n        env:\n          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}\n          IMAGE_TAG: ${{ github.sha }}\n        run: |\n          # Build a docker container and\n          # push it to ECR so that it can\n          # be deployed to ECS.\n          docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .\n          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG\n          echo \"image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG\" >> $GITHUB_OUTPUT\n\n      - name: Fill in the new image ID in the Amazon ECS task definition\n        id: task-def\n        uses: aws-actions/amazon-ecs-render-task-definition@c804dfbdd57f713b6c079302a4c01db7017a36fc\n        with:\n          task-definition: ${{ env.ECS_TASK_DEFINITION }}\n          container-name: ${{ env.CONTAINER_NAME }}\n          image: ${{ steps.build-image.outputs.image }}\n\n      - name: Deploy Amazon ECS task definition\n        uses: aws-actions/amazon-ecs-deploy-task-definition@df9643053eda01f169e64a0e60233aacca83799a\n        with:\n          task-definition: ${{ steps.task-def.outputs.task-definition }}\n          service: ${{ env.ECS_SERVICE }}\n          cluster: ${{ env.ECS_CLUSTER }}\n          wait-for-service-stability: true\n```\n\n## Pour aller plus loin\n\nPour le modèle de flux de travail d’origine, consultez [`aws.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/aws.yml) dans le dépôt GitHub Actions`starter-workflows`.\n\nPour plus d’informations sur les services utilisés dans ces exemples, consultez la documentation suivante :\n\n* « [Meilleures pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) » dans la documentation Amazon AWS.\n* Action officielle AWS « [Configurer les informations d’identification AWS](https://github.com/aws-actions/configure-aws-credentials) ».\n* Action officielle AWS [Amazon ECR « Login »](https://github.com/aws-actions/amazon-ecr-login).\n* Action officielle AWS [« Définition de tâche de rendu » Amazon ECS.](https://github.com/aws-actions/amazon-ecs-render-task-definition)\n* Action officielle AWS [Amazon ECS « Déployer la définition de tâche »](https://github.com/aws-actions/amazon-ecs-deploy-task-definition)."}