

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 使用 EB CLI AWS CodeBuild
<a name="eb-cli-codebuild"></a>

[AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/) 可編譯來源碼、執行單位測試，並產生可立即部署的成品。您可以跟 EB CLI 一起使用 CodeBuild，以自動化從原始程式碼建置應用程式的作業。環境建立與每次部署之後便從建置步驟開始，然後部署產生的應用程式。

**注意**  
某些區域不提供 CodeBuild。Elastic Beanstalk 和 CodeBuild 之間的整合在這些區域中不會發生作用。  
如需每個區域中 AWS 提供的服務資訊，請參閱[區域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

## 建立應用程式
<a name="eb-cli-codebuild-using"></a>

**建立使用 CodeBuild 的 Elastic Beanstalk 應用程式**

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 可用來代表您與相依 AWS 服務互動的 AWS Identity and Access Management (IAM) 服務角色 ARN 或名稱。此值為必填。如果您省略此值，任何後續 **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 Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 受管使用者政策包含所有必要的 CodeBuild 動作許可。如果您未使用受管政策，請務必在使用者政策中允許下列許可。  

```
  "codebuild:CreateProject",
  "codebuild:DeleteProject",
  "codebuild:BatchGetBuilds",
  "codebuild:StartBuild"
```
如需詳細資訊，請參閱[管理 Elastic Beanstalk 使用者政策](AWSHowTo.iam.managed-policies.md)。

`ComputeType`  
CodeBuild 建置環境中 Docker 容器使用的資源量。有效值為 BUILD\$1GENERAL1\$1SMALL、BUILD\$1GENERAL1\$1MEDIUM 及 BUILD\$1GENERAL1\$1LARGE。

`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) 的 `--timeout` 選項或 [**eb deploy**](eb3-deploy.md) 命令指定的數值。後面的數值會控制供 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 步驟失敗，則不會開始進行環境建立或部署。