通过 AWS CodeBuild 使用 EB CLI - AWS Elastic Beanstalk

通过 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

    注意

    将 EB CLI 与 CodeBuild 一起使用时,请勿在 Application name(应用程序名称)中使用句点 (.) 或空格 ( ) 字符。

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 AdministratorAccess-AWSElasticBeanstalk 托管用户策略包含所有必需的 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 步骤失败,则环境创建或部署不启动。