Dav*_*lsh 2 amazon-s3 amazon-web-services pre-signed-url
我的后端是一个 nodejs 应用程序,我希望用户将图像上传到 Amazon S3 存储桶。
从我的服务器运行:
const s3 = new AWS.S3({
params: {
Bucket: bucket
}
});
app.get('/api/images/signed-url', authMiddleware, (req, res) => {
s3.getSignedUrl('putObject',
{ ContentType: 'image/jpeg', Key: uuid() + '.jpeg' },
(_err, url) => res.send({ signedUrl })
})
Run Code Online (Sandbox Code Playgroud)
然后从我的浏览器客户端上传到该端点
该网址如下所示:
https://my-s3-bucket.s3.ap-southeast-2.amazonaws.com/0050db00-c64c-419a-83c2-e8615120f458.jpeg?AWSAccessKeyId=MY_ACCESS_KEY&Content-Type=image%2Fjpeg&Expires=1625365030&Signature=1ebnshTgeMKoLMAH%2Bi2FLletsAU%3D
Run Code Online (Sandbox Code Playgroud)
鉴于此 URL 包含 my MY_ACCESS_KEY_ID,与客户共享是否安全?我不分享我的秘密(显然),但它是等式的一半。
Aws 编程键具有access key ID and secret key.
将 ID 视为计算机的用户名,将密钥视为密码。 请注意,在 URL 中,它是访问密钥 ID,而不是密钥。 所以人们可以看到您的用户名。
access-key-id must be specified so the service knows who's making the request.
Run Code Online (Sandbox Code Playgroud)
并且即使您担心暴露您的访问密钥 ID 的事实,那么您应该记住从概念上讲`s3preSignedURL 是基于时间的,它仅在某些特定时间有效,不会超过该时间。
如果您担心该 URL 是否在可接受的有效时间范围内与他人共享,请微调您的权限,因为
预签名 URL 允许您访问 URL 中标识的对象,前提是预签名 URL 的创建者有权访问该对象。也就是说,如果您收到用于上传对象的预签名 URL,则仅当预签名 URL 的创建者具有上传该对象所需的权限时,您才能上传该对象。
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |