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

AWS Amplify Cognito的listUsersInGroup接口调用失败求助

问题原因及解决方案

问题出在GET请求的参数传递方式:你使用API.get发起请求时,把groupname放在了请求body中,但HTTP规范里GET请求通常不携带body,AdminQueries的后端(Lambda函数)不会读取GET请求的body内容,因此无法获取到groupname参数,才会返回groupname is required的403错误。

修正代码方案

将groupname作为查询参数传递,有两种写法:

写法1:使用queryStringParameters(推荐)

import { Auth, API } from 'aws-amplify';

const listUsersInGroup = async (group) => {
    let apiName = 'AdminQueries';
    let path = '/listUsersInGroup';
    let myInit = {
      // 替换body为queryStringParameters
      queryStringParameters: {
        "groupname": group
      }, 
      headers: {
        'Content-Type' : 'application/json',
        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`
      } 
    };    
    const supervisorGet = await API.get(apiName, path, myInit);
    return supervisorGet;
  }

写法2:直接拼接在URL路径中

import { Auth, API } from 'aws-amplify';

const listUsersInGroup = async (group) => {
    let apiName = 'AdminQueries';
    // 直接将groupname作为查询参数拼到path里
    let path = `/listUsersInGroup?groupname=${encodeURIComponent(group)}`;
    let myInit = {
      headers: {
        'Content-Type' : 'application/json',
        Authorization: `${(await Auth.currentSession()).getAccessToken().getJwtToken()}`
      } 
    };    
    const supervisorGet = await API.get(apiName, path, myInit);
    return supervisorGet;
  }

为什么其他接口正常?

listUsers、listGroups这类接口要么不需要参数,要么参数是通过路径变量/查询参数传递的;而listGroupsForUser通常是基于用户路径(如/users/{username}/groups)的请求,参数放在URL路径中,符合GET请求的参数传递规范,所以能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:55:19