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

如何在单个AWS Glue作业中同步多个RDS(AWS Aurora)表至S3

AWS Glue同步Aurora RDS多张表到S3的解决方案

单个Glue作业完全可以处理多张表的同步,不需要为每张表单独创建作业。你遇到的单表输入限制是Glue Studio可视化界面的设计局限,通过脚本模式可以轻松解决,下面是几种可行的实现方式:

方法1:通过Glue爬虫生成元数据后遍历处理

  • 先创建Glue爬虫,将其指向你的Aurora RDS数据库,配置爬虫爬取目标数据库的所有表。爬虫运行后,会在Glue Data Catalog中自动生成所有表的元数据信息。
  • 编写Glue Python作业脚本,遍历Data Catalog中该数据库下的所有表,逐个读取并写入S3。示例代码片段:
import sys
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.context import SparkContext
import boto3

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(sys.argv[0], sys.argv[1])

# 指定目标数据库名
db_name = "your_aurora_db_name"
s3_target_path = "s3://your-bucket/path/"

# 获取Data Catalog中的所有表
glue_client = boto3.client('glue')
tables = glue_client.get_tables(DatabaseName=db_name)['TableList']

for table in tables:
    table_name = table['Name']
    # 读取表数据
    dynamic_frame = glueContext.create_dynamic_frame.from_catalog(
        database=db_name,
        table_name=table_name
    )
    # 写入S3,按表名分区存储
    glueContext.write_dynamic_frame.from_options(
        frame=dynamic_frame,
        connection_type="s3",
        connection_options={"path": f"{s3_target_path}{table_name}/"},
        format="parquet"  # 可根据需求选择csv、json等格式
    )

job.commit()

方法2:手动指定表名列表循环处理

如果你的表名固定且不需要自动发现,可直接在脚本中定义表名列表,循环处理每张表:

import sys
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(sys.argv[0], sys.argv[1])

db_name = "your_aurora_db_name"
s3_target_path = "s3://your-bucket/path/"
# 手动指定需要同步的表名列表
table_list = ["table1", "table2", "table3"]

for table_name in table_list:
    dynamic_frame = glueContext.create_dynamic_frame.from_catalog(
        database=db_name,
        table_name=table_name
    )
    glueContext.write_dynamic_frame.from_options(
        frame=dynamic_frame,
        connection_type="s3",
        connection_options={"path": f"{s3_target_path}{table_name}/"},
        format="parquet"
    )

job.commit()

方法3:使用Glue工作流批量管理单表作业(备选)

如果需要对每张表的同步流程做单独配置(比如不同的调度时间、转换规则),可以为每张表创建单独的Glue作业,然后通过Glue Workflow将这些作业编排成批量任务,实现一键触发多张表的同步。不过这种方式相对繁琐,适合表数量少且需求差异化大的场景。

总结:优先选择方法1或方法2,用脚本模式突破Glue Studio可视化界面的单表限制,高效完成多表同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:35:38