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!"
がログに出ます。
関連記事



