无需Lambda:DynamoDB数据同步至AWS MSK方案咨询
可行,无需Lambda中转的方案实现步骤
可行,你可以通过DynamoDB Streams + Amazon Kinesis Data Firehose的组合,直接将DynamoDB的新增数据推送到AWS MSK主题,完全不需要Lambda作为中间转发层。具体实现步骤如下:
1. 启用目标DynamoDB表的流功能
- 打开DynamoDB控制台,找到目标表,进入「流」标签页
- 点击「启用」,选择合适的流视图类型:
NEW_IMAGE:获取新写入/更新后的完整数据镜像(最常用)OLD_IMAGE:仅获取更新前的数据(按需选择)NEW_AND_OLD_IMAGES:同时获取新旧数据KEYS_ONLY:仅获取主键信息
- 保存配置,记录下生成的流ARN,后续会用到
2. 创建Kinesis Data Firehose交付流
- 打开Kinesis控制台,进入Data Firehose页面,点击「创建交付流」
- 源配置:选择「DynamoDB流」,关联上一步生成的DynamoDB流ARN,配置批量大小/间隔(按需调整,比如批量100条或间隔10秒)
- 目标配置:选择「Amazon MSK」
- 输入MSK集群ARN,选择要推送的目标主题名称
- 配置IAM角色:创建新角色或选择已有角色,确保角色拥有以下权限:
- 读取DynamoDB流的权限:
dynamodb:GetRecords、dynamodb:GetShardIterator、dynamodb:DescribeStream、dynamodb:ListStreams - 写入MSK的权限:
kafka:SendMessage、kafka:DescribeCluster
- 读取DynamoDB流的权限:
- 可选配置:
- 数据转换:如果需要将DynamoDB流的原始格式转换为自定义JSON/其他格式,可以启用Firehose的Lambda转换(此Lambda仅做数据格式处理,并非读取流转发,符合你的需求)
- 错误处理:设置将推送失败的数据存储到S3桶,方便后续排查
- 完成交付流创建
3. 验证数据推送
- 向目标DynamoDB表写入或更新一条数据
- 通过MSK控制台的主题消息查询工具,或使用Kafka客户端连接MSK集群,检查目标主题是否收到对应的消息
注意事项
- 确保MSK集群的安全组允许Firehose所在的VPC访问(Firehose会使用VPC端点访问MSK,需配置安全组开放9092/9094端口)
- 若MSK集群是私有访问模式,需确保Firehose的VPC可以访问到集群节点
- 批量配置会影响数据推送的延迟,根据业务需求平衡延迟和吞吐量
内容的提问来源于stack exchange,提问作者Abhiram Ajith
相关产品推荐
相关产品推荐

