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

如何用JavaScript/Node.js通过Amazon Cognito用户池对接AWS AppSync GraphQL API

解决方案:将AWS AppSync认证从API_KEY切换为AMAZON_COGNITO_USER_POOLS

核心修改步骤

  • 调整Amplify配置,切换认证类型并移除API_KEY相关配置
  • 集成Cognito用户登录逻辑,通过Amplify Auth模块获取并管理JWT Token
  • Amplify会自动将Token注入GraphQL请求,无需手动传递

修改后的完整代码

const { Amplify, API, Auth, graphqlOperation } = require('aws-amplify');

const awsConfig = {
    aws_project_region: 'us-east-1',
    aws_appsync_graphqlEndpoint: 'abc.com/graphql',
    aws_appsync_region: 'us-east-1',
    // 切换为Cognito用户池认证类型
    aws_appsync_authenticationType: 'AMAZON_COGNITO_USER_POOLS',
    aws_cognito_identity_pool_id: 'abc123',
    aws_cognito_region: 'us-east-1',
    aws_user_pools_id: 'xyzpqr',
    aws_user_pools_web_client_id: '1a2b3c4d5e'
    // 移除API_KEY配置项,不再需要
};

Amplify.configure(awsConfig);

// 封装登录+GraphQL查询流程
async function executeGraphQL(query, parameter) {
    try {
        // 替换为实际的用户账号密码
        await Auth.signIn('你的用户名', '你的密码');
        
        // 登录成功后,Amplify自动携带Cognito ID Token发起请求
        const response = await API.graphql(graphqlOperation(query, parameter));
        console.log('查询结果:', response);
        return response;
    } catch (err) {
        console.error('请求失败:', JSON.stringify(err));
        throw err;
    }
}

// 调用示例
// executeGraphQL(你的查询语句, 参数);

关键说明

  • Token自动管理:登录成功后,Amplify会将Cognito返回的ID Token自动添加到GraphQL请求的Authorization请求头中,无需手动指定参数
  • 依赖检查:确保已安装aws-amplify包(执行npm install aws-amplify),Node.js环境下无需额外配置Token缓存与刷新逻辑
  • 错误场景处理:需覆盖登录失败(如账号密码错误、用户未激活)、GraphQL权限不足等异常情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:39:53