Lambda関数からLambda関数を呼び出す際に、invokeでパラメーターを渡した場合、呼び出される側ではそのパラメーターをどのようにして受け取ることが出来ますでしょうか?
ご教示頂ければ幸甚です。
$_POSTや$_GETでは受け取ることが出来ませんでした。
変数の受け渡しがない場合、例えばphp側で echo "test";とすると問題なく、呼び出し側でresponse(test)を受け取ることが出来ました。
呼び出し用のLambda関数 : 言語 node.js
node.js
1var aws = require('aws-sdk'); 2 3exports.handler = (event, context, callback) => { 4 5 var innerEvent = {}; 6 7 // 親イベントが受け取った情報をそのまま子に渡す(eventをそのまま渡すとコケる場合がある)※詳細は未調査 8 innerEvent.body = event.body || {}; 9 innerEvent.headers = event.headers || {}; 10 innerEvent.queryStringParameters = event.queryStringParameters || null; 11 innerEvent.pathParameters = event.pathParameters || null; 12 innerEvent.requestContext = event.requestContext || null; 13 innerEvent.body = event.body || {}; 14 innerEvent.exampleData = { "var1" : "data001" }; // 親が受け取ったデータ以外の情報を追加で渡す場合 15 innerEvent = JSON.stringify(innerEvent); 16 17 var lambda = new aws.Lambda({apiVersion: '2015-03-31'}); 18 var params = { 19 FunctionName: "sample_php", 20 InvocationType: "Event", // 非同期呼出 21 //InvokeArgs: 22 //InvocationType: "RequestResponse", //同期呼出 23 Payload: JSON.stringify({ 24 "key_1": 'var_A', 25 "key_2": 'var_B', 26 "key_3": 'var_C' 27 }), 28 }; 29 30 lambda.invoke(params, function(err, data){ 31 if(err) { 32 context.done(err, err); 33 } else { 34 // 子から受け取ったレスポンスをそのまま返す 35 var result = { "statusCode" : 502 }; 36 var childRes = data.Payload || data || {}; 37 if (childRes && typeof(childRes) === "string"){ 38 childRes = JSON.parse(childRes); 39 } 40 if (childRes.statusCode) { 41 result.statusCode = childRes.statusCode; 42 } 43 if (childRes.headers) { 44 result.headers = childRes.headers; 45 } 46 if (childRes.body) { 47 result.body = childRes.body; 48 } 49 console.log("data: "); 50 console.log(data); 51 console.log("result: "); 52 console.log(result); 53 callback(null, result); 54 } 55 }); 56}; 57
呼び出されるLambda関数 : 言語 php
php
1//受け取った変数をそのまま返す 2<?php 3function hello($eventData) : array 4{ 5 return $eventData; 6}
#結果
START RequestId: 9f28b8cc-91ba-4fa1-ab72-d63d6b220a56 Version: $LATEST
2019-05-27T05:06:48.703Z 9f28b8cc-91ba-4fa1-ab72-d63d6b220a56 INFO data:
2019-05-27T05:06:48.703Z 9f28b8cc-91ba-4fa1-ab72-d63d6b220a56 INFO { StatusCode: 202, Payload: '' }
2019-05-27T05:06:48.703Z 9f28b8cc-91ba-4fa1-ab72-d63d6b220a56 INFO result:
2019-05-27T05:06:48.703Z 9f28b8cc-91ba-4fa1-ab72-d63d6b220a56 INFO { statusCode: 502 }
END RequestId: 9f28b8cc-91ba-4fa1-ab72-d63d6b220a56
#参考サイト
https://www.magata.net/memo/index.php?AWS%20Lambda%A4%AB%A4%E9Lambda%A4%F2%B8%C6%A4%D6
https://github.com/stackery/php-lambda-layer