6

如果存储桶名称包含大写字母,我将无法连接到存储桶。我有几个桶,里面有大写字母。

>>> mybucket = conn.get_bucket('Vig_import')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 391, in get_bucket
    bucket.get_all_keys(headers, maxkeys=0)
  File "/usr/lib/python2.6/site-packages/boto/s3/bucket.py", line 360, in get_all_keys
    '', headers, **params)
  File "/usr/lib/python2.6/site-packages/boto/s3/bucket.py", line 317, in _get_all
    query_args=s)
  File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 462, in make_request
    host = self.calling_format.build_host(self.server_name(), bucket)
  File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 86, in build_host
    return self.get_bucket_server(server, bucket)
  File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 65, in wrapper
    if len(args) == 3 and check_lowercase_bucketname(args[2]):
  File "/usr/lib/python2.6/site-packages/boto/s3/connection.py", line 57, in check_lowercase_bucketname
    raise BotoClientError("Bucket names cannot contain upper-case " \
boto.exception.BotoClientError: BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format.
4

2 回答 2

34

S3 建议您仅使用符合 DNS 的存储桶名称。

看看限制页面:http ://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html

无论您如何操作,在 boto 中,您都可以对具有混合大小写名称的存储桶使用不同的调用格式:

from boto.s3.connection import OrdinaryCallingFormat

conn = boto.connect_s3(calling_format=OrdinaryCallingFormat())
mybucket = conn.get_bucket('Vig_import')
于 2013-09-30T07:51:46.150 回答
1

将这些行添加到.boto文件对我有用

[s3]
calling_format = boto.s3.connection.OrdinaryCallingFormat

参考

于 2017-02-15T06:23:34.407 回答