使用 boto 更新 ElasticBeanstalk 環境選項
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 原始碼弄清楚了。正確的格式是:
option_settings=[("aws:autoscaling:asg","MinSize","1"),("aws:autoscaling:asg","MaxSize","4")]
這是對我有用的程式碼。
嘗試: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 as err: print(“Failed to update environment.\n” + str(err)) return False return True