1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-05-18

概要

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

1.DynamoDBのテーブル作成

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

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のメゾットを作成しました。
image.png

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"を押します。
image.png

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

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?