🥋

AWS DynamoDBに自分で型付与せずにデータを入れる方法

2022/02/09に公開

DynamoDBにデータを入れるには型付与が必須ぽい

例えばDynamoDBにデータを入れたいってなったとき、

"epicenter": {
   "lat": 35.4,
   "lng": 136.6,
},

こんなデータだった場合は

"epicenter": {
  "M": {
    "lat": {
      "N": 35.4
    },
    "lng": {
      "N": 136.6
    }
  }
},

こんな感じにしなくてはいけません。

上記のような値が定まっているMap型のデータであればよいのですが、Mapを複数所持しているList型データの場合などは、このようにフォーマットするのがめんどくさいなぁと思いました。

そしたらちゃんと用意されていました。
公式Docに書いてあるmarshallというものです。

マーシャルとは異なる技術基盤で実装されたコンピュータプログラム間で、データの交換や機能の呼び出しができるようデータ形式の変換などを行うことです。:IT用語辞典より

例えばAWS-SDK V3で使う場合は

import { marshall } from '@aws-sdk/util-dynamodb'

のようにimportし、

    const params = {
      TableName: 'EarthquakeTable',
      Item: marshall(mapData),
    }

のようにItemをmarshallでくくればあとはいい感じにやってくれます。

Discussion