次のように既存のラムダ機能から別のラムダ関数を呼び出そうとしています(python 2.7)
from __future__ import print_function
import boto3
import json
lambda_client = boto3.client('lambda')
def lambda_handler(event, context):
invoke_response = lambda_client.invoke(FunctionName="teststack",
InvocationType='RequestResponse'
)
print(invoke_response)
return str(invoke_response)
実際の結果ではなく、以下の応答を取得しています。 teststack lambdaを個別に実行すると正常に動作しますが、teststack
Lambda関数によって返される "test"の代わりに応答以下になります。
{u'Payload': <botocore.response.StreamingBody object at ****>, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': '******', 'HTTPHeaders': {'x-amzn-requestid': '******', 'content-length': '155', 'x-amzn-remapped-content-length': '0', 'connection': 'keep-alive', 'date': 'Sun, 17 Jul 2016 21:02:01 GMT', 'content-type': 'application/json'}}, u'StatusCode': 200}
探している応答データはそこにあり、 StreamingBody オブジェクトとしてPayload
の中にあります。
Botoのドキュメントによると、read
メソッドを使用してオブジェクトを読み取ることができます。
invoke_response['Payload'].read()