今回は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の設定部分を変更するのみで利用できます。
