我使用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 的最佳设置,以便连接正确的凭据到我的桌子?
答案 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)和凭证文件。