【发布时间】:2016-01-24 07:00:27
【问题描述】:
我正在尝试使用 aws-sdk 获取存储桶中文件的临时私有 URL,但生成的 URL 在浏览器中给了我一个 403。代码如下:
s3 = Aws::S3::Resource.new
bucket = s3.bucket('media.coolstuff.com')
obj = bucket.object('01.mp4')
obj.presigned_url(:get, expires_in: 3600, virtual_host: true)
返回:
=> "http://media.coolstuff.com:80/01.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJ75FYMC7AZWUI52A%2F20151024%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20151024T224953Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3bb646db5a50848bdc227066c5ecc70ad249dd404b63b8b799363aa360f18ef6"
在浏览器中,这个 URL 会导致 403:
403 Forbidden
Code: AccessDenied
Message: Access Denied
使用的凭据属于具有AmazonS3FullAccess 权限的组中的用户。
如何为可在网络浏览器中访问的对象生成预签名 URL?
【问题讨论】:
-
你发现了吗?我能够列出存储桶并下载图像,但是当我预先签署一个 URL 并尝试访问它时,我得到了 403。