Amazon SQS (S3) 集成任务(Beta)
本文介绍如何创建 Amazon SQS (S3) 集成任务。该任务从 SQS 队列消费 S3 对象创建事件,并将对应的对象数据写入 TiDB Cloud Lake。
该任务专为 S3 事件驱动的数据摄取而设计。上游系统将对象写入 S3 后,S3 会向 SQS 发送 ObjectCreated 事件。TiDB Cloud Lake 通过 AssumeRole 消费 SQS 消息,并根据事件中的 bucket 和对象键将数据写入 TiDB Cloud Lake。
如果你需要先创建可复用的 SQS (S3) 连接设置,请参见 Amazon SQS (S3) - IAM Role (Beta)。
使用场景
- 基于 S3
ObjectCreated事件自动摄取新写入的 S3 对象 - 使用 S3 事件通知驱动数据摄取,减少新文件到达后的延时
- 避免仅依赖轮询 S3 路径来发现新文件
工作流程
- 上游系统将对象写入 S3 存储桶。
- S3 Event Notification 将
ObjectCreated事件发送到一个 SQS 标准队列。 - TiDB Cloud Lake 通过用户配置的 IAM Role 从 SQS 队列读取消息。
- 任务解析消息中的 S3 事件记录。
- 任务根据 S3 事件记录中的 bucket、对象键和文件格式,将数据写入 TiDB Cloud Lake 目标表。
- 写入成功后,任务会从队列中删除已处理的 SQS 消息。
前提条件
在创建 SQS (S3) 集成任务之前,请确保:
- 已创建 Amazon SQS (S3) - IAM Role 数据源
- S3 存储桶已配置
ObjectCreated事件通知,并将事件发送到目标 SQS 队列 - SQS 队列策略允许 Amazon S3 调用
sqs:SendMessage - 用户 IAM Role 允许 TiDB Cloud Lake 平台角色通过
sts:AssumeRole访问该角色 - 用户 IAM Role 具有读取目标 S3 对象和消费目标 SQS 队列的权限
- SQS 队列中包含标准 S3 Event Notification 格式的消息
- S3 通知中的 bucket、prefix 和 suffix 与数据源配置一致
创建 SQS (S3) 集成任务
第 1 步:基本信息
进入 Data > Data Integration,然后点击 Create Task。
选择一个 SQS (S3) 数据源,然后配置基本参数:
第 2 步:预览数据
完成基本设置后,点击 Next 预览源数据。
预览结果与 Amazon S3 集成任务 相同。系统会根据 SQS (S3) 配置定位对应的 S3 对象,读取文件内容,并显示:
- 包含列名和数据类型的样例数据
- 匹配到的 S3 对象列表及对象大小
第 3 步:设置目标表
在 TiDB Cloud Lake 中配置目标位置:
系统会根据预览的 S3 对象内容推导列名和数据类型。继续之前,你可以查看并编辑目标表结构。如果要写入现有表,请选择目标表并验证列映射。
点击 Create 创建集成任务。
任务行为
SQS (S3) 集成任务是一个持续运行的任务。启动后,它会定期从 SQS 队列读取消息,并将数据写入目标表,直到被手动下线。
与 Amazon S3 集成任务的区别
如果你的目标是定期扫描某个 S3 路径并导入文件内容,请使用 Amazon S3 Integration Task。如果你的目标是基于 S3 ObjectCreated 事件触发数据摄取,请使用 Amazon SQS (S3) Integration Task。