基本的なREST-APIをAWSのAPI GatewayとLambdaとDynamoDBで作るための参考サイトまとめ
ゼロからAWSでREST-APIを一気通貫で実装してみましたが、それなりの苦労があったため、次はもっと効率よく作りたいので、参考サイトをまとめておきたいと思います。
やってみたこと
超シンプルなREST-APIを作ってみました。シンプルですがいろいろ知る必要がありました。
- 一覧は、GETでパスパラメータがあり、パーテーションキーだけ渡す、レスポンスはJSONでBODYが配列
- 追加は、POSTでパスパラメータがあり、パーテーションキーだけ渡す、リクエスト本文はJSON、レスポンスもJSONでBODYが1件、ソートキーが採番される
- 更新は、PATCHでパスパラメータがある、パーテーションキー、ソートキーを渡す、リクエスト本文はJSON、レスポンスもJSONでBODYが1件
- 検索は、GETでパスパラメータがある、パーテーションキー、ソートキーを渡す、リクエスト本文はなし、レスポンスはJSONでBODYが1件
- 削除は、DELETEでパスパラメータがある、パーテーションキー、ソートキーを渡す、リクエスト本文はなし、レスポンスはJSONでBODYが0件
参考サイトまとめ
知る必要があった情報を使う順番に書いておきたいと思います。API GatewayとLambdaとの繋がりを確認することと、REST-APIを作るためにLambdaを使ってDynamoDBで必要な処理を実装すること、をそれぞれ行うこととなります。
API GatewayとLambdaとの繋がりを確認する
-
APIGatewayとLambdaを使う場合、まずプロキシ統合が気になりますので確認しました
-
APIGatewayとLambdaでの値の受け渡し方を理解するために、プロキシ統合を使わず、マッピングテンプレートを活用する方法を確認しました
- https://dev.classmethod.jp/articles/sugano-009-api-gateway/
- https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/set-up-lambda-custom-integrations.html
- https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-override-request-response-parameters.html
- https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#input-variable-reference
REST-APIを作るためにLambdaを使ってDynamoDBで必要な処理を実装する
-
REST-APIを作るために、リソースとかメソッドの設定のあるべき姿を確認しました
-
APIGatewayだけをとにかく動かして、REST-APIはどういうものかを実装したかったので、Mockを活用しました
-
実際にコードを書いていくために、PythonとAPIGatewayとLambdaとDynamoDBを一気通貫で動かすために必要な処理を確認しました
-
ソートキーは自動採番したいのでDynamoDBのアトミックカウンターを利用する方法を理解しました
-
Lambdaにて、リクエスト本文の値をそのまま利用する作りにしたため、最後に、パスパラメータとリクエスト本文をマッピングテンプレートで合体してリクエスト本文にする方法を確認しました
まとめ
これくらい参考にすれば、基本的なREST-APIをAWSのAPI GatewayとLambdaとDynamoDBで一気通貫で作れました。参考サイトを一気に読んで、だいたいの作りをイメージしたものを、まとめてコードにできるようになれれば効率が良さそうです。
以上
Author And Source
この問題について(基本的なREST-APIをAWSのAPI GatewayとLambdaとDynamoDBで作るための参考サイトまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/amemolee/items/1e0a0c71f8e6ff25ec1c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .