概要
Postmanを用いてJSONをPOSTし、JSON内の情報をDynamoDBに格納するための環境を構築したためメモを残します。
1.DynamoDBのテーブル作成
パーティションキーとソートキーは以下のように設定しました。右下の青い作成ボタンを押すとテーブルが作成されます。
2.Lambda関数の作成
JSONの情報をDynamoDBに格納する仕事をしてくれるLambda関数を作成します。ランタイムはPython 3.7を用いました。
IAMでLambdaがDynamoDBに書き込みできるようにロールを作成し、適用してください。
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":""
}
以上です。間違いに気づいたらご指摘をお願いします。