TiDB Cloud Serverless の外部ストレージアクセスを構成する
TiDB Cloud Serverless クラスター内の外部storageからデータをインポートまたはエクスポートする場合は、クロスアカウントアクセスを設定する必要があります。このドキュメントでは、 TiDB Cloud Serverless クラスターの外部storageへのアクセスを設定する方法について説明します。
TiDB Cloud Dedicated クラスター用にこれらの外部ストレージを構成する必要がある場合は、 TiDB Cloud Dedicatedの外部ストレージアクセスを構成する参照してください。
Amazon S3 アクセスを構成する
TiDB Cloud Serverless クラスターが Amazon S3 バケット内のソースデータにアクセスできるようにするには、次のいずれかの方法を使用してクラスターのバケットアクセスを設定します。
- ロールARNを使用する : ロール ARN を使用して Amazon S3 バケットにアクセスします。
- AWSアクセスキーを使用する : IAMユーザーのアクセスキーを使用して Amazon S3 バケットにアクセスします。
ロール ARN を使用して Amazon S3 アクセスを構成する
ロールARNを作成するには、 AWS クラウドフォーメーション使用することをお勧めします。作成するには、以下の手順に従ってください。
注記:
Amazon S3へのロールARNアクセスは、クラウドプロバイダーとしてAWSを使用しているクラスターでのみサポートされます。別のクラウドプロバイダーを使用している場合は、代わりにAWSアクセスキーを使用してください。詳細については、 AWS アクセスキーを使用して Amazon S3 アクセスを構成するご覧ください。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
新しい ARN の追加ダイアログを開きます。
Amazon S3 からデータをインポートする場合は、次のようにして[新しい ARN の追加]ダイアログを開きます。
- S3 からインポートをクリックします。
- ファイル URIフィールドに入力します。
- AWS ロール ARNを選択し、[**ここをクリックして AWS CloudFormation で新規作成] を**クリックします。
データを Amazon S3 にエクスポートする場合は、次のようにして[新しい ARN の追加]ダイアログを開きます。
- 「データをエクスポート...」 > 「Amazon S3」をクリックします。クラスターでこれまでデータのインポートもエクスポートもしたことがない場合は、ページ下部の「データをエクスポートするにはここをクリック... 」 > 「Amazon S3」をクリックします。
- フォルダー URIフィールドに入力します。
- AWS ロール ARNを選択し、[**ここをクリックして AWS CloudFormation で新規作成] を**クリックします。
AWS CloudFormation テンプレートを使用してロール ARN を作成します。
[**新しい ARN の追加]ダイアログで、 [AWS コンソールと CloudFormation テンプレート]**をクリックします。
AWS マネジメントコンソールにログインすると、AWS CloudFormation のクイック作成スタックページにリダイレクトされます。
ロール名を入力します。
新しいロールを作成することを確認し、 「スタックの作成」をクリックしてロール ARN を作成します。
CloudFormation スタックが実行された後、 [出力]タブをクリックし、[**値]**列でロール ARN 値を見つけることができます。
AWS CloudFormation でロール ARN を作成するときに問題が発生した場合は、次の手順に従って手動で作成できます。
詳細はこちらをクリック
前の手順で説明した「新しいARNを追加」ダイアログで、 「問題が発生した場合は、ロールARNを手動で作成してください」をクリックします。TiDB TiDB CloudアカウントIDとTiDB Cloud外部IDが表示されます。
AWS マネジメントコンソールで、Amazon S3 バケットの管理ポリシーを作成します。
AWS マネジメントコンソールにサインインしてAmazon S3 コンソール開きます。
「バケット」リストで、ソースデータがあるバケットの名前を選択し、 「ARNをコピー」をクリックしてS3バケットのARN(例:
arn:aws:s3:::tidb-cloud-source-data
)を取得します。後で使用するために、バケットのARNをメモしておいてください。IAMコンソール開き、左側のナビゲーション ペインで[ポリシー]をクリックして、 [ポリシーの作成] をクリックします。
[ポリシーの作成]ページで、 [JSON]タブをクリックします。
必要に応じて、ポリシーテキストフィールドでポリシーを設定します。以下は、 TiDB Cloud Serverless クラスターとの間でデータのエクスポートとインポートを行う例です。
- TiDB Cloud Serverless クラスターからデータをエクスポートするには、s3:PutObjectおよびs3:ListBucket権限が必要です。
- TiDB Cloud Serverless クラスターにデータをインポートするには、 s3:GetObject 、 s3:GetObjectVersion 、およびs3:ListBucket権限が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:PutObject" ], "Resource": "<Your S3 bucket ARN>/<Directory of your source data>/*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "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"
。カスタマー管理のキー暗号化で 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コンソールで、左側のナビゲーション ペインの[ロール]をクリックし、 [ロールの作成] をクリックします。
ロールを作成するには、次の情報を入力します。
- 信頼されたエンティティタイプで、 AWS アカウントを選択します。
- 「AWS アカウント」で「別の AWS アカウント」を選択し、 TiDB Cloudアカウント ID を「アカウント ID」フィールドに貼り付けます。
- オプションで、 「外部IDが必要(サードパーティがこのロールを引き受ける場合のベストプラクティス)」をクリックし、 TiDB Cloudの外部IDを「外部ID」フィールドに貼り付けます。「外部IDが必要」を指定せずにロールを作成した場合、プロジェクト内の1つのTiDBクラスターの設定が完了すると、そのプロジェクト内のすべてのTiDBクラスターが同じロールARNを使用してAmazon S3バケットにアクセスできるようになります。アカウントIDと外部IDを指定してロールを作成した場合、対応するTiDBクラスターのみがバケットにアクセスできます。
[次へ]をクリックしてポリシー リストを開き、作成したポリシーを選択して、 [次へ]をクリックします。
ロールの詳細でロールの名前を設定し、右下にある「ロールの作成」をクリックします。ロールが作成されると、ロールのリストが表示されます。
ロールのリストで、作成したロールの名前をクリックして概要ページに移動し、ロール ARN を取得できます。
AWS アクセスキーを使用して Amazon S3 アクセスを構成する
アクセスキーを作成するには、AWS アカウントのルートユーザーではなく、 IAMユーザーを使用することをお勧めします。
アクセス キーを構成するには、次の手順を実行します。
IAMユーザーを作成します。詳細については、 IAMユーザーの作成参照してください。
AWS アカウント ID またはアカウントエイリアス、 IAMユーザー名とパスワードを使用してIAMコンソールにサインインします。
アクセスキーを作成します。詳細については、 IAMユーザーのアクセスキーの作成参照してください。
注記:
TiDB Cloudはアクセスキーを保存しません。インポートまたはエクスポートが完了したら、 アクセスキーを削除する実行することをお勧めします。
GCS アクセスを構成する
TiDB Cloud Serverless クラスタが GCS バケットにアクセスできるようにするには、バケットの GCS アクセスを設定する必要があります。バケットアクセスの設定には、サービスアカウントキーを使用できます。
サービス アカウント キーを構成するには、次の手順を実行します。
Google Cloud サービスアカウントページで、 「サービスアカウントを作成」をクリックしてサービスアカウントを作成します。詳細については、 サービスアカウントの作成ご覧ください。
サービス アカウント名を入力します。
オプション: サービス アカウントの説明を入力します。
[作成して続行]をクリックして、サービス アカウントを作成します。
Grant this service account access to project
で、必要な権限を持つIAMロール選択します。- TiDB Cloud Serverless クラスターからデータをエクスポートするには、
storage.objects.create
権限を持つロールが必要です。 - TiDB Cloud Serverless クラスターにデータをインポートするには、
storage.buckets.get
、storage.objects.get
、storage.objects.list
権限を持つロールが必要です。
- TiDB Cloud Serverless クラスターからデータをエクスポートするには、
「続行」をクリックして次のステップに進みます。
オプション:
Grant users access to this service account
で、 サービスアカウントを他のリソースに接続する必要なメンバーを選択します。[完了] をクリックして、サービス アカウントの作成を完了します。
サービス アカウントをクリックし、
KEYS
ページで[キーの追加]をクリックしてサービス アカウント キーを作成します。デフォルトのキータイプ
JSON
を選択し、 「作成」をクリックしてGoogle Cloud認証情報ファイルをダウンロードします。このファイルには、TiDB Cloud ServerlessクラスタのGCSアクセスを構成する際に必要なサービスアカウントキーが含まれています。
Azure Blob Storage アクセスを構成する
TiDB Cloud Serverless が Azure Blob コンテナーにアクセスできるようにするには、コンテナーのサービス SAS トークンを作成する必要があります。
SAS トークンは、 Azure ARM テンプレート (推奨) または手動構成を使用して作成できます。
Azure ARM テンプレートを使用して SAS トークンを作成するには、次の手順を実行します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
ARM テンプレートの展開による新しい SAS トークンの生成ダイアログを開きます。
「データのエクスポート先...」 > 「Azure Blob Storage」をクリックします。クラスターでこれまでにデータのインポートもエクスポートもしたことがない場合は、ページの下部にある「データのエクスポート先...」 > 「Azure Blob Storage」をクリックします。
Azure Blob Storage 設定領域まで下にスクロールし、SAS トークン フィールドの下にある Azure ARM テンプレートを使用して新規作成するには、ここをクリックします。をクリックします。
Azure ARM テンプレートを使用して SAS トークンを作成します。
[ARM テンプレートのデプロイによる新しい SAS トークンの生成]ダイアログで、[クリックして**、事前構成された ARM テンプレートを含む Azure Portal を開く] をクリックします**。
Azure にログインすると、Azureカスタム デプロイメントページにリダイレクトされます。
カスタムデプロイページで、リソースグループとストレージアカウント名を入力します。コンテナが配置されているstorageアカウントの概要ページからすべての情報を取得できます。
「確認と作成」または「次へ」をクリックして、デプロイ内容を確認します。 「作成」をクリックしてデプロイを開始します。
完了すると、デプロイの概要ページにリダイレクトされます。 「出力」セクションに移動して、SAS トークンを取得してください。
Azure ARM テンプレートを使用して SAS トークンを作成するときに問題が発生した場合は、次の手順に従って手動で作成してください。
詳細はこちらをクリック
Azure ストレージ アカウントページで、コンテナーが属するstorageアカウントをクリックします。
ストレージ アカウントページで、[**Security+ ネットワーク]をクリックし、 [Shared access signature]**をクリックします。
Shared Access Signatureページで、必要な権限を持つサービスSASトークンを以下のように作成します。詳細については、 サービスSASトークンを作成する参照してください。
[許可されたサービス]セクションで、 Blobサービスを選択します。
許可されたリソース タイプセクションで、コンテナーとオブジェクトを選択します。
「許可された権限」セクションで、必要に応じて権限を選択します。
- TiDB Cloud Serverless クラスターからデータをエクスポートするには、読み取り権限と書き込み権限が必要です。
- TiDB Cloud Serverless クラスターにデータをインポートするには、読み取り権限とリスト権限が必要です。
必要に応じて開始日時と有効期限を調整します。
その他の設定はデフォルト値のままにしておきます。
SAS トークンを生成するには、 「SAS と接続文字列の生成」をクリックします。
Alibaba Cloud Object Storage Service (OSS) アクセスを構成する
TiDB Cloud Serverless が Alibaba Cloud OSS バケットにアクセスできるようにするには、バケットの AccessKey ペアを作成する必要があります。
AccessKey ペアを構成するには、次の手順を実行します。
RAMユーザーを作成し、AccessKeyペアを取得します。詳細については、 RAMユーザーを作成する参照してください。
[アクセス モード]セクションで、 [永続的な AccessKey を使用してアクセスする] を選択します。
必要な権限を持つカスタムポリシーを作成します。詳細については、 カスタムポリシーを作成する参照してください。
[効果]セクションで、 [許可]を選択します。
[サービス]セクションで、 [オブジェクト ストレージ サービス]を選択します。
「アクション」セクションで、必要に応じて権限を選択します。
TiDB Cloud Serverless クラスターにデータをインポートするには、 oss:GetObject 、 oss:GetBucketInfo 、およびoss:ListObjects権限を付与します。
TiDB Cloud Serverless クラスターからデータをエクスポートするには、 oss:PutObject 、 oss:GetBucketInfo 、およびoss:ListBuckets権限を付与します。
リソースセクションで、バケットとバケット内のオブジェクトを選択します。
カスタムポリシーをRAMユーザーにアタッチします。詳細については、 RAMユーザーに権限を付与する参照してください。