【AWS】Lambdaから別のLambdaを呼んでみた(invoke)【サーバーレス】
こんにちは!nomurabbitです。
今回は、
Lambdaから他のLambdaを呼び出す方法を
紹介します。
AWSDSKでは
Invokeと呼ばれる方法ですね!
テンプレートの準備
まず、Lambdaのテンプレートを準備します。
.NET Core3.1のテンプレートは、
この記事やこの記事を参考にしてください。
.NET toolsのコマンドはこんな感じです。
dotnet new lambda.EmptyFunction --name 20211113_my_glb_invokesample
ソースコード
呼び出し元でAWSSDK.Lambdaが必要なので、
nugetでパッケージを追加します。
今回はAmazonLambdaClientを使います。
ソースコードのポイントは下記の通りです。
private async Task<string> InvokeAccess(ApiRequestBody apiRequestBody) { try { var client = new AmazonLambdaClient(Amazon.RegionEndpoint.APNortheast1); var request = new InvokeRequest() { FunctionName = ApiUtil.MY_GLB_INVOKESAMPLE, InvocationType = InvocationType.RequestResponse, Payload = JsonSerializer.Serialize(GetInvokePayload(apiRequestBody)) }; var response = await client.InvokeAsync(request); using(var stream = new StreamReader(response.Payload)) { return await stream.ReadToEndAsync(); } } catch (System.Exception e) { throw e; } }
AmazonLambdaClientのInvokeAsyncメソッドの引数が
InvokeRequestのインスタンスになっています。
GitHubにソースコードを載せていますので、
よろしければ参考にしてください。
呼び出す方(呼び出し元)
github.com
呼び出される方
github.com
messageを送ると、文末に「: I received a message.」と追加されて
レスポンスが返ってくるプログラムです。
以上でLambdaから
別のLambdaを呼び出すことができると思います。
よかったら試してみてください。
では!