Serverless工作流中,如何把 输入的 key 的值切换到 message 上?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云Serverless工作流中,将输入的 key
的值切换到消息(MessageBody
)上,可以通过配置任务步骤中的 输入映射(inputMappings) 和 服务集成参数(serviceParams) 来实现。以下是具体操作步骤和配置方法:
输入映射的作用是将输入数据转换为任务步骤所需的格式。通过定义 inputMappings
,可以将输入对象中的字段映射到目标字段。
假设输入对象为:
{
"key": "value_1"
}
我们希望将 key
的值映射到消息正文(MessageBody
)中。可以通过以下配置实现:
version: v1
type: flow
steps:
- type: task
name: Task_1
resourceArn: acs:mns:::/queues/{queue-name}/messages
pattern: requestResponse
inputMappings:
- target: key_mapped
source: $input.key
serviceParams:
MessageBody: $
DelaySeconds: 0
Priority: 1
inputMappings
:将输入对象中的 key
字段映射到目标字段 key_mapped
。
source: $input.key
表示从输入对象中提取 key
的值。target: key_mapped
表示将提取的值赋值给目标字段 key_mapped
。MessageBody: $
:表示使用映射后的输入作为消息正文内容。最终的消息正文将是:
{
"key_mapped": "value_1"
}
如果需要直接将 key
的值作为消息正文内容,而不需要额外的字段包装,可以通过以下方式实现:
version: v1
type: flow
steps:
- type: task
name: Task_1
resourceArn: acs:mns:::/queues/{queue-name}/messages
pattern: requestResponse
inputMappings:
- target: key
source: $input.key
serviceParams:
MessageBody: $input.key
DelaySeconds: 0
Priority: 1
MessageBody: $input.key
:直接将输入对象中的 key
值作为消息正文内容。最终的消息正文将是:
value_1
inputMappings
的映射结果会覆盖原始输入对象的内容。因此,在设计映射规则时需确保逻辑清晰,避免冲突。MessageBody
支持字符串类型。如果需要发送 JSON 格式的消息,请确保映射后的结果是合法的 JSON 字符串。MessageBody
和 Priority
是必填参数,必须在 serviceParams
中明确指定。以下是一个完整的 Serverless 工作流配置示例,展示如何将输入的 key
值切换到消息正文中:
version: v1
type: flow
steps:
- type: task
name: Send_Message
resourceArn: acs:mns:::/queues/{queue-name}/messages
pattern: requestResponse
inputMappings:
- target: message_content
source: $input.key
serviceParams:
MessageBody: $input.key
DelaySeconds: 0
Priority: 1
{
"key": "example_value"
}
example_value
通过上述配置,您可以灵活地将输入的 key
值切换到消息正文中,并根据实际需求调整映射规则和消息格式。