我在本地设置了一个dynamodb来测试我的Node应用程序。为了设置它,我只是简单地从here复制了代码,并根据我的需要进行了调整。
这就是代码:
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
}
}
}
感谢任何帮助!
9条答案
按热度按时间1zmg4dgp1#
我也犯了同样的错误。在我的例子中,问题是它在本地从命令行运行时工作得很好,但在docker中却不行。
基本上,如何在
aws-sdk
(版本2)和@aws-sdk/s3-client
(版本3)之间向AWS npm S3客户端传递凭据已经发生了变化。在v2的情况下,结构是这样的:在v3中:
它在本地工作得很好,因为我已经通过CLI向AWS进行了身份验证,它忽略了我传递给v3客户端的v2样式凭据。
结论:使用 typescript 的一切男孩和女孩!
fslejnso2#
更改为以下代码,拥有虚拟
accessKeyId
和secretAccessKey
,然后运行它mzmfm0qo3#
根据错误消息,您的凭据未在
config
中设置。我给出了设置凭据然后使用服务的观点。
现在使用Dynamodb
更新
也可以使用文件设置凭据
希望能成功!!
wfveoks04#
显然我发现了问题所在。使用json文件设置凭据仍然会导致错误。只使用没有标志-inMemory的config对象也会导致错误。在脚本中硬编码凭证并在本地启动dynamodb时使用-inMemory标志的组合似乎可以解决这个问题。我真的不明白为什么。
xsuvu9jc5#
这对我很有效
thigvfpy6#
您可能混淆了Web服务DynamoDB和本地版本。你可以在AWS documentation中找到两者的主要区别。
如果你想使用本地版本的DynamoDB,你会找到最新的信息来安装和运行它在AWS documentation。
完成后,请确保运行本地DynamoDB示例:
你的错误可能会被避免。
brtdzjyr7#
DynamoDB local在端口8000上使用虚拟凭据运行良好。
注:
端口号为8000。我使用下面的虚拟凭据。
启动命令:-
操作系统:-
windows
nfs0ujit8#
在node.js中,通过设置这些值,可以轻松地从
.env
值加载AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN(可选)
https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html
vof42yt19#
这个问题的另一个选择/解决方案是在用户的家中创建一个
credentials
文件。类似于:
~/.aws/credentials
而内容将是: