【发布时间】:2019-08-18 08:08:18
【问题描述】:
我正在尝试将参数从状态机传递给 aws python lambda。我写了以下函数:
{
"Comment": "test lambda execution with state machine",
"StartAt": "testPassInArgs",
"States": {
"testPassInArgs": {
"Type": "Task",
"Resource":"arn:aws:lambda:....function:testPassInArgs",
"Next": "testRecieveArgs"
},
"testRecieveArgs": {
"Type": "Task",
"InputPath": "$.a",
"Parameters": {
"InputPath": "$.a"},
"Resource": "arn:aws:lambda:....:function:testRecieveArgs",
"End": true
}
}
}
这里是 lambda 函数 testPassInArgs:
import json
def lambda_handler(event, context):
stations={}
stations['a']='A'
stations['b']='B'
stations['c']='C'
return {
'a':stations['a'],
'b':stations['b'],
'c':stations['c']
}
另一个 lambda 'testRecieveArgs:
import json
def lambda_handler(event, context):
# TODO implement
out={}
if type(event) == dict:
for item in event:
out[item+item] = event[item]+event[item]
print(item)
print(event[item])
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!'),
'event': out
}
我原以为状态机第二部分中的“参数”参数会解析第一个 lambda 的输出,并仅将第一部分(即“A”)传递给第二个 lambda。然而事实并非如此。第二个 lambda 的输出是:
"InputPathInputPath": "$.a$.a"
第二个 lambda 的输入就是第一个的输出。
我想解析第一个 lambda 的输出并将每个部分并行发送到下游的不同 lambda。
我一定是在这里错过了一个技巧?如果有人知道这将是一个很大的帮助?
附言我确信我可以处理并行化部分,它只是解析参数,然后将它们传递给我正在努力解决的下游函数。
【问题讨论】:
标签: amazon-web-services aws-lambda aws-step-functions