TiDB Cloud Dedicatedの外部ストレージアクセスを構成する
ソースデータが Amazon S3 または Google Cloud Storage (GCS) バケットに保存されている場合は、データをTiDB Cloudにインポートまたは移行する前に、バケットへのクロスアカウントアクセスを構成する必要があります。このドキュメントでは、 TiDB Cloud Dedicated クラスターでこれを行う方法について説明します。
TiDB Cloud Serverless クラスター用にこれらの外部ストレージを構成する必要がある場合は、 TiDB Cloud Serverless の外部ストレージ アクセスを構成する参照してください。
Amazon S3 アクセスを構成する
TiDB Cloud がAmazon S3 バケット内のソースデータにアクセスできるようにするには、 TiDB Cloudのバケットアクセスを設定する必要があります。バケットアクセスを設定するには、次のいずれかの方法を使用できます。
- AWS アクセスキーを使用する: IAMユーザーのアクセスキーを使用して Amazon S3 バケットにアクセスします。
- ロール ARN を使用する: ロール ARN を使用して Amazon S3 バケットにアクセスします。
- Role ARN
- Access Key
次のように、 TiDB Cloudのバケット アクセスを設定し、ロール ARN を取得します。
TiDB Cloudコンソールで、対象の TiDB クラスターの対応するTiDB Cloudアカウント ID と外部 ID を取得します。
プロジェクトのクラスターページに移動します。
ヒント:
複数のプロジェクトがある場合は、
左下隅にある をクリックして、別のプロジェクトに切り替えます。 ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
[インポート]ページで、 [S3 からデータをインポート]を選択します。
このクラスターにデータを初めてインポートする場合は、 「Amazon S3 からのインポート」を選択します。
「Amazon S3 からのデータのインポート」ページで、 「ロール ARN」の下のリンクをクリックします。 「新しいロール ARN の追加」ダイアログが表示されます。
ロール ARN の作成を手動で展開して、 TiDB Cloudアカウント ID とTiDB Cloud外部 ID を取得します。後で使用するためにこれらの ID をメモしておきます。
AWS マネジメントコンソールで、Amazon S3 バケットの管理ポリシーを作成します。
AWS マネジメントコンソールにサインインし、 https://console.aws.amazon.com/s3/で Amazon S3 コンソールを開きます。
[バケット]リストで、ソース データを含むバケットの名前を選択し、 [ARN のコピー]をクリックして S3 バケット ARN (例:
arn:aws:s3:::tidb-cloud-source-data
) を取得します。後で使用するために、バケット ARN をメモしておきます。https://console.aws.amazon.com/iam/でIAMコンソールを開き、左側のナビゲーション ペインで[ポリシー]をクリックして、 [ポリシーの作成]をクリックします。
[ポリシーの作成]ページで、 [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", "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 TiDB Cloud がこのディレクトリ内のすべてのファイルにアクセスできるように、ディレクトリの末尾に/*
が追加されていることを確認してください。"Resource": "<Your S3 bucket ARN>"
たとえば、
"Resource": "arn:aws:s3:::tidb-cloud-source-data"
。カスタマー管理のキー暗号化で AWS Key Management Service キー (SSE-KMS) を有効にしている場合は、ポリシーに次の設定が含まれていることを確認してください。1
"arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f"
バケットのサンプル KMS キーです。{ "Sid": "AllowKMSkey", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f" }バケット内のオブジェクトが別の暗号化されたバケットからコピーされた場合、KMS キー値には両方のバケットのキーを含める必要があります。たとえば、
"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"]
です。
「次へ」をクリックします。
ポリシー名を設定し、ポリシーのタグ(オプション)を追加して、 「ポリシーの作成」をクリックします。
AWS マネジメントコンソールで、 TiDB Cloudのアクセスロールを作成し、ロール ARN を取得します。
IAMコンソールのhttps://console.aws.amazon.com/iam/で、左側のナビゲーション ペインの[ロール]をクリックし、 [ロールの作成]をクリックします。
ロールを作成するには、次の情報を入力します。
- 信頼されたエンティティタイプで、 AWS アカウントを選択します。
- [AWS アカウント]の下で[別の AWS アカウント]を選択し、 TiDB Cloudアカウント ID を[アカウント ID]フィールドに貼り付けます。
- オプションで、 混乱した副官の問題を回避するために外部 ID が必要 をクリックし、 TiDB Cloud外部 ID を外部 IDフィールドに貼り付けます。ロールが「外部 ID が必要」なしで作成された場合、S3 バケット URI とIAMロール ARN を持つすべてのユーザーが Amazon S3 バケットにアクセスできる可能性があります。ロールがアカウント ID と外部 ID の両方で作成された場合、同じプロジェクトと同じリージョンで実行されている TiDB クラスターのみがバケットにアクセスできます。
[次へ]をクリックしてポリシー リストを開き、作成したポリシーを選択して、 [次へ]をクリックします。
[ロールの詳細]でロールの名前を設定し、右下隅の[ロールの作成]をクリックします。ロールが作成されると、ロールのリストが表示されます。
ロールのリストで、作成したロールの名前をクリックして概要ページに移動し、ロール ARN をコピーします。
TiDB Cloudコンソールで、データ インポートページに移動し、 TiDB Cloudアカウント ID と外部 ID を取得して、ロール ARN をロール ARNフィールドに貼り付けます。
アクセスキーを作成するには、AWS アカウントのルートユーザーではなく、 IAMユーザーを使用することをお勧めします。
アクセス キーを構成するには、次の手順を実行します。
次のポリシーを持つIAMユーザーを作成します。
AmazonS3ReadOnlyAccess
CreateOwnAccessKeys
(必須) およびManageOwnAccessKeys
(オプション)
これらのポリシーは、ソース データを保存するバケットに対してのみ機能することをお勧めします。
詳細についてはIAMユーザーの作成参照してください。
AWS アカウント ID またはアカウントエイリアスと、 IAMユーザー名とパスワードを使用してIAMコンソールにサインインします。
アクセスキーを作成します。詳細については、 IAMユーザーのアクセスキーの作成参照してください。
注記:
TiDB Cloud はアクセス キーを保存しません。インポートが完了したら、 アクセスキーを削除する実行することをお勧めします。
GCS アクセスを構成する
TiDB Cloud がGCS バケット内のソース データにアクセスできるようにするには、バケットの GCS アクセスを構成する必要があります。プロジェクト内の 1 つの TiDB クラスターの構成が完了すると、そのプロジェクト内のすべての TiDB クラスターが GCS バケットにアクセスできるようになります。
TiDB Cloudコンソールで、ターゲット TiDB クラスタの Google Cloud サービス アカウント ID を取得します。
プロジェクトのクラスターページに移動します。
ヒント:
複数のプロジェクトがある場合は、
左下隅にある をクリックして、別のプロジェクトに切り替えます。 ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
右上隅の「データのインポート」をクリックします。
このクラスタにデータを初めてインポートする場合は、 「GCS からのインポート」を選択します。
[Google Cloud Server アカウント ID を表示]をクリックし、後で使用するためにサービス アカウント ID をコピーします。
Google Cloud コンソールで、GCS バケットのIAMロールを作成します。
Google Cloud コンソールにサインインします。
役割ページに移動し、 [ロールの作成]をクリックします。
ロールの名前、説明、ID、およびロール起動ステージを入力します。ロールの作成後は、ロール名を変更できません。
「権限の追加」をクリックします。
次の読み取り専用権限をロールに追加し、 [追加]をクリックします。
- storage.buckets.get
- storage.objects.get
- storage.objects.list
権限名をフィルター クエリとして[プロパティ名または値の入力]フィールドにコピーし、フィルター結果で名前を選択できます。3 つの権限を追加するには、権限名の間にORを使用できます。
バケツページに移動し、 TiDB Cloud がアクセスする GCS バケットの名前をクリックします。
バケットの詳細ページで、 「権限」タブをクリックし、 「アクセスの許可」をクリックします。
バケットへのアクセスを許可するには次の情報を入力し、 「保存」をクリックします。
[新しいプリンシパル]フィールドに、ターゲット TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。
[ロールの選択]ドロップダウン リストに、作成したIAMロールの名前を入力し、フィルター結果から名前を選択します。
注記:
TiDB Cloudへのアクセスを削除するには、許可したアクセスを削除するだけです。
バケットの詳細ページで、 「オブジェクト」タブをクリックします。
ファイルの gsutil URI をコピーする場合は、ファイルを選択し、 [オブジェクト オーバーフロー メニューを開く]をクリックして、 [gsutil URI をコピー]をクリックします。
フォルダの gsutil URI を使用する場合は、フォルダを開き、フォルダ名の後の [コピー] ボタンをクリックしてフォルダ名をコピーします。その後、フォルダの正しい URI を取得するには、名前の先頭に
gs://
、末尾に/
を追加する必要があります。たとえば、フォルダー名が
tidb-cloud-source-data
場合、URI としてgs://tidb-cloud-source-data/
使用する必要があります。TiDB Cloudコンソールで、Google Cloud サービス アカウント ID を取得するデータ インポートページに移動し、GCS バケットの gsutil URI をBucket gsutil URIフィールドに貼り付けます。たとえば、
gs://tidb-cloud-source-data/
貼り付けます。