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'
