O Boto tem uma função, update_environment, que permite ao usuário atualizar opções em um ambiente AWS ElasticBeanstalk.
Usando a AWS CLI, isso normalmente seria acionado da seguinte forma:
aws elasticbeanstalk update-environment --environment-name my-env --option-settings Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=1
No Boto, update_environment usa um parâmetro List para option_settings, conforme descrito aqui:
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')
Eu tentei vários métodos de passar a string
Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=1
como uma lista, mas nenhum parece funcionar. A API continua me dizendo:
Invalid option specification
Alguém sabe qual é o formato correto para a lista?
Descobri olhando o código-fonte Python para boto. O formato correto é:
Este é o código que está funcionando para mim.
tente: 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' } ],) exceto ClientError como err: print("Falha ao atualizar o ambiente.\n" + str(err)) return False return True