连接到DynamoDB时,节点应用程序中的凭据错误

时间:2017-01-31 21:19:30

标签: node.js typescript amazon-dynamodb

我使用typescript创建了一个名为 api.js 的文件,以便按如下方式扫描一个dynamodb表:

Api.js

var AWS = require('aws-sdk');

AWS.config.region = "us-east-1";

var sns = new AWS.SNS();
var ddb = new AWS.DynamoDB();

var params = {
    TableName: "Client"
};

// Get all posts
router.get('/posts', (req, res) => {

    ddb.scan(params, onScan);

    function onScan(err, data) {
        if (err) {
            console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
        } else {
            // print all the movies
            console.log("Scan succeeded.");
            console.log(data)
        }
    }
});

但在传递信息之前我试图测试它。当我node server.js时,我收到以下凭据错误:

API running on localhost:3000
Unable to scan the table. Error JSON: {
  "message": "Missing credentials in config",
  "code": "CredentialsError",
  "time": "2017-01-31T21:02:59.435Z",
  "retryable": true,
  "originalError": {
    "message": "Could not load credentials from any providers",
    "code": "CredentialsError",
    "time": "2017-01-31T21:02:59.435Z",
    "retryable": true,
    "originalError": {
      "message": "Connection timed out after 1000ms",
      "code": "TimeoutError",
      "time": "2017-01-31T21:02:59.435Z",
      "retryable": true
    }
  }
}

如何获取配置的凭据以及应用程序的 development / localhost production 的最佳设置,以便连接正确的凭据到我的桌子?

1 个答案:

答案 0 :(得分:1)

有关设置凭据的不同方法,请参阅aws-docs

  

以下是按推荐顺序提供凭据的方法:

     

从Amazon EC2的AWS Identity and Access Management(IAM)角色加载(如果在Amazon EC2上运行)

     

从共享凭证文件(〜/ .aws / credentials)

加载      

从环境变量中加载

     

从磁盘上的JSON文件加载

     

注意

     

虽然可以这样做,但我们不建议在您的应用程序中对您的AWS凭证进行硬编码。硬编码凭证存在暴露您的访问密钥ID和秘密访问密钥的风险。

我们通常使用共享凭证文件(〜/ .aws / credentials)进行本地开发,然后使用IAM角色进行EC2实例(阶段/生产)

aws-sdk将检查环境变量(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY)和凭证文件。