本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 AWS CodeBuild 使用 EB CLI
AWS CodeBuild 可編譯來源碼、執行單位測試,並產生可立即部署的成品。您可以跟 EB CLI 一起使用 CodeBuild,以自動化從原始程式碼建置應用程式的作業。環境建立與每次部署之後便從建置步驟開始,然後部署產生的應用程式。
注意
某些區域不提供 CodeBuild。Elastic Beanstalk 和 CodeBuild 之間的整合在這些區域中不會發生作用。
如需各區域提供的 AWS 服務的資訊,請參閱區域表
建立應用程式
建立使用 CodeBuild 的 Elastic Beanstalk 應用程式
-
將 CodeBuild 建置規格檔案
buildspec.yml
放入您的應用程式資料夾。 -
將具有 Elastic Beanstalk 特定選項的
eb_codebuild_settings
項目加入至檔案。 -
在資料夾中執行 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 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 步驟失敗,則不會開始進行環境建立或部署。