node.js - Nodejs 使用临时凭证错误连接到 Redshift
问题描述
我想使用临时凭据连接到 Redshift。
我试过用主用户名和密码连接,它工作正常。临时凭证的问题是以下格式的用户名:
username: 'IAM:awsuser'.
所以我认为连接没有正确理解“:”。所以它总是通过无效的密码。我已经从 Redshift 查询编辑器尝试了这个用户名和密码,它可以毫无问题地连接。
这是我正在使用的配置:
const configRed = {
host: 'redshift-cluster-name.aaaaaaa.eu-west-1.redshift.amazonaws.com',
user: 'IAM:awsuser',
password: data.DbPassword,
database: 'dev',
port: 5439,
idleTimeoutMillis: 0,
max: 10000
};
redshiftPool = new psql.Pool(configRed);
redshiftCon = await redshiftPool.connect();
我也尝试过使用带有 encodeURIComponent 的用户名:
user: encodeURIComponent('IAM:awsuser'),
它通过下一个错误:
"errorMessage": "password authentication failed for user \"IAM:awsuser\"",
对于一些自定义 URL,可以更改 PG 库中的连接 URL,例如:
jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
解决方案
在创建 Pool 对象时在 params 参数中指定“ssl: true”确实有效:
const configRed = {
host: 'redshift-cluster-name.aaaaaaa.eu-west-1.redshift.amazonaws.com',
user: 'IAM:awsuser',
password: data.DbPassword,
database: 'dev',
port: 5439,
idleTimeoutMillis: 0,
max: 10000,
ssl: true
};
推荐阅读
- reactjs - Chart.js (react-chartjs-2) - 增加图例标签之间的边距,但不在图表上
- reactjs - 我们可以自定义 create-react-app 应用程序的 babel 和 webpack 的默认配置吗?
- node.js - 如何以 zip 格式下载发布到 GitHub 包注册表的 NPM 包?
- python-3.x - 为什么同步函数中的 time.sleep 会阻塞主 FastAPI 线程?
- django - 区分在 django 中单击了哪个链接按钮
- mysql - 如何将 yyyymmdd hhmmss Etc/GMT 转换为 yyyy-mm-ddThh:mm:ss
- flutter - 从 .p12 文件或 .cer 文件管理器中获取签名
- visual-studio-code - VS Code:如何停用行选择器?
- javascript - 如何在 Electron 15 中导入菜单
- c++ - 当对象在 switch case 中超出范围时访问冲突