Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de GitHub acciones para implementar en Elastic Beanstalk
GitHub Actions
Ejemplo de flujo de trabajo: entorno Beanstalk Standard
El siguiente ejemplo de flujo de trabajo implementa una aplicación en un entorno de Beanstalk Standard cada vez que se accede a la sucursal. main Crea un .yml archivo en tu repositorio en. .github/workflows/ La acción crea el entorno si no existe. En ese caso, solution-stack-name (oplatform-arn) selecciona la plataforma y option-settings debe proporcionar el perfil de instancia y el rol de servicio descritos enRoles de servicio, perfiles de instancia y políticas de usuario de Elastic Beanstalk. Cuando el entorno ya existe, estas entradas son opcionales.
ejemplo GitHub Flujo de trabajo de acciones para un entorno de 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" } ]
Este flujo de trabajo comprueba su repositorio, utiliza OpenID Connect (OIDC)
Ejemplo de flujo de trabajo: entorno de Beanstalk Cluster
Un entorno de Beanstalk Cluster ejecuta una imagen de contenedor, por lo que no se puede implementar un paquete fuente por sí solo. Para realizar la implementación en un entorno de Beanstalk Cluster, defina una de las siguientes entradas en lugar de un ARN de plataforma o pila de soluciones:
-
image-uri— El URI de una imagen de contenedor que su flujo de trabajo ya ha creado y enviado a un registro, como Amazon Elastic Container Registry (Amazon ECR). La acción crea la versión de la aplicación directamente a partir de la imagen y no carga un paquete de código fuente en Amazon S3. -
build-configuration— Un objeto JSON que indica a Elastic Beanstalk cómo crear la imagen a partir de su fuente, incluidos el AWS CodeBuild supuesto y elCodeBuildServiceRoletipo de compilación. La acción carga el paquete de código fuente en Amazon S3, crea la versión de la aplicación con la configuración de compilación y espera a que la compilación finalice antes de implementarla. Para ver la configuración de compilación, consulte. Creación de imágenes de contenedores para entornos de Beanstalk Cluster
El siguiente ejemplo de flujo de trabajo crea una imagen, la envía a Amazon ECR y la implementa en un entorno de Beanstalk Cluster. La acción crea el entorno si no existe. En ese caso, option-settings debe proporcionar las funciones de clúster, nodo y observabilidad que se describen enPermisos para Beanstalk Cluster, y se debe permitir que la función que GitHub Actions asuma pueda transferirlas.
ejemplo GitHub Flujo de trabajo de Actions para un entorno de 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 }}" } ]
Cuando se establece image-uri o, la deployment-timeout entrada build-configuration se establece de forma predeterminada en 2400 segundos en lugar de 900. El primer entorno de Beanstalk Cluster en un conjunto de subredes aprovisiona un clúster de Amazon EKS, lo que tarda entre 15 y 20 minutos; los entornos posteriores en las mismas subredes reutilizan el clúster y lo implementan en unos minutos.
Para ver los permisos necesarios, el build-configuration ejemplo, la lista completa de entradas y más opciones de configuración para ambos tipos de entorno, consulte el archivo README de la acción Deploy de Elastic Beanstalk en la página.