排查服务集成 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

排查服务集成

我的作业已在下游服务中完成,但是在 “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.syncstartExecution.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 没有任何合适的参数。