本地如何通过curl调用AppSync API?出现未授权报错如何处理?
问题排查与解决方案
核心错误原因
你遇到的You are not authorized to make this call报错,最主要的问题是认证请求头使用错误:
da2-开头的字符串是AWS AppSync的专属API密钥,不属于Bearer类型的身份令牌,不能放在Authorization: Bearer头中传递。
修正方案
1. 修改请求头配置
将原请求里的Authorization: Bearer <da2开头密钥>替换为x-api-key: <da2开头密钥>,修正后的curl命令如下:
curl -g -X POST -H "Content-Type: application/json" -H "x-api-key: da2-XXXXXXXXXXXXXXXXXXXXXXXXXX" -d '{"query":"query listMyModelTypes { listMyModelTypes { items { id title } } }"}' https://wuw4mcnvautpl4v5ox33fdzoq.appsync-api.us-east-1.amazonaws.com/graphql
2. 额外检查项
如果修改头后仍然报错,请确认以下配置:
- 你的AppSync API的默认授权模式是否设置为
API_KEY,如果是Cognito用户池、OIDC、IAM等其他授权模式,需要对应更换认证凭证和请求头 - 你使用的API密钥未过期,且未在AppSync控制台中被禁用
- 不需要在查询语句中额外添加API ID,你使用的请求URL已经包含了API的唯一标识,无需额外传递参数
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

