2016-04-14 39 views
5

Sto usando Node.js per ottenere un url firmato da aws s3 usando putObject dal modulo (aws-sdk). Quando eseguo il mio server localmente, non c'è alcun problema con il caricamento su S3. Quando schiero il mio codice di Heroku e scegliere un file da caricare sto ottenendo il seguente errore nel mio console chrome:Come configurare aws s3 bucket per accettare gli URL firmati su Heroku?

https://torhuw-hrns.s3.amazonaws.com/5f522890-0283-11e6-a696-b1fc6f56c785-T ... 4 & Signature = P7ybw4% 2B2qqNRNKTZbc% 2FMWLhPn1o% 3D & x-AMZ-Acl = pubblico-lettura-scrittura Impossibile caricare la risorsa: il server ha risposto con uno stato di 403 (Forbidden)

sto usando Node.js (AWS-sdk) metodo s3getSignedUrl per ottenere la firma e l'invio di questo al front-end per caricare i miei file sul mio secchio s3.

Il tutorial che ho seguito è Direct to S3 File Uploads in Node.js

risposta

1

doppio controllare le autorizzazioni vostro S3 di secchio e la configurazione CORS. Devi assicurarti che il criterio consenta "s3: PutObject" sul tuo bucket e devi assicurarti che CORSRule consenta PUT/POST e consenta il dominio della tua app.

Per eseguire il debug di queste operazioni, è possibile considerare di sospendere temporaneamente tutte le autorizzazioni su "spalancate" e verificare che funzioni in modo completamente libero.

+0

Con "Wide Open" Voglio dire le cose come la concessione di autorizzazioni AmazonS3FullAccess, l'impostazione di un AllowedOrigin del * nella configurazione CORS, etc. –

0

Ok ho risolto creando un nuovo bucket aggiornando la configurazione CORS, creando nuovi access_key_ID e access_secret_access_key e aggiornando le variabili di ambiente heroku (ho anche selezionato il bucket per trovarsi nella stessa regione della mia app di heroku, non sono sicuro, tuttavia, se questa fosse la soluzione). La configurazione CORS utilizzato è stato:

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

Problemi correlati