2014-12-26 9 views
16

Wir erhalten einen Zertifikatfehler, wenn Sie versuchen, mit Boto eine Verbindung zu unserem S3-Bucket herzustellen. Seltsamerweise manifestiert sich dies nur beim Zugriff auf einen Bucket mit Perioden in seinem Namen WHILE, der auf Heroku läuft.Keine Verbindung zu S3-Buckets mit Perioden in ihrem Namen möglich, wenn Boto auf Heroku verwendet wird

from boto.s3.connection import S3Connection 
conn = S3Connection({our_s3_key}, {our_s3_secret}) 
bucket = conn.get_bucket('ourcompany.images') 

Löst den folgenden Fehler:

CertificateError: hostname 'ourcompany.images.s3.amazonaws.com' doesn't match either of '*.s3.amazonaws.com', 's3.amazonaws.com'

Aber der gleiche Code funktioniert gut, wenn lokal ausgeführt werden, und würde auch auf Heroku funktionieren, wenn der Bucket-Name ‚ourcompany-Bilder‘ anstelle von ‚ourcompany sind. Bilder

Antwort

35

nach dem relevant github issue, fügen Sie diese zur Konfiguration:

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

Oder geben Sie die calling_format, während ein S3Connection Instanziierung:

from boto.s3.connection import OrdinaryCallingFormat 

conn = S3Connection(access_key, secret_key, calling_format=OrdinaryCallingFormat()) 

Der Code für Sie vor Ort gearbeitet und nicht auf Heroku erfolgreich war, höchstwahrscheinlich, verwendet wegen der verschiedenen Python-Versionen. Ich vermute, Sie verwenden 2.7.9 Laufzeit auf Heroku, die enabled certificate checks for stdlib http clients hat.

+0

Schön - Danke! – Yarin

+6

für alle, die den beliebten Django-Storage-Wrapper verwenden, geschieht dies über die Einstellungen.py der App, wie hier erklärt: https://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html und hier : https://bitbucket.org/david/django-storages/issue/181/from-s3-import-callingformat-seems-broke – ecoe

+0

Es ist wohltätig zu sagen, dass diese Links das Problem "erklären"! Aber Brad Bodes Kommentar unter https://bitbucket.org/david/django-storages/issues/181/from-s3-import-callingformat-seems-broke#comment-10134874 hat sich auf das Thema für mich geeinigt. –