映像定義檔案參考 - AWS CodePipeline

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

映像定義檔案參考

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

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

  • Amazon ECS 標準部署需要imagedefinitions.json檔案做為部署動作的輸入。

  • Amazon ECS 藍/綠部署需要imageDetail.json檔案做為部署動作的輸入。

    • Amazon ECR 來源動作產生 imageDetail.json 檔案,提供做為來源動作的輸出。

適用於 Amazon ECS 標準部署動作的影像定義 .json 檔案

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

注意

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

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

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

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

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

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

金鑰
name container_name
imageUri imageUri

此處為 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.

適用於Amazon ECS 藍色/綠色部署動作的影像詳細資料.json 檔案

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

注意

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

如需動作及其參數的描述,請參閱Amazon 彈性容器服務和 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 檔案提供映像 URI。它必須以下列索引鍵/值組建構。

金鑰
ImageURI 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