将Python Boto与AWS Support API结合使用

时间:2014-07-08 04:18:07

标签: python amazon-web-services boto

我已经使用boto与S3进行交互而没有任何问题,但现在我尝试连接到AWS Support API以撤回打开的门票,可信赖的顾问结果等信息。似乎boto库是否为每个AWS服务提供不同的连接方法?例如,对于S3,它是:

conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)

根据boto文档,以下内容应该可以连接到AWS Support API:

>>> from boto.support.connection import SupportConnection
>>> conn = SupportConnection('<aws access key>', '<aws secret key>')

然而,在挖掘源代码后我看到了一些问题。首先,boto.support.connection实际上并不存在。 boto.connection确实如此,但它不包含类SupportConnection。 boto.support.layer1存在,并且DOES具有类SupportConnection,但它不接受文档建议的关键参数。相反,它需要1个参数 - 一个AWSQueryConnection对象。该类在boto.connection中定义。 AWSQueryConnection接受1个参数 - 一个AWSAuthConnection对象,该类也在boto.connection中定义。最后,AWSAuthConnection采用通用对象,其中 init 中定义的需求为:

class AWSAuthConnection(object):
    def __init__(self, host, aws_access_key_id=None,
                 aws_secret_access_key=None,
                 is_secure=True, port=None, proxy=None, proxy_port=None,
                 proxy_user=None, proxy_pass=None, debug=0,
                 https_connection_factory=None, path='/',
                 provider='aws', security_token=None,
                 suppress_consec_slashes=True,
                 validate_certs=True, profile_name=None):

因此,对于踢,我尝试通过传递密钥,然后是AWSQueryConnection(awsauth),然后是SupportConnection(awsquery)来创建AWSAuthConnection,没有运气。这是在剧本里面。

感兴趣的最后一项是,我的主目录中的.boto文件中定义了我的键,并从命令行运行python口译器,我可以直接导入并调用SupportConnection()(无参数)和有用。它显然是从.boto文件中获取我的密钥并使用它们但我还没有分析每一行源代码以了解如何,而且坦率地说,我希望避免这样做。

长话短说,我希望有人熟悉boto并连接到除了S3(通过谷歌存在的大量材料)以外的AWS API,以帮助我进一步排除故障。

1 个答案:

答案 0 :(得分:2)

这应该有效:

import boto.support
conn = boto.support.connect_to_region('us-east-1')

这假设您在boto配置文件或IAM角色中拥有凭据。如果要传递显式凭据,请执行以下操作:

import boto.support
conn = boto.support.connect_to_region('us-east-1', aws_access_key_id="<access key>", aws_secret_access_key="<secret key>")

这种基本咒语应适用于所有地区的所有服务。只需导入正确的模块(例如boto.support或boto.ec2或boto.s3或其他),然后调用它的connect_to_region方法,提供您想要的区域名称作为参数。