PostmanでJSONをPOSTし、DynamoDBに格納したときのメモ


概要

Postmanを用いてJSONをPOSTし、JSON内の情報をDynamoDBに格納するための環境を構築したためメモを残します。

1.DynamoDBのテーブル作成

パーティションキーとソートキーは以下のように設定しました。右下の青い作成ボタンを押すとテーブルが作成されます。
 

2.Lambda関数の作成

JSONの情報をDynamoDBに格納する仕事をしてくれるLambda関数を作成します。ランタイムはPython 3.7を用いました。
IAMでLambdaがDynamoDBに書き込みできるようにロールを作成し、適用してください。

data-store.py
import boto3
from decimal import Decimal

dynamodb = boto3.resource('dynamodb')

def fill_empty_item(event):
    for key in event:
        if event[key] == "":
            event[key] = "(null)"
    return event

def put_item(event, table_name):
    table = dynamodb.Table(table_name)
    for key in event:
        if type(event[key]) is float:
            event[key] = Decimal(str(event[key]))
    table.put_item(
        Item = event
        )

def lambda_handler(event, context):
    fill_empty_item(event)
    put_item(event, "test-table")

3.APIを作成

API GatewayからAPIを作成します。REST APIのタイル上にある構築を押します。
アクションからdata-store-apiのリソースを作成し、POSTのメゾットを作成しました。

POST-セットアップのLambda 関数の項目で2.で作成したLambda関数を選択します。
その後、/data-store-apiの階層を選択し、アクションからCORSの有効化及びAPIのデプロイを行います。
APIのデプロイが完了するとURLの呼び出しでURLが表示されますが、Postmanで用いるURLではありません。
Postmanで用いるURLはステージからPOSTのメゾットを選択したときに確認できます。

4.PostmanでJSONをPOST

ステージから確認できるPOSTのAPIにおけるURLをPostmanに貼り付けます。
BodyにJSONの情報を格納します。今回はrawを選択し、以下の情報を入力しました。
{
"DeviceId": "001",
"Timestamp": "2021-05-18",
"SensorData": 0.05,
"hoge":""
}

最後に右の青いボタン"Send"を押します。

すると、1.で作成したテーブルにアイテムが追加されます。

以上です。間違いに気づいたらご指摘をお願いします。