AWS Lambda + Amazon API Gateway + DyanamoDBでREST APIを作成するときのメモ
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