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

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

Amazon S3 アクセスの構成

TiDB Cloudが Amazon S3 バケットのソース データにアクセスできるようにするには、次の手順TiDB Cloudのバケット アクセスを設定し、Role-ARN を取得します。プロジェクト内の 1 つの TiDB クラスターの設定が完了すると、そのプロジェクト内のすべての TiDB クラスターが同じ Role-ARN を使用して Amazon S3 バケットにアクセスできるようになります。

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

    1. TiDB Cloudコンソールで、ターゲット プロジェクトを選択し、[クラスター] ページに移動します。

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

      ヒント:

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

    3. [データ インポート タスク] ページで、[ AWS IAMポリシー設定を表示] をクリックして、 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 ] フィールドに貼り付けます。
    3. [次へ] をクリックしてポリシー リストを開き、作成したポリシーを選択して、[次へ] をクリックします。

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

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

      Copy AWS role ARN

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

GCS アクセスの構成

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

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

    1. TiDB Cloud管理コンソールで、Google Cloud Platform にデプロイされたターゲット プロジェクトとターゲット クラスターを選択し、右上隅にある [データのインポート] をクリックします。
    2. [ **Google Cloud サービス アカウント ID を表示]**をクリックし、サービス アカウント ID をコピーします。
  2. Google Cloud Platform (GCP) 管理コンソールで、[ IAM & Admin ] > [ Roles ] に移動し、ストレージ コンテナーの次の読み取り専用権限を持つロールが存在するかどうかを確認します。

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

    はいの場合は、次の手順でターゲット TiDB クラスターに一致するロールを使用できます。そうでない場合は、[ IAM & Admin ] > [ Roles ] > [ CREATE ROLE ] に移動して、ターゲットの TiDB クラスターの役割を定義します。

  3. Cloud Storage > Browserに移動し、 TiDB Cloudがアクセスする GCS バケットを選択して、 SHOW INFO PANELをクリックします。

    パネルが表示されます。

  4. パネルで、[プリンシパルを追加] をクリックします。

    プリンシパルを追加するためのダイアログ ボックスが表示されます。

  5. ダイアログ ボックスで、次の手順を実行します。

    1. [ New Principals ] フィールドに、ターゲット TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。
    2. [役割] ドロップダウン リストで、ターゲット TiDB クラスターの役割を選択します。
    3. [**保存]**をクリックします。

TiDB Cloudクラスターが GCS バケットにアクセスできるようになりました。

ノート:

TiDB Cloudへのアクセスを削除するには、追加したプリンシパルを削除するだけです。

エコシステム
TiDB
TiKV
TiSpark
Chaos Mesh
© 2022 PingCAP. All Rights Reserved.