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

Snowplow RS Loader Server无法将S3数据加载至Redshift集群

Snowplow Redshift加载异常排查:SQS消息未消费、Redshift无数据

问题背景

  • 已基于Snowplow社区版快速入门指南在AWS部署完整数据管道
  • 自定义Schema存储于EC2上的Iglu Server数据库,触发点击事件后,S3中可正常生成富集事件(截图:S3富集事件)
  • Redshift集群中未出现对应事件数据,推测RS Loader Server未完成S3到Redshift的加载流程
  • 已配置Redshift安全组允许RS Loader Server安全组的入站流量

RS Loader Server的IAM策略

{
    "Statement": [
        {
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::dev-snowplow-terraform-sample-bucket/",
                "arn:aws:s3:::dev-snowplow-terraform-sample-bucket/*"
            ]
        },
        {
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::dev-snowplow-terraform-sample-bucket/*/shredding_complete.json"
            ]
        },
        {
            "Action": [
                "sqs:DeleteMessage",
                "sqs:GetQueueUrl",
                "sqs:ListQueues",
                "sqs:ChangeMessageVisibility",
                "sqs:ReceiveMessage",
                "sqs:SendMessage"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:sqs:<region>:<account_id>:dev-snowplow-rs-loader.fifo"
            ]
        },
        {
            "Action": [
                "logs:PutLogEvents",
                "logs:CreateLogStream",
                "logs:DescribeLogStreams"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:logs:<region>:<account_id>:log-group:/aws/ec2/dev-snowplow-rs-loader-server:*"
            ]
        },
        {
            "Action": [
                "sts:AssumeRole"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iam::<account_id>:role/dev-snowplow-rs-loader-server-sts-credentials"
            ]
        }
    ],
    "Version": "2012-10-17"
}

(注:已替换为正确的region和account_id)

关键现象

触发测试点击事件后,SQS队列dev-snowplow-rs-loader.fifo内有1条可用消息但从未被消费(截图:SQS未消费消息),使用Snowplow官方Terraform配置未做任何自定义修改,需排查部署流程中的遗漏步骤。

排查建议

  • 检查RS Loader Server运行状态:登录EC2实例,查看Loader服务是否正常启动(如systemctl status snowplow-rs-loader),同时查看CloudWatch日志组/aws/ec2/dev-snowplow-rs-loader-server中的错误日志,确认是否存在权限或连接异常。
  • 验证STS角色权限:检查IAM角色dev-snowplow-rs-loader-server-sts-credentials的信任策略,确认是否允许RS Loader的实例角色执行sts:AssumeRole;同时确认该STS角色具备Redshift写入权限(如redshift:CopyCommand、redshift:ExecuteStatement)以及S3数据访问权限。
  • 检查SQS队列配置:确认SQS队列的访问策略允许RS Loader的IAM角色进行消息接收、删除操作;检查队列可见性超时设置,排除消息被锁定无法消费的情况。
  • 测试Redshift连通性:在RS Loader Server的EC2实例上,尝试用psql直接连接Redshift集群,验证网络和认证配置是否正确。
  • 确认Shredding流程完整性:检查S3目标路径下是否生成shredding_complete.json文件,该文件是触发Loader加载的必要条件;同时确认Shredder组件运行正常,自定义Schema的shredding过程未出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:17:31