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

如何在EMR上无需AWS凭证实现Python与Redshift的连接

EMR环境Python免硬编码凭证连接Redshift方案

核心原理

依托EMR集群默认绑定的EC2实例IAM角色,自动获取AWS临时凭证调用Redshift接口生成数据库临时登录信息,全程不需要手动写入AK/SK,完全使用AWS原生服务,无第三方依赖。

前置配置

  • 找到EMR集群对应的EC2实例配置文件角色(默认角色名为EMR_EC2_DefaultRole,自定义角色请替换为实际使用的角色),为其附加如下权限:
    • 允许执行redshift:GetClusterCredentials操作,资源范围限制为目标Redshift集群ARN
    • 若配置AutoCreate=True自动创建数据库用户,还需要附加对应数据库用户、用户组的相关权限
  • 网络配置:确保EMR集群安全组允许出站到Redshift的默认端口5439,Redshift集群安全组允许EMR集群安全组的IP段入站访问5439端口

环境依赖安装

EMR环境中默认预装boto3,仅需要安装Redshift连接驱动即可,执行如下命令:
pip install psycopg2-binary
如果使用Redshift官方驱动,也可以安装redshift-connector

连接代码示例

import boto3
import psycopg2
from psycopg2 import OperationalError

# 替换为实际业务参数
REDSHIFT_CLUSTER_ID = "your-redshift-cluster-id"
REDSHIFT_DB_NAME = "your-database-name"
REDSHIFT_ENDPOINT = "your-redshift-cluster-endpoint"
REDSHIFT_PORT = 5439
DB_USER = "your-db-username"
AWS_REGION = "your-aws-region"

# 自动从EMR实例元数据获取IAM角色凭证,无需手动配置密钥
redshift_client = boto3.client("redshift", region_name=AWS_REGION)
# 获取Redshift数据库临时登录凭证
credential_resp = redshift_client.get_cluster_credentials(
    ClusterIdentifier=REDSHIFT_CLUSTER_ID,
    DbUser=DB_USER,
    DbName=REDSHIFT_DB_NAME,
    AutoCreate=False,
    DurationSeconds=3600
)

# 建立数据库连接
try:
    conn = psycopg2.connect(
        host=REDSHIFT_ENDPOINT,
        port=REDSHIFT_PORT,
        dbname=REDSHIFT_DB_NAME,
        user=credential_resp["DbUser"],
        password=credential_resp["DbPassword"]
    )
    print("Redshift连接成功")
    # 下方写入业务SQL逻辑
    # cur = conn.cursor()
    # cur.execute("SELECT version()")
    # print(cur.fetchone())
except OperationalError as e:
    print(f"连接失败:{str(e)}")
finally:
    if "conn" in locals() and not conn.closed:
        conn.close()
        print("连接已释放")

注意事项

  • 临时凭证默认有效期最短15分钟、最长36000秒,长时间运行的任务可以在凭证过期前重新调用get_cluster_credentials获取新凭证重连
  • IAM角色权限请遵循最小权限原则,不要授予跨集群、跨账号的访问权限
  • 如果Redshift启用了SSL连接,只需要在psycopg2.connect参数中添加sslmode='require'即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:05