sne*_*tch 5 amazon-web-services aws-cloudformation amazon-elastic-beanstalk
我正在使用 Cloudformation 创建一个 Elastic Beanstalk 环境。我必须创建一个 ApplicationVersion 才能启动它并将其提供给环境的定义。我创建了其他 ApplicationVersion 并以其他方式 (CodePipeline) 将它们部署到集群。
现在,每次我需要更新 Cloudformation 堆栈以更改其他一些基础架构时,即使它没有将其列为潜在的资源更改,它也会将 ApplicationVersion 回滚到初始版本,并且我必须手动更新环境再次更新到最新版本。
我知道发生了什么 - Cloudformation 只是试图按照模板描述的方式保留堆栈。我只定义了初始 ApplicationVersion 因为它是 Beanstalk 环境的要求。有没有其他办法?
CloudFormation 希望掌控一切。根据您执行的堆栈更新,CloudFormation 将根据模板中定义的内容重新创建版本。
不要将您的版本从 Code Pipeline 直接部署到 Elastic Beanstalk,而是执行以下操作:
一个例子:
假设您有一个参数ZipBucket并且ZipObject在堆栈中,您可以对AWS::ElasticBeanstalk::ApplicationVersion资源执行以下操作:
"SourceBundle" : {
"S3Bucket" : {
"Ref" : "ZipBucket"
},
"S3Key" : {
"Ref" : "ZipObject"
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用一个BuildNumber参数,然后Fn::Join在S3Key属性中使用该参数根据内部版本号构建 URL。
| 归档时间: |
|
| 查看次数: |
1296 次 |
| 最近记录: |