DynamoDBClientの書き込みコマンドは、PutItemCommand、BatchWriteItemCommand があります。
PutItemCommand
参考
DynamoDBのテーブルはCKDなどで先に作成しておきます。今回は以下のようなテーブルとします。
パーティションキー 名前 pk 型 文字型 ソートキー 名前 sk 型 文字型
例 PutItemCommandを使った書き込み
import { DynamoDBClient, PutItemCommandInput, PutItemCommand } from '@aws-sdk/client-dynamodb'; import { marshall } from '@aws-sdk/util-dynamodb'; const getDynamoDBTableName = () => 'dynamodb-test-table'; const getConfig = () => ({ region: 'ap-northeast-1' }); const getDynamoDBClient = () => { const config = getConfig(); const client = new DynamoDBClient(config); return client; } interface TestItem { pk: string; sk: string; count: number; } const putItem = async (item: TestItem, options?: PutItemCommand) => { try { const tableName = getDynamoDBTableName(); const client = getDynamoDBClient(); const params: PutItemCommandInput = { TableName: tableName, Item: marshall(item), ...options, }; const command = new PutItemCommand(params); const result = await client.send(command); return result; } catch (err) { console.log(err); throw err; }; } /** * 実行方法 * npx ts-node WriteSample.ts */ (async () => { const dt = new Date("2024-05-01T00:00:00.00Z"); for (let i = 0; i < 24*3; i++) { const item: TestItem = { pk: `東京都新宿区#${dt.toISOString().substring(0, 10)}`, sk: dt.toISOString(), count: (i + 1) * 100, } await putItem(item); dt.setHours(dt.getHours() + 1); } })();
PutItemCommandのItem指定について
util-dynamoDBのmarshall関数を使用しない場合、PutItemCommandのItem指定は以下のような形式にする必要があります。
const params: PutItemCommandInput = { TableName: tableName, Item: { ["pk"]: { S: item.pk }, // DynamoDBClientの場合、パーティションキーをこのように指定する sk: { S: item.sk }, count: { N: `${item.count}` }, }, ...options, };