💭
APIを通して、バックエンドを動かす方法
バックエンド(Lambda関数)の作成
-
AWSコンソースからLambdaの画面を開く
-
Lambda画面から関数の作成を選択
-
関数名を設定して「関数の作成」を選択
- APIが通ると"Hello from Lambda!"がレスポンス200で返却される
API Gatewayのリソースを作成する
-
AWSコンソースからAPI Gatewayの画面を開く
-
「AgileTuneAPI」→ リソース作成を選択
リソースを作成する階層とリソース名を決める
- リソースを作成する階層とリソース名を決めて、リソース作成
- 上記キャプチャだとエンドポイントは以下になる
※ステージ名はリソースのデプロイ先によって変わる
ex) https://<API ID>.execute-api.ap-northeast-1.amazonaws.com/<ステージ名>/stickys
- (補足) エンドポイントの見方
[OPRION]メソッドの作成
-
作成したリソース「stickys」を選択 → メソッド作成
-
メソッドタイプ「OPTION」、統合タイプ「Mock」を選択 → メソッド作成
[OPRION]メソッドのレスポンスルールを設定
-
メソッドレスポンスタブで編集を選択
-
以下ヘッダーを追加して保存
- Access-Control-Allow-Headers
- Access-Control-Allow-Methods
- Access-Control-Allow-Origin
-
統合レスポンスタブで編集を選択
-
ヘッダーのマッピングに以下のマッピングルールを設定して保存
- Access-Control-Allow-Headers: '*'
- Access-Control-Allow-Methods: 'GET,OPTIONS,POST'
- Access-Control-Allow-Origin: '*'
[GET]メソッドの作成
-
API Gateway画面から「AgileTuneAPI」→ 「stickys」でメソッド作成を選択
-
以下を設定してメソッド作成を選択
-
メソッドタイプ「GET」、統合タイプ「Lambda」、Lambda プロキシ統合にチェック
※POSTメソッド作成の場合はメソッドタイプ「POST」を選択。他の設定は同じ
-
Lambda関数で「GetStickys」を選択
-
メソッドリクエストの設定
-
[GET]メソッドのレスポンスルールを設定
-
メソッドレスポンスタブで編集を選択
POSTメソッドも設定は同じ
-
ヘッダーを設定して保存
- Access-Control-Allow-Origin
- Access-Control-Allow-Origin
APIリソースをデプロイする
- APIをデプロイを選択 → ステージ「dev」を選択してデプロイ
APIを送信してみる
-
API KEYの確認
-
PostmanでのAPI送信キャプチャ
Lambdaの処理が返ってきた!
-
CurlでのAPI送信
curl --location 'https://<API ID>.execute-api.ap-northeast-1.amazonaws.com/dev/stickys' \
--header 'authorizationToken: allow' \
--header 'x-api-key: <API KEY>'
(補足)Lambdaから他AWSリソースにアクセスする場合(DynamoDB)
-
設定タブのアクセス権限を選択して、ロール名を選択
-
許可の追加で「ポリシーのアタッチ」を選択
-
今回はLambdaからDynamoDBへアクセスする想定のため、「AmazonDynamoDBFullAccess」を選択して許可を追加する ※LambdaからアクセスしたいAWSリソースがあればポリシーの追加が必要
Discussion