【发布时间】:2018-03-15 11:24:16
【问题描述】:
我在两个不同的帐户下有两个 S3 存储桶。两个存储桶的权限和 CORS 设置相同。 两个桶的区域如下(第一个工作)
- 地区:亚太地区(新加坡)(ap-southeast-1) 作品
- 地区:美国东部(俄亥俄州)(us-east-2) 不起作用
我使用 Node.js 创建了上传脚本并提供了以下区域和以下内容
Key : __XXXX__
secret: __XXXXX____,
bucket: _____XXXX__
'x-amz-acl': 'public-read',
ACL: 'public-read'
首先,代码可以正常工作,上传的文件也可以公开访问。但是对于第二个帐户(区域:us-east-2),脚本成功运行并返回 URL,但是当我查看存储桶时没有上传并且 url 说权限被拒绝,这意味着资源不可用。奇怪的是
- bucket中没有上传文件,为什么会返回url?
- 为什么相同的代码不适用于其他帐户,
我也尝试过 AWS 文档,但这似乎不是为像我这样的人编写的。非常感谢您的帮助。
【问题讨论】:
-
AWS 不会返回上传对象的 URL,因此您的代码或您正在使用的库正在执行此操作(可能不正确)。您提到了两个 AWS 账户 - 您使用的凭证是否对您上传到的两个 AWS 账户都有效,它们是否具有正确的 S3 权限集?
-
“url 表示权限被拒绝,这意味着资源不可用” 请不要改写或总结错误消息。显示准确错误。
-
此外,新加坡比俄亥俄州更古老,因此新加坡可以使用 Signature V2 或 V4 处理代码,而俄亥俄州仅支持 Sig V4。在俄亥俄州工作的代码在新加坡也能工作,但相反的不一定是正确的。没有看到您的代码,我们不能说这是否是一个因素。
标签: amazon-web-services amazon-s3