0

我正在尝试使用授权ReactNative AWS AmplifyAPI Gateway端点执行 API 调用。AWS_IAM

我通过调用(设置了所有 Amplify 初始化参数)来做到这一点:

import { API, Auth } from "aws-amplify";
...


API.get("MyApiName", "/resource")
  .then(resp => { ... })
  .catch(e => console.log(JSON.stringify(e));

我有控制台打印输出,例如:

{
  "message":"Request failed with status code 403",
  "name":"Error",
  "stack": "...",
  "headers":{
    "Accept":"application/json, text/plain, */*",
    "User-Agent":"aws-amplify/3.8.23 react-native",
    "x-amz-date":"20210908T172556Z",
    "X-Amz-Security-Token":"IQoJb3...",
    "Authorization":"AWS4-HMAC-SHA256 Credential=ASIA23GCUWEDETN632PS/20210908/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-date;x-amz-security-token, Signature=2a06fb4d8eb672164bfd736790fb1658edef1240d12a38afb599a9e33020c3cd"
    ...
}

因此,看起来请求已签名!

我使用 Cognito 用户池和适当的身份池。它们都设置正确,因为这些设置适用于使用 AWS Amplify S3 对 S3 存储的成功授权访问。

Cognito 身份池的经过身份验证的角色有权让 ExecuteApi 调用 API 资源方法。此外,它有权调用链接到 API 资源方法的 Lambda。

一切看起来都很好,但我仍然收到403 Forbidden错误消息。

这里缺少什么?

4

0 回答 0