簡體   English   中英

錯誤:配置中缺少憑據 - /nodeapp/node_modules/aws-sdk/lib/request.js:31

[英]Error: Missing credentials in config - /nodeapp/node_modules/aws-sdk/lib/request.js:31

我正在使用AWS-SDK中的s3.listObjects()函數來提取對象,並且我不斷收到以下錯誤:

/nodeapp/node_modules/aws-sdk/lib/request.js:31 

其次是

Error: Missing credentials in config
at IncomingMessage.<anonymous> (/nodeapp/node_modules/aws-sdk/lib/util.js:863:34)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:186:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)

這不會加起來因為我有一個不同的路由(downloadParam)從S3檢索一個對象而不給我這個錯誤。 另外,當我注銷從downloadResults路由檢索到的對象時,看起來對象被檢索沒有問題,但我仍然會收到此錯誤。

我在這個問題上花了好幾個小時,我似乎無法弄清楚為什么會這樣。 我已經粘貼了以下兩條路線的代碼,一條有效,另一條沒有。 從我在網上收集到的內容來看,這似乎是一個代碼問題,而不是AWS-SDK憑據問題。

  downloadParam: function(app, s3){
app.use('/api', apiRoutes)

apiRoutes.get('/download-param-file', function(req, res, next){
 res.set({'Content-Type':'text/csv'})
  s3.getObject({Bucket: 'some-bucket', Key: 'some-key' + req.query.fileName}, function(err, file){

    if (err) {
      console.log(err);
      return next(err);
    } else {
      return res.send(file.Body.toString());
    }
  })
})
},

downloadResults: function(app, s3){
app.use('/api', apiRoutes)

apiRoutes.get('/download-results-file', function(req, res, next){
   res.set({'Content-type': 'application/zip'})

   var params = {
    Bucket: 'some-bucket',
    Delimiter: '/',
    Prefix: 'some-key'
    };


   var filesArray = []
   var files = s3.listObjects(params).createReadStream()
   var xml = new XmlStream(files)
   xml.collect('Key')

   xml.on('endElement: Key', function(item) {
     filesArray.push(item['$text'].substr(params.Prefix.length))
    })

   xml.on('end', function() {

    res.send(zip(filesArray, req.query.jobName,  params))


  })        
})
}

截至目前, downloadParams按預期工作,但downloadResults沒有。 任何幫助將非常感激。

這個鏈接似乎解決了類似我的問題

你沒有驗證通話。 存儲桶沒有權限在沒有身份驗證的情況下列出對象,而它有權下載特定文件而無需身份驗證。

請參閱Amazon文檔,了解如何安全地向實例添加憑據。

實質上,

var creds = AWS.Credentials();
creds.accessKeyId = 'AKIAIOSFODNN7EXAMPLE';
creds.secretAccessKey = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY';

AWS.config.credentials = creds;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM