【问题标题】:Amazon AWS Error: Missing credentials in config node.js亚马逊 AWS 错误:配置 node.js 中缺少凭证
【发布时间】:2016-10-14 10:54:53
【问题描述】:

我刚刚开始使用 AWS,我正在尝试使用他们的示例代码 here. 我正在使用 dotenv 将我的密钥存储为环境变量。使用咖啡脚本,我的代码如下所示:

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 }

【问题讨论】:

    标签: javascript node.js amazon-web-services amazon-s3 coffeescript


    【解决方案1】:

    Access Denied 听起来您的 IAM 权限设置不正确。检查绑定到这些凭据的用户是否可以在您的账户中创建存储桶。

    通常 AWS 开发工具包可以读取您的实际 ENV 变量,因此在这种情况下您可能不需要使用 DotEnv。当您将代码推送到可能在 EC2 或 Lambda 上运行的生产系统时,您确实应该使用为您处理凭证的 IAM 配置文件。再说一遍.. DotEnv 不是必需的。

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多