AWS CodePipeLine:在不同区域执行部署操作,而不是触发一个代码管道

时间:2018-04-24 09:56:07

标签: amazon-web-services amazon-cloudformation aws-codepipeline

我正在设置一个管道来自动化云形式堆栈模板部署。

管道本身是在aws eu-west-1 区域中创建的,但是cloudformation堆栈模板将部署在任何其他区域。

实际上我知道并且可以在不同的帐户中执行管道操作,但是我没有看到在哪里指定我想要部署模板的区域,就像我们使用aws cli:aws --region cloudformation deploy....一样。

无论如何要在一个地区触发管道并在另一个地区执行deploy action吗?

动作配置属性不提供这种可能性......

4 个答案:

答案 0 :(得分:0)

一种解决方法是在 codebuild 容器中运行来自cli的aws cli deploy命令并指定好区域,但我想知道是否有更优雅的方法来执行此操作

答案 1 :(得分:0)

如果您希望一个接一个地部署到多个区域,则可以在要部署到的每个区域中创建代码管道管道,并设置S3跨区域复制,以便输出第一个管道成为下一个区域中管道的输入。

这是一篇博文,进一步解释了这一点:https://aws.amazon.com/blogs/devops/building-a-cross-regioncross-account-code-deployment-solution-on-aws/

答案 2 :(得分:0)

自2018年11月下旬以来,CodePipeline支持cross regional deploys。但是仍然有很多不足之处,因为您需要在每个区域中创建工件存储桶并在触发Deploy动作之前将部署工件(例如,您提到的代码构建容器中)复制到它们之间。因此它并没有自动化,但是如果您进行设置,它会很好地工作。

答案 3 :(得分:0)

CodePipeline现在支持跨区域部署,并且要触发不同区域中的管道,我们可以在操作阶段为CloudFormation指定“ Region”:“ us-west-2”属性,这将触发在该特定区域中的部署。

此设置要遵循的步骤:

  1. 在两个不同的区域中创建两个存储桶,例如“ us-east-1”中的存储桶和“ us-west-2”中的存储桶(当您首次在其中设置管道时,我们也可以使用CodePipeline已创建的存储桶任何地区)
  2. 以这样一种方式配置管道,即在使用各自帐户时可以使用各自的存储桶。
  3. 在CodePipeline的操作中指定区域。

注意:我已经附上了示例CloudFormation模板,它将帮助您进行跨区域CloudFormation部署。

DELETE c1 FROM clients c1 INNER JOIN clients c2 WHERE c1.id < c2.id AND c1.title = c2.title;