This is the long issue with tons of options on how to make it work:
Can't use bucket names with dots #2836 - https://github.com/boto/boto/issues/2836
This is what worked for me:
conn = boto.s3.connect_to_region(
boto.s3.connection.Location.USWest2,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_ACCESS_KEY_SECRET,
calling_format=boto.s3.connection.OrdinaryCallingFormat()
)
Have to use connect_to_region
and pass in the region where you created your bucket and use the OrdinaryCallingFormat
calling format. Otherwise I'd get the following errors:
Note that this is not possible to do using boto.connect_s3
.
Without sending in the region:
Traceback (most recent call last):
...
File "/home/jj/code/site/venv/lib/python3.4/site-packages/boto/s3/connection.py", line 553, in head_bucket
response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 301 Moved Permanently
Not using the right calling format (boto.connect_s3
)
Traceback (most recent call last):
....
return _old_match_hostname(cert, hostname)
File "/usr/lib/python3.4/ssl.py", line 285, in match_hostname
% (hostname, ', '.join(map(repr, dnsnames))))
ssl.CertificateError: hostname 'www.domain.com.s3-us-west-2.amazonaws.com' doesn't match either of 's3-us-west-2.amazonaws.com', '*.s3-us-west-2.amazonaws.com', 's3.us-west-2.amazonaws.com', '*.s3.us-west-2.amazonaws.com', 's3.dualstack.us-west-2.amazonaws.com', '*.s3.dualstack.us-west-2.amazonaws.com', '*.s3.amazonaws.com'