gpt4 book ai didi

amazon-web-services - 是否可以在 Cloudformation 中更新 Elastic Beanstalk 环境而不影响部署到其中的版本?

转载 作者:行者123 更新时间:2023-12-03 16:52:26 26 4
gpt4 key购买 nike

我正在使用 Cloudformation 创建 Elastic Beanstalk 环境。我必须创建一个 ApplicationVersion 只是为了启动它并将其输入到环境的定义中。我创建其他应用程序版本并以其他方式将它们部署到集群(CodePipeline)。

现在,每次我需要更新 Cloudformation 堆栈以更改其他一些基础设施时,即使它没有将其列为潜在的资源更改,它也会将 ApplicationVersion 回滚到初始版本,而我必须再次手动更新环境到最新版本。

我知道发生了什么 - Cloudformation 只是试图保持模板所描述的堆栈。我只定义了初始的 ApplicationVersion,因为它是 Beanstalk 环境的要求。还有其他办法吗?

最佳答案

CloudFormation 希望掌控一切。根据您执行的堆栈更新,CloudFormation 将根据模板中定义的内容重新创建版本。

不要将您的版本从 Code Pipeline 直接部署到 Elastic Beanstalk,而是执行以下操作:

  1. 请勿将初始版本硬编码到您的 CloudFormation 模板中。
  2. 将正在部署的版本连接到 CloudFormation 堆栈的输入参数。例如,让输入参数为版本内部版本号,并在模板中构造一个 URL 作为版本源。
  3. 部署时,指示 Code Pipeline 使用更新后的内部版本号更新您的堆栈。 CloudFormation 应通过构建新 URL 并部署版本来接管。

示例:

假设您的堆栈中有参数 ZipBucketZipObject,您可以在 AWS::ElasticBeanstalk::ApplicationVersion 上执行以下操作资源:

"SourceBundle"    : {
"S3Bucket" : {
"Ref" : "ZipBucket"
},
"S3Key" : {
"Ref" : "ZipObject"
}
}

另一个选项是使用 BuildNumber 参数,然后使用 S3Key 属性中的 Fn::Join 来构建 URL内部版本号。

关于amazon-web-services - 是否可以在 Cloudformation 中更新 Elastic Beanstalk 环境而不影响部署到其中的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48791799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com