View a markdown version of this page

Usando GitHub ações para implantar no Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando GitHub ações para implantar no Elastic Beanstalk

GitHub As ações podem implantar automaticamente seu aplicativo no Elastic Beanstalk quando você envia alterações de código para seu repositório. A ação Elastic Beanstalk Deploy fornece uma interface YAML simples que lida com a criação de versões de aplicativos e sua implantação em seu ambiente do Elastic Beanstalk. Você pode usar a ação com qualquer tipo de ambiente do Elastic Beanstalk. Para um ambiente Beanstalk Standard, a ação empacota seu repositório em um pacote de origem e o carrega no Amazon S3. Para um ambiente Beanstalk Cluster, a ação cria a versão do aplicativo a partir de uma imagem de contêiner, uma imagem que seu fluxo de trabalho já criou ou uma que o Elastic Beanstalk cria a partir de sua origem. As entradas que você define selecionam o tipo de ambiente.

Exemplo de fluxo de trabalho: ambiente Beanstalk Standard

O exemplo de fluxo de trabalho a seguir implanta um aplicativo em um ambiente Beanstalk Standard toda vez que você envia um push para a filial. main Crie um .yml arquivo no seu repositório em.github/workflows/. A ação cria o ambiente se ele não existir. Nesse caso, solution-stack-name (ouplatform-arn) seleciona a plataforma e option-settings deve fornecer o perfil da instância e a função de serviço descritos emPerfis do Elastic Beanstalk Service, perfis de instância e políticas de usuário. Quando o ambiente já existe, essas entradas são opcionais.

exemplo GitHub Fluxo de trabalho de ações para um ambiente Beanstalk Standard
name: Deploy to Elastic Beanstalk on: push: branches: - main permissions: id-token: write contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/my-github-actions-role aws-region: us-east-1 - name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region: us-east-1 application-name: my-application environment-name: my-application-env solution-stack-name: '64bit Amazon Linux 2023 v4.10.0 running Go 1' option-settings: | [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:elasticbeanstalk:environment", "OptionName": "ServiceRole", "Value": "aws-elasticbeanstalk-service-role" } ]

Esse fluxo de trabalho verifica seu repositório, usa o OpenID Connect (OIDC) para se autenticar AWS por meio da ação Configure AWS Credentials e, em seguida, implanta seu aplicativo no Elastic Beanstalk. A ação de implantação empacota o conteúdo do seu repositório, carrega o pacote de origem no Amazon S3, cria uma nova versão do aplicativo e cria ou atualiza seu ambiente. Por padrão, ele espera que a implantação seja concluída e o ambiente retorne a um estado saudável.

Exemplo de fluxo de trabalho: ambiente Beanstalk Cluster

Um ambiente Beanstalk Cluster executa uma imagem de contêiner, portanto, um pacote de origem por si só não pode ser implantado nele. Para implantar em um ambiente Beanstalk Cluster, defina uma das seguintes entradas em vez de uma pilha de soluções ou ARN de plataforma:

  • image-uri— O URI de uma imagem de contêiner que seu fluxo de trabalho já criou e enviou para um registro, como o Amazon Elastic Container Registry (Amazon ECR). A ação cria a versão do aplicativo diretamente da imagem e não carrega um pacote de origem para o Amazon S3.

  • build-configuration— Um objeto JSON que diz ao Elastic Beanstalk como criar a imagem a partir de sua fonte, incluindo o CodeBuildServiceRole que AWS CodeBuild pressupõe e o tipo de construção. A ação carrega seu pacote de origem no Amazon S3, cria a versão do aplicativo com a configuração de compilação e aguarda a conclusão da compilação antes de implantá-la. Para as configurações de compilação, consulteCriação de imagens de contêiner para ambientes Beanstalk Cluster.

O exemplo de fluxo de trabalho a seguir cria uma imagem, a envia para o Amazon ECR e a implanta em um ambiente Beanstalk Cluster. A ação cria o ambiente se ele não existir. Nesse caso, option-settings deve fornecer as funções de cluster, nó e observabilidade descritas emPermissões para o Beanstalk Cluster, e a função que GitHub Actions assume deve ter permissão para transmiti-las.

exemplo GitHub Fluxo de trabalho de ações para um ambiente Beanstalk Cluster
name: Deploy to Elastic Beanstalk on: push: branches: - main permissions: id-token: write contents: read jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/my-github-actions-role aws-region: us-east-1 - name: Login to Amazon ECR id: ecr uses: aws-actions/amazon-ecr-login@v2 - name: Build and push container image run: | docker build --platform linux/amd64 -t ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} . docker push ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} - name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region: us-east-1 application-name: my-cluster-app environment-name: my-cluster-env image-uri: ${{ steps.ecr.outputs.registry }}/my-app:${{ github.sha }} option-settings: | [ { "Namespace": "aws:elasticbeanstalk:eks", "OptionName": "cluster-role", "Value": "${{ secrets.CLUSTER_ROLE_ARN }}" }, { "Namespace": "aws:elasticbeanstalk:eks", "OptionName": "node-role", "Value": "${{ secrets.NODE_ROLE_ARN }}" }, { "Namespace": "aws:elasticbeanstalk:eks:environment", "OptionName": "observability-role", "Value": "${{ secrets.OBSERVABILITY_ROLE_ARN }}" } ]

Quando image-uri ou build-configuration está definido, o padrão deployment-timeout de entrada é 2400 segundos em vez de 900. O primeiro ambiente Beanstalk Cluster em um conjunto de sub-redes provisiona um cluster Amazon EKS, que leva de 15 a 20 minutos; ambientes posteriores nas mesmas sub-redes reutilizam o cluster e são implantados em alguns minutos.

Para obter as permissões necessárias, o build-configuration exemplo, a lista completa de entradas e mais opções de configuração para os dois tipos de ambiente, consulte a ação README do Elastic Beanstalk Deploy on. GitHub

Recursos adicionais do