本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon 弹性容器服务和 CodeDeploy 蓝绿色部署操作参考
您可以在中配置一个使用蓝/ AWS CodePipeline 绿部署部署容器应用程序的管道。在蓝绿部署中,您可以将应用程序新版本与旧版本一起启动,并在将流量重新路由到新版本之前对其进行测试。您还可以监控部署流程并且在存在问题的情况下迅速回滚。
已完成的管道会检测您的图像或任务定义文件的更改,并用于 CodeDeploy 将流量路由和部署到 Amazon ECS 集群和负载均衡器。 CodeDeploy 在您的负载均衡器上创建一个新的侦听器,该侦听器可以通过特殊端口定位您的新任务。您也可以将管道配置为使用存储您的 Amazon ECS 任务定义的源位置,例如存储 CodeCommit 库。
在创建管道之前,您必须已经创建了 Amazon ECS 资源、 CodeDeploy 资源以及负载均衡器和目标组。您必须已将图像标记并存储在图像存储库中,并将任务定义和 AppSpec 文件上传到文件存储库。
注意
本主题介绍了 Amazon ECS 的 CodeDeploy 蓝/绿部署操作。 CodePipeline有关中 Amazon ECS 标准部署操作的参考信息 CodePipeline,请参阅Amazon 弹性容器服务部署操作参考。
操作类型
-
类别:
Deploy
-
拥有者:
AWS
-
提供方:
CodeDeployToECS
-
版本:
1
配置参数
- ApplicationName
-
必需:是
中的应用程序名称 CodeDeploy。在创建管道之前,您必须已经在中创建了应用程序 CodeDeploy。
- DeploymentGroupName
-
必需:是
为您为 CodeDeploy 应用程序创建的 Amazon ECS 任务集指定的部署组。在创建管道之前,您必须已经在中创建了部署组 CodeDeploy。
- TaskDefinitionTemplateArtifact
-
必需:是
用于为部署操作提供任务定义文件的输入构件的名称。这通常为源操作的输出构件的名称。使用控制台时,源操作输出构件的默认名称为
SourceArtifact
。 - AppSpecTemplateArtifact
-
必需:是
为部署操作提供 AppSpec 文件的输入对象的名称。此值会在管道运行时进行更新。这通常为源操作的输出构件的名称。使用控制台时,源操作输出构件的默认名称为
SourceArtifact
。对于TaskDefinition
在 AppSpec 文件中,您可以保留<TASK_DEFINITION>
占位符文本,如下所示。 - AppSpecTemplatePath
-
必需:否
存储在管道源 AppSpec 文件位置(例如您的管道存储 CodeCommit 库)中的文件的文件名。默认文件名为
appspec.yaml
。如果您的 AppSpec 文件名相同,并且存储在文件存储库的根级别,则无需提供文件名。如果路径不是默认路径,请输入路径和文件名。 - TaskDefinitionTemplatePath
-
必需:否
存储在管道文件源位置(例如您的管道存储 CodeCommit 库)中的任务定义的文件名。默认文件名为
taskdef.json
。如果您的任务定义文件同名且存储在文件存储库的根级别,则无需提供文件名。如果路径不是默认路径,请输入路径和文件名。 - 图片 <Number>ArtifactName
-
必需:否
用于为部署操作提供映像的输入构件的名称。这通常是图像存储库的输出项目,例如 Amazon s ECR ource 操作的输出。
<Number>
的可用值为 1 到 4。 - 图片 <Number>ContainerName
-
必需:否
图像存储库(例如 Amazon ECR 源存储库)中可用图像的名称。
<Number>
的可用值为 1 到 4。
输入构件
-
构件数:
1 to 5
-
描述:该
CodeDeployToECS
操作首先在源文件存储库中查找任务定义文件和文件,然后在图像存储库中查找图像,然后动态生成任务定义的新修订版,最后运行 AppSpec 命令将任务集和容器部署到集群。 AppSpec该
CodeDeployToECS
操作会查找将图像映射URI到图像的imageDetail.json
文件。当您向 Amazon ECR 图像存储库提交更改时,管道ECR源操作会为该提交创建一个imageDetail.json
文件。在未自动执行操作的情况下,您还可以为管道手动添加imageDetail.json
文件。有关imageDetail.json
文件的信息,请参阅imageDetail用于亚马逊ECS蓝/绿部署操作的.json 文件。CodeDeployToECS
操作会动态生成任务定义的新修订版。在此阶段,此操作将任务定义文件中的占位符替换为从 imageDetail .json 文件URI检索到的图像。例如,如果您将 IMAGE1_ 设置NAME为 Image1 ContainerName 参数,则应将占位符 < IMAGE1 _ NAME > 指定为任务定义文件中图像字段的值。在这种情况下,该 CodeDeployToECS操作会将占位符 < IMAGE1 _ NAME > 替换为从您指定为 Image1 的工件中的 imageDetail .json 中URI检索到的实际图像。ArtifactName对于任务定义更新,该 CodeDeploy
AppSpec.yaml
文件包含TaskDefinition
属性。TaskDefinition: <TASK_DEFINITION>
创建新任务定义后,
CodeDeployToECS
操作将会更新此属性。对于该
TaskDefinition
字段的值,占位符文本必须为 < TASK _ DEFINITION >。该CodeDeployToECS
操作将此占位符替换为动态生成的任务定义ARN的实际占位符。
输出构件
-
构件数:
0
-
描述:输出构件不适用于此操作类型。
操作声明
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
教程:使用 Amazon ECR 源代码和 ECS-to-部署创建管道 CodeDeploy — 本教程将引导您创建蓝/绿部署所需的 CodeDeploy 和 Amazon ECS 资源。本教程向您展示了如何将 Docker 映像推送到亚马逊ECR并创建列出您的 Docker 映像名称、容器名称、亚马逊ECS服务名称和负载均衡器配置的亚马逊ECS任务定义。然后,本教程将引导您完成为部署创建 AppSpec 文件和管道的过程。
注意
本主题和教程介绍了 CodeDeploy/ECSblue/green 的操作。 CodePipeline有关中ECS标准操作的信息 CodePipeline,请参阅教程:使用进行持续部署 CodePipeline。
-
AWS CodeDeploy 用户指南 — 有关如何在蓝/绿部署中使用负载均衡器、生产侦听器、目标组和您的 Amazon ECS 应用程序的信息,请参阅教程:部署 Ama ECS zon 服务。AWS CodeDeploy 用户指南中的此参考信息概述了 Ama ECS zon 和。 AWS CodeDeploy
-
Amazon 弹性容器服务开发者指南 — 有关使用 Docker 镜像和容器、ECS服务和集群以及ECS任务集的信息,请参阅什么是亚马逊 ECS?