amazon-web-services - 与输入参数并行的 aws 阶跃函数
问题描述
我正在尝试使用 AWS 步骤函数来创建并行执行分支。一个并行分支启动另一个 step 函数调用,我们如何将输入从这个并行分支传递到下一个 step 函数执行
{
"Comment": "Parallel Example.",
"StartAt": "FunWithMath",
"States": {
"FunWithMath": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "Add", /// This receives some json object here input {}
"States": {
"Add": {
"Type": "Task", ***//How to pass the received input to the following arn as input?***
"Resource": ""arn:aws:states:::states:startExecution",
Parameters: {
"StateMachineArn": "anotherstepfunctionarnpath"
}
"End": true
}
}
},
{
"StartAt": "Subtract",
"States": {
"Subtract": {
"Type": "Task",
"Resource": "some lambda arn here,
"End": true
}
}
}
]
}
}
}
另一个stepfunctionarnpath:
{
"Comment": "Second state machine",
"StartAt": "stage1",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters":{
"Arguments":{
"Variable1" :"???" / how to access the value of the input passed to here
}
}
}
解决方案
您可以使用Input
将输出从一个 SFN 传递到另一个:
第一个 SFN(它将调用第二个 SFN)
{
"Comment": "My first SFN",
"StartAt": "First SFN",
"States": {
"First SFN": {
"Type": "Task",
"ResultPath": "$.to_pass",
"Resource": "arn:aws:lambda:us-east-1:807278658150:function:test-lambda",
"Next": "Trigger Next SFN"
},
"Trigger Next SFN": {
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution",
"Parameters": {
"Input": {
"Comment.$": "$"
},
"StateMachineArn": "arn:aws:states:us-east-1:807278658150:stateMachine:MyStateMachine2"
},
"End": true
}
}
}
第二个 SFN (MyStateMachine2)
{
"Comment": "A Hello World example of the Amazon States Language using Pass states",
"StartAt": "Hello",
"States": {
"Hello": {
"Type": "Pass",
"Result": "Hello",
"Next": "World"
},
"World": {
"Type": "Pass",
"Result": "World",
"End": true
}
}
}
第一次SFN的执行
第二次SFN的执行
解释
Lambdatest-lambda
正在返回:
{
"user": "stackoverflow",
"id": "100"
}
它存储在"ResultPath": "$.to_pass"
这里的to_pass
变量中。我将相同的输出传递给下一个状态机MyStateMachine2由
"Input": {
"Comment.$": "$"
}
在下一个状态机的执行中,您会看到接收到的相同数据作为由第一个 Lambda 创建的输入。
你可以在这里阅读更多关于它的信息。
推荐阅读
- kubernetes - 用于 Helm3 多 pod 部署的初始化容器
- python - 如何在 python 中使用 beautifulsoup(或任何其他刮刀)刮取检查过的元素?
- node.js - 将 node.js proct db mongodb 更改为 postgresql?
- r - 无法读取文件也无法清除 R 中的数据框
- sql-server - 如何使用 Azure 数据工厂将数据从 excel 加载到 SQL DB
- javascript - Chart.js:如何更改 x 轴背景颜色?
- javascript - 如何一键将计数器从 1、2 增加到 3?
- reactjs - 如何理解 react 中的 useRef
- react-native - R8:程序类型已经存在:io.invertase.firebase.BuildConfig 在 React Native 应用程序中反应
- html - 角度如何在关闭和打开导航栏时调整ngx-datatable的大小