本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将参数传递给服务 API
使用 Task
状态中的 "Parameters"
字段来控制传递给服务 API 的参数。
将静态 JSON 作为参数传递
您可以直接在状态机定义中包含 JSON 对象,以作为参数传递给资源。
例如,要为 Amazon Batch 的 SubmitJob
API 设置 RetryStrategy
参数,您可以在参数中包含以下内容。
"RetryStrategy": {
"attempts": 5
}
也可以使用静态 JSON 传递多个参数。作为一个更完整的示例,以下是"Resource"
和"Parameters"
任务规范的字段发布到Amazon SNS 主题。
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:us-east-1: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
要指定参数使用路径引用输入中的 JSON 节点,请使用 .$
作为参数名称的结尾。例如,如果在名为 message
的节点中的状态输入中有文本,则可以通过使用路径引用该输入 JSON,将其传递给参数。
使用以下状态输入。
{
"comment": "A message in the state input",
"input": {
"message": "foo",
"otherInfo": "bar"
},
"data": "example"
}
您可以使用以下命令将消息 foo
作为一个参数传递:
"Parameters": {"Message.$": "$.input.message"},
有关在 Step Functions 中使用参数的更多信息,请参阅以下内容:
将上下文对象节点作为参数传递
除了静态内容和状态输入中的节点之外,您还可以将上下文对象中的节点作为参数传递。上下文对象是状态机执行期间存在的动态 JSON 数据。它包含状态机和当前执行的相关信息。您可以使用状态定义的 "Parameters"
字段中的路径访问上下文对象。
有关上下文对象以及如何从 "Parameters"
字段访问该数据的更多信息,请参阅以下内容: