2016-03-31 17 views
0

Ich versuche, meine Amazon AWS Zugriffsschlüssel und Geheimnis zu setzen, indem multer mit:Process.env nicht lesen? Amazon S3 Bucket

var upload = multer({ 
secretAccessKey: process.env.AWS_ACCESS_SECRET, 
accessKeyId: process.env.AWS_ACCESS_KEY, 
}) 

In meiner zshrc Datei, die ich gemacht habe

export AWS_ACCESS_SECRET="mysecret" 
export AWS_ACCESS_KEY="mykey" 

jedoch auf dem Knoten ausgeführt wird, ich den Fehler

if (!opts.secretAccessKey) throw new Error('secretAccessKey is required') 

jedoch hartzucodieren den Schlüssel und Geheimnis macht es Arbeit, aber das ist natürlich nicht der sicherste Weg zu gehen.

Ich habe Source ~/.zshrc getan, aber es zeigt immer noch den Fehler.

+1

Können Sie diese beiden Umgebungsvariablen sehen, wenn Sie 'console.log (process.env)'? – Rabea

+0

In meiner Knoten-Shell, wenn ich process.env eintippe, zeigt es die access_key und geheime –

+0

U kann es am Anfang laufen oder führen Sie es auf eine separate Datei und dann 'node thatFile.js', oder öffnen Sie eine Node-Konsole mit nur Schreiben 'Knoten' im Terminal. Es sollte eine Knoten-Shell öffnen, wo Sie diese Protokollierung ausführen können – Rabea

Antwort

1

Multer aus der Box unterstützt s3 nicht. Die Art und Weise, wie Sie ein neues multer-Objekt erstellen, ist falsch. Die einzigen verfügbaren options beim Erstellen eines neuen multer Objekts sind dest/storage, fileFilter und limits. Wenn Sie Multer mit S3 direkt verwenden möchten, können Sie multer-s3 verwenden. Damit können Sie eine neue Option storage übergeben, die Ihre secretAccessKey und Ihre accessKeyId übernehmen wird.

Wenn Sie multer-s3 nicht verwenden, können Sie mit aws-sdk 's S3 Client verwenden.

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

var accessKeyId = process.env.AWS_ACCESS_KEY; 
var secretAccessKey = process.env.AWS_ACCESS_SECRET; 

var upload = multer({dest: '/temp'});  
var s3 = new AWS.S3({ 
    accessKeyId: accessKeyId, 
    secretAccessKey: secretAccessKey 
});