📜  从 s3 存储桶获取文件的签名 url - Javascript (1)

📅  最后修改于: 2023-12-03 15:21:53.818000             🧑  作者: Mango

从 S3 存储桶获取文件的签名 URL - JavaScript

AWS S3 是一个亚马逊云服务,提供了一个可扩展的对象存储解决方案。开发人员可以通过 S3 存储和检索任意数量和任意大小的数据对象,同时也可以将这些对象存储为公有或私有的。

在某些情况下,您可能需要提供要由其他人下载的文件的 URL,但是您需要确保该 URL 是临时的且具有安全性。AWS S3 签名 URL 就是解决这个问题的方案之一。

什么是 S3 签名 URL?

S3 签名 URL 是一个授权访问 S3 存储桶中某个对象的 URL。在创建签名 URL 时,您可以为该 URL 设置一个时间戳,当该时间戳过期后,该 URL 将失效。此外,您可以为签名 URL 指定授权访问该 URL 的 AWS 账户和区域。

如何通过 JavaScript 获取 S3 签名 URL

以下是如何使用 JavaScript 从 S3 存储桶获取签名 URL 的步骤:

1. 在 AWS 后台创建 IAM 用户,并向其授予 S3 访问权限。

您需要为从 JavaScript 代码中访问 S3 API 的 IAM 用户分配足够的权限,例如 s3:GetObject 和 s3:PutObject。

2. 在 JavaScript 中初始化 AWS SDK。
const AWS = require('aws-sdk');

AWS.config.update({
    accessKeyId: '<AWS access key ID>',
    secretAccessKey: '<AWS secret access key>',
    region: '<AWS region>'
});
3. 创建 S3 签名 URL
const s3 = new AWS.S3();
const params = {
    Bucket: '<your-bucket-name>',
    Key: '<your-object-key>',
    Expires: 3600 // 过期时间(单位:秒)
};

const signedUrl = s3.getSignedUrl('getObject', params);
console.log(`The URL is ${signedUrl}`);

请将 <your-bucket-name><your-object-key> 替换为您要下载的对象的存储桶名称和对象键。

以上代码将创建一个 S3 签名 URL,您可以将其返回给用户以允许其下载该对象。注意,签名 URL 将在指定的过期时间后过期。

总结

本文向您介绍了如何使用 JavaScript 从 S3 存储桶获取文件的签名 URL。希望这篇文章可以帮助您更好地了解 S3 签名 URL,并在实际开发中成功地实现该功能。