Amazon AWS错误:缺lessconfig node.js中的凭据

我刚刚开始使用AWS,我试图在这里使用他们的示例代码。 我正在使用dotenv来存储我的密钥作为环境variables。 使用咖啡脚本我的代码如下所示:

require('dotenv').config() express = require 'express' router = express.Router() AWS = require('aws-sdk') AWS.config.region = 'us-west-2' s3bucket = new (AWS.S3)(params: Bucket: 'new-bucket-name') s3bucket.createBucket -> params = Key: process.env.AWS_ACCESS_KEY_ID Body: 'Hello!' s3bucket.upload params, (err, data) -> if err console.log 'Error uploading data: ', err else console.log 'Successfully uploaded data to myBucket/myKey' return return 

但我不断收到以下错误:

 message: 'Missing credentials in config', code: 'CredentialsError', errno: 'EHOSTDOWN', syscall: 'connect', address: '169.254.169.254', port: 80, time: 2016-10-13T14:14:03.605Z, originalError: { message: 'Could not load credentials from any providers', code: 'CredentialsError', errno: 'EHOSTDOWN', syscall: 'connect', address: '169.254.169.254', port: 80, time: 2016-10-13T14:14:03.605Z, originalError: { message: 'Missing credentials in config', code: 'CredentialsError', errno: 'EHOSTDOWN', syscall: 'connect', address: '169.254.169.254', port: 80, time: 2016-10-13T14:14:03.599Z, originalError: [Object] } } } 

我该如何解决这个问题,还需要以某种方式发送我的密钥?

更新:修复它使用

 AWS.config = new AWS.Config(); AWS.config.accessKeyId = "accessKey"; AWS.config.secretAccessKey = "secretKey"; 

但现在我得到这个新的错误:

  message: 'Access Denied', code: 'AccessDenied', region: null, time: 2016-10-13T14:38:19.651Z, requestId: '958BD7EA261F2DCA', extendedRequestId: 'xuBSmGL/GC5Tx1osMh9tBFIwXMLy15VtJXniwYVGutTcoBJgrCeOLZpQMlliF1Azrkmj1tsAX7o=', cfId: undefined, statusCode: 403, retryable: false, retryDelay: 11.225715031927086 } 

Access Denied声音就像您的IAM权限设置不正确。 检查绑定到这些凭据的用户可以在您的帐户中创build存储桶。

另外,通常AWS SDK可以读出您的实际ENVvariables,因此在这种情况下您可能不需要使用DotEnv。 而当你将代码推送到可能在EC2或Lambda上运行的生产系统时,你应该使用IAM Profile来处理你的凭证。 所以再次.. DotEnv是没有必要的。