映像定義檔案參考 - AWS CodePipeline

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

映像定義檔案參考

本節僅供參考。如需有關利用來源建立管道或部署容器動作的詳細資訊,請參閱 建立管道、階段和動作

AWS CodePipeline 容器動作的工作工作者,例如 Amazon ECR來源動作或 Amazon ECS 部署動作,請使用定義檔案將映像URI和容器名稱對應至任務定義。每個定義檔案都是動作提供者使用的JSON格式化檔案,如下所示:

Amazon ECS標準部署動作的 image Definitions.json 檔案

映像定義文件是描述 Amazon ECS容器名稱和映像和標籤JSON的檔案。如果您正在部署容器型應用程式,則必須產生映像定義檔案,為 CodePipeline 作業工作者提供 Amazon ECS容器和映像識別,以便從映像儲存庫擷取,例如 Amazon ECR。

注意

此檔案的預設檔案名稱為 imagedefinitions.json。如果您選擇使用不同的檔案名稱,必須在建立管道部署階段時提供該名稱。

根據下列考量建立 imagedefinitions.json 檔案:

  • 檔案必須使用 UTF-8 編碼。

  • 映像定義檔案的檔案大小上限為 100 KB。

  • 您必須建立 檔案做為來源或建置成品,以做為部署動作的輸入成品。換句話說,請確定檔案已上傳至您的來源位置,例如儲存 CodeCommit 庫,或產生為建置的輸出成品。

imagedefinitions.json 檔案提供容器名稱和映像 URI。它必須以下列索引鍵/值組建構。

金鑰
name container_name
imageUri imageUri
注意

名稱欄位用於容器映像名稱,即 Docker 映像的名稱。

以下是 JSON結構,其中容器名稱為 sample-app,映像URI為 ecs-repo,標籤為 latest

[ { "name": "sample-app", "imageUri": "11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest" } ]

您也可以建構此檔案以列出多個容器映像組。

JSON 結構:

[ { "name": "simple-app", "imageUri": "httpd:2.4" }, { "name": "simple-app-1", "imageUri": "mysql" }, { "name": "simple-app-2", "imageUri": "java1.8" } ]

在您建立管道前,請使用下列步驟來設定 imagedefinitions.json 檔案。

  1. ​在管道中規劃容器式應用程式部署時,請適時規劃原始碼階段與建置階段。

  2. 選擇下列其中一項:

    1. 如果建立管道以略過建置階段,則必須手動建立JSON檔案並將其上傳至來源儲存庫,以便來源動作可以提供成品。使用文字編輯器建立檔案,並為檔案命名或使用預設的 imagedefinitions.json​ 檔案名稱。推送映像定義檔案到您的原始碼儲存庫。

      注意

      如果您的來源儲存庫是 Amazon S3 儲存貯體,請記得壓縮JSON檔案。

    2. 若您的管道有建置階段,請新增命令到您的建置規格檔案;此檔案會在建置階段將映像定義檔案輸出至來源碼儲存庫。以下範例使用 printf 命令來建立 imagedefinitions.json 檔案。在 buildspec.yml 檔案的 post_build 部分列出此命令:

      printf '[{"name":"container_name","imageUri":"image_URI"}]' > imagedefinitions.json

      您必須納入映像定義檔案做為 buildspec.yml 檔案的輸出成品。

  3. 當您在主控台中建立管道時,請在建立管道精靈的部署頁面上,在映像檔案名稱 中輸入映像定義檔案名稱。

如需建立使用 Amazon ECS作為部署提供者的管道的 step-by-step 教學課程,請參閱教學課程:使用 進行連續部署 CodePipeline

imageDetailAmazon ECS 藍/綠部署動作的 .json 檔案

imageDetail.json 文件是描述 Amazon ECS映像 JSON的檔案URI。如果您要為藍/綠部署部署容器型應用程式,則必須產生 imageDetail.json 檔案,為 Amazon ECS和 CodeDeploy作業工作者提供映像識別,以便從映像儲存庫擷取,例如 Amazon ECR。

注意

此檔案的名稱必須是 imageDetail.json

