开发者社区> 问答> 正文

这样的错误信息是个什么鬼?

有的时候在使用osscmd会出现类似这样的错误,

<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>AccessDenied</Code>
  <Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message>
  <RequestId>56417DEDB8DE437A914EF3E5</RequestId>
  <HostId>testbucket1417773566.oss-cn-hangzhou.aliyuncs.com</HostId>
  <Bucket>testbucket1417773566</Bucket>
  <Endpoint>oss-us-west-1.aliyuncs.com</Endpoint>
</Error>


这样的错误到底是什么意思呢?



错误信息的意思是:==> 你打算要访问的Bucket必须要用特定的Endpoint访问,请把后续所有的请求都发到Endpoint项里指定的Endpoint,  <Endpoint>oss-us-west-1.aliyuncs.com</Endpoint>





为啥会出现这样的错误呢?
一句话解释就是OSS不允许跨区域访问。

用osscmd的gs命令可以看到,这个Bucket是在美国的。
2014-12-05 18:18:39  oss-us-west-1        testbucket1417773566

原来访问的域名是testbucket1417773566.oss-cn-hangzhou.aliyuncs.com,这个是杭州的。
但是这个Bucket是创建在美国的,OSS现在不支持跨区域访问。
也就是说美国的Bucket只能使用美国的Endpoint访问,不能使用杭州的Endpoint访问。

怎么解决呢?
所以在使用osscmd访问的时候,将访问的Endpoint指定为oss-us-west-1.aliyuncs.com就可以了。如下所示,错误不见了



osscmd ls oss://testbucket1417773566 --host=oss-us-west-1.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult>
  <Name>testbucket1417773566</Name>
  <Prefix></Prefix>
  <Marker></Marker>
  <MaxKeys>1000</MaxKeys>
  <Delimiter></Delimiter>
  <IsTruncated>false</IsTruncated>
</ListBucketResult>


prefix list is:
object list is:


prefix list number is: 0
object list number is: 0
1.169(s) elapsed

展开
收起
wood23 2015-11-10 13:20:24 12047 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载