TiDB を Amazon AppFlow と統合する
Amazon AppFlow 、SaaS (Software as a Service) アプリケーションを AWS のサービスに接続し、安全にデータを転送するためのフルマネージド API 統合サービスです。Amazon AppFlow を使用すると、Salesforce、Amazon S3、LinkedIn、GitHub など、様々なデータプロバイダーとの間で TiDB のデータをインポートおよびエクスポートできます。詳細については、AWS ドキュメントのサポートされているソースアプリケーションと宛先アプリケーションご覧ください。
このドキュメントでは、TiDB を Amazon AppFlow と統合する方法について説明し、 TiDB Cloud Serverless クラスターの統合を例として取り上げます。
TiDB クラスターがない場合は、 TiDB Cloud Serverless クラスターを作成する使用できます。これは無料で、約 30 秒で作成できます。
前提条件
JDK 11以上
メイヴン 3.8以上
AWS CLIバージョン 2
次の要件を満たす AWS アイデンティティおよびアクセス管理 (IAM) ユーザー :
ユーザーはアクセスキー使用して AWS にアクセスできます。
ユーザーには次の権限があります。
AWSCertificateManagerFullAccess
: AWS シークレットマネージャーの読み取りと書き込みに使用されます。AWSCloudFormationFullAccess
: SAM CLI はAWS クラウドフォーメーションを使用して AWS リソースを宣言します。AmazonS3FullAccess
: AWS CloudFormation はアマゾンS3使用して公開します。AWSLambda_FullAccess
: 現在、Amazon AppFlow の新しいコネクタを実装するにはAWS ラムダ唯一の方法です。IAMFullAccess
: SAM CLI はコネクタ用にConnectorFunctionRole
作成する必要があります。
セールスフォースアカウント。
ステップ1. TiDBコネクタを登録する
コードを複製する
TiDB と Amazon AppFlow の統合サンプルコードリポジトリクローンします。
git clone https://github.com/pingcap-inc/tidb-appflow-integration
Lambdaをビルドしてアップロードする
パッケージをビルドします。
cd tidb-appflow-integration mvn clean package(オプション) AWS アクセスキー ID とシークレットアクセスキーをまだ設定していない場合は設定します。
aws configureJAR パッケージを Lambda としてアップロードします。
sam deploy --guided注記:
--guided
オプションでは、プロンプトが表示され、デプロイメントの手順を案内します。入力内容は設定ファイル(デフォルトではsamconfig.toml
に保存されます。stack_name
、デプロイする AWS Lambda の名前を指定します。- このガイドでは、 TiDB Cloud Serverless のクラウドプロバイダーとしてAWSを使用します。Amazon S3 をソースまたはデスティネーションとして使用するには、AWS Lambda の
region
Amazon S3 と同じ値に設定する必要があります。 - すでに
sam deploy --guided
実行している場合は、代わりにsam deploy
実行するだけで、SAM CLI は構成ファイルsamconfig.toml
を使用して対話を簡素化します。
次のような出力が表示された場合、この Lambda は正常にデプロイされています。
Successfully created/updated stack - <stack_name> in <region>AWS Lambdaコンソールに移動すると、アップロードしたLambdaが表示されます。ウィンドウの右上隅で正しいリージョンを選択する必要があることに注意してください。
Lambdaを使用してコネクタを登録する
AWS マネジメントコンソールでAmazon AppFlow > コネクタに移動し、 「新しいコネクタの登録」をクリックします。
「新しいコネクタの登録」ダイアログで、アップロードした Lambda 関数を選択し、コネクタ名を使用してコネクタ ラベルを指定します。
「登録」をクリックします。すると、TiDBコネクタが正常に登録されます。
ステップ2. フローを作成する
Amazon AppFlow > フローに移動して、 「フローの作成」をクリックします。
フロー名を設定する
フロー名を入力し、 「次へ」をクリックします。
ソーステーブルと宛先テーブルを設定する
ソースの詳細と宛先の詳細を選択します。TiDB コネクタはどちらでも使用できます。
ソース名を選択します。このドキュメントでは、 Salesforce をサンプルソースとして使用します。
Salesforceに登録すると、Salesforceはプラットフォームにサンプルデータを追加します。以下の手順では、 Accountオブジェクトをソースオブジェクトの例として使用します。
[接続]をクリックします。
[Salesforce に接続]ダイアログで、この接続の名前を指定して、 [続行]をクリックします。
「許可」をクリックして、AWS が Salesforce データを読み取ることができることを確認します。
注記:
貴社で既にSalesforceのProfessional Editionをご利用の場合、REST APIはデフォルトで有効化されていません。REST APIをご利用いただくには、新しいDeveloper Editionを登録していただく必要がある場合があります。詳しくはSalesforceフォーラムトピックをご覧ください。
「宛先の詳細」エリアで、宛先として「TiDB-Connector」を選択します。「接続」ボタンが表示されます。
「接続」をクリックする前に、Salesforce Accountオブジェクト用のテーブル
sf_account
をTiDBに作成する必要があります。このテーブルスキーマは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`) );sf_account
テーブルが作成されたら、 「接続」をクリックします。接続ダイアログが表示されます。「TiDBコネクタに接続」ダイアログで、TiDBクラスタの接続プロパティを入力します。TiDB TiDB Cloud Serverlessクラスタを使用する場合は、 TLSオプションを
Yes
に設定する必要があります。これにより、TiDBコネクタはTLS接続を使用できるようになります。次に、 「接続」をクリックします。これで、接続に指定したデータベース内のすべてのテーブルを取得できます。ドロップダウンリストからsf_accountテーブルを選択してください。
次のスクリーンショットは、Salesforce Accountオブジェクトから TiDB の
sf_account
のテーブルにデータを転送するための構成を示しています。「エラー処理」エリアで、 「現在のフロー実行を停止」を選択します。 「フロートリガー」エリアで、 「オンデマンド実行」トリガータイプを選択します。これは、フローを手動で実行する必要があることを意味します。「次へ」をクリックします。
マッピングルールを設定する
Salesforce のAccountオブジェクトのフィールドを TiDB のsf_account
テーブルにマップし、 [次へ]をクリックします。
sf_account
テーブルが TiDB に新しく作成され、空です。test> SELECT * FROM sf_account; +----+------+------+---------------+--------+----------+ | id | name | type | billing_state | rating | industry | +----+------+------+---------------+--------+----------+ +----+------+------+---------------+--------+----------+マッピングルールを設定するには、左側でソースフィールド名を選択し、右側で宛先フィールド名を選択します。その後、 「フィールドをマッピング」をクリックすると、ルールが設定されます。
このドキュメントでは、次のマッピング ルール (ソース フィールド名 -> 宛先フィールド名) が必要です。
- アカウントID -> id
- アカウント名 -> 名前
- アカウントの種類 -> タイプ
- 請求先州/県 -> billing_state
- アカウント評価 -> 評価
- 業界 -> 業界
(オプション)フィルターを設定する
データフィールドにフィルターを追加したい場合は、ここで設定できます。そうでない場合は、この手順をスキップして「次へ」をクリックしてください。
フローを確認して作成する
作成するフローの情報を確認します。問題がなければ、 「フローを作成」をクリックします。
ステップ3. フローを実行する
新しく作成されたフローのページで、右上隅の[フロー実行] をクリックします。
次のスクリーンショットは、フローが正常に実行された例を示しています。
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 |
+--------------------+-------------------------------------+--------------------+---------------+--------+----------------+
注目すべきこと
- 何か問題が発生した場合は、AWS マネジメントコンソールのクラウドウォッチページに移動してログを取得できます。
- このドキュメントの手順はAmazon AppFlow カスタムコネクタ SDK を使用してカスタムコネクタを構築するに基づいています。
- TiDB Cloudサーバーレスは本番環境ではありません。
- 長くなりすぎないように、このドキュメントの例では
Insert
戦略のみを示していますが、Update
とUpsert
戦略もテストされており、使用できます。
ヘルプが必要ですか?
不和またはスラック 、あるいはサポートチケットを送信するについてコミュニティに質問してください。