我正在尝试使用授权ReactNative AWS Amplify
从API 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
错误消息。
这里缺少什么?