S3使用boto和SigV4 - 缺少主机参数

fab*_*abs 8 python amazon-s3 boto

开发时我在爱尔兰使用了S3铲斗,效果很好.为了生产,我想使用S3的新"法兰克福"位置,但显然新的法兰克福地区使用"SigV4"打破了我的python脚本.

将以下块添加到〜/ .boto时,我收到以下错误:

〜/ .boto:

[s3]
use-sigv4 = True
Run Code Online (Sandbox Code Playgroud)

错误:

File "/usr/lib/python2.6/site-packages/boto/__init__.py", line 141, in connect_s3
return S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs)
File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 196, in __init__
"When using SigV4, you must specify a 'host' parameter."
boto.s3.connection.HostRequiredError: BotoClientError: When using SigV4, 
you must specify a 'host' parameter.
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何指定"主机"参数吗?我在aws/boto文档中找不到此参数.

Voo*_*OFX 12

这是您的确切错误的文档,以及创建(以及您的错误)的确切源代码S3Connection.

在创建时S3Connection(aws_access_key_id, aws_secret_access_key, **kwargs),您需要传入一个附加项host=...,该项应该是一个简单的字符串's3.amazonaws.com',或者类似于您的设置.

解:

您可以将此添加到您kwargs传递的内容中:

kwargs.update({'host': 's3.amazonaws.com'})
Run Code Online (Sandbox Code Playgroud)

或者手动调用,如:

S3Connection(aws_access_key_id, aws_secret_access_key, host='s3.amazonaws.com', **kwargs)
Run Code Online (Sandbox Code Playgroud)