AWS Step Functions
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

上下文对象

上下文对象是在执行期间可用的内部 JSON 结构。它包括有关您可以在状态定义的 "Parameters" 字段中访问的状态机和执行的信息。这允许您的工作流程访问有关其特定执行的信息。

上下文对象格式

上下文对象包括有关状态机、状态、执行和任务的信息。此 JSON 对象包括每种类型数据的节点,并采用以下格式。

{ "Execution": { "Id": "String", "Input": {}, "StartTime": "Format: ISO 8601" }, "State": { "EnteredTime": "Format: ISO 8601", "Name": "String", "RetryCount": Number }, "StateMachine": { "Id": "String" }, "Task": { "Token": "String" } }

在执行期间,上下文对象将以访问它的 "Parameters" 字段的相关数据填充。如果 "Parameters" 字段超出任务状态,则 "Task" 字段的值为空。

来自正在运行的执行的内容包括以下格式的具体信息。

{ "Execution": { "Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName", "Input": { "key": "value" }, "Name": "executionName", "RoleArn": "arn:aws:iam::123456789012:role...", "StartTime": "2019-03-26T20:14:13.192Z" }, "State": { "EnteredTime": "2019-03-26T20:14:13.192Z", "Name": "Test", "RetryCount": 3 }, "StateMachine": { "Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName", "Name": "name" }, "Task": { "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W" } }

访问上下文对象

要访问上下文对象,首先通过将 .$ 附加到末尾来指定参数名称,就像选择带路径的状态输入时一样。然后,要访问上下文对象数据(而不是输入),请在路径前加上 $$.。这会告诉 Step Functions 使用路径选择上下文对象中的节点。

此示例任务状态使用路径进行检索并将执行 ARN 传递给 Amazon SQS 消息。

{ "Order Flight Ticket Queue": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage", "Parameters": { "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase", "MessageBody": { "From": "YVR", "To": "SEA", "Execution.$": "$$.Execution.Id" } }, "Next": "NEXT_STATE" } }

注意

有关在调用集成服务时使用任务令牌的更多信息,请参阅 等待具有任务令牌的回调