2016-04-14 5 views
5

Ich benutze Node.js, um eine signierte URL von aws s3 mit dem PutObject aus dem (AWS-SDK) -Modul zu bekommen. Wenn ich meinen Server lokal betreibe, gibt es kein Problem mit dem Upload nach S3. Wenn ich meinen Code Heroku implementieren und eine Datei auswählen laden Ich bin in meiner Chromkonsole den folgenden Fehler erhalten:Wie konfiguriert man aws s3 bucket, um signierte URLs auf Heroku zu akzeptieren?

https://torhuw-hrns.s3.amazonaws.com/5f522890-0283-11e6-a696-b1fc6f56c785-T ... 4 & Signature = P7ybw4% 2B2qqNRNKTZbc% 2FMWLhPn1o% 3D & x-amz-acl = public-read-write failed Ressource laden: der Server mit dem Status 403 (Forbidden) reagierte

I Node.js (aws-sdk) s3getSignedUrl Methode bin mit der Unterschrift zu erhalten und diese an die Sende Frontend, um meine Dateien in meinen S3-Bucket hochzuladen.

Das Tutorial Ich folgte ist Direct to S3 File Uploads in Node.js

Antwort

1

doppelt überprüfen Sie die Berechtigungen des S3-Bucket und CORS-Konfiguration. Sie müssen sicherstellen, dass die Richtlinie "s3: PutObject" in Ihrem Bucket erlaubt und Sie müssen sicherstellen, dass die CORSRule PUT/POST erlaubt und die Domain Ihrer App erlaubt.

Um diese Dinge zu debuggen, können Sie in Betracht ziehen, alle Berechtigungen zeitweise auf "weit geöffnet" zu reduzieren und zu überprüfen, ob es vollständig uneingeschränkt funktioniert.

+0

Mit "weit offen" Ich Dinge bedeuten wie AmazonS3FullAccess Berechtigungen gewähren, eine AllowedOrigin von * in der CORS Konfigurationseinstellung usw. –

0

Okay, das habe ich gelöst, indem ich einen neuen Bucket erstellt habe, der die CORS-Konfiguration aktualisiert, neue access_key_ID und access_secret_access_key erstellt und die Heroku-Umgebungsvariablen aktualisiert (ich habe auch den Bucket in der gleichen Region wie meine heroku-App ausgewählt, nicht sicher, ob das die Lösung war). Die CORS-Konfiguration verwendet wurde:

<?xml version="1.0" encoding="UTF-8"?> 
 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
 
    <CORSRule> 
 
     <AllowedOrigin>*</AllowedOrigin> 
 
     <AllowedMethod>GET</AllowedMethod> 
 
     <AllowedMethod>POST</AllowedMethod> 
 
     <AllowedMethod>PUT</AllowedMethod> 
 
     <AllowedHeader>*</AllowedHeader> 
 
    </CORSRule> 
 
</CORSConfiguration>

Verwandte Themen