Aws lambda 带有查询参数的GET请求返回403错误(签名不匹配)-AWS放大 问题

Aws lambda 带有查询参数的GET请求返回403错误(签名不匹配)-AWS放大 问题,aws-lambda,serverless,aws-amplify,dynamodb-queries,Aws Lambda,Serverless,Aws Amplify,Dynamodb Queries,我试图在客户端使用带有查询参数的“aws amplify”GET API request,但结果是请求失败,状态代码403,响应显示: "message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service docu

我试图在客户端使用带有查询参数的“aws amplify”GET API request,但结果是请求失败,状态代码403,响应显示:

"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
注意:React.js作为前端,Javascript作为后端。

我的代码 前端 后端 我对调试做了什么
  • GET lambda函数在Amazon控制台中运行良好(已测试)
  • 如果我更改后端lambda函数,以便在不使用参数的情况下发出前端请求,即
    返回API.get(apiName,path)
    ,则不会显示错误
  • 我的问题 如何使用查询参数使这个GET请求工作?

    我将GET更改为POST(
    return API.POST()
    ),现在一切正常

    如果有人能提供更详细的解释,那将非常有用。

    我更改了GET to POST(
    return API.POST()
    ),现在一切正常


    如果有人能提供更详细的解释,那将非常有帮助。

    我也面临同样的问题。我认为这根本不是一个解决办法。您刚刚更改了RESTAPI的方法类型。你有没有找到让REST GET API amplify工作的解决方案?@SiddharthChoudhary在这里的例子中,查询参数在消息体中,而不是在URL字符串中附加它。POST方法是我一直在寻找的。如果要使用GET方法,则应在url字符串中追加参数。如果你想坚持使用GET方法,你可以参考这个@SiddharthChoudhary,你必须从Amazon API Gateway将该方法的授权从AWS_IAM更改为None谢谢你的回复。我确实找到了解决方案,这是AWS Amplify的IOS SDK的一个问题,他们解释我的论点的方式(有“:”)。这可能与SDK内部试图将其编码为的错误编码有关。愚蠢的AWS@悉达多胡达里,解决办法是……?我面临着同样的问题。我认为这根本不是一个解决办法。您刚刚更改了RESTAPI的方法类型。你有没有找到让REST GET API amplify工作的解决方案?@SiddharthChoudhary在这里的例子中,查询参数在消息体中,而不是在URL字符串中附加它。POST方法是我一直在寻找的。如果要使用GET方法,则应在url字符串中追加参数。如果你想坚持使用GET方法,你可以参考这个@SiddharthChoudhary,你必须从Amazon API Gateway将该方法的授权从AWS_IAM更改为None谢谢你的回复。我确实找到了解决方案,这是AWS Amplify的IOS SDK的一个问题,他们解释我的论点的方式(有“:”)。这可能与SDK内部试图将其编码为的错误编码有关。愚蠢的AWS@悉达多胡德哈里,解决办法是。。。。?
    function getData() { 
      const apiName = 'MyApiName';
      const path = '/path';
      const content = { 
         body:{
            data:'myData',
        },
      };
    
      return API.get(apiName, path, content);
    }
    
    try {
          const result = await dynamoDbLib.call("query", params);
    
        } catch (e) {
            return failure({ status: false });
        }