亚马逊接口NextToken分页调用时AuthFailure问题的解决
Posted Defonds
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亚马逊接口NextToken分页调用时AuthFailure问题的解决相关的知识,希望对你有一定的参考价值。
使用 aws 第四代签名算法 API(非 SDK 方式)访问亚马逊云接口,比如 DescribeInstanceTypes 首次请求会返回100条数据和 NextToken 用于分页请求其余数据,但用 NextToken 再次请求时报错:
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Errors>
<Error>
<Code>AuthFailure</Code>
<Message>AWS was not able to validate the provided access credentials</Message>
</Error>
</Errors>
<RequestID>bc04724d-d051-4381-80f0-f442b9c5228e</RequestID>
</Response>
这是由于 NextToken 含有 = 号,比如:
AAIAATUFTwRD6DG2RbXdzNAO1krlm9wTzNX2iAYK8p0Fgf1qTdcn4GcbFV0MDclb6dpurh0YYmm0p4rrFw_bUWhfefWnHA4dvsqSNxxENqnlHOBgGopD5LN32ci3mAOh1SDqlFCSCrE0fAOIo8KRsqgHA7GOLBXCdg==
这种将导致 url 传的参数和签名参数不一致而导致 aws 签名失败,返回 AuthFailure。
解决办法是 GET 请求 url 拼接参数的时候,进行 URL 转义:
url += entry.getKey() + "=" + URLEncoder.encode(entry.getValue(),"UTF-8") + "&";
这就可以了,不要再对 AmazonAWSV4Auth、请求头的参数转义,继续请求就可以正常返回了。
以上是关于亚马逊接口NextToken分页调用时AuthFailure问题的解决的主要内容,如果未能解决你的问题,请参考以下文章
亚马逊接口NextToken分页调用时AuthFailure问题的解决
亚马逊接口NextToken分页调用时AuthFailure问题的解决