AWS

【DynamoDB】AWS SDK を使用したテーブル作成

今回はDynamoDBへテーブルを作成します。

なお、前提として以下が行われている事とします。

プログラム言語はNode.jsを使用します。

テーブルの作成

前回作成した 02_sample_app ディレクトリ以下に index.js、TableCreater.jsを作成します。
TableCreater.jsはDynamoDBへテーブルを作成する処理を行います。

const DynamoDbSetter = require("./DynamoDbSetter");

module.exports = class TableCreater extends DynamoDbSetter{

    async createTable() {

        // 作成するテーブルの内容を設定する。
        let 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
            }
        };
    
        // テーブルを作成する。
        return await this.dynamodb.createTable(params).promise();

    }
}

前回作成した、DynamoDBの設定を行うDynamoDbSetterを継承しています。故に、DynamoDBの設定は親クラスのDynamoDbSetterが行います。
テーブル名を”Movies”としています。
プライマリーキーを設定します。今回は複合プライマリーキーを指定します。
パーティションキーを”year”、ソートキーを”title”としています。
“year”の属性のタイプは数値(N)、”title”の属性のタイプは文字列(S)を指定しています。
キャパシティのスループットはローカルの場合任意で構いません。

プライマリーキー、属性の説明は以下を参考にして下さい。

キャパシティのスループットは以下を参考にして下さい。

Lambdaの実行関数

index.jsはLambdaを実行すると初めに呼び出される関数になります。
テーブル作成処理を呼び出します。

const TableCreater = require('./TableCreater');

exports.handler = async (event, context) => {

    let tableCreater = new TableCreater();
    let result = await tableCreater.createTable();

    context.succeed({
        statusCode: 200,
        body: result,
    });

};

実行と実行結果

実行

以下のようにローカルのLambda関数を実行します。

curl -d '{}' http://localhost:9001/2015-03-31/functions/sample/invocations

ローカルのLambda関数呼び出しについては以下を参考にして下さい。

実行結果

実行結果は以下の通りです。

{
  "statusCode":200,
  "body":{
    "TableDescription":{
      "AttributeDefinitions":[
          {"AttributeName":"year","AttributeType":"N"},
          {"AttributeName":"title","AttributeType":"S"}
      ],
      "TableName":"Movies",
      "KeySchema":[
        {"AttributeName":"year","KeyType":"HASH"},
        {"AttributeName":"title","KeyType":"RANGE"}
      ],
      "TableStatus":"ACTIVE",
      "CreationDateTime":"2021-08-21T00:51:56.225Z",
      "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/Movies"
    }
  }
}

最後に

今回のDynamoDBへテーブルを作成するプログラムは、ローカル環境だけでなく実際のAWS Lambdaへも利用可能です。
DynamoDBの設定部分を変更するのみで利用できます。

© DeNnie.Lab All Rights Reserved.