You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用IAM凭证通过psql客户端访问AWS Redshift

用IAM身份通过psql访问AWS Redshift实操方案

前置前提

  • 你本地/运行环境已经配置好AWS CLI,且已经完成对应IAM用户/角色的身份认证:本地可通过~/.aws/credentials、环境变量注入身份,在EC2/ECS/Lambda等AWS服务内运行可直接给资源绑定符合权限的IAM角色,无需手动配置AKSK
  • 你使用的IAM身份已经绑定了包含redshift:GetClusterCredentials权限的策略,权限覆盖对应Redshift集群、数据库用户、数据库资源
  • Redshift集群已开启IAM身份访问权限,你要使用的数据库用户已存在,或者你给IAM身份开通了redshift:CreateClusterUser权限支持自动创建用户

实现逻辑

psql本身不直接支持AWS IAM认证,你只需要先通过AWS CLI调用接口生成临时数据库凭证,再把临时凭证作为密码传入原有psql命令即可,不需要修改原有命令的核心结构。

具体操作步骤

步骤1:给IAM身份配置访问权限

参考示例策略配置,替换尖括号内的占位符为你实际的资源信息即可:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials",
                "redshift:CreateClusterUser"
            ],
            "Resource": [
                "arn:aws:redshift:<集群所在区域>:<你的AWS账号ID>:dbuser:<Redshift集群标识>/<数据库用户名>",
                "arn:aws:redshift:<集群所在区域>:<你的AWS账号ID>:dbname:<Redshift集群标识>/<数据库名>"
            ]
        }
    ]
}

不需要自动创建用户的话可以去掉redshift:CreateClusterUser权限项。

步骤2:生成临时数据库凭证

通过AWS CLI命令生成临时密码,默认有效期15分钟,最长可设置为3600秒:

# 替换尖括号内的占位符为你实际的参数
credential=$(aws redshift get-cluster-credentials \
  --cluster-identifier <你的Redshift集群名> \
  --db-user <你的数据库用户名> \
  --db-name <你的数据库名> \
  --duration-seconds 3600 \
  --query "join(' ', [DbUser, DbPassword])" \
  --output text)

# 拆分出可用的用户名和临时密码
db_user=$(echo $credential | awk '{print $1}')
db_pass=$(echo $credential | awk '{print $2}')

步骤3:替换原有psql命令的密码参数

把你原有命令里的固定密码替换为上面生成的临时密码即可,完整执行示例:

redshift_query_output=$(PGPASSWORD=${db_pass} psql --no-align --quiet --field-separator=' ' -h ${host} -U ${db_user} -d $database_name -p $port_number  <<< $run_redshift_query |  sed -e '1d' |  head -n -1)

常见问题排查

  • 认证失败先执行aws sts get-caller-identity确认当前使用的IAM身份和预期一致,且权限配置无错误
  • 确认Redshift集群的安全组已经放行了运行环境的IP对集群端口的访问权限
  • 确认权限策略里的集群标识、用户名、数据库名、区域等参数和实际调用参数完全匹配,该配置大小写敏感

内容的提问来源于stack exchange,提问作者GrandPa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03