前言
Amazon S3 是一项非常受欢迎的云储存服务,它可供开发者存储和检索任意量的数据,而且在全球范围内拥有广泛的服务器网络。如果你正在使用 Deno 来开发 Web 应用,那么将 Amazon S3 集成到你的应用程序中是一个很好的选择。本文将介绍如何在 Deno 中使用 Amazon S3 存储。
S3 基础知识
在使用 Amazon S3 存储之前,我们需要了解 Amazon S3 的以下基础知识:
- Bucket: S3 中的一个顶级容器,用于存储对象。
- Object: 存储在 S3 Bucket 中的原始数据。一个 Object 包含有关数据的元数据,例如 MIME 类型和创建/修改时间。
安装 AWS SDK for JavaScript
我们需要用到 AWS SDK for JavaScript,因此首先要安装它。在 Deno 中,您可以使用 depts.ts
文件来导入它:
import { S3Client, ListBucketsCommand, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, ListObjectsCommand } from "https://deno.land/x/s3/mod.ts";
在上面的代码中,我们从 AWS SDK 中导入了我们需要使用的类。具体来说,我们导入了:S3Client、ListBucketsCommand、PutObjectCommand、GetObjectCommand、DeleteObjectCommand 和 ListObjectsCommand。这些类我们将会在接下来的部分中用到。
连接 S3
在使用 S3 之前,我们需要建立一个连接。为此,我们需要提供与 AWS 帐户相关的访问凭据。
const s3 = new S3Client({ region: "us-west-2", credentials: { accessKeyId: "akid", secretAccessKey: "secret", }, });
在上面的代码中,我们通过 S3Client 的构造函数创建了一个新的 S3Client 实例。构造函数的参数包括 region
和 credentials
。region
是您设置的区域的名称,例如:us-west-2。credentials
部分包括您的 AWS 访问凭据。
操作 S3
列出 Bucket
要列出您账户下的所有 Bucket,您可以使用 ListBucketsCommand
类。下面是如何使用该类:
const command = new ListBucketsCommand({}); const response = await s3.send(command); console.log(response.Buckets);
在上面的代码中,我们创建一个新的 ListBucketsCommand
实例,并使用 await s3.send()
方法将该实例发送到 S3。 ListBucketsCommand
将返回一个包含所有 Bucket 的数组,您可以通过访问 response.Buckets
属性来获取其中所有 Bucket 的列表。
上传 Object
要将文件上传到 S3 Bucket ,您可以使用 PutObjectCommand
。 下面是如何使用该类:
const params = { Bucket: "mybucket", Key: "mykey", Body: "Hello, world!", }; const command = new PutObjectCommand(params); await s3.send(command);
在上面的代码中,我们使用 PutObjectCommand
类来上传一个包含“Hello, world!”字符串的 Object,并将其保存到名为“mybucket”的 Bucket 中。
下载 Object
要从 S3 Bucket 下载文件,您可以使用 GetObjectCommand
。 下面是如何使用该类:
-- -------------------- ---- ------- ----- ------ - - ------- ----------- ---- -------- -- ----- ------- - --- ------------------------- ----- -------- - ----- ----------------- ----- ---- - ----- ---------------------------- --------------- ----------------------------
在上面的代码中,我们使用 GetObjectCommand
类来下载 Object,该 Object位于名为“mybucket”的 Bucket 中,并将其存储到本地文件系统中。 然后,我们使用 Deno.readAll()
方法读取 Object 的内容,并在控制台上打印它。为了将字节数组转换为字符串,我们使用 new TextDecoder()
方法。
删除 Object
要从 S3 Bucket 删除文件,您可以使用 DeleteObjectCommand
。 下面是如何使用该类:
const params = { Bucket: "mybucket", Key: "mykey", }; const command = new DeleteObjectCommand(params); await s3.send(command);
在上面的代码中,我们使用 DeleteObjectCommand
类从名为“mybucket”的 Bucket 中删除带有“mykey”名称的 Object。
列出 Objects
要列出名为“mybucket”的 Bucket 中的所有 Object,您可以使用 ListObjectsCommand
。 下面是如何使用该类:
const params = { Bucket: "mybucket", }; const command = new ListObjectsCommand(params); const response = await s3.send(command); console.log(response.Contents);
在上面的代码中,我们使用 ListObjectsCommand
类来列出名为“mybucket”的 Bucket 中的所有 Object,并将其打印到控制台上。
总结
本文介绍了如何在 Deno 中使用 Amazon S3 存储。我们首先了解了 S3 的基础知识,然后使用 AWS SDK for JavaScript 连接到 S3,并且使用了 S3 的 API 进行操作。通过本文的学习,您将掌握如何将 Amazon S3 集成到 Deno 应用程序中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6472cff5968c7c53b00626ab