2017-04-24 54 views
0

我正在嘗試使用Python2.7運行時爲SQS消息處理工作兩個基本lambda表達式。一個從SQS讀取的lambda調用並通過上下文將數據傳遞給另一個lambda。我可以調用其他lambda,但用戶上下文是空的。這是我的SQS讀者拉姆達代碼:如何調用另一個lambda異步並將上下文傳遞給它?

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的檢查日誌:

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

     logging.error(a) 

問題是沒有什麼作品和CloudWatch的顯示用戶上下文爲空:

('client_context', None) 

我試過example1example2example3example4

任何想法?

回答

2

我放棄了試圖通過上下文傳遞數據。但是,我能夠通過有效載荷參數去傳遞數據:

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

然後從事件參數讀取它裏面調用拉姆達:

ctx = json.dumps(event) 
相關問題