Node JS アプリケーションを構築しています。データベースには AWS DynamoDB を使用しています。私が今行っていることは、DynamoDB をローカルにインストールし、代わりにローカル バージョンを使用することです。しかし、私のアプリケーションは私のマシンにインストールされたローカルの DynamoDB に送信していないようです。
DynamoDB をローカルにインストールし、このリンクhttps://cloudaffaire.com/install-dynamodb-in-local-system/に記載されているように起動して実行しました。この段階では、localhost:8000 で実行されていました。
次に、ターミナルで次のコマンドを実行してテーブルを作成しました。
aws dynamodb create-table --table-name CloudAffaire --attribute-definitions AttributeName=Topic,AttributeType=S --key-schema AttributeName=Topic,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --endpoint-url http://localhost:8000 --output table
成功し、エラーは発生しませんでした。
次に、DynamoDB admin をダウンロードして、GUI でデータを視覚化しました。そのために、このリンクをたどってツールをインストールしました。 %20Graphical,%2Dlocal%2C%20dynalite%20or%20localstack .
ツールを実行すると、作成したテーブルが UI にあることがわかりました。
次に、ノード JS プロジェクトのコードを使用してテーブルを作成しました。これは私のコードです。
// running this file using `node -e 'require(\"./db/utils.js\").createTables()'` will create the table
require('dotenv').config();
const AWS = require("aws-sdk");
AWS.config.update({
region: "local",
endpoint: "http://localhost:8000"
});
const dynamodb = new AWS.DynamoDB();
function createTables() {
const params = {
TableName: "RegionTest",
KeySchema: [{
AttributeName: "name",
KeyType: "HASH" // HASH - partition key and RANGE - sort key
}],
AttributeDefinitions: [{
AttributeName: "name",
AttributeType: "S" // S = string, B = binary, N = number
}],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
}
};
DynamoDB.createTable(params, function(err, data) {
if (err) {
console.error("Unable to create table", err);
} else {
console.log("Created table", data);
}
});
}
module.exports = {
createTables
}
次に、ターミナルで次のコマンドを実行して、テーブルを作成します。
node -e 'require(\"./db/utils.js\").createTables()'
テーブルが作成され、次の出力が得られました。
Created table {
TableDescription: {
AttributeDefinitions: [ [Object] ],
KeySchema: [ [Object] ],
TableStatus: 'ACTIVE',
CreationDateTime: 2021-05-23T11:28:28.122Z,
ProvisionedThroughput: {
LastIncreaseDateTime: 1970-01-01T00:00:00.000Z,
LastDecreaseDateTime: 1970-01-01T00:00:00.000Z,
NumberOfDecreasesToday: 0,
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
},
TableSizeBytes: 0,
ItemCount: 0,
TableArn: 'arn:aws:dynamodb:ddblocal:000000000000:table/Region'
}
}
localhost:8001 で実行されている DynamoDB 管理者に移動すると、新しいテーブルがありません。ターミナルを使用して作成した前のテーブルしか表示できませんでした。コードの何が問題なのですか? また、ローカルの DynamoDB を使用するように修正するにはどうすればよいですか?