Connect to a bucket with a capital letter

I cannot connect to the bucket if the bucket name has an uppercase letter. I have several buckets that have a capital letter.

>>> 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. 
+6
source share
2 answers

S3 recommends using only DNS compatible bucket names.

Take a look at the restrictions page: http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html

However, you do this, in boto you can use a different calling format for buckets with a mixed name:

 from boto.s3.connection import OrdinaryCallingFormat conn = boto.connect_s3(calling_format=OrdinaryCallingFormat()) mybucket = conn.get_bucket('Vig_import') 
+34
source

To add these lines to the .boto file for me

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

Reference

0
source

Source: https://habr.com/ru/post/954918/


All Articles