やりたいこと
とあるLambda関数Aから別のLambda関数Bを呼び出して、
関数Bの処理が終わったら関数Aの処理にもどるような仕組みをつくりたい。
環境
- AWS SDK for JavaScript v3
- Node.js 18
ソースコード
Lambda関数 test_method_A
この関数には、事前に「lambda:InvokeFunction」の権限を与えておくこと。
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda"; export const handler = async (event) => { const client = new LambdaClient(); const input = { FunctionName: "test_method_B" }; const command = new InvokeCommand(input); const res = await client.send(command); //Uint8Arrayで返却されるためデコードする。 const decoder = new TextDecoder(); const text = decoder.decode(res.Payload); console.log(text); const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
Lambda関数 test_method_B
export const handler = async(event) => { const response = { statusCode: 200, body: JSON.stringify('I\'m method B!'), }; return response; };
実行結果
test_method_Bのデータを取得できた。
INFO {"statusCode":200,"body":"\"I'm method B!\""}