View a markdown version of this page

Amazon Elastic Container Service 部署操作参考 - AWS CodePipeline

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

Amazon Elastic Container Service 部署操作参考

您可以使用 Amazon ECS 操作来部署 Amazon ECS 服务和任务集。Amazon ECS 服务是部署到 Amazon ECS 集群的容器应用程序。Amazon ECS 集群是在云中托管容器应用程序的实例集。部署需要您在 Amazon ECS 中创建的任务定义和 CodePipeline 用于部署映像的映像定义文件。

重要

的 Amazon ECS 标准部署操作根据亚马逊 ECS 服务使用的修订版 CodePipeline 创建自己的任务定义修订版。如果您在不更新 Amazon ECS 服务的情况下为任务定义创建新的修订,则部署操作将忽略这些修订。

在创建管道之前,您必须已经创建了 Amazon ECS 资源,在镜像存储库中标记并存储了映像,并将 buildspec 文件上传到您的文件存储库。

注意

本参考主题描述了 Amazon ECS 的标准部署操作 CodePipeline。有关中 CodeDeploy blue/green 部署操作的 Amazon ECS 的参考信息 CodePipeline,请参阅亚马逊弹性容器服务和 CodeDeploy 蓝绿色部署操作参考

操作类型

  • 类别:Deploy

  • 拥有者:AWS

  • 提供方:ECS

  • 版本:1

配置参数

ClusterName

是否必需:是

Amazon ECS 中的 Amazon ECS 集群。

ServiceName

是否必需:是

您在 Amazon ECS 中创建的 Amazon ECS 服务。

FileName

必需:否

您的映像定义文件,该 JSON 描述服务的容器名称以及映像和标签。您需要将此文件用于 ECS 标准部署。有关更多信息,请参阅输入构件适用于 Amazon ECS 标准部署操作的 imagedefinitions.json 文件

DeploymentTimeout

必需:否

Amazon ECS 部署操作超时(以分钟为单位)。该超时可配置为此操作的最大默认超时。例如:

"DeploymentTimeout": "15"

输入构件

  • 构件数:1

  • 描述:该操作会在管道的源文件存储库中查找 imagedefinitions.json 文件。图像定义文档是一个 JSON 文件,用于描述您的 Amazon ECS 容器名称以及镜像和标签。 CodePipeline 使用该文件从您的图像存储库(例如 Amazon ECR)检索图像。在未自动执行操作的情况下,您可以为管道手动添加 imagedefinitions.json 文件。有关 imagedefinitions.json 文件的信息,请参阅适用于 Amazon ECS 标准部署操作的 imagedefinitions.json 文件

    操作需要已推送到您的映像存储库的现有映像。由于映像映射由 imagedefinitions.json 文件提供,因此操作不要求包含 Amazon ECR 源以作为管道中的源操作。

输出构件

  • 构件数:0

  • 描述:输出构件不适用于此操作类型。

服务角色权限:Amazon ECS 标准操作

对于 Amazon ECS,以下是创建具有 Amazon ECS 部署操作的管道所需的最低权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "TaskDefinitionPermissions", "Effect": "Allow", "Action": [ "ecs:DescribeTaskDefinition", "ecs:RegisterTaskDefinition" ], "Resource": [ "*" ] }, { "Sid": "ECSServicePermissions", "Effect": "Allow", "Action": [ "ecs:DescribeServices", "ecs:UpdateService" ], "Resource": [ "arn:aws:ecs:*:111122223333:service/[[clusters]]/*" ] }, { "Sid": "ECSTagResource", "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": [ "arn:aws:ecs:*:111122223333:task-definition/[[taskDefinitions]]:*" ], "Condition": { "StringEquals": { "ecs:CreateAction": [ "RegisterTaskDefinition" ] } } }, { "Sid": "IamPassRolePermissions", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/[[passRoles]]" ], "Condition": { "StringEquals": { "iam:PassedToService": [ "ecs.amazonaws.com", "ecs-tasks.amazonaws.com" ] } } } ] }

您可以选择加入以使用 Amazon ECS 中的标记授权。选择加入后,您必须授予以下权限:ecs:TagResource。有关如何选择加入以及如何确定是否需要权限和是否强制执行标记授权的更多信息,请参阅《Amazon Elastic Container Service 开发者指南》中的标记授权时间表

您必须添加 iam:PassRole 权限以使用 IAM 角色执行任务。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色任务 IAM 角色。使用以下策略文本。

操作声明

YAML
Name: DeployECS ActionTypeId: Category: Deploy Owner: AWS Provider: ECS Version: '1' RunOrder: 2 Configuration: ClusterName: my-ecs-cluster ServiceName: sample-app-service FileName: imagedefinitions.json DeploymentTimeout: '15' OutputArtifacts: [] InputArtifacts: - Name: my-image
JSON
{ "Name": "DeployECS", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "ECS", "Version": "1" }, "RunOrder": 2, "Configuration": { "ClusterName": "my-ecs-cluster", "ServiceName": "sample-app-service", "FileName": "imagedefinitions.json", "DeploymentTimeout": "15" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "my-image" } ] },

下列相关资源在您使用此操作的过程中会有所帮助。

  • 教程:使用 CodePipeline (V2 类型)构建 Docker 镜像并将其推送到 Amazon ECR有关教程,请参阅,该教程向您展示如何使用 ECRBuildandPublish 操作推送映像,然后使用 ECS 标准操作部署到 Amazon ECS。

  • 教程:使用持续部署 CodePipeline — 本教程向您展示如何创建存储在源文件存储库中的 Dockerfile,例如. CodeCommit 接下来,本教程将向您展示如何合并 CodeBuild 构建规范文件,该文件用于编译 Docker 镜像并将其推送到亚马逊 ECR,并创建您的镜像定义.json 文件。最后,您将创建 Amazon ECS 服务和任务定义,然后创建具有 Amazon ECS 部署操作的管道。

    注意

    本主题和教程介绍的 Amazon ECS 标准部署操作 CodePipeline。有关在中进行 CodeDeploy blue/green 部署操作的 Amazon ECS 的信息 CodePipeline,请参阅教程:使用 Amazon ECR 源和 ECS-to-CodeDeploy 部署创建管道

  • Amazon Elastic Container Service 开发者指南:有关使用 Docker 映像和容器、Amazon ECS 服务和集群以及 Amazon ECS 任务集的信息,请参阅什么是 Amazon ECS?