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

如何通过AWS Glue连接使用RDS Proxy IAM身份验证?

AWS Glue 结合 RDS Proxy IAM 身份验证连接 RDS 的可行性

可行,以下是具体实现方案和关键细节:

核心逻辑

RDS Proxy的IAM身份验证依赖短期生成的DB Auth Token替代固定密码,AWS Glue可以通过自定义作业逻辑+IAM权限配置实现这种连接方式,无需存储静态密码。

关键配置与步骤

1. 配置IAM角色权限

  • 给Glue作业使用的IAM角色添加rds-db:connect权限,资源指定为目标RDS Proxy和对应数据库用户的ARN,格式示例:
    arn:aws:rds-db:us-east-1:123456789012:dbuser:my-proxy/iam-auth-db-user
    
  • 同时给该角色添加rds:GenerateDbAuthToken权限,允许调用生成认证Token的API
  • 确保Glue作业的IAM角色拥有VPC内访问RDS Proxy的权限(安全组规则允许Glue的ENI访问Proxy的数据库端口)

2. 在Glue作业中生成Auth Token

使用AWS SDK(以Python为例)在作业代码中生成临时认证Token:

import boto3
import sys
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ['JOB_NAME'])
rds_client = boto3.client('rds', region_name='us-east-1')

# 替换为你的Proxy端点、端口、DB用户名
auth_token = rds_client.generate_db_auth_token(
    DBHostname='my-proxy.proxy-xxxxxx.us-east-1.rds.amazonaws.com',
    Port=3306,
    DBUsername='iam-auth-db-user',
    Region='us-east-1'
)

3. 构建JDBC连接并访问数据库

将生成的auth_token作为密码传入JDBC连接参数,以MySQL为例:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName(args['JOB_NAME']).getOrCreate()

df = spark.read.format("jdbc") \
    .option("url", "jdbc:mysql://my-proxy.proxy-xxxxxx.us-east-1.rds.amazonaws.com:3306/my-db?useSSL=true&requireSSL=true") \
    .option("dbtable", "my-table") \
    .option("user", "iam-auth-db-user") \
    .option("password", auth_token) \
    .option("driver", "com.mysql.cj.jdbc.Driver") \
    .load()

df.show()

注意事项

  • 确保RDS Proxy已启用IAM身份验证,且对应的数据库用户是通过IAM身份验证配置的(而非常规密码用户)
  • Glue作业必须部署在与RDS Proxy相同的VPC内(或通过VPC peering连通),RDS Proxy默认不支持公网访问
  • Auth Token有效期为15分钟,若作业运行时长超过此时间,需重新生成Token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:35:11