1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【aws-cdk-examples】API GatewayからLambda経由でDynamoDBを参照/更新する

Last updated at Posted at 2024-04-06

これは何をしたくて書いたもの?

私個人として、現在業務でアプリ開発に利用しているReact NativeをAWSと連携させたいと考えているため、そのための学習の一環としてReact Nativeの通信先のREST APIを提供できるAPI Gatewayを構築して、その挙動を確認してみることにしました。
CDKにはaws-cdk-examplesというサンプルプロジェクトをまとめたリポジトリがあります。今回はその中のapi-cors-lambda-crud-dynamodbというサンプルを実際にデプロイして動かしてみます。

構成

cdk deployで構築できるリソースは、大まかには以下の画像の通りです。構築されるリソースの詳細は、index.tsに記載されています。
image.png

  • OPTIONSメソッドはCORS設定をするために作られています
  • LambdaはNode.jsランタイムの関数が複数構築されています
  • API GatewayとLambdaの間は「Lambda統合」というリソースで接続されているようです

実行コマンド例

本来はReact Nativeアプリからのリクエスト送信の実装サンプルを書きたいのですが、いったんはcurlコマンドの例を記載します。

新規作成
curl -X POST '<API GatewayのURL>/items/' -H 'Content-Type:application/json' -d '{"id": "002","name": "Takeru Minami"}'
全件取得
curl -X GET '<API GatewayのURL>/prod/items/' -H 'Content-Type:application/json'
一件削除
curl -X DELETE '<API GatewayのURL>/prod/items/<itemId>' -H 'Content-Type:application/json'
一件取得
curl -X GET '<API GatewayのURL>/prod/items/<itemId>' -H 'Content-Type:application/json'
一件更新
curl -X PATCH '<API GatewayのURL>/prod/items/<itemId>' -H 'Content-Type:application/json' -d '{"id": "Minato"}'

まとめ

このサンプルプロジェクトでは任意のサイトからのCORS通信を許可することが可能になっていて便利です。
また、CRUD処理を一通り網羅しているため、業務などでCRUD処理を作る時にたたき台として使えるところも使い勝手が良いと感じました。

今後も、他サンプルを実際にデプロイして動作を確認してみることで環境構築力を鍛えていきたいと思います。

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?