2016-03-31 35 views
0

我試圖用multer設置我的亞馬遜AWS訪問密鑰和祕密:Process.env沒有閱讀?亞馬遜S3存儲

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

在我zshrc文件我已經做了

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

然而上運行的節點,我得到錯誤

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

但是對密鑰和祕密進行硬編碼使其工作,但顯然這並不是最安全的方法。

我已經完成了源〜/ .zshrc,但它仍然顯示錯誤。

+1

當你console.log(process.env)''時你能看到這兩個環境變量嗎? – Rabea

+0

在我的節點shell中,當我鍵入process.env時,它顯示access_key和密鑰 –

+0

U可以在開始時運行它,或者在單獨的文件上運行它,然後'node thatFile.js',或者只需寫入一個節點控制檯節點在終端。它應該打開一個節點shell,您可以在其中運行該日誌記錄 – Rabea

回答

1

開箱即用的Multer不支持s3。您創建新對象multer的方式不正確。當創建新的multer對象時,唯一可用的optionsdest/storage,fileFilterlimits

如果您想直接使用Multer與S3,可以使用multer-s3。有了這個,你可以通過一個新的選項storage,這將採取您的secretAccessKey和您的accessKeyId

如果您不使用multer-s3您可以使用multeraws-sdkS3 Client

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 
});