Har*_*tty 2 aws-lambda aws-step-functions
我有一个状态机,其中包含以下相关状态:
States:
'Analyze Report':
Type: Task
Resource: 'arn:aws:states:::lambda:invoke'
Parameters:
FunctionName: '(redacted)'
OutputPath: '$.Payload'
Next: 'Setup Email'
'Setup Email':
Type: Pass
Result:
recipients: '$.accounts'
subject: 'some email subject'
body: 'some email body'
ResultPath: '$'
Next: 'Send Email'
'Send Email':
Type: Task
Resource: 'arn:aws:states:::lambda:invoke'
Parameters:
FunctionName: '(redacted)'
OutputPath: '$.Payload'
Next: '(some downstream task)'
Run Code Online (Sandbox Code Playgroud)
与该步骤关联的 lambda 函数的输出Analyze Report具有以下形式:
{
"accounts": ["foo", "bar", "baz"],
"error_message": null,
"success": true
}
Run Code Online (Sandbox Code Playgroud)
与步骤关联的 lambda 函数Send Email需要以下形式的输入:
{
"recipients": ["foo", "bar", "baz"],
"subject": "some email subject",
"body": "some email body"
}
Run Code Online (Sandbox Code Playgroud)
当查看状态函数的测试执行时,该步骤似乎Setup Email没有成功地将$.accounts字符串插入到accounts该步骤的数组输出中Analyze Report。相反,该Send Email步骤会看到以下输入:
{
"recipients": "$.accounts",
"subject": "some email subject",
"body": "some email body"
}
Run Code Online (Sandbox Code Playgroud)
我尝试过各种组合,例如设置:
# (within the `Setup Email` step)
Result:
'recipients.$': '$.accounts'
Run Code Online (Sandbox Code Playgroud)
但它不想看起来插值。AWS提供的文档在这方面似乎有点缺乏。
TL;DR: 如何使用类型为 step 的步骤函数有效地“重命名”输入参数(带有数组值)Pass?
您需要Parameters在您所在的Pass州使用。这是一个例子:
{
"Comment": "A Hello World example of the Amazon States Language using Pass states",
"StartAt": "Hello",
"States": {
"Hello": {
"Type": "Pass",
"Parameters": {
"newName.$": "$.oldName"
},
"Next": "World"
},
"World": {
"Type": "Pass",
"Result": "World",
"End": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
{ "oldName": "some value" }当我使用第二个状态的输入有效负载运行上面的代码时{ "newName": "some value" }。
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |