これはアーカイブされた TiDB のドキュメントであり、更新は行われていません。最新の LTS バージョンのドキュメントを表示する ↗

Amazon S3 アクセスと GCS アクセスの設定

ソース データが Amazon S3 または Google Cloud Storage (GCS) バケットに保存されている場合は、データをTiDB Cloudにインポートまたは移行する前に、バケットへのクロスアカウント アクセスを構成する必要があります。このドキュメントでは、これを行う方法について説明します。

Amazon S3 アクセスの構成

TiDB Cloud がAmazon S3 バケットのソース データにアクセスできるようにするには、次の手順に従ってTiDB Cloudのバケット アクセスを設定し、Role-ARN を取得します。

  1. TiDB Cloudコンソールで、ターゲットの TiDB クラスターのTiDB Cloudアカウント ID と外部 ID を取得します。

    1. クラスターページに移動し、左側のナビゲーション バーの上部でターゲット プロジェクトを選択します。

    2. ターゲット クラスターを見つけて、クラスター領域の右上隅にある[...]をクリックし、 [データのインポート]を選択します。 [データのインポート]ページが表示されます。

      ヒント:

      または、 [クラスター]ページでクラスターの名前をクリックし、 [インポート]領域で[データのインポート] をクリックすることもできます。

    3. [データのインポート]ページで、 [必要なロール ARN を取得するためのガイド]をクリックして、 TiDB Cloudアカウント ID とTiDB Cloud外部 ID を取得します。後で使用するために、これらの ID をメモしておいてください。

  2. AWS マネジメント コンソールで、Amazon S3 バケットの管理ポリシーを作成します。

    1. AWS マネジメント コンソールにサインインし、 https://console.aws.amazon.com/s3/で Amazon S3 コンソールを開きます。

    2. [バケット]リストで、ソース データを含むバケットの名前を選択し、 [ARN のコピー]をクリックして S3 バケット ARN を取得します (たとえば、 arn:aws:s3:::tidb-cloud-source-data )。後で使用するために、バケット ARN を書き留めます。

      Copy bucket ARN

    3. https://console.aws.amazon.com/iam/でIAMコンソールを開き、左側のナビゲーション ペインで[ポリシー]をクリックし、 [ポリシーの作成]をクリックします。

      Create a policy

    4. [ポリシーの作成]ページで、 [JSON]タブをクリックします。

    5. 次のアクセス ポリシー テンプレートをコピーして、ポリシー テキスト フィールドに貼り付けます。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "<Your S3 bucket ARN>/<Directory of your source data>/*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "<Your S3 bucket ARN>" } ] }

      ポリシー テキスト フィールドで、次の構成を独自の値に更新します。

      • "Resource": "<Your S3 bucket ARN>/<Directory of the source data>/*"

        たとえば、ソース データがtidb-cloud-source-dataバケットのルート ディレクトリに格納されている場合は、 "Resource": "arn:aws:s3:::tidb-cloud-source-data/*"使用します。ソース データがバケットのmydataディレクトリに保存されている場合は、 "Resource": "arn:aws:s3:::tidb-cloud-source-data/mydata/*"を使用します。 TiDB Cloud がこのディレクトリ内のすべてのファイルにアクセスできるように、ディレクトリの最後に/*が追加されていることを確認してください。

      • "Resource": "<Your S3 bucket ARN>"

        たとえば、 "Resource": "arn:aws:s3:::tidb-cloud-source-data"です。

    6. [次へ: タグ]をクリックし、ポリシーのタグを追加して (オプション)、 [次へ: 確認]をクリックします。

    7. ポリシー名を設定し、 [ポリシーの作成]をクリックします。

  3. AWS マネジメント コンソールで、 TiDB Cloudのアクセス ロールを作成し、ロール ARN を取得します。

    1. https://console.aws.amazon.com/iam/のIAMコンソールで、左側のナビゲーション ペインで[ロール]をクリックし、 [ロールの作成]をクリックします。

      Create a role

    2. ロールを作成するには、次の情報を入力します。

      • [信頼されたエンティティ タイプ]で、 [AWS アカウント]を選択します。
      • An AWS accountで、 Another AWS accountを選択し、 TiDB Cloudアカウント ID をAccount IDフィールドに貼り付けます。
      • [オプション]で、 [外部 ID を要求する (サード パーティがこのロールを引き受ける場合のベスト プラクティス)]をクリックし、 TiDB Cloudの外部 ID を[外部 ID]フィールドに貼り付けます。 「外部 ID が必要」なしでロールが作成された場合、プロジェクト内の 1 つの TiDB クラスターの設定が完了すると、そのプロジェクト内のすべての TiDB クラスターは同じ Role-ARN を使用して Amazon S3 バケットにアクセスできます。アカウント ID と外部 ID を使用してロールが作成された場合、対応する TiDB クラスターのみがバケットにアクセスできます。
    3. [次へ]をクリックしてポリシー リストを開き、作成したポリシーを選択して、 [次へ]をクリックします。

    4. [ロールの詳細]で、ロールの名前を設定し、右下隅にある[ロールの作成]をクリックします。ロールが作成されると、ロールのリストが表示されます。

    5. ロールのリストで、作成したロールの名前をクリックしてその概要ページに移動し、ロール ARN をコピーします。

      Copy AWS role ARN

  4. TiDB Cloudコンソールで、 TiDB Cloudアカウント ID と外部 ID を取得するデータ インポートページに移動し、ロール ARN をロール ARNフィールドに貼り付けます。

GCS アクセスの構成

TiDB Cloud がGCS バケット内のソース データにアクセスできるようにするには、バケットの GCS アクセスを構成する必要があります。プロジェクト内の 1 つの TiDB クラスターの構成が完了すると、そのプロジェクト内のすべての TiDB クラスターが GCS バケットにアクセスできるようになります。

  1. TiDB Cloudコンソールで、ターゲット TiDB クラスターの Google Cloud サービス アカウント ID を取得します。

    1. クラスターページに移動し、左側のナビゲーション バーの上部でターゲット プロジェクトを選択します。

    2. ターゲット クラスターを見つけて、クラスター領域の右上隅にある[...]をクリックし、 [データのインポート]を選択します。 [データのインポート]ページが表示されます。

      ヒント:

      または、 [クラスター]ページでクラスターの名前をクリックし、 [インポート]領域で[データのインポート]をクリックすることもできます。

    3. [データのインポート]ページで、 [Google Cloud サービス アカウント ID を表示]をクリックし、後で使用できるようにサービス アカウント ID をコピーします。

  2. Google Cloud Platform (GCP) 管理コンソールで、GCS バケットのIAMロールを作成します。

    1. GCP 管理コンソールにサインインします。

    2. 役割ページに移動し、 [CREATE ROLE]をクリックします。

      Create a role

    3. 役割の名前、説明、ID、および役割の開始段階を入力します。ロールの作成後にロール名を変更することはできません。

    4. [権限を追加]をクリックします。

    5. 次の読み取り専用アクセス許可を役割に追加し、 [追加]をクリックします。

      • storage.buckets.get
      • storage.objects.get
      • storage.objects.list

      アクセス許可名をフィルター クエリとして [プロパティ名または値を入力]フィールドにコピーし、フィルター結果で名前を選択することができます。 3 つのアクセス許可を追加するには、アクセス許可名の間にORを使用できます。

      Add permissions

  3. バケツページに移動し、 TiDB Cloudにアクセスさせたい GCS バケットの名前をクリックします。

  4. バケットの詳細ページで、 [PERMISSIONS]タブをクリックし、 [GRANT ACCESS]をクリックします。

    Grant Access to the bucket

  5. 次の情報を入力してバケットへのアクセスを許可し、 [保存]をクリックします。

    • [New Principals]フィールドに、ターゲット TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。

    • [ロールの選択]ドロップダウン リストで、作成したばかりのIAMロールの名前を入力し、フィルター結果から名前を選択します。

    ノート:

    TiDB Cloudへのアクセスを削除するには、付与したアクセスを削除するだけです。

  6. バケットの詳細ページで、 [オブジェクト]タブをクリックします。

    ファイルの gsutil URI をコピーする場合は、ファイルを選択し、 [オブジェクト オーバーフロー メニューを開く]をクリックし、 [gsutil URI をコピー]をクリックします。

    Get bucket URI

    フォルダの gsutil URI を使用する場合は、フォルダを開き、フォルダ名に続く [コピー] ボタンをクリックしてフォルダ名をコピーします。その後、フォルダの正しい URI を取得するために、名前の先頭にgs:// 、末尾に/追加する必要があります。

    たとえば、フォルダー名がtidb-cloud-source-dataの場合、URI としてgs://tidb-cloud-source-data/使用する必要があります。

    Get bucket URI

  7. TiDB Cloudコンソールで、Google Cloud サービス アカウント ID を取得するデータ インポートページに移動し、GCS バケット gsutil URI をバケット gsutil URIフィールドに貼り付けます。たとえば、 gs://tidb-cloud-source-data/を貼り付けます。