You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amplify未认证用户调用Lambda resolver返回自定义类型报Unauthorized错误

Amplify Lambda Resolver返回自定义类型报未授权错误解决方案

问题原因

你虽然对Mutation接口配置了API Key公开访问权限,但Amplify的GraphQL权限校验会对返回结果的每一个自定义类型的字段做权限验证,你没有给返回的自定义类型FormAssessmentResponse配置对应的@auth规则,所以接口执行成功后返回字段时被权限校验拦截,就出现了字段未授权的报错。当你把返回类型换成基础类型(String/AWSJSON)时,基础类型不需要额外配置权限,所以可以正常返回。

解决方案

直接给自定义类型FormAssessmentResponse加上和Mutation对应的@auth规则即可,不需要添加@model注解,不会自动生成DynamoDB表,完全符合你的需求。修改后的schema示例如下:

# 给自定义返回类型添加对应权限规则
type FormAssessmentResponse @auth(rules: [{allow: public, provider: apiKey}]) {
  score: Int
  isInCoverageArea: Boolean
}
...
type Mutation {
  formAssessment(input: FormAssessmentInput!): FormAssessmentResponse @function(name: "formResolvers-${env}") @auth(rules: [{allow: public, provider: apiKey}])
}

修改完成后执行amplify push重新发布API即可生效。

可选替代方案(不推荐)

如果你需要全局关闭自定义类型的字段权限校验,可以修改项目根目录下的amplify/cli.json文件,将features.graphqltransformer.transformerversion对应的generateGraphQLPermissions参数设置为false,重新发布后也可以解决问题,但该方案会关闭所有自定义类型的默认权限校验,会降低接口安全性,仅适合测试场景使用。

内容的提问来源于stack exchange,提问作者good1492

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:06:04