View a markdown version of this page

搭配 使用 EB CLI AWS CodeBuild - AWS Elastic Beanstalk

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

搭配 使用 EB CLI AWS CodeBuild

AWS CodeBuild 可編譯來源碼、執行單位測試,並產生可立即部署的成品。您可以跟 EB CLI 一起使用 CodeBuild,以自動化從原始程式碼建置應用程式的作業。環境建立與每次部署之後便從建置步驟開始,然後部署產生的應用程式。

注意

某些區域不提供 CodeBuild。Elastic Beanstalk 和 CodeBuild 之間的整合在這些區域中不會發生作用。

如需每個區域中 AWS 提供的服務資訊,請參閱區域表。

建立應用程式

建立使用 CodeBuild 的 Elastic Beanstalk 應用程式
  1. 將 CodeBuild 建置規格檔案 buildspec.yml 放入您的應用程式資料夾。

  2. 將具有 Elastic Beanstalk 特定選項的 eb_codebuild_settings 項目加入至檔案。

  3. 在資料夾中執行 eb init。

    注意

    當您將 EB CLI 與 CodeBuild 搭配使用時,請勿在應用程式名稱中使用句號 (.) 或空格 ( ) 字元。

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 中建立建置專案。

注意

此逾時控制 CodeBuild 執行一次的最大持續時間,且 EB CLI 也會採用此逾時做為建立應用程式版本的第一個步驟。這不同於您使用 eb create 的 --timeout 選項或 eb deploy 命令指定的數值。後面的數值會控制供 EB CLI 等候環境建立或更新的最大持續時間。

建置和部署您的應用程式碼

每次需要部署應用程式碼時,EB CLI 會使用 CodeBuild 執行建置,然後將產生的建置成品部署至您的環境。當您使用 eb create 命令建置應用程式的 Elastic Beanstalk 環境,以及之後每次使用 eb deploy 命令將程式碼變更部署至環境時,就會發生這種情況。

如果 CodeBuild 步驟失敗,則不會開始進行環境建立或部署。