im Node app。でテストするためにdynamodbをローカルにセットアップします。セットアップするには、コードを 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
}
}
}
どんな助けにも感謝します!
どうやら私は問題を理解しました。 jsonファイルを使用して資格情報を設定しても、エラーが発生しました。フラグ-inMemoryなしでconfigオブジェクトのみを使用すると、エラーも発生しました。スクリプトで資格情報をハードコーディングし、dynamodbをローカルで起動するときに-inMemoryフラグを使用することで、これを解決できるようです。でも、なぜだか分かりません。
次のコードに変更し、ダミーのaccessKeyId
とsecretAccessKey
を用意してから実行します
var AWS = require("aws-sdk");
AWS.config.update({
region: 'us-west-1',
accessKeyId: 'accessKeyId',
secretAccessKey: 'secretAccessKey',
endpoint: new AWS.Endpoint('http://localhost:8000'),
});
var dynamodb = new AWS.DynamoDB();
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));
}
});
エラーメッセージにより、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ローカルは、ダミーの資格情報でport 80で正常に動作します。
注:
ポート番号は80です。以下のダミーの資格情報を使用します。
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:-
ウィンドウズ