我对本步骤功能和AWS并不陌生。是否可以从AWS(EMR)中的另一个步骤函数调用一个步骤函数?我正在开发一个Step功能,必须在停止EMR之前在EMR中包含Step Function。
在这里,我有两种情况。
1)我必须从SFN2调用SFN3,并在SFN2中停止EMR。 2)执行所有步骤的功能后,我必须停止EMR。
我附上了附件供您参考。
请帮助我。
非常感谢。
答案 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>"
}
},
开始执行策略
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>"
}
},
开始执行策略
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"
}
]
}