本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将参数传递给服务 API
使用
Task
状态中的
Parameters
字段来控制传递给服务 API 的参数。
在
Parameters
字段内,您必须在 API 操作中使用数组参数的复数形式。例如,如果您使用
DescribeSnapshots
API 操作的
筛选器
字段与 Amazon EC2 集成,则必须将该字段定义为
Filters
。如果你不使用复数形式,Step Functions 会返回以下错误:
The field Filter is not supported by Step Functions.
将静态 JSON 作为参数传递
您可以直接在状态机定义中包含 JSON 对象,以作为参数传递给资源。
例如,要为 AWS 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 文本中的组件。步骤函数路径使用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"
字段访问该数据的更多信息,请参阅以下内容: