😽

AWS Lambda + Amazon API Gateway + DyanamoDBでREST APIを作成するときのメモ

2023/09/14に公開

Lambda + API Gateway + DynamoDBによってお手軽にREST APIを実装することができるようです。本記事はこの組み合わせを試してみたときのメモです。

DynamoDBを用意する

AWSのコンソールからDynamoDBと検索して,DynamoDBの操作画面に入ります。そこでCreate Tableを選択し,新規にテーブルを作成しましょう。Table nameはpost,Partition keyはidとかにして,最下部にあるCreate Tableを押すとTableが作成されます。これでDynamoDBの準備はOKです。

一応テスト用に簡単なデータを登録しておきましょう。DynamoDBの操作画面の右メニューからTables/Explore itemsを選択してください。出てきた画面でcreate itemを選択し,適当にデータを突っ込んでおきましょう。

Lambdaの関数を用意する

DynamoDBに入れたデータを取り出すための関数をLambdaで作成しましょう。コンソールの検索画面からLambdaと検索してLmabdaの操作画面に入り,create functionを選択してください。function nameはget_postとかにしましょう。Runtimeはなんでもいいですが,私はPython3.11にします。入力したらcreateを押して関数を作成します。

code入力画面が出てくるので以下のコードを入力してください。

import boto3

dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table("post")

def operation_scan():
    scanData = table.scan()
    return scanData

post tableをスキャンするだけの簡単な関数です。

codeを書き換えたらDeployを押して関数をデプロイします。お好みに応じてテストとかをしてもいいと思います。これでLambdaの関数の準備はOKです。

API Gatewayの準備をする

コンソールからGatewayと検索して,API Gatewayの操作画面に入ります。create APIからREST APIを選択します。API nameにpostとか適当に入力し,createを押してAPIを新規作成します。

ActionsからCreate Methodを押し,GETメソッドを作成します。Lambda Functionには先ほど作成したget_postを選択しましょう。Saveを押して保存します。

出てきた画面でIntegration Request→Mapping Template→Add mapping templateと選択し,
Content-Typeにapplication/jsonを追加します。

最後にActionsからDeploy APIを選択してAPIをデプロイします。deploy stageは適当にdevとかにしておきましょう。Invoke URLが発行されるので,ここにアクセスするとLamndaのget_postが走ります。表示されるjsonのitemsに先ほどDynamoDBに追加したデータがあることが確認できるはずです。

終わり

これでAPI Gatewayを利用してLambdaの関数を呼び出すことができるようになりました。とりあえずこれでAPIの実装はできるはずです。ただ,まだカスタムドメインの設定ができていません。これはまた今度で。

Discussion