前言
在大多数情况下, 用户对于如何配置 Amazon Redshift 的凭证进行身份认证, 存在一定的不确定性. 但是, 如果使用 NPM 包 redshift-authorizer, 就可以极大地简化这个过程. 当然, 在使用过程中, 需要掌握一些相关的知识.
在本文中, 我将详细介绍如何安装和使用 npm 包 redshift-authorizer, 包括如何创建 token 和如何将 token 添加进 Redshift 集群中.
安装和设置
首先需要确保你已经安装了 Node.js 和 NPM, 可以使用以下命令:
npm install -g redshift-authorizer
一旦 redshift-authorizer 包安装完成, 接着, 你需要创建一个 AWS IAM 用户和一组凭证. 如果你已经有了 IAM 用户和凭证, 可以跳过这一部分. 如果没有, 可以按照以下步骤创建.
- 登录 AWS 控制台,点击「创建管理员用户」。
- 设置适当的用户名和访问类型(编程访问), 点击「下一步:权限」。
- 在「添加用户至组中」页面上,创建新组或选择现有组。点击「下一步:审查」。
- 点击「创建用户」。
- 下载所需的凭证。
现在, 你需要将这些凭证添加到环境变量中. 你可以在命令行中使用以下命令:
export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
如果你使用的是 Windows, 使用以下命令:
SET AWS_ACCESS_KEY_ID=<your_access_key_id> SET AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
接下来, 你需要创建一个 S3 存储桶来保存凭证和最终生成的 token. 你可以使用以下命令创建:
aws s3api create-bucket --bucket <bucket_name>
注意, 这里的 <bucket_name>
是你创建的 S3 存储桶的名称.
使用 redshift-authorizer
在安装和设置完成后, 下面是如何使用 redshift-authorizer 包:
创建 Token
首先, 你需要使用以下命令创建 token:
redshift-authorizer create-token <s3_bucket_name> <s3_key_name> <duration> [--region <region_name>] [--expiry <expiry_time>]
这里的 <s3_bucket_name>
是你之前创建的 S3 存储桶的名称, <s3_key_name>
是 token 存储在 S3 存储桶中的名称, <duration>
是 token 的有效期(以秒为单位).
例如, 如果你想创建一个有效期为 3 分钟的 token, 并将其存储在名为 my-bucket
的 S3 存储桶的名称为 my-key
的键下, 可以使用以下命令:
redshift-authorizer create-token my-bucket my-key 180
这将会生成一个类似以下的 JSON 格式的 token:
{ "key_id": "AKIAJ...", "secret_access_key": "nXdf...", "session_token": "FQoG...", "expiration": "2022-05-06T14:12:37Z" }
这里的 key_id
, secret_access_key
, 和 session_token
是你所创建的 IAM 用户的凭证. expiration
是 token 的过期时间.
将 Token 添加进 Redshift 集群中
一旦你有了 token, 接下来你需要将其添加进 Redshift 集群中. 你可以使用以下命令:
redshift-authorizer add-token-to-cluster <cluster_id> [--port <port>] [--db_user <db_user>] [--db_password <db_password>] [--region <region_name>] [--token_file <token_file_path>]
这里的 <cluster_id>
是你要添加 token 的 Redshift 集群的 ID. <port>
是集群的端口号, 默认值为 5439
. <db_user>
是数据库用户名, 默认值为 root
. <db_password>
是数据库密码, 默认值为 ''
. <region_name>
是 AWS 区域的名称, 默认为 us-west-2
. <token_file_path>
是包含 token 的 JSON 格式的文件路径.
例如, 如果你要将 token 添加进 ID 为 my-cluster-1234
的 Redshift 集群, 可以使用以下命令:
redshift-authorizer add-token-to-cluster my-cluster-1234 --token_file /path/to/my-key.json
这会将 token 添加进 Redshift 集群中.
示例代码
以下是 Node.js 中如何使用 redshift-authorizer 包的示例代码:
-- -------------------- ---- ------- ----- ------------------ - ------------------------------- ----- ---------- - --- --------------------- -- -- ----- ----- ----- - ------------------------ ------------- ------------ ---------- --------- --------- --- --- -- -- ----- - -------- --- ----- --------- - ------------------ ----- ---- - ----- ----- ------ - ------- ----- ---------- - --- ----- ---------- - ------------ ----- --------- - ----------------------- ------------------------------ ---------- ---------- ----- ----- ------- ------- ----------- ----------- ----------- ----------- ---------- --------- ---
总结
如此简单, 你就可以使用 NPM 包 redshift-authorizer 快速地创建和添加 Redshift 集群的 token. 通过这个过程, 你可以更熟悉 AWS IAM 用户和 Redshift 集群凭证的管理, 并可以更轻松地进行身份验证. 当然, 在使用过程中, 需要注意相关的安全问题, 如何保护 IAM 用户的凭证安全等等.
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a830d0927023822709