本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 GitHub 操作部署到 Elastic Beanstalk
GitHub 当您将代码更改推送到存储库时,Actions
示例工作流程:Beanstalk 标准环境
以下示例工作流程会在您每次推送到分支时将应用程序部署到 Beanstalk 标准环境中。main在您的存储库下创建.yml文件.github/workflows/。如果环境不存在,该操作会创建环境。在这种情况下,solution-stack-name(或platform-arn)选择平台,并且option-settings必须提供中描述的实例配置文件和服务角色Elastic Beanstalk 服务角色、实例配置文件和用户策略。当环境已经存在时,这些输入是可选的。
例 GitHub Beanstalk 标准环境的操作工作流程
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" } ]
此工作流程检查您的存储库,使用 OpenID Connect (OIDC) AWS 通过 “配置 AWS
凭证”
示例工作流程:Beanstalk 集群环境
Beanstalk 集群环境运行容器镜像,因此无法单独向其部署源包。要部署到 Beanstalk 集群环境,请设置以下输入之一,而不是解决方案堆栈或平台 ARN:
-
image-uri— 您的工作流程已经构建并推送到注册表(例如亚马逊弹性容器注册表 (Amazon ECR))的容器映像的 URI。该操作直接从图像创建应用程序版本,不会将源包上传到 Amazon S3。 -
build-configuration— 一个 JSON 对象,它告诉 Elastic Beanstalk 如何从您的源代码构建镜像,包括 AWS CodeBuild 假定图像和构建类型。CodeBuildServiceRole该操作会将您的源包上传到 Amazon S3,使用构建配置创建应用程序版本,并等待构建完成后再部署。有关编译设置,请参阅为 Beanstalk 集群环境构建容器镜像。
以下示例工作流程构建镜像,将其推送到 Amazon ECR,然后将其部署到 Beanstalk 集群环境中。如果环境不存在,该操作会创建环境。在这种情况下,option-settings必须提供中描述的集群、节点和可观察性角色Beanstalk 集群的权限,并且必须允许 Act GitHub ions 承担的角色传递这些角色。
例 GitHub Beanstalk 集群环境的操作工作流程
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 }}" } ]
设置image-uri或build-configuration时,deployment-timeout输入默认为 2400 秒,而不是 900 秒。一组子网上的第一个 Beanstalk 集群环境提供 Amazon EKS 集群,这需要 15—20 分钟;相同子网上的后续环境会重复使用该集群并在几分钟内完成部署。
有关两种环境类型的所需权限、build-configuration示例、完整的输入列表以及更多配置选项,请参阅 E lastic Beanstalk Deploy 操作自述文件。
其他资源
-
在 Elastic Beanstalk 上进行部署操作
GitHub -
https://github.com/aws-actions/configure-aws-credentials
在上配置 “ AWS 凭证” 操作 GitHub -
在亚马逊网络服务中配置 OpenID Connect
(GitHub文档)