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

将参数传递给服务 API

使用 Task 状态中的 Parameters 字段来控制传递给服务 API 的参数。

将静态 JSON 作为参数传递

您可以直接在状态机定义中包含 JSON 对象,以作为参数传递给资源。

例如,要为 AWS Batch 的 SubmitJob API 设置 RetryStrategy 参数,您可以在参数中包含以下内容。

"RetryStrategy": { "attempts": 5 }

也可以使用静态 JSON 传递多个参数。作为一个更完整的示例,以下是发布 Amazon SNS 主题的任务规范的 ResourceParameters

"Resource": "arn:aws-cn:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws-cn:sns:us-east-1:123456789012:myTopic", "Message": "test message", "MessageStructure": "json", "MessageAttributes": { "my attribute no 1": { "DataType": "String", "StringValue": "value of my attribute no 1" }, "my attribute no 2": { "DataType": "String", "StringValue": "value of my attribute no 2" } } },

使用路径将状态输入作为参数传递

您可以使用路径将部分状态输入传递给参数。路径是以 $ 开头的字符串,用于标识 JSON 文本内的组成部分。Step Functions 路径使用 JsonPath 语法。

要指定参数使用路径引用输入中的 JSON 节点,请使用 .$ 作为参数名称的结尾。例如,如果在名为 message 的节点中的状态输入中有文本,则可以通过使用路径引用该输入 JSON,将其传递给参数。

使用以下状态输入:

{ "comment": "A message in the state input", "input": { "message": "foo", "otherInfo": "bar" }, "data": "example" }

您可以使用以下命令将消息 foo 作为一个参数传递:

"Parameters": {"Message.$": "$.input.message"},

有关在 Step Functions 中使用参数的更多信息,请参阅:

注意

有关可从 Amazon 状态语言 直接控制的服务列表,请参阅Step Functions 支持的 AWS 服务集成