

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 EB CLI 与 AWS CodeBuild
<a name="eb-cli-codebuild"></a>

[AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/) 可编译源代码，运行单元测试，并生成可供部署的项目。您可以将 CodeBuild 与 EB CLI 结合使用来从应用程序的源代码自动构建应用程序。环境创建和之后的每个部署都将以构建步骤开始，然后部署生成的应用程序。

**注意**  
有些地区不提供 CodeBuild。Elastic Beanstalk 与 Elastic CodeBuild Beanstalk 之间的集成在这些地区不起作用。  
有关每个地区提供的 AWS 服务的信息，请参阅[区域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

## 创建 应用程序
<a name="eb-cli-codebuild-using"></a>

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

1. 在您的应用程序文件夹中加入 CodeBuild 编译规范文件。[https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)

1. 使用特定于 Elastic Beanstalk 的选项添加一个 `eb_codebuild_settings` 条目到文件。

1. 在此文件夹中运行 [**eb init**](eb3-init.md)。
**注意**  
将 EB CLI 与一起使用时，请勿在*应用程序名称*中使用句点 (`.`` `) 或空格 () 字符 CodeBuild。

Elastic Beanstalk [CodeBuild 扩展了构建规范](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html)文件格式，增加了以下其他设置：

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

`CodeBuildServiceRole`  
 CodeBuild 可用于代表您与依赖服务交互的 ARN 或 AWS Identity and Access Management (IAM) AWS 服务角色的名称。该值为必填项。如果您忽略此值，任何后续的 **eb create** 或 **eb deploy** 命令都将失败。  
要了解有关为创建服务角色的更多信息 CodeBuild，请参阅*AWS CodeBuild 用户指南*中的[创建 CodeBuild服务角色](https://docs.aws.amazon.com/codebuild/latest/userguide/setting-up.html#setting-up-service-role)。  
您还需要权限才能 CodeBuild 自行执行操作。Elastic Bean **AdministratorAccessstalk-AWSElastic Beanstalk** 托管用户策略包括所有必需的操作权限。 CodeBuild 如果您不使用托管策略，请确保在用户策略中允许以下权限。  

```
  "codebuild:CreateProject",
  "codebuild:DeleteProject",
  "codebuild:BatchGetBuilds",
  "codebuild:StartBuild"
```
有关更多信息，请参阅 [管理 Elastic Beanstalk 用户策略](AWSHowTo.iam.managed-policies.md)。

`ComputeType`  
Docker 容器在 CodeBuild 构建环境中使用的资源量。有效值为 BUILD\$1 \$1SMALL、BU GENERAL1 ILD\$1 \$1MEDIUM 和 BU GENERAL1 ILD\$1LARGE GENERAL1

`Image`  
 CodeBuild 用于构建环境的 Docker Hub 或 Amazon ECR 镜像的名称。此 Docker 镜像应包含构建代码所需的所有工具和运行时库，并且应与应用程序的目标平台相匹配。 CodeBuild 管理和维护一组专门用于 Elastic Beanstalk 的镜像。建议您使用其中一个。有关详细信息，请参阅《*AWS CodeBuild 用户指南*》 CodeBuild中[提供的 Docker 镜像](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html)。  
`Image` 值是可选的。如果您省略此值，**eb init** 命令会尝试选择与目标平台最匹配的映像。此外，如果您在交互模式下运行 **eb init** 并且它无法为您选择映像，则会提示您选择一个映像。成功结束初始化时，**eb init** 将选中的映像写入到 `buildspec.yml` 文件中。

`Timeout`  
 CodeBuild 生成在超时之前运行的持续时间（以分钟为单位）。该值为可选项。有关有效值和默认值的详细信息，请参阅[中的创建构建项目 CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html)。  
此超时控制 CodeBuild 运行的最长持续时间，EB CLI 在创建应用程序版本的第一步中也会考虑该超时时间。它与您通过 [**eb create**](eb3-create.md) 或 [**eb deploy**](eb3-deploy.md) 命令的 `--timeout` 选项指定的值截然不同。后一个值控制 EB CLI 等待环境创建或更新的最大持续时间。

## 构建和部署您的应用程序代码
<a name="eb-cli-codebuild-using"></a>

每当需要部署应用程序代码时，EB CLI 都会使用运行构建，然后 CodeBuild 将生成的构建项目部署到您的环境中。当您使用 [**eb create**](eb3-create.md) 命令为应用程序创建 Elastic Beanstalk 环境时，以及您以后每次使用 [**eb deploy**](eb3-deploy.md) 命令将代码更改部署到环境时，就会发生上述这种情况。

如果该 CodeBuild 步骤失败，则不会开始创建或部署环境。