TiDB を Amazon AppFlow と統合する
Amazon AppFlowは、サービスとしてのソフトウェア (SaaS) アプリケーションを AWS のサービスに接続し、データを安全に転送するために使用する完全マネージド型の API 統合サービスです。 Amazon AppFlow を使用すると、TiDB との間で、Salesforce、Amazon S3、LinkedIn、GitHub などのさまざまなタイプのデータ プロバイダーにデータをインポートおよびエクスポートできます。詳細については、AWS ドキュメントのサポートされている送信元および宛先アプリケーション参照してください。
このドキュメントでは、TiDB を Amazon AppFlow と統合する方法について説明し、例としてTiDB Cloud Serverless Tierクラスターの統合を取り上げます。
TiDB クラスターがない場合は、無料で約 30 秒で作成できるServerless Tierクラスターを作成できます。
前提条件
JDK 11 以上
メイヴン 3.8 以上
AWS CLIバージョン 2
AWS サーバーレス アプリケーション モデルのコマンド ライン インターフェイス (AWS SAM CLI) 1.58.0 以上
次の要件を持つ AWS ID およびアクセス管理 (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 の名前を指定します。- このプロンプテッド ガイドでは、AWS をTiDB Cloud Serverless Tierのクラウド プロバイダーとして使用します。 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 を使用してコネクタを登録する
AWS マネジメント コンソールでAmazon AppFlow > コネクタに移動し、 [Register new connector]をクリックします。
[新しいコネクタの登録] ダイアログで、アップロードした Lambda 関数を選択し、コネクタ名を使用してコネクタ ラベルを指定します。
[登録]をクリックします。その後、TiDB コネクタが正常に登録されます。
ステップ 2.フローを作成する
Amazon AppFlow > フローに移動し、 [Create flow]をクリックします。
フロー名を設定する
フロー名を入力し、 [次へ]をクリックします。
ソース テーブルと宛先テーブルを設定する
[送信元の詳細]と[宛先の詳細]を選択します。 TiDB コネクタは両方で使用できます。
ソース名を選択します。このドキュメントでは、サンプル ソースとしてSalesforceを使用しています。
Salesforce に登録すると、Salesforce によっていくつかのサンプル データがプラットフォームに追加されます。次の手順では、 Accountオブジェクトをソース オブジェクトの例として使用します。
[接続]をクリックします。
[Salesforce に接続]ダイアログで、この接続の名前を指定し、 [続行]をクリックします。
[許可]をクリックして、AWS が Salesforce データを読み取れることを確認します。
ノート:
会社がすでに Salesforce の Professional Edition を使用している場合、REST API はデフォルトで有効になっていません。 REST API を使用するには、新しい Developer Edition の登録が必要になる場合があります。詳細については、 Salesforce フォーラムのトピックを参照してください。
[送信先の詳細]領域で、送信先としてTiDB-Connectorを選択します。接続ボタンが表示されます。
Connectをクリックする前に、TiDB に Salesforce Accountオブジェクト用の
sf_account
テーブルを作成する必要があります。このテーブル スキーマは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 Cloud Serverless Tierクラスターを使用する場合は、 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 | +----+------+------+---------------+--------+----------+ +----+------+------+---------------+--------+----------+マッピング ルールを設定するには、左側でソース フィールド名を選択し、右側で宛先フィールド名を選択します。次に、 Map fields をクリックすると、ルールが設定されます。
このドキュメントでは、次のマッピング ルール (ソース フィールド名 -> 宛先フィールド名) が必要です。
- アカウント ID -> id
- アカウント名 -> 名前
- アカウントの種類 -> タイプ
- 請求先の都道府県 ->billing_state
- アカウントの評価 -> 評価
- 業種 -> 業種
(オプション) フィルターを設定する
データ フィールドにフィルターを追加する場合は、ここで設定できます。それ以外の場合は、この手順をスキップして[次へ]をクリックします。
フローの確認と作成
作成するフローの情報を確認します。問題がなければ、 [Create flow]をクリックします。
ステップ 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 Serverless Tier本番環境ではありません。
- 長すぎるのを防ぐために、このドキュメントの例では
Insert
戦略のみを示していますが、Update
およびUpsert
戦略もテストされており、使用できます。