是否可以从另一个 Step 函数调用一个 Step 函数?
Is it Possible to Call One Step Function from another Step function?
我是 Step Functions 和 AWS 的新手。是否可以从 AWS (EMR) 中的另一个 Step Function 调用一个 Step Function?我正在开发一个 Step 函数,我必须在停止 EMR 之前在 EMR 中包含 Step Function。
这里我有两种情况。
1) 我必须从 SFN2 调用 SFN3 并停止 SFN2 中的 EMR。
2) 我必须在执行所有步骤功能后停止 EMR。
附上附件供大家参考。
请帮助我。
非常感谢。
您可以从任务状态(Lambda 或 Activity)调用 StartExecution
,然后等待它完成(或者不等待,如果您不需要的话)。
如果你不需要等待它完成(我可能误解了这个问题,但我相信情况并非如此),你可能只是 fire&forget with StartExecution
.
在相反的情况下,当您想等待嵌套状态机完成时,您可能对作业状态轮询器模式 (https://docs.aws.amazon.com/step-functions/latest/dg/job-status-poller-sample.html) 感兴趣或将等待实现为 Activity 运行 在 EC2 / ECS / 等上(失去无服务器方法)。
还有另一种方法可以解决在没有活动循环(状态轮询器)或服务器的情况下等待嵌套状态机的问题。此处描述:https://medium.com/semantive/part-1-asynchronous-actions-within-aws-step-functions-without-servers-f58e030a0e8b
最近,AWS Step 函数添加了一项功能,可以从另一个步骤函数调用一个步骤函数。
它的工作方式类似于调用任何其他服务(AWS Glue、AWS Lambda、AWS Sagemaker、AWS Batch)。
它确实支持 Sync 和 aysnc。不过需要检查回调支持。
您可能还想检查从一个状态函数调用另一个状态函数所需的权限。
官方文档链接:
https://docs.aws.amazon.com/step-functions/latest/dg/sample-start-workflow.html
https://docs.aws.amazon.com/step-functions/latest/dg/connect-stepfunctions.html
从主工作流中解雇并忘记内部工作流
主要工作流程的步骤功能代码
"<StepName>":{
"Type": "Task",
"Next":"<NextStepName>",
"Resource": "arn:aws:states:::states:startExecution",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"<InnerStepFunctionArn>"
}
},
主要工作流角色的 IAM 策略
开始执行策略
StepFunctions/Write/Start Execution
Resource:Inner Step Function
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "states:StartExecution",
"Resource": "<InnerStepFunctionARN>"
}
]
}
等待内部工作流执行完成
主要工作流程的步骤功能代码
"<StepName>":{
"Type": "Task",
"Next":"<NextStepName>",
"Resource": "arn:aws:states:::states:startExecution.sync",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"<InnerStepFunctionArn>"
}
},
主要工作流角色的 IAM 策略
开始执行策略
StepFunctions/Write/Start Execution
Resource:Inner Step Function
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "states:StartExecution",
"Resource": "<InnerStepFunctionARN>"
}
]
}
活动政策
CloudWatchEvent Full Access
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudWatchEventsFullAccess",
"Effect": "Allow",
"Action": "events:*",
"Resource": "*"
},
{
"Sid": "IAMPassRoleForCloudWatchEvents",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets"
}
]
}
我是 Step Functions 和 AWS 的新手。是否可以从 AWS (EMR) 中的另一个 Step Function 调用一个 Step Function?我正在开发一个 Step 函数,我必须在停止 EMR 之前在 EMR 中包含 Step Function。
这里我有两种情况。
1) 我必须从 SFN2 调用 SFN3 并停止 SFN2 中的 EMR。 2) 我必须在执行所有步骤功能后停止 EMR。
附上附件供大家参考。
请帮助我。
非常感谢。
您可以从任务状态(Lambda 或 Activity)调用 StartExecution
,然后等待它完成(或者不等待,如果您不需要的话)。
如果你不需要等待它完成(我可能误解了这个问题,但我相信情况并非如此),你可能只是 fire&forget with StartExecution
.
在相反的情况下,当您想等待嵌套状态机完成时,您可能对作业状态轮询器模式 (https://docs.aws.amazon.com/step-functions/latest/dg/job-status-poller-sample.html) 感兴趣或将等待实现为 Activity 运行 在 EC2 / ECS / 等上(失去无服务器方法)。
还有另一种方法可以解决在没有活动循环(状态轮询器)或服务器的情况下等待嵌套状态机的问题。此处描述:https://medium.com/semantive/part-1-asynchronous-actions-within-aws-step-functions-without-servers-f58e030a0e8b
最近,AWS Step 函数添加了一项功能,可以从另一个步骤函数调用一个步骤函数。
它的工作方式类似于调用任何其他服务(AWS Glue、AWS Lambda、AWS Sagemaker、AWS Batch)。 它确实支持 Sync 和 aysnc。不过需要检查回调支持。
您可能还想检查从一个状态函数调用另一个状态函数所需的权限。
官方文档链接: https://docs.aws.amazon.com/step-functions/latest/dg/sample-start-workflow.html https://docs.aws.amazon.com/step-functions/latest/dg/connect-stepfunctions.html
从主工作流中解雇并忘记内部工作流
主要工作流程的步骤功能代码
"<StepName>":{
"Type": "Task",
"Next":"<NextStepName>",
"Resource": "arn:aws:states:::states:startExecution",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"<InnerStepFunctionArn>"
}
},
主要工作流角色的 IAM 策略
开始执行策略
StepFunctions/Write/Start Execution
Resource:Inner Step Function
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "states:StartExecution",
"Resource": "<InnerStepFunctionARN>"
}
]
}
等待内部工作流执行完成
主要工作流程的步骤功能代码
"<StepName>":{
"Type": "Task",
"Next":"<NextStepName>",
"Resource": "arn:aws:states:::states:startExecution.sync",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"<InnerStepFunctionArn>"
}
},
主要工作流角色的 IAM 策略
开始执行策略
StepFunctions/Write/Start Execution
Resource:Inner Step Function
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "states:StartExecution",
"Resource": "<InnerStepFunctionARN>"
}
]
}
活动政策
CloudWatchEvent Full Access
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CloudWatchEventsFullAccess",
"Effect": "Allow",
"Action": "events:*",
"Resource": "*"
},
{
"Sid": "IAMPassRoleForCloudWatchEvents",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets"
}
]
}