📣
TiDB Cloud Essential 开放公测中。此页面由 AI 自动翻译,英文原文请见此处。

将 TiDB 集成到 Amazon AppFlow

Amazon AppFlow 是一项全托管的 API 集成服务,你可以用它将你的 SaaS 应用程序与 AWS 服务连接,并安全地传输数据。通过 Amazon AppFlow,你可以在 TiDB 与多种数据提供方之间导入和导出数据,例如 Salesforce、Amazon S3、LinkedIn 和 GitHub。更多信息请参见 AWS 文档中的 Supported source and destination applications

本文档介绍了如何将 TiDB 集成到 Amazon AppFlow,并以集成 TiDB Cloud Starter 集群为例进行说明。

如果你还没有 TiDB 集群,可以创建一个 TiDB Cloud Starter 集群,该集群免费且大约 30 秒即可创建完成。

前置条件

第 1 步:注册 TiDB 连接器

克隆代码

克隆 TiDB 与 Amazon AppFlow 的集成示例代码仓库

git clone https://github.com/pingcap-inc/tidb-appflow-integration

构建并上传 Lambda

  1. 构建包:

    cd tidb-appflow-integration mvn clean package
  2. (可选)如果你还没有配置 AWS access key ID 和 secret access key,请进行配置。

    aws configure
  3. 将你的 JAR 包上传为 Lambda:

    sam deploy --guided

    如果你看到如下类似输出,说明 Lambda 部署成功。

    Successfully created/updated stack - <stack_name> in <region>
  4. 进入 AWS Lambda 控制台,你可以看到刚刚上传的 Lambda。注意需要在窗口右上角选择正确的 region。

    lambda dashboard

使用 Lambda 注册连接器

  1. AWS 管理控制台 中,导航到 Amazon AppFlow > Connectors,点击 Register new connector

    register connector

  2. Register a new connector 对话框中,选择你上传的 Lambda 函数,并使用连接器名称指定 connector label。

    register connector dialog

  3. 点击 Register。此时,TiDB 连接器注册成功。

第 2 步:创建 flow

导航到 Amazon AppFlow > Flows,点击 Create flow

create flow

设置 flow 名称

输入 flow 名称,然后点击 Next

name flow

设置源表和目标表

选择 Source detailsDestination details。TiDB 连接器可以用作两者之一。

  1. 选择源名称。本文档以 Salesforce 作为示例源。

    salesforce source

    注册 Salesforce 后,Salesforce 会在你的平台中添加一些示例数据。接下来的步骤将以 Account 对象作为示例源对象。

    salesforce data

  2. 点击 Connect

    1. Connect to Salesforce 对话框中,指定该连接的名称,然后点击 Continue

      connect to salesforce

    2. 点击 Allow,确认 AWS 可以读取你的 Salesforce 数据。

      allow salesforce

  3. Destination details 区域,选择 TiDB-Connector 作为目标。此时会显示 Connect 按钮。

    tidb dest

  4. 在点击 Connect 之前,你需要在 TiDB 中为 Salesforce 的 Account 对象创建一个 sf_account 表。注意该表结构与 Tutorial of Amazon AppFlow 中的示例数据不同。

    CREATE TABLE `sf_account` ( `id` varchar(255) NOT NULL, `name` varchar(150) NOT NULL DEFAULT '', `type` varchar(150) NOT NULL DEFAULT '', `billing_state` varchar(255) NOT NULL DEFAULT '', `rating` varchar(255) NOT NULL DEFAULT '', `industry` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) );
  5. 创建好 sf_account 表后,点击 Connect。会弹出连接对话框。

  6. Connect to TiDB-Connector 对话框中,输入 TiDB 集群的连接属性。如果你使用的是 TiDB Cloud Starter 集群,需要将 TLS 选项设置为 Yes,这样 TiDB 连接器会使用 TLS 连接。然后点击 Connect

    tidb connection message

  7. 现在你可以获取到你指定数据库下的所有表。从下拉列表中选择 sf_account 表。

    database

    下图展示了将 Salesforce Account 对象的数据传输到 TiDB 的 sf_account 表的配置:

    complete flow

  8. Error handling 区域,选择 Stop the current flow run。在 Flow trigger 区域,选择 Run on demand 触发类型,表示你需要手动运行 flow。然后点击 Next

    complete step1

设置映射规则

将 Salesforce 中 Account 对象的字段映射到 TiDB 的 sf_account 表,然后点击 Next

  • sf_account 表是新建的,当前为空。

    test> SELECT * FROM sf_account; +----+------+------+---------------+--------+----------+ | id | name | type | billing_state | rating | industry | +----+------+------+---------------+--------+----------+ +----+------+------+---------------+--------+----------+
  • 设置映射规则时,你可以在左侧选择源字段名,在右侧选择目标字段名。然后点击 Map fields,即可设置一条规则。

    add mapping rule

  • 本文档需要以下映射规则(源字段名 -> 目标字段名):

    • Account ID -> id

    • Account Name -> name

    • Account Type -> type

    • Billing State/Province -> billing_state

    • Account Rating -> rating

    • Industry -> industry

      mapping a rule

      show all mapping rules

(可选)设置过滤器

如果你想为数据字段添加一些过滤条件,可以在此处设置。否则跳过此步骤,点击 Next

filters

确认并创建 flow

确认即将创建的 flow 的信息。如果一切无误,点击 Create flow

review

第 3 步:运行 flow

在新建 flow 的页面右上角,点击 Run flow

run flow

下图展示了 flow 成功运行的示例:

run success

查询 sf_account 表,你可以看到 Salesforce Account 对象中的记录已经写入该表:

test> SELECT * FROM sf_account; +--------------------+-------------------------------------+--------------------+---------------+--------+----------------+ | id | name | type | billing_state | rating | industry | +--------------------+-------------------------------------+--------------------+---------------+--------+----------------+ | 001Do000003EDTlIAO | Sample Account for Entitlements | null | null | null | null | | 001Do000003EDTZIA4 | Edge Communications | Customer - Direct | TX | Hot | Electronics | | 001Do000003EDTaIAO | Burlington Textiles Corp of America | Customer - Direct | NC | Warm | Apparel | | 001Do000003EDTbIAO | Pyramid Construction Inc. | Customer - Channel | null | null | Construction | | 001Do000003EDTcIAO | Dickenson plc | Customer - Channel | KS | null | Consulting | | 001Do000003EDTdIAO | Grand Hotels & Resorts Ltd | Customer - Direct | IL | Warm | Hospitality | | 001Do000003EDTeIAO | United Oil & Gas Corp. | Customer - Direct | NY | Hot | Energy | | 001Do000003EDTfIAO | Express Logistics and Transport | Customer - Channel | OR | Cold | Transportation | | 001Do000003EDTgIAO | University of Arizona | Customer - Direct | AZ | Warm | Education | | 001Do000003EDThIAO | United Oil & Gas, UK | Customer - Direct | UK | null | Energy | | 001Do000003EDTiIAO | United Oil & Gas, Singapore | Customer - Direct | Singapore | null | Energy | | 001Do000003EDTjIAO | GenePoint | Customer - Channel | CA | Cold | Biotechnology | | 001Do000003EDTkIAO | sForce | null | CA | null | null | +--------------------+-------------------------------------+--------------------+---------------+--------+----------------+

注意事项

需要帮助?

DiscordSlack 社区提问,或提交支持工单

文档内容是否有帮助?