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 值切换到消息正文中,并根据实际需求调整映射规则和消息格式。