Amazon-Web-Services

使用 boto 更新 ElasticBeanstalk 環境選項

  • March 4, 2022

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

引用自:https://serverfault.com/questions/723066