Dict応答を返す単純なラムダ関数があり、別のラムダ関数がその関数を呼び出して応答を出力します。
ラムダ関数A
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
Aを呼び出すラムダ関数B
a=[1,2,3]
x = {"list" : a}
invoke_response = lambda_client.invoke(FunctionName="monitor-workspaces-status",
InvocationType='Event',
Payload=json.dumps(x))
print (invoke_response)
invoke_response
{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202}
なぜ応答ステータス202ですか?また、invoke_responseから応答データを取得する方法は?私はそれを行う方法の明確なドキュメントを見つけることができませんでした。
202
応答はAccepted
を意味します。これは成功した応答ですが、要求したアクションが開始されたがまだ完了していないことを示しています。 202
を取得している理由は、Lambda関数を非同期で呼び出したためです。 InvocationType
パラメーターはEvent
に設定されます。同期呼び出しを行う場合は、これをRequestResponse
に変更します。
これを行うと、次のような返されたデータを取得できます。
data = invoke_response['Payload'].read()