AWS用Glue读取S3文件上传数据到Redshift,再导出到Quicksight完整版,含VPC配置

发布于:2025-04-04 ⋅ 阅读:(20) ⋅ 点赞:(0)

1. 项目背景

AWS的官方文档,关于Glue和Vpc配置部分已经比较旧了,按照官方文档配置的流程始终跑不通,花了一番时间和波折后,才终于完整的跑通了。

在数据分析和商业智能(BI)领域,我们常需要将存储在 Amazon S3 上的原始数据加载到 Amazon Redshift Serverless,进行清理和转换后,再导入 Amazon QuickSight 进行可视化分析。本文将介绍如何使用 AWS Glue 读取 S3 文件,上传数据到 Redshift,并导出到 QuickSight,同时解决 VPC 访问问题

2. 架构流程

  1. 数据存储:S3 作为数据源,存放 CSV、JSON 或 Parquet 文件。

  2. 数据 ETL:Glue 读取 S3 数据,转换格式后上传到 Redshift。

  3. 数据分析:Redshift 存储清洗后的数据,提供 SQL 查询能力。

  4. 可视化展示:QuickSight 连接 Redshift 进行数据分析。

  5. VPC 配置:Redshift 运行在私有子网,需要 VPC 连接让 Glue 和 QuickSight 访问它。

    AWS整体流程配置顺序:

    配置VPC --> 创建 Redshfit 的IAM  --> 创建含Glue读写权限的IAM --> 创建Redshift 命名空间         --> 创建Glue任务  --> Quicksight 创建VPC配置 --> 读取Redshift

3. 详细操作步骤

3.1  VPC配置 (最重要的一个环节) 

  创建VPC: 其他选项按照默认的配置,手动开启DSN设置。(或者直接使用默认的VPC)

创建子网,互联网网关,子网和路由按照默认的做配置,之后自己需要再手动配置路由,所有的配置的时候下拉框都选择刚刚创建的VPC

路由需要加入0.0.0.0/0 igw,才能访问公网  (如果使用默认VPC,此处需要确认,没有的话手动加一下)

配置网络ACL,入站和出站规则:

然后再点击子网关联,编辑子网,把创建的子网加入进去

创建一个安全组,把所有流量都配置到源为安全组名称自己的配置上

终端节点,添加vpce-svc-0704d47ebfd5f32fc,s3,redshift,sts,kms, secretsmanager,这几个都必须要,缺一不可。

3.2  创建 Amazon Redshift Serverless 集群

  1. 登录 AWS 控制台,进入 Amazon Redshift Serverless控制面板。

  2. 创建工作组,配置需注意:

  3. Performance and cost controls:选择基本容量

    • RPU选择这个地方是大坑,天坑,一定要慎重选择,默认值是128, 一定要根据自己的数据大小看清楚合适的配置。(一个 RPU 提供 16 GB 内存),如果配置太高,哪怕只是执行简单一条查询,每次都按配置的RPU进行搜索计费。
      Amazon Redshift Serverless 的计算容量     Amazon Redshift Serverless 的计费

    • 网络和安全:选择配置的VPC,或者默认VPC,选择 私有子网

    • 安全组:选择一个自定义的安全组,记住名称,这个安全组后面还需要做一些配置

    • 增强型 VPC 路由:打开

    • IAM

  4. 创建表结构:写sql创建,例如:

    CREATE TABLE zyytest1 (
        id INT PRIMARY KEY,
        test_f1 VARCHAR(255),
        create_time TIMESTAMP
    );

    3.3  在 S3 上传数据

     在 S3 上传数据 zyytest1__max__3.json

    [
      {"id":5, "test_f1": "test_value_6", "create_time": "2025-03-26T10:00:06"},
      {"id":7, "test_f1": "test_value_7", "create_time": "2025-03-26T10:00:07"},
      {"id":8, "test_f1": "test_value_8", "create_time": "2025-03-26T10:00:08"}
    ]

    3.4  配置 AWS Glue 读取 S3 数据并上传到 Redshift

            3.4.1  创建 Glue VPC网络

             进入 AWS Glue 控制台,选择 Connections > Create connection

              选择Network --> next --> 选择3.1 里搭建的VPC,子网,安全组,保存default_vpc。创建完之后状态是ready就是正常的。

            3.4.2  创建 Glue 数据连接

                    进入 AWS Glue 控制台,选择 Connections > Create connection。

                    选择redshift --> 填写name:redshift-dev,把刚刚创建的redshift用户名命名填写上,保存后显示Ready,就是正常的可用状态。

    如果配置完不可用,可以点击这个Test connection  来测试连接是否正常

            3.4.3  创建 Glue Visual 

            点Visual ETL,选择S3,配置路径后,先查看schema是否正确

    配置完之S3的路径之后,可以在左下角看到schema

     正确的话进行下一步,选择Redshift,配置数据库连接,查看数据库表的schema是否正确。

           

    这个IAM记得配置上,就可以看到数据库的schema,在左下角。

    然后点击Script,可以看到图形化的配置生成的Script,并且可以在这个Script上,用python脚本更改配置。

    到这一步就证明VPC和Redshift的数据库都通了,接下来就可以摸索按照自己的需要,选择用图形化的方式配置更合适,或者用脚本的方式更合适了。

    配置完保存之后运行一遍,成功的话,在redshift查询下是否完整存入,如果缺少数据,需要手动指定schema。

            3.4.4  如果查询失败,再检查下IAM配置,选择合适的策略 
                    
            3.4.5  Job details 检查配置

    3.5 配置QuickSight VPC 

    点击右上角管理Quicksight --> 管理VPC链接 --> 添加VPC链接,把3.1配置的vpc,子网,安全组附加上去

    3.6 配置 Amazon QuickSight 访问 Redshift

    找到数据集 --> 新数据集 --> Redshift手动连接 ,选择刚刚创建的vpc,配置redshift的数据库账号密码,点击验证连接,验证通过后,创建数据源

    点击分析,新分析,创建界面化的表格,进行DIY。

    4. 总结

    • AWS Glue 负责从 S3 读取数据,转换后写入 Redshift

    • VPC 配置 解决 Glue 和 QuickSight 无法访问 Redshift 的问题。

    • QuickSight 连接 Redshift 进行 数据可视化

    通过该流程,我们可以自动化数据管道,实现从 S3 -> Glue -> Redshift -> QuickSight 的完整数据流,为企业 BI 提供高效的数据分析能力! 🚀

    参考链接:

    AWS Glue官方文档


    网站公告

    今日签到

    点亮在社区的每一天
    去签到