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

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

搭配 AWS CodeBuild 使用 EB CLI

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

AWS Identity and Access Management (IAM) 服務角色的 ARN 或名稱;CodeBuild 可以藉此代表您與相依 AWS 服務互動。此值為必填。如果您省略此值,任何後續 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 create--timeout 選項或 eb deploy 命令指定的數值。後面的數值會控制供 EB CLI 等候環境建立或更新的最大持續時間。

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

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

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