简介
在开发 AWS 云上应用程序时,region 是非常重要的一个概念。AWS 上的资源通常分布在不同的地理位置上,每个地理位置都有一个特定的 region 名称。很多 AWS 服务需要明确指定 region 来进行工作,比如 S3 存储、EC2 虚拟机等等。
AWS SDK (Software Development Kit) 是一个方便的程序库,可以方便地使用 AWS 服务进行开发。在前端领域,常用的 AWS SDK 是 @aws-sdk/client-s3。
但是在使用 AWS SDK 时,我们还需要指定 AWS 的 region。通常来说,可以在应用程序中直接硬编码 region,但这不是一个好的实践。因为 region 可能需要经常修改,硬编码会给应用程序的维护带来麻烦。
@aws-sdk/region-provider 这个 npm 包提供了一种方便的方式来解决这个问题。它可以自动地从环境变量或者 AWS metadata endpoint 中动态地获取当前 region。
安装
在你的项目中使用 npm 安装该包:
npm install @aws-sdk/region-provider
使用方法
从环境变量中获取 region
在环境变量中添加 AWS_REGION 或 AWS_DEFAULT_REGION。
import { fromEnv } from '@aws-sdk/region-provider'; const region = fromEnv().region; console.log(region);
从 AWS metadata endpoint 中获取 region
如果环境变量中没有设置 region,你可以尝试从 AWS metadata endpoint 中自动获取 region。
import { fromContainerMetadata } from '@aws-sdk/region-provider'; const region = fromContainerMetadata().region; console.log(region);
从 EC2 metadata 中获取 region
如果你的应用程序运行在 AWS EC2 实例上,你可以使用 fromInstanceMetadata 获取 region。
import { fromInstanceMetadata } from '@aws-sdk/region-provider'; const region = fromInstanceMetadata().region; console.log(region);
示例代码
获取 S3 存储桶对象
-- -------------------- ---- ------- ------ - --------- ------------------ - ---- --------------------- ------ - ------- - ---- --------------------------- ----- ------ - ----------------- ----- -- - --- ---------- ------ --- ----- ------------------ - --- ----------------------- ----- ------- - ----- ---------------------------- ---------------------
结论
在开发 AWS 云上应用程序时,获取当前 region 是非常重要的。但是硬编码 region 是不好的实践。@aws-sdk/region-provider 这个 npm 包提供了一种方便的方式来解决这个问题。它可以自动地从环境变量或者 AWS metadata endpoint 中动态地获取当前 region。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/133781