是否可以从另一个Step函数调用一个Step函数?

时间:2018-10-25 08:13:06

标签: amazon-web-services aws-lambda aws-step-functions

我对本步骤功能和AWS并不陌生。是否可以从AWS(EMR)中的另一个步骤函数调用一个步骤函数?我正在开发一个Step功能,必须在停止EMR之前在EMR中包含Step Function。

在这里,我有两种情况。

1)我必须从SFN2调用SFN3,并在SFN2中停止EMR。 2)执行所有步骤的功能后,我必须停止EMR。

我附上了附件供您参考。

enter image description here

请帮助我。

非常感谢。

3 个答案:

答案 0 :(得分:0)

您可以从“任务状态”(Lambda或“活动”)中调用StartExecution,然后等待其完成(如果不需要,则不然)。

如果您不需要等待它完成(我可能误解了这个问题,但我相信情况并非如此),您可以对StartExecution开除。

相反,当您想等待嵌套状态机完成时,您可能会对Job Status Poller模式(https://docs.aws.amazon.com/step-functions/latest/dg/job-status-poller-sample.html)感兴趣,或者将等待实现为在EC2 / ECS等上运行的Activity。 。(丢失了无服务器方法)。

还有另一种方法来解决在没有活动循环(状态轮询器)或服务器的情况下等待嵌套状态机的问题。此处描述:https://medium.com/semantive/part-1-asynchronous-actions-within-aws-step-functions-without-servers-f58e030a0e8b

答案 1 :(得分:0)

最近,AWS Step函数添加了从另一个step函数调用一个step函数的功能。

https://docs.aws.amazon.com/step-functions/latest/dg/connect-stepfunctions.html

您现在可以直接执行上述操作。

答案 2 :(得分:0)

解雇主工作流程中的内部工作流程

主要工作流程的步骤功能代码

 "<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"
            }
        ]
    }