AWS AppSync创建Merchant类型提示权限不足问题求助
解决AWS AppSync创建Merchant权限报错问题
排查方向1:确认GraphQL Schema中Mutation字段的权限配置
你的MerchantType加了@aws_iam和@aws_cognito_user_pools指令,但类型上的权限不会自动继承到对应的mutation操作,需要检查createMerchant这个mutation字段是否也配置了正确的权限指令:
type Mutation { createMerchant(input: CreateMerchantInput!): MerchantType @aws_iam # 根据使用的认证方式添加对应指令 @aws_cognito_user_pools # 可同时添加两种认证方式的指令 }
如果mutation字段缺少这些指令,即使类型有权限,也会导致创建操作被拒绝。
排查方向2:核对IAM策略权限(若使用IAM认证)
如果用IAM作为认证方式,检查当前使用的IAM角色/用户的策略是否包含createMerchant操作的权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appsync:GraphQL", "Resource": [ "arn:aws:appsync:你的区域:你的账号ID:apis/你的API ID/types/Mutation/fields/createMerchant", "arn:aws:appsync:你的区域:你的账号ID:apis/你的API ID/types/MerchantType" ] } ] }
确保Resource路径准确,注意报错里提到的是Merchant,要确认Schema里的类型名是否和IAM策略中的一致,避免拼写错误导致权限不匹配。
排查方向3:检查Cognito用户池权限配置(若使用Cognito认证)
如果用Cognito用户池认证:
- 确认当前执行操作的用户所属的用户组,在AppSync的Cognito用户池配置中是否被授予了执行
createMerchant的权限; - 或者在
createMerchant的mutation字段上添加组限制指令,比如:
type Mutation { createMerchant(input: CreateMerchantInput!): MerchantType @aws_cognito_user_pools(cognito_groups: ["MerchantAdmins"]) }
确保当前用户在指定的用户组内。
排查方向4:核对Schema中的类型名称一致性
报错信息显示Not Authorized to access createMerchant on type Merchant,但你提供的类型定义是MerchantType,需要确认:
- Mutation中的
createMerchant返回类型是否是Merchant而非MerchantType?如果是,那Merchant类型本身可能没有配置权限指令; - 检查所有涉及的类型名称是否统一,避免拼写或命名不一致导致权限匹配失败。
排查方向5:检查Resolver的权限逻辑
查看createMerchant对应的Resolver请求模板,是否存在自定义的权限校验逻辑,比如使用$util.auth.deny()强制拒绝请求,或者基于validated等字段做了权限限制,导致当前请求不符合条件被拒绝。
内容的提问来源于stack exchange,提问作者Pouissante
相关产品推荐
相关产品推荐

