错误: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)

这不会添加,因为我有不同的路由(下载Param),该路由从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;

最新更新