本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将参数传递给服务 API
使用 Task
状态中的 Parameters
字段来控制传递给服务 API 的参数。
将静态 JSON 作为参数传递
您可以直接在状态机定义中包含 JSON 对象,以作为参数传递给资源。
例如,要为 Amazon Batch 的 SubmitJob
API 设置 RetryStrategy
参数,您可以在参数中包含以下内容。
"RetryStrategy": {
"attempts": 5
}
也可以使用静态 JSON 传递多个参数。作为更完整的示例,以下是发布到名为的 Amazon SNS 主题的任务规范的Resource
和字Parameters
段
。myTopic
"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"
}
}
},
使用 Paths 将状态输入作为参数传递
您可以使用路径将部分状态输入作为参数传递。路径是一个以开头的字符串$
,用于标识 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"
字段访问该数据的更多信息,请参阅以下内容: