背景
はじめて業務でDynamoDBを使用したため、基本的なものだがメモを残して、自身のナレッジとして蓄えようかと
環境
- node.js
- DynamoDB
- Lambda
経験した関数
登録
- put
パラメータ
- TableName: テーブル名
- Item: 登録対象
ex))
TableName: 'test-table',
Item: {
'id': 1,
'name': 'test',
}
取得
- get
パラメータ
- TableName: テーブル名
- Key: AttributeValueのカラム名(一般的なTableのprimary key)
ex))
TableName: 'test-table',
Key: {
'id': 1
'sort': 1
}
検索
- scan
パラメータ
- TableName: テーブル名
- FilterExpression: SQLの条件式
- ExpressionAttributeValues: SQLの条件式に設定する値
ex))
TableName: 'test-table',
FilterExpression: 'created_at = :now',
ExpressionAttributeValues: {
':now': '2021-01-01 00:00:00'
}
削除
- delete
パラメータ
- TableName: テーブル名
- Key: AttributeValueのカラム名(一般的なTableのprimary key)
ex))
TableName: 'test-table',
Key: {
'id': 1
}
ハマったこと
-
動作確認で
ListTables
を使ったが、廃止になっていた。。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/API_ListTables_v20111205.html -
Scan関数1回で取得できる容量は最大
1MB
。最大容量以上のデータを取得する場合は複数回関数を呼び出さなければ正常な動作をしない
https://qiita.com/naoko_s/items/e88928a95bb7f76e1bf0 -
Scan関数の
FilterExpression
はScanで全件取得した後にFilterExpressionの条件でフィルタをかけるので、場合によっては期待通りの結果にならない場合があった。。
今後のチャレンジ
- 参考リンクに他の関数もあったので、使ってみようかな