AutoScaleConnection.get_all_groups()不使用boto

时间:2015-03-24 16:12:54

标签: python boto

我尝试连接到aws autoscale并获取所有组。我收到了以下错误:

from boto import ec2
from boto.ec2.autoscale import AutoScaleConnection
import boto
AWS_ACCESS_KEY = "<key>"
AWS_SECRET_KEY = "secret"
REGION = 'us-west-1'
region_info = boto.ec2.get_region('us-west-1')

conn = AutoScaleConnection(aws_access_key_id=AWS_ACCESS_KEY, aws_secret_access_key=AWS_SECRET_KEY, region=region_info)

conn.get_all_groups()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/boto/ec2/autoscale/__init__.py", line 342, in get_all_groups
    [('member', AutoScalingGroup)])
  File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1185, in get_list
    raise self.ResponseError(response.status, response.reason, body)
boto.exception.BotoServerError: BotoServerError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>InvalidAction</Code><Message>The action DescribeAutoScalingGroups is not valid for this web service.</Message></Error></Errors><RequestID>sadsdasdsdsdsadasdasd</RequestID></Response>

我尝试了另一种方法:这有效

conn = boto.ec2.autoscale.connect_to_region('us-west-1')
conn.get_all_groups()

但我不想使用boto存储的默认配置文件。我想提供访问密钥等作为参数(如上例所示)

感谢任何帮助。

我正在关注本教程:http://boto.readthedocs.org/en/latest/autoscale_tut.html

1 个答案:

答案 0 :(得分:2)

您仍然可以将显式凭据传递给connect_to_region方法,如下所示:

import boto.ec2.autoscale
conn = boto.ec2.autoscale.connect_to_region('us-west-2', aws_access_key_id='YOUR_ACCESS_KEY', aws_secret_access_key='YOUR_SECRET_KEY')
conn.get_all_groups()

这样您就可以让boto处理为您创建RegionInfo个对象的复杂情况。