将参数传递给服务 API - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将参数传递给服务 API

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

Parameters 字段中,必须在 API 操作中使用数组参数的复数形式。例如,如果您使用 DescribeSnapshots API 操作的筛选字段与 Amazon EC2 集成,则必须将该字段定义为 Filters。如果您没有使用复数形式,Step Functions 会返回以下错误:

The field Filter is not supported by Step Functions.

将静态 JSON 作为参数传递

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

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

"RetryStrategy": { "attempts": 5 }

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

"Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:us-east-2:123456789012:myTopic", "Message": "test message", "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 语法。

要指定参数使用路径,请在参数名称后使用 .$ 结尾。例如,如果状态输入包含名为 message 的节点中的文本,就可以使用路径将该文本作为参数传递。

考虑以下状态输入:

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

要将名为 message 的节点值作为参数传递,请指定以下语法:

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

然后,Step Functions 将值 foo 作为参数传递。

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

将上下文对象节点作为参数传递

除了静态内容和状态输入中的节点之外,您还可以将上下文对象中的节点作为参数传递。上下文对象是状态机执行期间存在的动态 JSON 数据。它包含状态机和当前执行的相关信息。您可以使用状态定义的 "Parameters" 字段中的路径访问上下文对象。

有关上下文对象以及如何从 "Parameters" 字段访问该数据的更多信息,请参阅以下内容: