Lambda Function とAPI Gateway を使ったことがない場合
→AWS LambdaとAPI Gatewayを使ってみる
API Gateway の Security 設定を「Open」にしておくと誰でも利用できますが、「Open with API key」にすると、API Key なしでは Lambda function を実行できなくなります。
API Keyを設定する手順
STEP1:「Open with API key」を選択します
STEP2:「Add」をクリックします
STEP3:「Save」をクリックします
API Keyが発行されます
API endpointにアクセスしてみると
{"message":"Forbidden"}
と表示されると思います。
API Keyを渡さないとLambda Functionを実行できないことがわかったところで、API Keyを渡す方法を試してみます。
Google Apps ScriptでendpointにAPI Keyを渡して
Lambda functionの戻り値をログに出してみるコード
コード.gs
function run() { var url = 'https://API_ID.execute-api.us-east-1.amazonaws.com/default/FUNCTION_NAME'; var options = { 'method': 'post', 'contentType': 'application/json', 'headers': get_headers() } var response = UrlFetchApp.fetch(url, options); Logger.log(response); } function get_headers() { var headers = { "x-api-key": getProp('apigateway_key') } return headers; } function getProp(key) { return PropertiesService.getScriptProperties().getProperty(key); } |
意訳この機能がやること API Gatewayのendpoint endpointにわたすoptionsを作成する methodはpost contentTypeはapplication/json headersはスクリプトのプロパティのapigateway_keyの値 urlにoptionsを渡してデータを取得して ログに出す この機能がやること headersという入れ物を作って スクリプトのプロパティのapigateway_keyをx-api-keyの値として 返す この機能がやること 受け取ったkeyの値をスクリプトのプロパティから取得して返す |
Lambda 側のコードはデフォルトのまま'Hello from Lambda!'を返すだけにしておきます
index.html
exports.handler = async (event) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; }; |
意訳この機能がやること コメント responseの入れ物を作って statusCodeの値は200 bodyの値はJSON変換したメッセージ 返す |
実行結果
コード.gsのrun()を実行すると
"Hello from Lambda!"
がログに出ます。
コード.gsのrun()を実行すると
"Hello from Lambda!"
がログに出ます。
関連記事