在Node中本地使用dynamodb时,“无法从任何提供程序加载凭据”

即时build立一个dynamodb本地testing我的节点应用程序。 要设置它,我只是简单地从这里复制代码,并根据我的需要进行调整。
这是代码:

var AWS = require("aws-sdk"); var config = ({ "apiVersion": "2012-08-10", "accessKeyId": "abcde", "secretAccessKey": "abcde", "region": "us-west-2", "endpoint": "http://localhost:8001", }); var dynamodb = new AWS.DynamoDB(config); var params = { TableName : "Movies", KeySchema: [ { AttributeName: "year", KeyType: "HASH"}, //Partition key { AttributeName: "title", KeyType: "RANGE" } //Sort key ], AttributeDefinitions: [ { AttributeName: "year", AttributeType: "N" }, { AttributeName: "title", AttributeType: "S" } ], ProvisionedThroughput: { ReadCapacityUnits: 10, WriteCapacityUnits: 10 } }; dynamodb.createTable(params, function(err, data) { if (err) { console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2)); } else { console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2)); } }); 

这引发了一个错误,但我不知道为什么:

 Unable to create table. Error JSON: { "message": "Missing credentials in config", "code": "CredentialsError", "time": "2017-04-10T11:45:26.748Z", "retryable": true, "originalError": { "message": "Could not load credentials from any providers", "code": "CredentialsError", "time": "2017-04-10T11:45:26.747Z", "retryable": true, "originalError": { "message": "Connection timed out after 1000ms", "code": "TimeoutError", "time": "2017-04-10T11:45:26.747Z", "retryable": true } } } 

将感谢任何帮助!

显然我想出了问题。 使用json文件来设置凭据仍导致错误。 仅使用configuration对象而不带-inMemory标志也会导致错误。 硬编码脚本中的凭证和在本地启动dynamodb时使用-inMemory标志的组合似乎解决了这个问题。 我真的不明白为什么。

Web服务DynamoDB和本地版本之间可能存在混淆。 您可以在AWS文档中find两者的主要区别。

如果要使用本地版本的DynamoDB,则可以在AWS文档中find要安装并运行的最新信息。

完成之后,请确保通过运行以下命令来运行本地DynamoDB实例:

 java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -inMemory 

你的错误可能会被避免。

根据错误消息您的凭据不是在config设置。

我正在给我的观点设置凭据,然后使用这些服务。

  const aws = require('aws-sdk'); aws.config = new aws.Config(); aws.config.accessKeyId = "xxxxxxxxxxxxxx"; aws.config.secretAccessKey = "xxxxxxxxxx"; aws.config.region = "region"; 

现在,然后使用Dynamodb

 var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'}); 

UPDATE

你也可以用文件设置凭据

 aws.config.loadFromPath('./AwsConfig.json'); 

希望它的作品!

DynamoDB本地在端口8000上使用虚拟凭据正常工作。

注意:

端口号是8000 。 我使用下面的虚拟凭据。

 var creds = new AWS.Credentials('akid', 'secret', 'session'); AWS.config.update({ region: "us-west-2", endpoint: "http://localhost:8000", credentials: creds }); 

开始命令: –

 java -Djava.library.path=DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 

OS: –

视窗