有的时候在使用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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。