微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

InputTransformer YAML 无法解析事件规则

如何解决InputTransformer YAML 无法解析事件规则

我的目标是向数据发送以下格式:

{
  "headers": {
    "Authorization": "Bearer expectedToken"
  },"body": {
    "id": "abc","status": "ANY","preferences": [ [Object] ]
  }
}

但与 YAML 中的输入转换器苦苦挣扎:

inputTransformer:
  inputPathsMap:
    expectedToken: '$detail.Metadata.sometoken'
  inputTemplate: '{"headers": {"Authorization": <expectedToken>}}'

并收到此错误

自定义资源收到响应状态 [Failed]。信息 返回:事件模式无效。原因:“expectedToken”必须是 一个对象或一个数组 + + 在 [来源: (字符串)"{"inputTransformer":{"inputPathsMap":{"expectedToken":"$detail.Metadata.sometoken"},"inputTemplate":"{"headers": {"授权":}}"},"

Trigger 是一个带有映射模板的 APIGW,它附加一个 Auth 令牌作为元数据的一部分,但目标期望它作为一个标头。这是一个可行的解决方案吗?如何将其解析为预期格式?

稍后编辑:从 APIGW 发送的数据:

 {
    detail: {
        body: {
          id: 'abc',extraInfo: 'Postman_15:07',preferences: [Array]
        },Metadata: {
          service: 'my-service',status: 'ANY',sometoken: 'Bearer expectedToken'
        }
      }
}

解决方法

您能否分享您的事件有效负载的示例(已清除个人信息) - 即具有详细信息和元数据子字段的 JSON?

你也可以试试

inputTransformer:
  inputPathsMap:
    expectedToken: '$detail.metadata.someToken'
  inputTemplate: '{"headers": {"Authorization": "Bearer <expectedToken>"}}'
,

尝试使用像 $.detail.metadata.someToken 之类的输入路径

如果这也不起作用,正如已经要求的那样,请给我们一个到达 EventBridge 本身的事件的示例。如果您不知道事件负载,您可以设置一个事件规则,将事件转发到 CloudWatch 日志组,以便您可以检查日志。 (提示:通过 AWS 控制台设置 cloudwatch 目标,因此使用 CloudFormation 存在一些问题)

,

谢谢你的建议。看起来问题出在 eventbridge 下 inputTransformer 部分的缩进。该错误消息绝不是有帮助的。匹配目标 Lambda 期望的最终格式是:

 inputTransformer:
      inputPathsMap:
        expectedToken: '$detail.metadata.someToken'
        data: '$.detail.body'
      inputTemplate: '{"headers": {"Authorization": <expectedToken>},"body": <data>}'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。