2016-04-14 48 views
5

Używam Node.js do uzyskania podpisanego adresu URL z aws s3 przy użyciu putObject z modułu (aws-sdk). Kiedy uruchamiam mój serwer lokalnie, nie ma problemu z przesyłaniem do S3. Kiedy wdrożyć mojego kodu Heroku i wybrać plik do przesłania Dostaję następujący błąd w mojej konsoli chrome:Jak skonfigurować wiadro aws s3 do akceptowania podpisanych adresów URL na Heroku?

https://torhuw-hrns.s3.amazonaws.com/5f522890-0283-11e6-a696-b1fc6f56c785-T ... 4 & Podpis = P7ybw4% 2B2qqNRNKTZbc% 2FMWLhPn1o% 3D & x-AMZ-acl = publicznego odczytu udało się wczytać zasób: serwer odpowiedział ze statusem 403 (zabronione)

używam node.js (AWS-sDK) metodę s3getSignedUrl uzyskać podpis i wysyłającego do tego z przodu, aby przesłać moje pliki do mojego wiadra s3.

Tutorial I następnie jest Direct to S3 File Uploads in Node.js

Odpowiedz

1

dwukrotnie sprawdzić uprawnienia Twojego S3 wiadro i konfigurację CORS. Musisz upewnić się, że polityka zezwala na "s3: PutObject" na twoim wiadrze i musisz upewnić się, że CORSRule zezwala na PUT/POST i zezwala na domenę aplikacji.

Aby debugować te rzeczy, można rozważyć tymczasowe rozluźnienie wszystkich uprawnień do "szeroko otwartego" i sprawdzenie, czy działa, gdy są całkowicie nieograniczone.

+0

Przez "szeroko otwarte" mam na myśli takie rzeczy jak udzielanie uprawnień AmazonS3FullAccess, ustawienie AllowedOrigin z * w konfiguracji Cors, etc. –

0

Okay Rozwiązałem to, tworząc nowe wiadro aktualizujące konfigurację CORS, tworząc nowe access_key_ID i access_secret_access_key i aktualizując zmienne środowiskowe heroku (wybrałem także wiadro, aby znajdował się w tym samym regionie co moja aplikacja heroku, ale nie jestem pewien czy to było rozwiązanie). Konfiguracja CORS użyto:

<?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>