2017-04-24 52 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) 
相关问题