Boto 有一个函数 update_environment,它允许用户更新 AWS ElasticBeanstalk 环境中的选项。
使用 AWS CLI,这通常会执行如下操作:
aws elasticbeanstalk update-environment --environment-name my-env --option-settings Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=1
在 Boto 中,update_environment 为 option_settings 采用 List 参数,如下所述:
http://boto.readthedocs.org/en/latest/ref/beanstalk.html
update_environment(environment_id=None, environment_name=None, version_label=None, template_name=None, description=None, option_settings=None, options_to_remove=None, tier_name=None, tier_type=None, tier_version='1.0')
我尝试了各种传递字符串的方法
Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=1
作为一个列表,但似乎没有一个工作。API不断告诉我:
Invalid option specification
有谁知道列表的正确格式是什么?
通过查看 boto 的 Python 源代码弄清楚了。正确的格式是:
这是对我有用的代码。
尝试:client = boto3.client('elasticbeanstalk', region_name=AWS_REGION) response = client.update_environment( EnvironmentName='envname', OptionSettings=[ { 'Namespace': 'aws:autoscaling:asg:launchconfiguration', 'OptionName': 'MinSize', 'Value': '0' }, { 'Namespace': 'aws:autoscaling:asg:launchconfiguration', 'OptionName': 'MaxSize', 'Value': '0' } ],) 除了 ClientError err: print("更新环境失败。\n" + str(err)) return False return True