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

Amplify Lambda函数报错:无权限访问createProfile操作

解决方案:修复AppSync权限问题及createProfile返回null

核心问题分析

CloudWatch日志的Unauthorized错误是根本原因——Lambda执行角色没有权限调用AppSync的createProfile mutation,导致操作失败,所以createProfile返回null。以下是具体修改步骤:


1. 给Lambda执行角色添加AppSync访问权限

打开IAM控制台,找到该Lambda的执行角色,附加以下自定义IAM策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "appsync:GraphQL",
      "Resource": "arn:aws:appsync:<你的AWS区域>:<你的AWS账号ID>:apis/<你的AppSync API ID>/types/Mutation/fields/createProfile"
    }
  ]
}

替换占位符为你的实际信息(区域、账号ID、API ID可在AppSync控制台找到)。

2. 修正AppSync Schema的权限规则

确保你的Profile类型的@auth规则允许IAM角色执行create操作。打开AppSync控制台的Schema页面,修改Profile定义:

type Profile @model @auth(rules: [
  { allow: owner, ownerField: "owner" },
  { allow: private, provider: iam, operations: [create] }
]) {
  id: ID!
  email: String!
  owner: String!
}

这条规则允许资源所有者访问,同时允许IAM角色执行create操作(适配Lambda的调用场景)。

3. 验证Lambda中的owner字段格式

检查教程中Profile的owner字段要求,若教程定义owner为用户的sub(而非sub::userName),则修改Lambda中的变量:

const variables = {
  email: event.request.userAttributes.email,
  owner: event.request.userAttributes.sub // 替换原有的拼接格式
};

错误的owner格式会触发@auth规则的权限拦截,导致Unauthorized错误。

4. 重新部署Lambda和AppSync配置

  • 保存Lambda代码并重新部署
  • 在AppSync控制台重新发布Schema

完成以上步骤后,PostConfirmation触发时Lambda就能成功调用createProfile mutation,createProfile将返回正确的email数据,不再出现权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:15:38