调用AWS Alexa TopSites服务提示Credential区域无效问题求助
AWS Alexa TopSites 接口调用错误修复方案
核心错误原因
你遇到的区域报错属于签名校验失败的误导性提示,实际问题是签名计算参数和实际请求参数不匹配,以及请求参数逻辑错误:
- 签名时使用的请求路径为根路径
/,但实际请求的路径是/api,路径不一致直接导致签名校验不通过 - 请求参数中同时传入了互斥的
CountryCode和Url参数,触发接口逻辑错误 - 该服务为全局服务,签名scope的区域值必须固定为
us-east-1,不可修改为其他值
修复步骤
- 修正请求路径和签名路径的一致性
直接删除请求URL中多余的/api路径,保证和签名用的canonical_uri = '/'完全匹配 - 清理互斥请求参数
TopSites接口下CountryCode(查询指定国家TOP站点列表)和Url(查询单个站点排名)两个参数互斥,不可同时传递,按需保留其中一组参数即可 - 固定签名区域参数
保持region = 'us-east-1'不要修改,该服务仅支持该值作为签名scope的区域配置
修改后的关键代码片段
# 固定签名配置,不要修改 service = "AlexaTopSites" host = "ats.amazonaws.com" region = 'us-east-1' # 去掉互斥的Url参数,保留查询巴西TOP站点的参数 request_parameters="Action=TopSites&Count=100&CountryCode=BR&ResponseGroup=Country&Start=301" # 修正请求URL,去掉多余的/api路径 url="https://ats.amazonaws.com/?"+request_parameters
修改完成后重新发起请求即可正常返回数据。
内容的提问来源于stack exchange,提问作者angebot
相关产品推荐
相关产品推荐

