🐑
Amazon API Gateway とAWS Lambdaを使ってAPIを作る
AWS Lambdaを使ってみたかったので、Amazon API Gatewayを使ってAPIを作成し、動作確認をします
事前準備
- AWSアカウントの作成、IAMユーザの作成をします。
- 以下のドキュメントを参考にしてください。
AWS Lambdaで関数を作成する
- AWSマネジメントコンソールで
lambdaと検索し、AWS Lambda コンソールを開きます - 画面右上の
関数の作成をクリックします

- 以下の設定にします
- 関数名:
hello-lambda - ランタイム:
Node.js 14.x - アーキテクチャ:
x86_64 - 実行ロール:
基本的な Lambda アクセス権限で新しいロールを作成
- 関数名:
- 画面右下の
関数の作成をクリックします


API Gatewayを作成する
- AWSマネジメントコンソールで
API Gatewayと検索し、API Gatewayのコンソールを開きます -
HTTP APIの構築をクリックします

APIの作成
- APIの作成画面で
統合を追加をクリックします

- 以下の設定にします
- 統合:
Lambda - AWSリージョン: Lambdaの関数を作成したリージョンを指定してください
- Lambda関数:
hello-lambda(先ほど作成した関数を指定してください) - バージョン:
2.0 - API名:
hello-lambda-api
- 統合:
- 画面右下の
次へをクリックします

ルートの作成
- 以下の設定にします
- メソッド:
ANY(実際にAPIを使うならメソッドはGETとかPOSTとか用途に合わせて設定する) - リソースパス:
hello-lambda - 統合ターゲット:
hello-lambda
- メソッド:
- 画面右下の
次へをクリックします

ステージを定義
- 以下の設定にします
- ステージ名:
$default - 自動デプロイ:
ON
- ステージ名:
- 画面右下の
次へをクリックします

確認して作成
- 画面右下の
作成をクリックします

APIエンドポイントを確認する
- AWSマネジメントコンソールで
lambdaと検索し、AWS Lambda コンソールを開きます - 関数から先ほど作った
hello-lambdaをクリックします -
設定タブの中にAPI Gatewayのトリガーが追加されており、そこでAPIエンドポイントを確認できます- (例)
https://xxxxxx.execute-api.<region>.amazonaws.com/hello-lambda
- (例)

APIの動作を確認する
- ターミナルを開いて、以下のコマンドのAPIエンドポイントの部分を変更し、実行してください
-
Hello from Lambda!というレスポンスが返って来れば成功です🎉
$ curl {APIエンドポイント}
# 例
$ curl https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/hello-lambda
データをPOSTしてレスポンスを変える
- Lambda関数の実装を変更してみます
- POSTされたデータ(
name)を受け取り、そのデータをもとにレスポンスを返します - Lambdaコンソールの
コードタブで以下の実装に書き換えてください - 実装を変更したあと、
Deployボタンをクリックしてください
exports.handler = async (event) => {
const name = JSON.parse(event['body'])['name'];
const response = {
statusCode: 200,
body: JSON.stringify(name),
};
return response;
};

データをPOSTしてAPIの動作を確認する
- ターミナルを開いて、以下のコマンドのAPIエンドポイントの部分を変更し、実行してください
-
Hello KIMURAというレスポンスが返って来れば成功です🎉
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"KIMURA"}' {APIエンドポイント}
# 例
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"KIMURA"}' https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/hello-lambda
後片付けをする
- 以下の各AWSコンソール画面にアクセスし、作成されたものを削除してください
Lambda
- 関数
hello-lambdaを選択し、アクションボタンから削除します

API Gateway
-
hello-lambda-apiを選択し、アクションボタンから削除します

Identity and Access Management (IAM)
- Lambda関数を作る際、
実行ロールの設定で新しいロールを作成を選択していたので、削除します - ロール名が
hello-lambda-role-xxxxxとなっているロールを選択し、削除します

- またAPI GatewayでLambda関数と統合する際にポリシーが作成されているので、削除します
- ポリシー名が
AWSLambdaBasicExecutionRole-xxxxxx、 タイプがカスタマー管理のものを選択し、アクションボタンから削除します

Cloudwatch
- Lambda関数のログを取得するためのロググループが作成されているので、削除します
-
/aws/lambda/hello-lambdaというロググループを選択し、アクションボタンから削除します

Discussion