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

如何在Cognito用户注册时设置不可变UUID?求替代方案

解决Cognito注册时添加不可变UUID的问题

问题核心:你当前用Pre-signup触发器调用AdminUpdateUserAttributes设置不可变的custom:uuid,但该操作是在用户创建后执行的更新操作,而不可变属性不允许被更新,因此触发报错。

无需修改属性的可变性,正确做法是在用户创建前就把UUID注入到用户属性中,让Cognito在创建用户时直接写入该属性,具体实现如下:

修改后的Lambda代码

import { uuidv7 } from 'uuidv7';

export const handler = async (event) => {
  console.log(event);
  const uuid = uuidv7();
  console.log(uuid);
  
  // 将UUID添加到用户请求属性中,Cognito会在创建用户时直接写入
  event.request.userAttributes['custom:uuid'] = uuid;
  
  // 根据用户池需求,可设置自动确认和验证(可选)
  event.response.autoConfirmUser = true;
  event.response.autoVerifyEmail = true; // 若用手机号验证则替换为autoVerifyPhoneNumber
  
  return event;
};

原理说明

Pre-signup触发器的执行时机是用户提交注册请求后、Cognito正式创建用户记录之前。此时修改event.request.userAttributes中的属性,Cognito会将这些属性作为用户的初始属性一并创建,属于创建时设置而非后续更新,因此不会触发不可变属性的更新限制。

这种方式无需调用AdminUpdateUserAttributes接口,彻底避免了不可变属性的更新错误,同时保留了custom:uuid的不可变性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:57:13