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
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-roleaws-region:us-east-1- name: Deploy to Elastic Beanstalk uses: aws-actions/aws-elasticbeanstalk-deploy@v1 with: aws-region:us-east-1application-name:my-applicationenvironment-name:my-application-envsolution-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)
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 oCodeBuildServiceRoleque 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-roleaws-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-1application-name:my-cluster-appenvironment-name:my-cluster-envimage-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.
Recursos adicionais do
-
Configurar a ação AWS
Credenciais em GitHub -
Configurando o OpenID Connect na Amazon Web Services
(documentação) GitHub -
Criação de imagens de contêiner para ambientes Beanstalk Cluster