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

在 Step Functions 中将参数传递给服务 API

管理状态和转换数据

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

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

The field Filter is not supported by Step Functions.

将静态 JSON 作为参数传递

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

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

"RetryStrategy": { "attempts": 5 }

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

"Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:us-east-2:account-id: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 的节点的值作为名为 myMessage 的参数传递,请指定以下语法:

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

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

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

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

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

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