使用 CloudFormation 管理 ECS 蓝/绿部署时的注意事项
使用 CloudFormation 来通过 CodeDeploy 执行 ECS 蓝绿部署的过程,不同于仅使用 CodeDeploy 的标准 Amazon ECS 部署过程。要详细了解这些区别,请参阅《AWS CodeDeploy 用户指南》中的通过 CodeDeploy 和 AWS CloudFormation 进行的 Amazon ECS 蓝绿部署的区别。
使用 CloudFormation 管理蓝绿部署时,需要记住某些限制和注意事项:
-
只有对特定资源的更新才会启动绿色部署。有关更多信息,请参阅 会启动绿色部署的资源更新。
-
不能在同一堆栈更新中包括启动绿色部署的资源更新和对其他资源的更新。有关更多信息,请参阅 会启动绿色部署的资源更新。
-
您只能将单个 ECS 服务指定为部署目标。
-
如果参数的值由 CloudFormation 模糊处理,则 CodeDeploy 无法在绿色部署期间更新该参数,并且会导致错误和堆栈更新失败。其中包括:
-
使用
NoEcho
属性定义的参数。 -
使用动态引用从外部服务检索其值的参数。有关动态引用的更多信息,请参阅使用动态引用获取存储在其他服务中的值。
-
-
要取消仍在进行的绿色部署,请取消 CloudFormation 中的堆栈更新,而不是 CodeDeploy 或 ECS。有关更多信息,请参阅 取消堆栈更新。更新完成之后,将无法取消它。但是,您可以利用任何先前的设置再次更新堆栈。
-
定义 ECS 蓝绿部署的模板目前不支持以下 CloudFormation 功能:
-
声明 CloudFormation 模板的 Outputs 部分语法参考 或使用 Fn::ImportValue 导入其他堆栈中的值。
-
导入资源。有关资源导入的更多信息,请参阅使用资源导入将 AWS 资源导入 CloudFormation 堆栈。
-
您不能在包含嵌套堆栈资源的模板中使用
AWS::CodeDeploy::BlueGreen
钩子。有关嵌套堆栈的更多信息,请参阅使用嵌套堆栈将堆栈嵌入其他堆栈。 -
在嵌套堆栈中使用
AWS::CodeDeploy::BlueGreen
钩子。
-