やりたいこと
AWS lambdaで実行した結果がバイナリーデータでしか受け取れず、
戻り値が活用できない。
戻り値を活用できるようにバイナリーデータを変換したい。
実現方法
TextDecoder
を利用してASCII
形式に変換をする。
実装方法は下記となる。
(lambda実装はReactを使ってAWS lambdaを実行する方法 - 初心者SEのつぶやき の記載参考)
// lambdaの実行 const lambdaResponse = await lambda.send(lambdaCommand); //「Uint8Array(57) [34, 123, 92, 110, 32, 30.....」のようなデータが出力される。 console.log("Lambda response:", lambdaResponse.Payload); // asciiに変換処理 const asciiDecoder = new TextDecoder('ascii'); const data = asciiDecoder.decode(lambdaResponse.Payload); console.log("Lambda response body:", data);
lambda側での実装は下記となる。
import json def lambda_handler(event, context): params = { 'statusCode':200, 'body': 'success!!' } resp = json.dumps(params, ensure_ascii=False, indent=2) return resp
実行後、下記が出力された。
Lambda response body: "{\n \"statusCode\": 200,\n \"body\": \"success!!\"\n}"
感想
lambdaからのレスポンスが受け取れなくて頭を悩ませていたので、
解決ができて安堵している。
今回の内容が参考になったら幸いです。