2017-07-20 3 views
0

Ich versuche Bilder mit Carrierwave (1.0.0 auf Rails 4.2) auf S3 hochzuladen. Ich bekomme 403 Zugriff verweigert. Wenn ich jedoch eine manuelle PUT Anfrage mit Curl mache, funktioniert es ganz gut. Ich habe bestätigt, dass Rails meine Geheimnisse richtig liest. All dies bedeutet für mich, dass Excon irgendwie meine Anmeldeinformationen nicht sendet.Carrierwave-Upload nach S3 schlägt fehl, aber Curl funktioniert

Was kann ich tun?

Arbeiten curl Befehl:

$ file=airplane.jpg 
$ bucket=mybucket 
$ resource="/${bucket}/${file}" 
$ contentType="image/jpeg" 
$ dateValue=`date -R` 
$ stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}" 
$ s3Key=redacted:) 
$ s3Secret=redacted:) 
$ signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` 
$ curl -X PUT -T "${file}" \ 
> -H "Host: ${bucket}.s3.amazonaws.com" \ 
> -H "Date: ${dateValue}" \ 
> -H "Content-Type: ${contentType}" \ 
> -H "Authorization: AWS ${s3Key}:${signature}" \ 
> https://${bucket}.s3.amazonaws.com/${file} 

Carrierwave config:

config.fog_credentials = { 
    provider:    'AWS', 
    aws_access_key_id:  secrets[:aws_access_key_id], 
    aws_secret_access_key: secrets[:aws_secret_access_key], 
    region:    'eu-west-1', 
    host:     's3-eu-west-1.amazonaws.com' 
} 
config.fog_provider = 'fog/aws' 
config.storage :fog 
config.fog_directory = 'mybucket' 
config.fog_public = true 
config.fog_attributes = { 'Cache-Control' => 'max-age=315576000' } 

EDIT: Ein Update - ich weiß nicht, was ich verändert, aber plötzlich erhalte ich die Fehler folgende wenn die Locke mit Befehl:

<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message></Error> 
+0

Mögliches Duplikat von [Trägerwelle, Nebel, Amazon S3, Schienen 4] (https://stackoverflow.com/questions/19309864/carrierwave-fog-amazon-s3-rails-4) – henrebotha

Antwort

0

Dies war letzten Endes auf S3 falsch konfiguriert. Ich erinnere mich nicht mehr an die genauen Einzelheiten.

Verwandte Themen