如何使用 $util.error 在 AppSync 中发送自定义错误

2024-02-23

我对 AppSync 错误处理有疑问。我想发送errorInfo对象以及错误响应,我尝试过$util.error。根据文件:

https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html

$util.error(String, String, Object, Object)

抛出自定义错误。这可以用于请求或响应映射 templates 如果模板检测到请求有错误或 调用结果。另外,还有一个 errorType 字段、一个 data 字段、 并且可以指定 errorInfo 字段。数据值将被添加 到 GraphQL 中错误中相应的错误块 回复。注意:数据将根据查询选择进行过滤 放。 errorInfo值将被添加到相应的错误中 阻止 GraphQL 响应中的内部错误。注意:errorInfo 不会 根据查询选择集进行过滤。

这是我的响应映射模板的样子:

#if( $context.result && $context.result.errorMessage )
  $utils.error($context.result.errorMessage, $context.result.errorType, $context.result.data), $context.result.errorInfo)
#else
  $utils.toJson($context.result.data)
#end

这是我在解析器上所做的:

var result = {
  data: null,
  errorMessage: 'I made this error',
  errorType: 'ALWAYS_ERROR',
  errorInfo: {
    errorCode: 500,
    validations: [
      {
        fieldName: '_',
        result: false,
        reasons: [
          'Failed! Yay!'
        ]
      }
    ],
  }
};
callback(null, result);

这是我在 CloudWatch 日志中看到的内容:

{
    "errors": [
        "CustomTemplateException(message=I made this error, errorType=ALWAYS_ERROR, data=null, errorInfo={errorCode=500, validations=[{fieldName=_, result=false, reasons=[Failed! Yay!]}]})"
    ],
    "mappingTemplateType": "Response Mapping",
    "path": "[getError]",
    "resolverArn": "arn:aws:appsync:ap-southeast-1:....",
    "context": {
        "arguments": {},
        "result": {
            "errorMessage": "I made this error",
            "errorType": "ALWAYS_ERROR",
            "errorInfo": {
                "errorCode": 500,
                "validations": [
                    {
                        "fieldName": "_",
                        "result": false,
                        "reasons": [
                            "Failed! Yay!"
                        ]
                    }
                ]
            }
        },
        "stash": {},
        "outErrors": []
    },
    "fieldInError": true
}

这是我在回复中得到的内容:

{
  "data": {
    "getError": null
  },
  "errors": [
    {
      "path": [
        "getError"
      ],
      "data": null,
      "errorType": "ALWAYS_ERROR",
      "errorInfo": null,
      "locations": [
        {
          "line": 2,
          "column": 3,
          "sourceName": null
        }
      ],
      "message": "I made this error"
    }
  ]
}

请注意errorInfo为 null,我知道如何得到 CustomTemplateException。我怀疑这是因为第四个参数$utils.error。但我不知道为什么。谁能帮忙指出错误或告诉我是否发送自定义errorInfo是可能的


结果我使用了一些教程中的代码,但它不是最新的。解析器映射模板有 2 个版本:2018-05-29 and 2017-02-28。所以我需要将模板版本更改为2018-05-29让它发挥作用。

RequestMappingTemplate: |
  {
    "version": "2018-05-29",
    "operation": "Invoke",
    "payload": {
      "field": "getError",
      "arguments":  $utils.toJson($context.arguments)
    }
  }

在这里查看两个版本之间的变化:https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-changelog.html#change-the-version-on-a-function https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-changelog.html#changing-the-version-on-a-function

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 $util.error 在 AppSync 中发送自定义错误 的相关文章

