本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 AWS CodeBuild 使用 EB CLI
AWS CodeBuild 可编译源代码,运行单元测试,并生成可供部署的项目。您可以将 CodeBuild 与 EB CLI 结合使用来从应用程序的源代码自动构建应用程序。环境创建和之后的每个部署都将以构建步骤开始,然后部署生成的应用程序。
注意
有些区域不提供 CodeBuild。Elastic Beanstalk 和 CodeBuild 之间的集成在这些区域无法正常工作。
有关每个区域中提供的 AWS 服务,请参阅区域表
创建应用程序
创建使用 CodeBuild 的 Elastic Beanstalk 应用程序
-
在您的应用程序文件夹中包含 CodeBuild 构建规范文件
buildspec.yml
。 -
使用特定于 Elastic Beanstalk 的选项添加一个
eb_codebuild_settings
条目到文件。 -
在此文件夹中运行 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 create 或 eb 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 中创建构建项目。
构建和部署您的应用程序代码
只要您的应用程序代码需要进行部署,EB CLI 就会使用 CodeBuild 运行构建任务,然后将生成的构建构件部署到您的环境。当您使用 eb create 命令为应用程序创建 Elastic Beanstalk 环境时,以及您以后每次使用 eb deploy 命令将代码更改部署到环境时,就会发生上述这种情况。
如果 CodeBuild 步骤失败,则环境创建或部署不启动。