npm 包 @aws-sdk/bucket-endpoint-middleware 使用教程

阅读时长 6 分钟读完

AWS S3 存储服务是一个强大的云端存储解决方案,但是在访问存储桶(bucket)时,需要传递一个 bucket endpoint。这个 endpoint 可以是一个 URL,也可以是一个 hostname,一般情况下都是通过 Amazon S3 Region 标识来确定的。然而,在 Kubernetes 集群或者其他一些特殊的场景下,这个 endpoint 并不能自动的被解析。为了解决这个问题,AWS 提供了 @aws-sdk/bucket-endpoint-middleware 这个 npm 包,可以方便地实现 bucket endpoint 的自动解析。

安装 @aws-sdk/bucket-endpoint-middleware

安装这个 npm 包很简单,只需要在你的项目中执行下面的命令即可:

使用 @aws-sdk/bucket-endpoint-middleware

在开始使用这个 middleware 之前,需要先获取到你的 AWS 服务的访问凭证。凭证可以通过 AWS 访问密钥(AWS access key)和访问密钥 ID(AWS secret access key)来获得。

如果你已经拥有 AWS 的访问凭证,那么可以通过下面的方法来创建一个 S3 client:

-- -------------------- ---- -------
------ - -------- - ---- ---------------------
------ - ------------------------ - ---- --------------------------------------
------ - --------------- - ---- -------------------------------

----- -- - --- ----------
  ------- ------------ -- --- -- ----------
  ------------ ------------------ -- --- ------------ --- --- ----------
  ------------ --------------------------- -- - ------ -------- ---------- --- ----------- -
---

在这个 client 中,我们引用了 @aws-sdk/bucket-endpoint-middleware 这个 npm 包,并将其添加到 middlewares 中。这样,当我们访问 bucket endpoint 的时候,middleware 就会自动的将 endpoint 解析成 IP 地址,然后发送请求。

在 S3 client 中,我们还需要定义访问的 bucket 名称和 endpoint 名称。这些信息可以通过两种不同方式来获得:

方式一:传入 URL

如果你已经知道你的 bucket 的 endpoint URL,那么可以直接将其传入 s3 client 的命令中:

-- -------------------- ---- -------
----- ---------------------- - -------------------------------------
----- -------- - -----------------

----- --------------
  ------- ---------
  ---- ----------------
  ----- ----- -- - ---- ---------
  --------------- --- ---------------------------- -- - -------- --- --
---

方式二:使用 bucket name 来自动获取 endpoint

如果我们只知道 bucket 的名称,那么可以使用 S3 client 的方法来自动获取 endpoint。

AutoLocationEnabled 被设置为 true 后,s3 client 会自动的请求 AWS 的服务来获取 bucket 的 endpoint。为了保证这些请求的正确性,我们还需要确保 bucket 所在的 region 是正确的。

示例代码

下面是一个完整的 Node.js 示例代码,这个示例代码用来向 AWS S3 存储服务中上传一个文件。在上传文件之前,我们需要创建一个 S3 client,并将 bucket endpoint middleware 添加到它的 middlewares 中,然后我们就可以通过 S3 client 的方法来上传文件了。

-- -------------------- ---- -------
------ -- ---- -----
------ - -------- - ---- ---------------------
------ - ------------------------ - ---- --------------------------------------
------ - --------------- - ---- -------------------------------

-- --- ----
----- -- - --- ----------
  ------- ------------ -- --- -- ------
  ------------ ------------------
  ------------ ---------------------------
---

----- -------- - -----------------
----- ------ - ------------------ -- -------
----- ----- - ---------------- -- -- -----

-- ------
----- ----------- - ------------------------

-- ----
----- --------------
  ------- ---------
  ---- ------
  ----- ------------
  -------------------- ----- -- ------ ------ --------
---

总之,@aws-sdk/bucket-endpoint-middleware 是一个非常实用的 npm 包,在使用 AWS S3 存储服务的时候,可以方便地自动解析 bucket endpoint,尤其是在一些特殊的场景下,更有其强大的作用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6eecd1a9b7065299ccba17

纠错
反馈