【发布时间】:2014-07-08 04:18:06
【问题描述】:
我使用 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 存在,并且确实有类 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):
所以,为了好玩,我尝试通过传递密钥来创建 AWSAuthConnection,然后是 AWSQueryConnection(awsauth),然后是 SupportConnection(awsquery),但没有成功。这是在脚本中。
最后一个有趣的事情是,我的键在我的主目录中的 .boto 文件中定义,并从命令行运行 python 解释器,我可以直接导入并调用 SupportConnection()(无参数)和有用。它显然是从 .boto 文件中获取我的密钥并使用它们,但我还没有分析每一行源代码以了解如何,坦率地说,我希望避免这样做。
长话短说,我希望有人熟悉 boto 并连接到 S3 以外的 AWS API(通过 google 存在的大量材料),以帮助我进一步排除故障。
【问题讨论】:
-
有一些提示的类似问题:stackoverflow.com/a/21345540/346478。一般来说,凭证的管理方式与 S3 和其他服务相同。
标签: python amazon-web-services boto