背景・目的
- LambdaからDynamoDBを操作するで作成したLambdaをWebリクエストをもとに実行したい。
- 今回は、API Gatewayを使って実行する。
- 本ページでは、まずAPI Gatewayのチュートリアルを対象とし、実際に接続する方法は次回以降に試す。
概要
API Gatewayとは
- REST、HTTP、WebSocketなどのAPIを作成、公開、維持、モニタリング、セキュア化するためのサービス
- 最大で数十万個の同時 API コールの受け入れ処理に伴うすべてのタスクを取り扱う
特徴
- ステートフル (WebSocket) およびステートレス (HTTP と REST) API のサポート。
- 強力で認証メカニズム
- IAMポリシー
- Lambdaオーソライザー関数
- Cognitoユーザプール
- API発行するための開発者ポータル
- 変更を安全に進めるためのCanaryリリースのデプロイ
- APIの使用状況と、APIの変更に関するCloudTrailログ記録とモニタリング
- CloudWatchのログ記録
- アクセスログ
- 実行ログ
- CloudFormation対応
- AWS WAFとの統合
- X-Rayとの統合
実践
ドキュメントを参考に、実際に作成し動かしてみる。
ステップ 1: Lambda 関数を作成する
- 既に作成したLambda関数を使用する。レスポンスの形式はLambada関数レスポンス2.0であれば、メッセージだけ返せばAPI Gatewayで解釈するらしい。(詳細は、こちらを参照)
- カスタマイズする場合は、以下のように修正する必要がある。
{
"cookies" : ["cookie1", "cookie2"],
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headername": "headervalue", ... },
"body": "Hello from Lambda!"
}
- 今回は、bodyに詰めるメッセージだけ変更する。
return '{"message","finish!"}'
ステップ 2: HTTP API を作成する
- REST APIではなくHTTP APIで試す。
1.API Gatewayコンソールで「HTTP API」の構築をクリック。
2.APIの作成では、以下を入力し「次へ」をクリック。
- 統合をLambda
- AWSリージョンをap-northeast-1
- Lambda関数をexternal_request_func
- バージョンを2.0
- API名をexternal_request_api
3.ルートを設定では、以下を設定し「次へ」をクリック。
4.ステージを定義では、デフォルトのまま「次へ」をクリック。
5.確認して作成画面で「作成」をクリック。
- ブラウザでアクセスし、確認する。
7.DDBも確認する。
実行した直後のデータが入っていることを確認できた。
考察
- 今回は、HTTP APIを使用したが、次回はREST APIを試す。
参考