映像定义文件参考 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

映像定义文件参考

本部分仅供参考。有关使用源或部署操作为容器创建管道的更多信息,请参阅创建管道、阶段和操作

Amazon CodePipeline 容器操作(例如 Amazon ECR 源操作或 Amazon ECS 部署操作)的作业工作人员使用定义文件将图像URI和容器名称映射到任务定义。每个定义文件都是操作提供者使用的JSON格式文件,如下所示:

用于亚马逊标准部署操作的 imagedefinitions.json 文件 ECS

图片定义文档是描述您的 Amazon ECS 容器名称以及图片和标签的JSON文件。如果您要部署基于容器的应用程序,则必须生成图像定义文件,为 CodePipeline 作业工作人员提供亚马逊ECS容器和图像标识,以便从图像存储库(例如亚马逊)中检索。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

imageDetail用于亚马逊ECS蓝/绿部署操作的.json 文件

imageDetail.json文档是描述您的 Amazon ECS 图片的JSON文件URI。如果您要为蓝/绿部署部署基于容器的应用程序,则必须生成imageDetail.json文件以向 Amazon ECS 和 CodeDeploy工作工作人员提供图像标识,以便从图像存储库(例如 Amazon)检索。ECR

注意

文件名称必须是 imageDetail.json

有关操作的说明,请参阅 Amazon 弹性容器服务和 CodeDeploy 蓝绿色部署操作参考

您必须创建 imageDetail.json 文件作为源或构建构件,以将其作为部署操作的输入构件。您可以使用以下方法之一在管道中提供 imageDetail.json 文件:

  • imageDetail.json文件包含在您的源位置,以便在管道中将其作为您的 Amazon ECS 蓝/绿部署操作的输入提供。

    注意

    如果您的源存储库是 Amazon S3 存储桶,请记得压缩该JSON文件。

  • Amazon s ECR ource 操作会自动生成一个imageDetail.json文件作为下一个操作的输入项目。

    注意

    由于 Amazon s ECR ource 操作会创建此文件,因此带有 Amazon ECR 源操作的管道无需手动提供imageDetail.json文件。

    有关创建包含 Amazon ECR 源代码阶段的管道的教程,请参阅教程:使用 Amazon ECR 源代码和 ECS-to-部署创建管道 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 s ECR ource 操作都会自动生成一个imageDetail.json文件。由 Amazon imageDetail.json 生成的ECR源操作作为从源操作到管道中下一个操作的输出构件提供。

这是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:存储库中映像的大小(以字节为单位)。

  • ImageDigest:映像清单的 sha256 摘要。

  • Version:映像版本。

  • ImagePushedAt:将最新映像推送到存储库的日期和时间。

  • RegistryId:与包含存储库的注册表关联的 Amazon 账户 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

        您必须包含 imageDetail.json 文件作为 buildspec.yml 文件中的输出构件。

      2. 添加 imageDetail.json 作为 buildspec.yml 文件中的构件文件。

        artifacts: files: - imageDetail.json