TiDB Cloud Dedicatedの外部ストレージアクセスを構成する
ソースデータがAmazon S3バケット、Azure Blob Storageコンテナ、またはGoogle Cloud Storage(GCS)バケットに保存されている場合、データをTiDB Cloudにインポートまたは移行する前に、バケットへのクロスアカウントアクセスを設定する必要があります。このドキュメントでは、TiDB Cloud Dedicatedクラスターでこの設定を行う方法について説明します。
TiDB Cloud StarterまたはTiDB Cloud Essentialインスタンス用にこれらの外部ストレージを構成する必要がある場合は、 TiDB Cloud StarterまたはEssentialの外部ストレージアクセスを設定するを参照してください。
Amazon S3へのアクセスを設定する
TiDB Cloud Dedicatedクラスターが Amazon S3 バケット内のソースデータにアクセスできるようにするには、以下のいずれかの方法を使用してクラスターのバケットアクセスを設定します。
- ロールARNを使用する(推奨): ロール ARN を使用して Amazon S3 バケットにアクセスします。
- AWSアクセスキーを使用する: IAMユーザーのアクセスキーを使用して、Amazon S3 バケットにアクセスします。
ロールARNを使用してAmazon S3へのアクセスを設定する
TiDB Cloudのバケットアクセスを設定し、以下の手順でロールARNを取得します。
TiDB Cloudコンソールで、対象の TiDB クラスターに対応するTiDB Cloudアカウント ID と外部 ID を取得します。
My TiDBページに移動します。
対象のTiDB Cloud Dedicatedクラスターの名前をクリックして概要ページに移動し、左側のナビゲーションペインでデータ > インポートをクリックします。
クラウドストレージからデータをインポートをクリックします。
クラウドストレージからデータをインポートページで、Storage ProviderをAmazon S3に設定し、 CredentialsでAWS Role ARNが選択されていることを確認してから、 Role ARNフィールドの下にあるここをクリックして AWS CloudFormation で新しいロール ARN を作成をクリックします。 Add New Role ARNダイアログが表示されます。
問題が発生しましたか?ロールARNを手動で作成して、このクラスターのTiDB Cloud Account IDとTiDB Cloud External IDを取得してください。これらのIDは後で使用するため、メモしておいてください。
AWS マネジメントコンソールで、Amazon S3 バケット用のマネージドポリシーを作成します。
AWS マネジメント コンソールにサインインし、 https://console.aws.amazon.com/s3/で Amazon S3 コンソールを開きます。
バケット一覧から、ソースデータが入っているバケットの名前を選択し、 Copy ARNをクリックしてS3バケットのARNを取得します(例:
arn:aws:s3:::tidb-cloud-source-data)。後で使用するために、バケットのARNをメモしておいてください。https://console.aws.amazon.com/iam/でIAMコンソールを開き、左側のナビゲーション ペインで[ポリシー]をクリックし、 Create Policyをクリックします。
Create policyページで、 JSONタブをクリックします。
以下のアクセス ポリシー テンプレートをコピーして、ポリシー テキスト フィールドに貼り付けてください。
{ "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" ], "Resource": "<Your S3 bucket ARN>" } ] } ``` In the policy text field, update the following configurations to your own values. - `"Resource": "<Your S3 bucket ARN>/<Directory of the source data>/*"` For example, if your source data is stored in the root directory of the `tidb-cloud-source-data` bucket, use `"Resource": "arn:aws:s3:::tidb-cloud-source-data/*"`. If your source data is stored in the `mydata` directory of the bucket, use `"Resource": "arn:aws:s3:::tidb-cloud-source-data/mydata/*"`. Make sure that `/*` is added to the end of the directory so TiDB Cloud can access all files in this directory. - `"Resource": "<Your S3 bucket ARN>"` For example, `"Resource": "arn:aws:s3:::tidb-cloud-source-data"`. - If you have enabled AWS Key Management Service key (SSE-KMS) with customer-managed key encryption, make sure the following configuration is included in the policy. `"arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f"` is a sample KMS key of the bucket. ```json { "Sid": "AllowKMSkey", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f" } ``` If the objects in your bucket have been copied from another encrypted bucket, the KMS key value needs to include the keys of both buckets. For example, `"Resource": ["arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f","arn:aws:kms:ap-northeast-1:495580073302:key/0d7926a7-6ecc-4bf7-a9c1-a38f0faec0cd"]`.次へをクリックしてください。
ポリシー名を設定し、ポリシーのタグを追加(任意)してから、 Create policyをクリックします。
AWS マネジメントコンソールで、 TiDB Cloudのアクセスロールを作成し、ロール ARN を取得します。
https://console.aws.amazon.com/iam/のIAMコンソールで、左側のナビゲーション ペインの[ロール]をクリックし、 Create roleをクリックします。
役割を作成するには、以下の情報を入力してください。
- Trusted entity typeでAWS accountを選択します。
- An AWS accountの下にあるAnother AWS accountを選択し、 TiDB CloudアカウントIDをAccount IDフィールドに貼り付けます。
- オプションでRequire external IDをクリックして混乱した副官の問題回避し、 TiDB Cloud外部IDをExternal IDフィールドに貼り付けます。「外部IDを必須にする」を選択せずにロールを作成すると、S3バケットURIとIAMロールARNを持つユーザーであれば誰でもAmazon S3バケットにアクセスできる可能性があります。アカウントIDと外部IDの両方を使用してロールを作成すると、同じプロジェクトおよび同じリージョンで実行されているTiDBクラスタのみがバケットにアクセスできます。
次へをクリックしてポリシー一覧を開き、先ほど作成したポリシーを選択してから次へをクリックします。
Role detailsで役割の名前を設定し、右下隅のCreate roleをクリックします。役割が作成されると、役割の一覧が表示されます。
役割の一覧から、先ほど作成した役割の名前をクリックして概要ページに移動し、役割のARNをコピーします。
TiDB Cloudコンソールで、 TiDB CloudアカウントIDと外部IDを取得するData Importページに移動し、ロールARNをRole ARNフィールドに貼り付けます。
AWSアクセスキーを使用してAmazon S3へのアクセスを設定する
アクセスキーを作成する際には、AWSアカウントのルートユーザーではなく、 IAMユーザーを使用することをお勧めします。
アクセスキーを設定するには、以下の手順に従ってください。
以下のポリシーを持つIAMユーザーを作成します。
AmazonS3ReadOnlyAccessCreateOwnAccessKeys(必須)およびManageOwnAccessKeys(オプション)
これらのポリシーは、ソースデータが保存されているバケットにのみ適用されるようにすることをお勧めします。
詳細については、 IAMユーザーの作成を参照してください。
AWSアカウントIDまたはアカウントエイリアス、およびIAMユーザー名とパスワードを使用してIAMコンソールにサインインしてください。
アクセスキーを作成します。詳細については、 IAMユーザーのアクセスキーを作成するを参照してください。
GCSへのアクセスを設定する
TiDB CloudがGCSバケット内のソースデータにアクセスできるようにするには、バケットのGCSアクセスを設定する必要があります。プロジェクト内の1つのTiDBクラスタの設定が完了すると、そのプロジェクト内のすべてのTiDBクラスタがGCSバケットにアクセスできるようになります。
TiDB Cloudコンソールで、対象のTiDBクラスターのGoogle CloudサービスアカウントIDを取得します。
My TiDBページに移動します。
対象のTiDB Cloud Dedicatedクラスタの名前をクリックして概要ページに移動し、左側のナビゲーションペインでデータ > インポートをクリックします。
クラウドストレージからデータをインポートをクリックします。
クラウドストレージからデータをインポートページで、 Storage ProviderをGoogle Cloud Storageに設定し、後で使用するためにGoogle CloudサービスアカウントIDをコピーしてください。
Google Cloud コンソールで、GCS バケット用のIAMロールを作成します。
Google Cloud Consoleにサインインしてください。
役割ページに移動し、CREATE ROLEをクリックしてください。
役割の名前、説明、ID、および役割の起動ステージを入力してください。役割名は、作成後に変更することはできません。
ADD PERMISSIONSをクリックしてください。
ロールに以下の読み取り専用権限を追加し、 [追加]をクリックします。
- storage.buckets.get
- storage.get
- storage.オブジェクトリスト
権限名をフィルタークエリとしてプロパティ名または値を入力フィールドにコピーし、フィルター結果からその名前を選択できます。3つの権限を追加するには、権限名の間にOR演算子を使用します。
バケツページに移動し、 TiDB CloudがアクセスするGCSバケットの名前をクリックします。
Bucket detailsページで、 [権限]タブをクリックし、 GRANT ACCESSをクリックします。
バケットへのアクセス権を付与するには、以下の情報を入力し、 保存をクリックしてください。
New Principalsフィールドに、対象のTiDBクラスターのGoogle Cloud ServiceアカウントIDを貼り付けます。
Select a roleドロップダウンリストに、先ほど作成したIAMロールの名前を入力し、フィルター結果からその名前を選択します。
Bucket detailsページで、「オブジェクト」タブをクリックします。
ファイルの gsutil URI をコピーするには、ファイルを選択し、 [オブジェクトを開く] オーバーフロー メニューをクリックして、 Copy gsutil URIをクリックします。
フォルダのgsutil URIを使用する場合は、フォルダを開き、フォルダ名の横にあるコピーボタンをクリックしてフォルダ名をコピーします。その後、フォルダ名の先頭に
gs://、末尾に/を追加して、フォルダの正しいURIを取得する必要があります。例えば、フォルダ名が
tidb-cloud-source-dataの場合、URI としてはgs://tidb-cloud-source-data/を使用する必要があります。TiDB Cloudコンソールで、Google Cloud Service アカウント ID を取得するData Importページに移動し、GCS バケットの gsutil URI をバケット gsutil URIフィールドに貼り付けます。たとえば、
gs://tidb-cloud-source-data/を貼り付けます。
Azure Blob Storageへのアクセスを構成する
TiDB Cloud DedicatedがAzure Blobコンテナにアクセスできるようにするには、コンテナのAzure Blobアクセスを設定する必要があります。アカウントSASトークンを使用してコンテナアクセスを設定できます。
Azureストレージアカウントページで、コンテナーが属するストレージアカウントをクリックします。
ストレージアカウントのナビゲーション ペインで、 Security + networking > Shared access signatureをクリックします。
Shared access signatureページで、次のように必要な権限を持つアカウントSASトークンを作成します。
- Allowed servicesでBlobを選択します。
- Allowed resource typesで、 コンテナとオブジェクトを選択します。
- Allowed permissionsで、必要な権限を選択します。たとえば、 TiDB Cloud Dedicatedにデータをインポートするには、 読み取りと「一覧表示」の権限が必要です。
- 必要に応じて開始日時と有効期限日時を調整してください。セキュリティ上の理由から、有効期限はデータインポートのスケジュールに合わせて設定することをお勧めします。
- その他の設定については、デフォルト値を維持してください。
SASトークンを生成するには、 「SASと接続文字列の生成」をクリックしてください。
生成されたSAS Tokenをコピーしてください。このトークン文字列は、TiDB Cloudでデータインポートを設定する際に必要になります。










