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クラスターの名前をクリックして概要ページに移動し、左側のナビゲーションペインでData > Importをクリックします。
Import data from Cloud Storageをクリックします。
Import Data from Cloud Storageページで、Storage ProviderをAmazon S3に設定し、 CredentialsでAWS Role ARNが選択されていることを確認してから、 Role ARNフィールドの下にあるClick here to create new one with AWS CloudFormationをクリックします。 Add New Role ARNダイアログが表示されます。
Having trouble? Create Role ARN manuallyを展開して、このクラスターのTiDB Cloud Account IDとTiDB Cloud External IDを取得してください。これらのIDは後で使用するため、メモしておいてください。
AWS マネジメントコンソールで、Amazon S3 バケット用のマネージドポリシーを作成します。
AWS マネジメントコンソールにサインインし、 https://console.aws.amazon.com/s3/で Amazon S3 コンソールを開きます。
Buckets一覧から、ソースデータが入っているバケットの名前を選択し、 Copy ARNをクリックしてS3バケットのARNを取得します(例:
arn:aws:s3:::tidb-cloud-source-data)。後で使用するために、バケットのARNをメモしておいてください。https://console.aws.amazon.com/iam/でIAMコンソールを開き、左側のナビゲーションペインでPoliciesをクリックし、 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"]`.Nextをクリックしてください。
ポリシー名を設定し、ポリシーのタグを追加(任意)してから、 Create policyをクリックします。
AWS マネジメントコンソールで、 TiDB Cloudのアクセスロールを作成し、ロール ARN を取得します。
https://console.aws.amazon.com/iam/のIAMコンソールで、左側のナビゲーションペインのRolesをクリックし、 Create roleをクリックします。
ロールを作成するには、以下の情報を入力してください。
- Trusted entity typeでAWS accountを選択します。
- An AWS accountの下にあるAnother AWS accountを選択し、 TiDB CloudアカウントIDをAccount IDフィールドに貼り付けます。
- OptionsでRequire external IDをクリックして混乱した代理問題を回避し、 TiDB Cloud外部IDをExternal IDフィールドに貼り付けます。"Require external ID"を選択せずにロールを作成すると、S3バケットURIとIAMロールARNを持つユーザーであれば誰でもAmazon S3バケットにアクセスできる可能性があります。アカウントIDと外部IDの両方を使用してロールを作成すると、同じプロジェクトおよび同じリージョンで実行されているTiDBクラスターのみがバケットにアクセスできます。
Nextをクリックしてポリシー一覧を開き、先ほど作成したポリシーを選択してからNextをクリックします。
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クラスターの名前をクリックして概要ページに移動し、左側のナビゲーションペインでData > Importをクリックします。
Import data from Cloud Storageをクリックします。
Import Data from Cloud Storageページで、 Storage ProviderをGoogle Cloud Storageに設定し、後で使用するためにGoogle CloudサービスアカウントIDをコピーしてください。
Google Cloud コンソールで、GCS バケット用のIAMロールを作成します。
Google Cloud Consoleにサインインしてください。
ロールページに移動し、CREATE ROLEをクリックしてください。
ロールの名前、説明、ID、およびロールの起動ステージを入力してください。ロール名は、作成後に変更できません。
ADD PERMISSIONSをクリックしてください。
ロールに以下の読み取り専用権限を追加し、 Addをクリックします。
- storage.buckets.get
- storage.objects.get
- storage.objects.list
権限名をフィルタークエリとしてEnter property name or valueフィールドにコピーし、フィルター結果からその名前を選択できます。3つの権限を追加するには、権限名の間にORを使用します。
Bucketページに移動し、 TiDB CloudがアクセスするGCSバケットの名前をクリックします。
Bucket detailsページで、 PERMISSIONSタブをクリックし、 GRANT ACCESSをクリックします。
バケットへのアクセス権を付与するには、以下の情報を入力し、 SAVEをクリックしてください。
New Principalsフィールドに、対象のTiDBクラスターのGoogle CloudサービスアカウントIDを貼り付けます。
Select a roleドロップダウンリストに、先ほど作成したIAMロールの名前を入力し、フィルター結果からその名前を選択します。
Bucket detailsページで、OBJECTSタブをクリックします。
ファイルの gsutil URI をコピーするには、ファイルを選択し、 Open object overflow menuをクリックして、 Copy gsutil URIをクリックします。
フォルダーのgsutil URIを使用する場合は、フォルダーを開き、フォルダー名の横にあるコピーボタンをクリックしてフォルダー名をコピーします。その後、フォルダー名の先頭に
gs://、末尾に/を追加して、フォルダーの正しいURIを取得する必要があります。例えば、フォルダー名が
tidb-cloud-source-dataの場合、URI としてはgs://tidb-cloud-source-data/を使用する必要があります。TiDB Cloudコンソールで、Google CloudサービスアカウントID を取得したData Importページに移動し、GCS バケットの gsutil URI をBucket 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で、 ContainerとObjectを選択します。
- Allowed permissionsで、必要な権限を選択します。たとえば、 TiDB Cloud Dedicatedにデータをインポートするには、 ReadとListの権限が必要です。
- 必要に応じてStart and expiry date/timeを調整してください。セキュリティ上の理由から、有効期限はデータインポートのスケジュールに合わせて設定することをお勧めします。
- その他の設定については、デフォルト値を維持してください。
SASトークンを生成するには、 Generate SAS and connection stringをクリックしてください。
生成されたSAS Tokenをコピーしてください。このトークン文字列は、TiDB Cloudでデータインポートを設定する際に必要になります。










