AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

通过 AWS CodeBuild 使用 EB CLI

AWS CodeBuild 可编译源代码,运行单元测试,并生成已就绪可供部署的项目。您可以将 CodeBuild 与 EB CLI 结合使用来从应用程序的源代码自动构建应用程序。环境创建和之后的每个部署都将以构建步骤开始,然后部署生成的应用程序。

注意

有些区域不提供 CodeBuild。Elastic Beanstalk 与 CodeBuild 之间的集成在这些区域不起作用。

有关每个区域中提供的 AWS 服务的信息,请参阅区域表

创建应用程序

创建使用 CodeBuild 的 Elastic Beanstalk 应用程序

  1. 在您的应用程序文件夹中包含 CodeBuild 构建规范文件 buildspec.yml

  2. 使用特定于 Elastic Beanstalk 的选项添加一个 eb_codebuild_settings 条目。

  3. 在此文件夹中运行 eb init

Elastic Beanstalk 扩展 CodeBuild 构建规范文件格式,以包括以下各项其他设置:

eb_codebuild_settings: CodeBuildServiceRole: role-name ComputeType: size Image: image Timeout: minutes
CodeBuildServiceRole

CodeBuild 可用来代表您与相关 AWS 服务进行交互的 AWS Identity and Access Management (IAM) 服务角色的 ARN 或名称。此值为必填项。如果您忽略此值,任何后续的 eb createeb deploy 命令都将失败。

要了解有关创建 CodeBuild 的服务角色的更多信息,请参阅 AWS CodeBuild 用户指南中的创建 CodeBuild 服务角色

注意

您还需要在 CodeBuild 本身中执行操作的权限。Elastic Beanstalk AWSElasticBeanstalkFullAccess 托管用户策略包含所有必需的 CodeBuild 操作权限。如果您不使用托管策略,请确保在用户策略中允许以下权限。

"codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild"

有关详细信息,请参阅 控制对 Elastic Beanstalk 的访问

ComputeType

CodeBuild 构建环境中的 Docker 容器使用的资源量。有效值为 BUILD_GENERAL1_SMALL、BUILD_GENERAL1_MEDIUM 和 BUILD_GENERAL1_LARGE。

Image

CodeBuild 用于构建环境的 Docker Hub 或 Amazon ECR 映像的名称。此 Docker 映像应包含构建代码所需的所有工具和运行时库,并且应与您应用程序的目标平台匹配。CodeBuild 管理和维护专与 Elastic Beanstalk 结合使用的一组映像。建议您使用其中一个。有关详细信息,请参阅 AWS CodeBuild 用户指南中的 CodeBuild 提供的 Docker 映像

Image 值是可选的。如果您省略此值,eb init 命令会尝试选择与目标平台最匹配的映像。此外,如果您在交互模式下运行 eb init 并且它无法为您选择映像,则会提示您选择一个映像。成功结束初始化时,eb init 将选中的映像写入到 buildspec.yml 文件中。

Timeout

CodeBuild 构建的版本在超时之前运行的持续时间,以分钟为单位。此值为可选项。有关有效值和默认值的详细信息,请参阅在 CodeBuild 中创建构建项目

注意

此超时控制 CodeBuild 运行的最大持续时间,EB CLI 也会将它作为其创建应用程序版本的第一步的组成部分。它与您通过 eb createeb deploy 命令的 --timeout 选项指定的值截然不同。后一个值控制 EB CLI 等待环境创建或更新的最大持续时间。

构建和部署您的应用程序代码

只要您的应用程序代码需要进行部署,EB CLI 就会使用 CodeBuild 运行构建任务,然后将生成的构建构件部署到您的环境。当您使用 eb create 命令为应用程序创建 Elastic Beanstalk 环境时,以及您以后每次使用 eb deploy 命令将代码更改部署到环境时,就会发生上述这种情况。

如果 CodeBuild 步骤失败,则环境创建或部署不启动。