🐑
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