我们正在使用eb_deployer,它在后台使用 ElasticBeanstalk Ruby Aws Sdk。该Aws::ElasticBeanstalk::Client#update_environment
方法特别用于触发部署。我正在尝试使用RollingWithAdditionalBatch
部署策略,但是当通过提到的 sdk 方法启动环境更新时,此设置似乎被忽略了。
option_settings
在我们的参数里面update_environment
:
{
"namespace"=>"aws:elasticbeanstalk:command",
"option_name"=>"DeploymentPolicy",
"value"=>"RollingWithAdditionalBatch"
},
然而,尽管有上述部署,据我所知,部署正在使用滚动策略:
2017-01-11 15:59:42 UTC+0100 INFO Environment update completed successfully.
2017-01-11 15:59:42 UTC+0100 INFO Successfully deployed new configuration to environment.
2017-01-11 15:59:42 UTC+0100 INFO New application version was deployed to running EC2 instances.
2017-01-11 15:58:32 UTC+0100 INFO Deploying new version to instance(s).
2017-01-11 15:57:57 UTC+0100 INFO Updating environment ENV_ID configuration settings.
您可以在update-environment-call.txt中找到方法调用的详细信息。
经过更多测试后,发现该问题可能不一定与aws-sdk-ruby相关。以下调用:
client.update_environment(
environment_id:"ENV_ID",
version_label:"backend.1762",
option_settings:[{
"namespace"=>"aws:elasticbeanstalk:command",
"option_name"=>"DeploymentPolicy",
"value"=>"RollingWithAdditionalBatch"
},{
"namespace"=>"aws:ec2:vpc",
"option_name"=>"VPCId",
"value"=>"VPC_ID_ABC"
}]
)
触发滚动部署。
但是,如果我们删除 VPC 设置,则会按要求调用Rolling with Additional batch :
client.update_environment(
environment_id:"ENV_ID",
version_label:"backend.1762",
option_settings:[{
"namespace"=>"aws:elasticbeanstalk:command",
"option_name"=>"DeploymentPolicy",
"value"=>"RollingWithAdditionalBatch"
}]
)
update_environment
在对具有不同值的唯一参数的后续调用之间是version_label
.
重现问题的步骤:
第 1 步。我们调用 update_environmentversion_label: 1
和确定option_settings
。option_settings 包括RollingWithAdditionalBatch
但也有其他设置,即VPCId
. 环境已正确更新,并RollingWithAdditionalBatch
在 AWS Web 控制台中显示为配置值。
步骤 2,3,4,5,... 我们调用与update_environment
步骤1相同。新版本的应用程序使用滚动策略部署,在我看来这是出乎意料的。version_label: n
option_settings
但是,如果我们执行步骤 2、3、5 并option_settings
仅提供一个选项,RollingWithAdditionalBatch
则新版本将使用RollingWithAdditionalBatch
.