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

如何排查AWS Amplify中删除DynamoDB记录的未授权错误?

解决AWS Amplify GraphQL删除记录的权限错误

问题分析

执行deleteImage mutation时遇到"Not Authorized to access deleteImage on type Mutation"错误,核心原因是Amplify的@auth权限规则未匹配当前用户身份,即便你是记录的业务owner。

解决方案

1. 修正Schema的@auth规则(关键)

Amplify默认的owner权限规则会用用户的Cognito Sub(唯一ID)匹配记录的owner字段。如果你的业务逻辑用employerID作为owner标识,必须在@auth规则里明确指定ownerField:

type Image
  @model
  @auth(
    rules: [
      { allow: owner, ownerField: "employerID", operations: [create, update, delete, read] }
    ]
  )

修改后重新部署,Amplify会用employerID字段验证用户是否有权限操作记录。

2. 简化前端请求参数

删除操作仅需主键id即可,无需传递employerID(除非将其设为复合主键的一部分),简化后的代码:

await API.graphql({
  query: deleteImage,
  variables: {
    input: { 
      id: fileName
    }
  },
  authMode: "AMAZON_COGNITO_USER_POOLS",
});

3. 验证记录与用户身份的匹配性

登录DynamoDB控制台找到对应Image记录,检查:

  • 若用默认owner字段:确认该字段值等于当前用户的Cognito Sub(可通过Auth.user.attributes.sub获取)
  • 若指定ownerField: "employerID":确认该字段值等于Auth.user.attributes["custom:id"]

4. 确认部署生效

即便CI/CD显示部署完成,也建议手动检查AppSync控制台的Schema和Auth规则是否与本地一致,避免部署遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:40:31