これは何をしたくて書いたもの?
私個人として、現在業務でアプリ開発に利用しているReact NativeをAWSと連携させたいと考えているため、そのための学習の一環としてReact Nativeの通信先のREST APIを提供できるAPI Gatewayを構築して、その挙動を確認してみることにしました。
CDKにはaws-cdk-examplesというサンプルプロジェクトをまとめたリポジトリがあります。今回はその中のapi-cors-lambda-crud-dynamodbというサンプルを実際にデプロイして動かしてみます。
構成
cdk deploy
で構築できるリソースは、大まかには以下の画像の通りです。構築されるリソースの詳細は、index.tsに記載されています。
-
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処理を作る時にたたき台として使えるところも使い勝手が良いと感じました。
今後も、他サンプルを実際にデプロイして動作を確認してみることで環境構築力を鍛えていきたいと思います。