{"meta":{"title":"Implantar no Amazon Elastic Container Service","intro":"Saiba como implantar um projeto no Amazon Elastic Container Service (ECS) como parte de um fluxo de trabalho de CD (implantação contínua).","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/actions","title":"GitHub Actions"},{"href":"/pt/actions/how-tos","title":"Instruções"},{"href":"/pt/actions/how-tos/deploy","title":"Implantar"},{"href":"/pt/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"Implantar em plataformas de terceiros"},{"href":"/pt/actions/how-tos/deploy/deploy-to-third-party-platforms/amazon-elastic-container-service","title":"Serviço de Contêiner Elástico da Amazon"}],"documentType":"article"},"body":"# Implantar no Amazon Elastic Container Service\n\nSaiba como implantar um projeto no Amazon Elastic Container Service (ECS) como parte de um fluxo de trabalho de CD (implantação contínua).\n\n## Pré-requisitos\n\nAntes de criar seu GitHub Actions fluxo de trabalho, primeiro você precisará concluir as seguintes etapas de configuração para Amazon ECR e ECS:\n\n1. Crie um repositório Amazon ECR para armazenar suas imagens.\n\n   Por exemplo, usando [a CLI da 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   Certifique-se de usar o mesmo nome de repositório do Amazon ECR (representado aqui por `MY_ECR_REPOSITORY`) para a variável `ECR_REPOSITORY` no fluxo de trabalho abaixo.\n\n   Certifique-se de usar o mesmo valor de região da AWS para a variável `AWS_REGION` (representada aqui por `MY_AWS_REGION`) no fluxo de trabalho abaixo.\n\n2. Crie uma definição de tarefa, um cluster e um serviço do Amazon ECS.\n\n   Para obter detalhes, siga o [Assistente de introdução no console do Amazon ECS](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun) ou o [Guia de introdução](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html) na documentação do Amazon ECS.\n\n   Certifique-se de anotar os nomes que você definiu para o serviço e o cluster do Amazon ECS e use-os para as variáveis `ECS_SERVICE` e `ECS_CLUSTER` no fluxo de trabalho abaixo.\n\n3. Armazene sua definição de tarefa do Amazon ECS como um arquivo JSON em seu GitHub repositório.\n\n   O formato do arquivo deve ser o mesmo da saída gerada por:\n\n   ```bash copy\n\n   aws ecs register-task-definition --generate-cli-skeleton\n\n   ```\n\n   Certifique-se de que você definiu a variável `ECS_TASK_DEFINITION` no fluxo de trabalho abaixo como o caminho para o arquivo JSON.\n\n   Certifique-se de definir a variável `CONTAINER_NAME` no fluxo de trabalho abaixo como o nome do contêiner na seção `containerDefinitions` da definição da tarefa.\n\n4. Crie GitHub Actions segredos nomeados `AWS_ACCESS_KEY_ID` e `AWS_SECRET_ACCESS_KEY` para armazenar os valores da sua chave de acesso do Amazon IAM.\n\n   Para obter mais informações sobre como criar segredos para GitHub Actions, consulte [Usar segredos em ações do GitHub](/pt/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository).\n\n   Consulte a documentação de cada ação usada abaixo para obter as políticas do IAM recomendadas para o usuário do IAM e os métodos para lidar com as credenciais de chave de acesso.\n\n5. Opcionalmente, configure um ambiente de implantação. Os ambientes são usados para descrever um destino de implantação geral, como `production`, `staging` ou `development`. Quando um GitHub Actions fluxo de trabalho é implantado em um ambiente, o ambiente é exibido na página principal do repositório. Você pode usar ambientes para exigir aprovação para um trabalho prosseguir, restringir quais ramificações podem acionar um fluxo de trabalho, bloquear implantações com regras de proteção de implantação personalizadas ou limitar o acesso a segredos. Para saber mais sobre como criar ambientes, confira [Gerenciar ambientes para implantação](/pt/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments).\n\n## Criar o fluxo de trabalho\n\nDepois de preencher os pré-requisitos, você pode prosseguir com a criação do fluxo de trabalho.\n\nO fluxo de trabalho de exemplo a seguir demonstra como criar uma imagem de contêiner e enviá-la ao Amazon ECR. Em seguida, ele atualiza a definição de tarefa com a nova ID de imagem e implanta a definição da tarefa no Amazon ECS.\n\nCertifique-se de fornecer seus próprios valores para todas as variáveis na chave `env` do fluxo de trabalho.\n\nSe você configurou um ambiente de implantação, altere o valor de `environment` para que ele seja o nome do seu ambiente. Se você não tiver configurado um ambiente ou se o fluxo de trabalho estiver em um repositório privado e você não usar o GitHub Enterprise Cloud, exclua a chave `environment`.\n\n```yaml copy\n# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.\n# São fornecidas por terceiros e regidas por\n# termos de serviço, política de privacidade e suporte separados\n# online.\n\n# O GitHub recomenda fixar ações em um SHA de commit.\n# Para obter uma versão mais recente, você precisará atualizar o SHA.\n# Você também pode fazer referência a uma marca ou branch, mas a ação pode ser alterada sem aviso.\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## Leitura adicional\n\nPara o modelo de fluxo de trabalho original, consulte [`aws.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/aws.yml) no GitHub Actions`starter-workflows` repositório.\n\nPara mais informações sobre os serviços utilizados nestes exemplos, veja a seguinte documentação:\n\n* [Melhores práticas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) na documentação da Amazon AWS.\n* Ação oficial [Configurar credenciais da AWS](https://github.com/aws-actions/configure-aws-credentials).\n* Ação oficial [\"Logon\" no Amazon ECR](https://github.com/aws-actions/amazon-ecr-login) da AWS.\n* Ação oficial [\"Renderizar Definição de Tarefa\" do Amazon ECS](https://github.com/aws-actions/amazon-ecs-render-task-definition) da AWS.\n* Ação oficial [\"Implantar Definição de Tarefa\" do Amazon ECS](https://github.com/aws-actions/amazon-ecs-deploy-task-definition) da AWS."}