本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排查服务集成
我的作业已在下游服务中完成,但是在 “Step Functions” 中,任务状态仍为 “进行中” 或者其完成延迟。
适用于.sync
服务集成模式、Step Functions 使用 EventBridge 规则、下游 API 或两者的组合来检测下游作业状态。对于某些服务,Step Functions 不会创建 EventBridge 规则来监控。例如,对于Amazon Glue服务集成,而不是使用 EventBridge 规则,Step Functions 可以创建glue:GetJobRun
调用。由于 API 调用的频率,下游任务完成与 Step Functions 任务完成时间之间存在差异。Step Functions 需要 IAM 权限才能管理 EventBridge 规则和调用下游服务。有关执行角色的权限不足会如何影响任务完成的更多详细信息,请参阅使用 “运行Job” 模式执行任务的其他权限.
我想从嵌套状态机执行中返回 JSON 输出。
Step Functions 有两个 Step Functions 同步服务集成:startExecution.sync
和startExecution.sync:2
. 两者都等待嵌套状态机完成,但它们返回不同的日期和时间。Output
格式。您可以使用startExecution.sync:2
返回下面的 JSON 输出Output
.
我无法从其他账户调用 Lambda 函数。
在Task
状态Resource
字段,使用arn:aws:states:::lambda:invoke
传递FunctionArn
在参数中。与状态机关联的 IAM 角色必须具有调用跨账户 Lambda 函数的适当权限:lambda:invokeFunction
.
{ "StartAt":"CallLambda", "States":{ "CallLambda":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"arn:aws:lambda:us-west-2:123456789012:function:my-function" }, "End":true } } }
我看不到传递的任务令牌.waitForTaskToken
状态。
在Task
状态Parameters
字段中,您必须传递任务令牌。例如,您可以使用类似以下代码的内容。
{ "StartAt":"taskToken", "States":{ "taskToken":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters":{ "FunctionName":"get-model-review-decision", "Payload":{ "token.$":"$$.Task.Token" }, }, "End":true } } }
您可以尝试使用.waitForTaskToken
使用任何 API 操作。但是,有些 API 没有任何合适的参数。