OSS服务端签名后直传出现“The OSS Access Key Id you provided does not exist in our records.”报错

问题描述

通过服务端签名后直传最佳实践进行OSS Web端PostObject直传时,出现以下报错。

<Error>
  <Code>InvalidAccessKeyId</Code>
  <Message>The OSS Access Key Id you provided does not exist in our records.</Message>
  <RequestId>60AE1FFE8CFD483135961F65</RequestId>
  <HostId> BucketName.oss-cn-beijing.aliyuncs.com</HostId>
  <OSSAccessKeyId>STS.XXXXXXXB32vtXXXXXXXXXX</OSSAccessKeyId>
</Error>

排查过程 

  1. 由于使用的是PostObject表单上传,因此需要您在浏览器打开开发者工具并复现问题,然后单击Network,查看表单Form Data数据。
  2. 通过表单里的OSSAccessKeyId值可以看到没有传SecurityToken,只有一个STS的AccessKeyId。而一个STS是由AccessKeyId、AccessKeySecret和SecurityToken组成的,因此可以确定是没有传SecurityToken导致出现报错。

问题原因

通常使用STS提示“The OSS Access Key Id you provided does not exist in our records”报错都是由于没有传SecurityToken导致。

解决方案

使用PostObject表单上传的时候,如果使用STS的方式,则需要在表单中增加x-oss-security-token字段,x-oss-security-token字段的值就是STS的SecurityToken,具体信息请参见PostObject接口文档

相关文档

使用STS临时访问凭证访问OSS

适用于

  • 对象存储OSS