0

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 を使用するように修正するにはどうすればよいですか?

4

0 に答える 0