2013-01-24 20 views
5

Ho provato a utilizzare aws-sdk e knox e ottengo il codice di stato 301 che tenta di caricare le immagini. Ricevo il codice di stato 301 e il messaggio: "Il bucket che si sta tentando di accedere deve essere indirizzato utilizzando l'endpoint specificato. Si prega di inviare tutte le richieste future a questo endpoint. Questo funziona in PHP.Impossibile caricare immagini in nodejs utilizzando aws-sdk

AWS.config.loadFromPath(__dirname + '/config/config.json'); 
fs.readFile(source, function (err, data) { 
var s3 = new AWS.S3(); 
    s3.client.createBucket({Bucket: 'mystuff'}, function() { 
     var d = { 
      Bucket: 'mystuff', 
      Key: 'img/test.jpg', 
      Body: data, 
      ACL: 'public-read' 
      }; 
     s3.client.putObject(d, function(err, res) { 
      if (err) { 
       console.log("Error uploading data: ", err); 
       callback(err); 
      } else { 
       console.log("Successfully uploaded data to myBucket/myKey"); 
       callback(res); 
      } 
     }); 
    }); 
}); 

risposta

4

Hai provato .send()?

Posso caricare su S3 dal seguente codice.

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/AWSRequest.html

var s3object = {Bucket: 'mystuff', Key: name, Body : data['data']}; 
    s3.client.putObject(s3object).done(function(resp){ 
     console.log("Successfully uploaded data"); 
    }).fail(function(resp){ 
     console.log(resp); 
    }).send(); 
+1

Ho lo stesso errore {codice: 'PermanentRedirect', messaggio: 'Il bucket che si sta tentando di accedere deve essere indirizzato utilizzando l'endpoint specificato. Si prega di inviare tutte le richieste future a questo endpoint. ', statusCode: 301, riprovabile: falso} – rigaman

7

ho effettivamente risolto questo problema. Nella tua configurazione devi avere una regione, dal momento che il mio secchio era "US Standard", ho lasciato la mia regione vuota e ha funzionato. config.json - { "accessKeyId": "chiave segreta", "secretAccessKey": "secretAccessKey", "regione": ""}

andare a s3 console di gestione selezionare uno dei file e cliccare sul proporties -> guarda il link del file. campione degli Stati Uniti https://s3.amazonaws.com/yourbucket/ ospite nella finestra della console yourbucket.s3.amazonaws.com/

noi-ovest-1 https://s3-us-west-1.amazonaws.com/yourbucket/ ospite nella finestra della console yourbucket.s3-US-West-1.amazonaws. it/

+0

Impostare la regione in bianco lo ha fatto per me – badunk

+0

Il mio era Singapore quindi impostazione "regione": "ap-sud-est-1" risolto problema per me. Grazie :-) –

0

Ho lo stesso problema con il nuovo SDK e l'ho risolto impostando l'opzione endpoint in modo esplicito.

Riferimento: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor_details

Snippet:

var AWS = require('aws-sdk'); 

var s3 = new AWS.S3({ endpoint :'https://s3-your-region-varies.amazonaws.com' }), 
    myBucket = 'your-bucket-name'; 

var params = {Bucket: myBucket, Key: 'myUpload', Body: "Test"}; 

s3.putObject(params, function(err, data) { 
    if (err) { 
     console.log(err) 
    } else { 
     console.log("Successfully uploaded data to "+myBucket+"/testKeyUpload"); 
    } 
}); 

In alternativa, si può risolvere questo impostando la regione nel file di configurazione e devi solo essere precisa del vostro nome della regione.

Problemi correlati