如需動作及其參數的說明,請參閱 Amazon Elastic Container Service 和 CodeDeploy 藍綠部署動作參考

您必須建立 imageDetail.json 檔案做為來源或建置成品,以做為部署動作的輸入成品。您可以使用下列其中一種方法在管道中提供 imageDetail.json 檔案:

  • imageDetail.json檔案包含在來源位置中,以便在管道中提供,作為 Amazon ECS 藍/綠部署動作的輸入。

    注意

    如果您的來源儲存庫是 Amazon S3 儲存貯體,請記得壓縮JSON檔案。

  • Amazon ECR來源動作會自動產生imageDetail.json檔案,做為下一個動作的輸入成品。

    注意

    由於 Amazon ECR來源動作會建立此檔案,因此具有 Amazon ECR來源動作的管道不需要手動提供imageDetail.json檔案。

    如需建立包含 Amazon ECR來源階段之管道的教學課程,請參閱 教學課程:使用 Amazon ECR來源和 部署ECS至 CodeDeploy 部署建立管道

顯示成品儲存貯體中包含的 imageDetail.json 檔案的圖表

imageDetail.json 檔案提供映像 URI。它必須以下列索引鍵/值組建構。

金鑰
影像URI image_URI
imageDetail.json

以下是 JSON結構,其中映像URI是 ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3

{ "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3" }
imageDetail.json (generated by ECR)

每次將變更推送至映像儲存庫時,Amazon ECR來源動作都會自動產生imageDetail.json檔案。Amazon ECR來源動作imageDetail.json產生的 會作為來源動作到管道中下一個動作的輸出成品提供。

以下是 JSON結構,其中儲存庫名稱為 dk-image-repo,映像URI為 ecs-repo,映像標籤為 latest

{ "ImageSizeInBytes": "44728918", "ImageDigest": "sha256:EXAMPLE11223344556677889900bfea42ea2d3b8a1ee8329ba7e68694950afd3", "Version": "1.0", "ImagePushedAt": "Mon Jan 21 20:04:00 UTC 2019", "RegistryId": "EXAMPLE12233", "RepositoryName": "dk-image-repo", "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3", "ImageTags": [ "latest" ] }

imageDetail.json 檔案會將映像URI和容器名稱對應至 Amazon ECS任務定義,如下所示:

  • ImageSizeInBytes:儲存庫中的映像大小 (以位元組為單位) 。

  • ImageDigestsha256 映像資訊清單的摘要。

  • Version:映像的版本。

  • ImagePushedAt:最新映像推送到儲存庫的日期和時間。

  • RegistryId:與包含儲存庫的登錄相關聯的 AWS 帳戶 ID。

  • RepositoryName:推送映像的 Amazon ECR儲存庫名稱。

  • ImageURI:映像URI的 。

  • ImageTags:用於映像的標籤。

在您建立管道前,請使用下列步驟來設定 imageDetail.json 檔案。

  1. ​在管道中規劃容器式應用程式藍/綠部署時,請適時規劃原始碼階段與建置階段。

  2. 選擇下列其中一項:

    1. 如果您的管道已略過建置階段,則必須手動建立JSON檔案並將其上傳至來源儲存庫,例如 CodeCommit,以便來源動作可提供成品。使用文字編輯器建立檔案,並為檔案命名或使用預設的 imageDetail.json​ 檔案名稱。推送 imageDetail.json 檔案到您的原始碼儲存庫。

    2. 如果您的管道有建置階段,請執行以下操作:

      1. 新增命令到您的建置規格檔案,此檔案會在建置階段將映像定義檔案輸出至原始碼儲存庫。以下範例使用 printf 命令來建立 imageDetail.json 檔案。在 buildspec.yml 檔案的 post_build 區段列出此命令:

        printf '{"ImageURI":"image_URI"}' > imageDetail.json

        您必須在 buildspec.yml 檔案包含 imageDetail.json 檔案以做為輸出成品。

      2. buildspec.yml 檔案中新增 imageDetail.json 為成品檔案。

        artifacts: files: - imageDetail.json