我们最近刚刚开始在 Elastic Beanstalk 中使用不可变部署。更具体地说,我们启用了
- 不可变的应用程序部署和
- 不可变的配置更新。
我们使用 CloudFormation 来处理所有事情。例如,我们没有使用 UI(AWS 管理控制台)启用不可变部署,而是将相应的 OptionSettings
添加到配置模板中的 ConfigurationTemplate
中。
但是,我们在使用这种方法时遇到了一些问题。每当我们更改 ConfigurationTemplate
中的某些属性时,我们都会收到以下错误消息:
Failed to deploy application.
Cannot update resource configuration and instance configuration simultaneously with immutable deployments. Choose a different deployment policy and redeploy to make this change.
在深入搜索文档后,我们无法准确找出我们可以对不可变部署进行哪些更改,以及导致上述错误的原因。当我们尝试操作以下 OptionSettings
属性时,出现错误:
- Namespace: 'aws:autoscaling:asg'
OptionName: MinSize
Value: 6
- Namespace: 'aws:autoscaling:asg'
OptionName: MaxSize
Value: 6
如果有人能够向我们提示我们可以在 CloudFormation 模板中更改哪些选项而不导致部署失败,我们将非常感谢。非常感谢!
最佳答案
您需要将 aws:elasticbeanstalk:command DeploymentPolicy 设置为“Rolling”或其他内容并插入其通过。然后,一旦将其设置为默认值以外的值且不是不可变的,您就可以将其更改回不可变。
该消息意味着您不允许将它们同时更改为打开状态,但并不是说它们不能一起使用。
还要确保您将 aws:autoscaling:updatepolicy:rollingupdate RollingUpdateEnabled 设置为 true,并将 aws:elasticbeanstalk:healthreporting:system SystemType 设置为“enhanced”,并在您的应用程序中配置 aws:elasticbeanstalk:application 应用程序运行状况检查 URL,以使其能够健康检查,否则它将失败并出现另一条误导性消息。
关于amazon-web-services - Elastic Beanstalk、不可变部署和 CloudFormation 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204219/