

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
<a name="deploying-github-actions"></a>

[GitHub As ações ](https://docs.github.com/en/actions) podem implantar automaticamente seu aplicativo no Elastic Beanstalk quando você envia alterações de código para seu repositório. A [ ação ](https://github.com/aws-actions/aws-elasticbeanstalk-deploy) 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
<a name="deploying-github-actions-example"></a>

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` (ou`platform-arn`) seleciona a plataforma e `option-settings` deve fornecer o perfil da instância e a função de serviço descritos em[Perfis do Elastic Beanstalk Service, perfis de instância e políticas de usuário](concepts-roles.md). Quando o ambiente já existe, essas entradas são opcionais.

**Example 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) ](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) para se autenticar AWS por meio da [ ação ](https://github.com/aws-actions/configure-aws-credentials) 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
<a name="deploying-github-actions-cluster"></a>

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, consulte[Compilar imagens de contêiner para ambientes do Beanstalk Cluster](beanstalk-cluster-app-versions.md).

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 em[Permissões para o Beanstalk Cluster](beanstalk-cluster-permissions.md), e a função que GitHub Actions assume deve ter permissão para transmiti-las.

**Example 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. ](https://github.com/aws-actions/aws-elasticbeanstalk-deploy#readme) GitHub

## Recursos adicionais do
<a name="deploying-github-actions-resources"></a>
+ [Elastic Beanstalk Implante a ação em ](https://github.com/aws-actions/aws-elasticbeanstalk-deploy) GitHub
+ [Configurar a ação AWS](https://github.com/aws-actions/configure-aws-credentials) Credenciais em GitHub
+ [Configurando o OpenID Connect na Amazon Web Services ](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) (documentação) GitHub
+ [Começando com o Beanstalk Cluster](beanstalk-cluster-getting-started.md)
+ [Compilar imagens de contêiner para ambientes do Beanstalk Cluster](beanstalk-cluster-app-versions.md)