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

关于AWS Amplify Gen 1与Gen 2的差异及注册用户列表获取的咨询

AWS Amplify Gen 1 与 Gen 2 对比及用户列表获取指南

一、Gen 1 与 Gen 2 语法、新特性对比

语法差异

  • 资源定义方式
    Gen 1:依赖CLI交互式命令生成amplify/backend下的JSON/YAML配置文件,比如创建Auth资源得跑amplify add auth一步步选配置项。
    Gen 2:用TypeScript编写amplify/backend.ts,直接在代码里定义所有后端资源,示例:
    import { defineBackend } from '@aws-amplify/backend';
    import { auth } from './auth/resource';
    import { data } from './data/resource';
    
    defineBackend({
      auth,
      data
    });
    
  • Auth资源配置
    Gen 1:在amplify/backend/auth/<auth-name>/parameters.json里手动配置用户池属性(比如邮箱验证开关),改完得重新部署生效。
    Gen 2:直接在TypeScript代码里定义Auth规则,示例:
    import { defineAuth } from '@aws-amplify/backend';
    
    export const auth = defineAuth({
      loginWith: {
        email: true
      },
      userAttributes: {
        profilePicture: {
          mutable: true,
          required: false
        }
      }
    });
    
  • Data资源(API)配置
    Gen 1:通过amplify add api选择GraphQL,生成schema.graphql文件后用@model等transform指令配置数据模型,再跑amplify push部署。
    Gen 2:用TypeScript定义数据模型并集成到后端代码,示例:
    import { defineData } from '@aws-amplify/backend';
    import { schema } from './schema';
    
    export const data = defineData({
      schema,
      authorizationModes: {
        defaultAuthorizationMode: 'userPool'
      }
    });
    

新特性差异

  • 代码优先开发:Gen 2全程用TypeScript编写后端逻辑,和前端代码风格统一,自带类型检查,能提前发现配置错误。
  • 本地沙箱预览:支持amplify sandbox命令,快速启动本地后端环境,实时预览资源变更,不用每次都部署到AWS。
  • 自动依赖管理:在代码里直接关联Auth、Data等资源,系统自动处理资源间的权限依赖,不用手动配置。
  • 灵活自定义逻辑:可以直接在后端代码里添加Lambda触发器、自定义resolver,比如给Auth加post-signup触发器:
    export const auth = defineAuth({
      // 其他配置
      triggers: {
        postSignUp: {
          function: defineFunction({
            entry: './post-signup.ts'
          })
        }
      }
    });
    
  • 简洁项目结构:所有后端定义集中在amplify/backend的TypeScript文件里,替代Gen 1分散的JSON/YAML配置,项目结构更清晰。

二、获取应用中的注册用户列表

方法1:AWS CLI

确保已配置AWS CLI并拥有用户池的访问权限,运行以下命令:

aws cognito-idp list-users --user-pool-id <你的用户池ID>

可添加过滤参数缩小范围,比如只看已验证邮箱的用户:

aws cognito-idp list-users --user-pool-id <你的用户池ID> --filter "email_verified = true"

方法2:Amplify Admin UI

  1. 打开Amplify Console,进入你的应用。
  2. 点击左侧导航栏的Authentication。
  3. 切换到Users标签页,就能查看所有注册用户,还支持搜索、筛选、导出操作。

方法3:代码中获取(后端推荐)

在Lambda等后端环境中,用AWS SDK for JavaScript调用:

import { CognitoIdentityProviderClient, ListUsersCommand } from "@aws-sdk/client-cognito-identity-provider";

const client = new CognitoIdentityProviderClient({ region: '你的AWS区域' });

export const getRegisteredUsers = async () => {
  const command = new ListUsersCommand({
    UserPoolId: '你的用户池ID'
  });
  const response = await client.send(command);
  return response.Users;
};

注意:不要在前端直接调用该接口(会暴露敏感权限),建议通过后端Lambda中转获取用户列表。

内容的提问来源于stack exchange,提问作者Sandeep J Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:21:19