python - 调用另一个 lambda 传递信息并读取 lambda 上的信息
问题描述
我正在尝试将信息从一个 lambda(函数 1)传递到另一个 lambda(函数 2)。
我知道 boto3 我会用它来调用函数 1
load = {
'id': 25,
'Info': 'Information',
}
json_load = json.dumps(load)
response = client.invoke(
FunctionName='string',
Payload=json_load,
)
不过,我将如何阅读函数 2 中的 json_load 呢?
解决方案
显然你应该使用InvocationType='RequestResponse'
和传递数据ClientContext
。
从Lambda.invoke() 不发送客户端上下文 · 问题 #1388 · aws/aws-sdk-js:
看起来您需要将要发送的数据放在获得 JSON.stringify 和 base64 编码的对象中的 key custom 下。例如,使用以下客户端代码:
var AWS = require('aws-sdk');
var la = new AWS.Lambda({ region: 'us-west-2' });
var ctx = {
custom: { foo: 'bar' },
client: { snap: ['crackle', 'pop']},
env: { fizz: 'buzz' },
};
la.invoke({
FunctionName: 'contextPrinter',
ClientContext: AWS.util.base64.encode(JSON.stringify(ctx)),
InvocationType: 'RequestResponse',
Payload: JSON.stringify({ baz: 'quux' })
}, function (err, data) { return console.log(err, data); });
和以下 lambda:
def lambda_handler(event, context):
print("context", context.client_context)
print("client", ', '.join(i for i in dir(context.client_context.client) if not i.startswith('__')))
print("custom", context.client_context.custom)
print("env", context.client_context.env)
我得到以下日志输出:
('context', <__main__.ClientContext object at 0x7f5705898170>)
('client', 'app_package_name, app_title, app_version_code, app_version_name, installation_id')
('custom', {u'foo': u'bar'})
('env', {u'fizz': u'buzz'})
客户端上下文包含有关客户端的数据,但custom
orenv
键下的数据可用于 lambda 函数。
推荐阅读
- python - 在 Python 中创建和排序二维列表
- python - 如何将函数应用于需要 Pandas 中的行索引的数据框?
- objective-c - 随机生成器的随机性稍差
- graphql - 有没有办法在 graphQL 中对查询进行分组?
- python - 带有类对象列表的 psycopg2 execute_values
- hibernate - Hibernate Envers:加载修订版时列表中出现空值
- php - 如何从 PHP 中的字符串中获取表达式?
- python-3.x - Python 不正确的值
- html - 如何在图像悬停时创建深色淡入淡出+文字?
- javascript - 为什么我下面的 IIFE 代码只与 clickEvent 一起工作一次