前言
在开发 AWS 相关服务的应用程序时,认证是其中非常关键的一部分。AWS SDK 提供了多种方式来提供身份验证凭据,如在应用程序中硬编码凭据、使用 AWS IAM 角色和使用 AWS 凭证提供程序等。而 @aws-sdk/credential-provider-env
提供程序是一个使用环境变量来提供 AWS 认证凭据的提供程序,本文将对该 npm 包进行详细介绍和使用指导。
引入 @aws-sdk/credential-provider-env
安装 @aws-sdk/credential-provider-env
:
npm install @aws-sdk/credential-provider-env
或者使用 yarn:
yarn add @aws-sdk/credential-provider-env
使用 @aws-sdk/credential-provider-env
引入及使用 @aws-sdk/credential-provider-env
:
-- -------------------- ---- ------- ----- - ------- - - -------------------------------------------- ----- - -------- - - ------------------------------ ----- -- - --- ---------- ------------ --------- --- ------ -- -- - --- - ----- ---- - ----- ----------- ------------------ ------- ----------- ---- ------- ---- ------------------ - ----- ----- - ------------------- - -----
首先,我们引入 fromEnv()
函数和 S3Client
。S3Client 是 AWS SDK 的服务客户端。fromEnv()
从环境变量中提取 AWS 凭证并返回一个 CredentialProvider
对象。在我们的示例代码中,我们将 fromEnv()
声明为 S3Client 凭证选项的值,并使用 AWS SDK 的 S3Client 方法发出 GetObjectCommand 请求。
需要注意的是,该方法会获取系统环境变量中的 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
。如果需要使用其他默认环境变量,如 AWS_PROFILE
、AWS_REGION
等,可以在 fromEnv()
中设置。
-- -------------------- ---- ------- ----- - ------- - - -------------------------------------------- ----- - -------- - - ------------------------------ ----- -- - --- ---------- ------------ --------- ------------ ------------------- -- --------- -- ---------------- ----------------------- -- ------- ------------- ------------------- -- --------- -------- ----------------- -- ----- --- ------- ------- ----------- -- -------- -- ---
消除安全风险
虽然提供 AWS 认证凭据的方法十分方便,但要注意凭据不应该硬编码在应用程序中,而是应该通过 AWS 安全控件来存储和管理。
AWS 推荐使用 AWS Identity and Access Management (IAM) 用户和角色来管理 AWS 访问权限,因此建议使用该服务来管理凭据,而不是将凭据硬编码在代码中或存储在环境变量中。使用 IAM 用户和角色,您可以分配最小的权限,从而提高应用程序的安全性。
结语
使用 @aws-sdk/credential-provider-env
,我们可以在 AWS 应用程序中使用环境变量来提供身份验证凭据,从而提高开发的效率。同时,我们也需要注意安全问题,避免硬编码凭据或将凭据存储在环境变量中。
参考文献:
- AWS SDK for JavaScript Documentation, https://docs.aws.amazon.com/sdk-for-javascript/index.html
- AWS Security Best Practices, https://aws.amazon.com/security/best-practices/
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f6f182ca9b7065299ccba40