2017-04-24 6 views
0

私はSQSメッセージ処理のためにPython2.7ランタイムを使って2つの基本的なラムダを動かそうとしています。 1つのラムダはSQSを呼び出し、コンテキストを介して別のラムダにデータを渡します。私は他のラムダを呼び出すことができますが、ユーザコンテキストは空です。別のラムダ非同期を呼び出し、そのコンテキストにコンテキストを渡す方法は?

import boto3 
import base64 
import json 
import logging 

messageDict = {'queue_url': 'queue_url', 
     'receipt_handle': 'receipt_handle', 
     'body': 'messageBody'} 
ctx = { 
    'custom': messageDict, 
    'client': 'SQS_READER_LAMBDA', 
    'env': {'test': 'test'}, 
} 

payload = json.dumps(ctx) 
payloadBase64 = base64.b64encode(payload) 

client = boto3.client('lambda') 
client.invoke(
    FunctionName='LambdaWorker', 
    InvocationType='Event', 
    LogType='None', 
    ClientContext=payloadBase64, 
    Payload=payload 
) 

そして、これは私が内部のコンテキスト変数の内容を検査し、印刷しようとしている方法であるラムダを呼び出したので、私はCloudWatchの中にログをチェックできます:これはSQSリーダーラムダの私のコードです

memberList = inspect.getmembers(context) 
    for a in memberList: 

     logging.error(a) 

問題は何もありませんが動作し、CloudWatchのは、ユーザーコンテキストが空であることを示している:私が試した

('client_context', None) 

example1example2example3example4

答えて

2

私は文脈を通してデータを渡そうとしました。しかし、私は、ペイロードのparamを介してデータを渡すことができました:内部呼び出されたイベントパラメータからそれを読んで、その後

client.invoke(
    FunctionName='LambdaWorker', 
    InvocationType='Event', 
    LogType='None', 
    Payload=json.dumps(payload) 
) 

そしてラムダ:

ctx = json.dumps(event) 
関連する問題