title: Boto can't connect to bucket names with '.' dot
link: http://jj.isgeek.net/2016/08/boto-cant-connect-to-bucket-names-with-dot/
author: Jj
description: 
post_id: 1063
date: 2016/08/30 22:42:04
created_gmt: 2016/08/31 03:42:04
comment_status: open
slug: boto-cant-connect-to-bucket-names-with-dot

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](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' 
