LANG SELRCT

コードを書く場所についてはこちら

2019年2月23日土曜日

API Gatewayに渡されたpayloadをLambda Function側で取得したい


Lambda Function とAPI Gateway を使ったことがない場合

endpointにパラメータを付けるやり方は
AWS LambdaでAPI Gatewayのクエリパラメータを取得したい(GASでfetch)
に書きました。

ここではpayloadでクエリパラメータと同じようにデータを渡してみます。

  var payload = {
    'data':{
    'key': 'value'
   }
  }


Google Apps Script側のコード

コード.gs
function run() {
  var url = 'https://API_ID.execute-api.us-east-1.amazonaws.com/default/FUNCTION_NAME';
  var payload = {
    'data':{
    'key': 'value'
   }
  }
  var json = JSON.stringify(payload);
  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': json
  }
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}
意訳
この機能がやること
API Gatewayのendpoint
payloadという入れ物を作って
dataの中で
'key': 'value'を入れて


payloadをJSONに変換して
optionsという入れ物を作って以下のプロパティを入れて
'method': 'post',
'contentType': 'application/json',
'payload': json

urlに渡してデータを取得して
ログに出す



Lambda 側のコード

index.js
exports.handler = async (event) => {
    var body = event['body'];
    var jobj = JSON.parse(body);
    var data = jobj['data'];
    var response = {
        body: JSON.stringify(data),
    };
    return response;
};
意訳
この機能がやること
eventからbodyを取得して
オブジェクトに変換して
dataを取得して
返すオブジェクトを作って
JSONに変換してbodyの値にして

返す



実行結果

Google Apps Script側のログに以下のように出る

 {"key":"value"}


関連記事