はじめに
Lambdaのデータストア先としてDynamoDBを使ってみたので構築手順や仕様についての知見をまとめておきます。
DynamoDBの特徴
- NoSQL
- 自動パーティショニング
料金
-
キャパシティーユニット
- 読み込み/書き込み容量の上限
- 説明が難しいのでここでは割愛しますが、頻繁にデータの読み書きが発生しなければそこまで料金はかかりません。
- 読み込み/書き込み容量の上限
- ストレージ
- 25 GB/月までは無料
- それ以降は月額 0.25 USD/GB
- データ転送
- 同AWSアカウントリージョン内の他のAWSサービスへの転送は無料
選定理由
Lambdaでコンテナを並列で複数台起動した際にRDBMSだと最大コネクション数が少なく、基本的に相性が良くないため(MySQLのt2.mediumでも150が限界)
作りかた

初期設定はテーブル名とプライマリキーのみ!!!(お手軽)
プライマリキーは下記3つの型から選択します。
- 文字列
- バイナリ
- 数値
ソートキーを追加すると複合キーのように利用することも可能です!
ScanとQueryの違い
Scanはテーブル全体を検索し、Queryはプライマリーキー(ソートキー)を条件に特定範囲内の検索となります。Scanは負荷が高くなるのでなるべくはQueryを利用しましょう!
まとめ
ストレージも気にせず、チューニングも不要なので管理はとても楽です!
テーブル設計さえきちんと出来ていればこれほど便利なものはないと思いました!
ただ、クエリの書き方が独特だったのでその辺さえ気をつければ問題ないかと思います。
ハマりポイント
1リクエストの上限が1MBなので一気に取得する際は LastEvaluatedKey
がなくなるまで繰り返し取得する処理の実装が必要となる。
参考サイト
MongoHQとAmazon DynamoDBの比較
なぜAWS LambdaとRDBMSの相性が悪いかを簡単に説明する
DynamoDBについて今更調べたのでメモ | 株式会社ランチェスター