随机推荐

  • 向巧克力之神发出嘘声

    Update 该实用程序用于帮助配置Git通过我正在观看的经过认证的 Microsoft Visual Academy MVA 视频 当我通过 Chocolatey 安装软件包时收到一个奇怪的错误 我已上传命令提示符 指向 Chocolat
  • spamassassin 检查分数 C# 代码

    有没有办法检查 ASP Net 应用程序中的分数 Net 的类或类似的东西 其他垃圾邮件过滤器怎么样 编辑 我正在寻找一种方法来检查 C 中电子邮件的垃圾邮件分数 这是我超级简化的 只需检查分数 代码 用于连接到我为 C 编写的正在运行的垃
  • 使用 Yammer 嵌入和开放图设置默认目标组

    我正在使用Yammer 嵌入 https developer yammer com connect 外部 Web 应用程序中的 JavaScript 控件 我想使用开放图功能 以便将所做的评论链接回创建它们的页面 这一切都非常简单 但我的问
  • 如果安装了 .Net 4.5,如何保持 .Net 4.0 行为?

    我们有一个面向 Net Framework 4 0 的 Windows 窗体应用程序 安装 Net Framework 4 5 后 应用程序开始崩溃 我们必须调查崩溃事件 并且很可能必须修复我们这边的问题 但是 在我们准备好使用 Net 4
  • 如何栅格化球体

    所以 我试图创建一个外部有 块 的球体 有点像在 Minecraft 中构建的 我不知道圆的外部的术语是什么 问题是 我不知道如何让像中点圆算法这样的方程适用于球体 最好是在 lua 或 java 中 这样我可以更轻松地阅读任何答案 我不想
  • @with_kw 在 Julia 中做什么?

    我正在阅读一些代码 如下所示 with kw struct HyperParams batch size Int 128 latent dim Int 100 epochs Int 25 verbose freq Int 1000 outp
  • TypeError:在 Xubuntu 14.04.5 上尝试 Selenium 时,urlopen() 获得了关键字参数“body”的多个值

    环境 lsb release a No LSB modules are available Distributor ID Ubuntu Description Ubuntu 14 04 5 LTS Release 14 04 Codenam
  • java中可以将字符串转换为数学运算吗?

    我可以将像 3 3 3 这样的字符串转换为java中的数学运算吗 使用 JavaScript 来评估它脚本引擎 http docs oracle com javase 6 docs api javax script ScriptEngine
  • AWS Lex Python Codehook 参考

    我对 Python 和编码 还很陌生 但我正在尝试使用 Lambda 函数构建自己的 Lex 机器人 我一直在关注教程 我可以理解它是如何工作的 问题是 当我尝试为 Lex 编写自己的 Lambda 函数时 我找不到任何参考来帮助我编写代码
  • 将带逗号的字符串转换为数组

    如何将字符串转换为 JavaScript 数组 看代码 var string 0 1 var array string alert array 0 在这种情况下alert shows 0 1 如果它是一个数组 它会显示0 而如果alert
  • 使用 .net SDK 从 Amazon S3 存储桶下载文件夹

    如何使用 net sdk 下载 s3 存储桶中存在的整个文件夹 尝试使用以下代码 它会抛出无效密钥 我需要下载存储桶中存在的嵌套 pesudo 文件夹中存在的所有文件 并将文件下载限制删除为默认值 1000 public static vo
  • 如何在Retrofit-2.0+ android中设置超时

    我提到这个链接 https stackoverflow com a 29380845 1083093但我似乎无法实现我的 我在用 compile com squareup retrofit2 retrofit 2 0 2 compile c
  • 将 Drupal 用户帐户导入 Rails,无需用户更改密码

    我想将一系列 Drupal 用户帐户导入到new铁轨项目 我正在使用 Devise 在 Rails 中进行用户身份验证 我希望能够将加密密码从 Drupal 导入到 Rails 中 以便用户在网站迁移时获得无缝体验 关于如何做到这一点有什么
  • 为什么 git revert 在这些情况下表现不同?

    假设我有ProjectA and ProjectB其中我只有一个名为test txt在这两个项目中并使用 git 跟踪它 第一次提交后 两个项目中的文件内容如下所示 one two three four 第二次提交后 两个项目中的文件内容如
  • dompdf:A4页面上的白边距

    我正在使用 dompdf 一个 PHP 库 创建 PDF 页面 但在设置正确的尺寸时遇到问题 当我使用 CSS 属性时 page size 21cm 29 7cm 例如 我想要页面的上半部分为红色 PDF 文件没问题 但打印后我得到了白色边
  • 如果我更改操作系统时区,事件(作为 json feed)、开始结束参数 unix 时间戳会有所不同

    我正在使用 fullcalendar 插件 如果有人可以帮助我 我将不胜感激 我通过 PHP URL 获取 json 事件 像这样的东西 calendar fullCalendar events myfeed php 因此 在返回事件的 p
  • Springboard 无法启动应用程序,错误为 3、0、4 等

    为什么 Xcode 无法在模拟器中启动应用程序 我在网上浏览了很多解决方案 但有时有效 有时无效 很多时候我解决问题的方法就是退出模拟器 删除应用程序 重置模拟器的内容设置 并清理和构建 但为什么我每次都要尝试其中的任何一个 所有 呢 Xc
  • 从命令行启动 Beyond Compare

    我已安装 Beyond Compare 3 C Program Files Beyond Compare 3 BCompare exe 和西格温 C Cygwin bin bash exe 我想要的是能够使用诸如以下的命令 diff
  • 核心图形和 GIF 颜色表

    我试图限制动画 GIF 的颜色数量 由一系列CGImageRef 但是 我在实际设置自定义颜色表时遇到困难 有谁知道如何使用核心显卡来做到这一点 我知道kCGImagePropertyGIFImageColorMap 下面是一些测试代码 大
  • 如何使用 $util.error 在 AppSync 中发送自定义错误

    我对 AppSync 错误处理有疑问 我想发送errorInfo对象以及错误响应 我尝试过 util error 根据文件 https docs aws amazon com appsync latest devguide resolver