尝试使用 aws sdk 通过 CloudFront 获取上传到 s3 存储桶的对象时访问被拒绝

0

【以下的问题经过翻译处理】 使用 client-s3 sdk 签名 URL,我能够在我的 s3 存储桶中 PUT 和 DELETE 对象。但是,当尝试通过 CloudFront 使用 GET 请求访问这些相同的对象时,s3 拒绝我访问(Access Denied)这些对象。

在存储桶的权限部分,我将存储桶策略设置为允许来自我的 CloudFront 的 GET 请求。我能确认这个设置时有效的,因为当我通过 s3 控制台上传对象时,我可以使用 CloudFront 签名的 URL 从 s3 获取对象,这是有效的。但是一旦我以编程方式使用 client-s3 上传对象,我就无法通过我的 CloudFront 分发获取它

profile picture
专家
已提问 5 个月前20 查看次数
1 回答
0

【以下的回答经过翻译处理】 我仔细检查了整个环节,发现问题出在我对存储桶中对象的命名规则上。在为 PUT 请求创建 s3 presignedUrl 时,我在每个对象的名称中添加了 ISO8601 格式的时间戳。因此,当 CloudFront 尝试访问它时,它会更改日期字符串中的一些特殊字符。结果,s3 拒绝访问。因为云端试图访问的对象不存在。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则