本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Step Functions API 中向服务传递参数
在Task
状态下使用该Parameters
字段来控制传递给服务的参数API。
在该Parameters
字段中,您必须在API操作中使用数组参数的复数形式。例如,如果您使用DescribeSnapshots
API操作的 “筛选条件” 字段与 Amazon 集成EC2,则必须将该字段定义为Filters
。如果您没有使用复数形式,Step Functions 会返回以下错误:
The field Filter is not supported by Step Functions.
将静态JSON作为参数传递
您可以直接在状态机定义中包含一个JSON对象,以作为参数传递给资源。
例如,要为 for 设置RetryStrategy
参数 AWS Batch,可以在参数中包含以下内容。SubmitJob
API
"RetryStrategy": {
"attempts": 5
}
您也可以使用 static 传递多个参数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"
}
}
},
使用路径将状态输入作为参数传递
您可以使用路径将部分状态输入作为参数传递。路径是一个以开头的字符串$
,用于标识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"
字段访问该数据的更多信息,请参阅以下内容: