配置外部存储访问
如果你希望在 TiDB Cloud 集群中从外部存储导入数据或将数据导出到外部存储,你需要配置跨账户访问。本文档介绍了如何为 TiDB Cloud Starter 和 TiDB Cloud Essential 集群配置外部存储访问。
如果你需要为 TiDB Cloud Dedicated 集群配置这些外部存储,请参阅 为 TiDB Cloud Dedicated 配置外部存储访问。
配置 Amazon S3 访问
要允许 TiDB Cloud 集群 访问你 Amazon S3 bucket 中的源数据,可以通过以下任一方法为 集群 配置 bucket 访问权限:
- 使用 Role ARN:使用 Role ARN 访问你的 Amazon S3 bucket。
- 使用 AWS 访问密钥:使用 IAM 用户的访问密钥访问你的 Amazon S3 bucket。
使用 Role ARN 配置 Amazon S3 访问
推荐使用 AWS CloudFormation 创建 Role ARN。请按照以下步骤创建:
打开目标 集群 的 Import 页面。
登录 TiDB Cloud 控制台,进入项目的 Clusters 页面。
点击目标 集群 的名称进入概览页面,然后在左侧导航栏点击 Data > Import。
打开 Add New ARN 对话框。
如果你希望从 Amazon S3 导入数据,按如下方式打开 Add New ARN 对话框:
- 点击 Import from S3。
- 填写 File URI 字段。
- 选择 AWS Role ARN 并点击 Click here to create new one with AWS CloudFormation。
如果你希望将数据导出到 Amazon S3,按如下方式打开 Add New ARN 对话框:
- 点击 Export data to... > Amazon S3。如果你的 集群 之前未进行过数据导入或导出操作,请在页面底部点击 Click here to export data to... > Amazon S3。
- 填写 Folder URI 字段。
- 选择 AWS Role ARN 并点击 Click here to create new one with AWS CloudFormation。
使用 AWS CloudFormation 模板创建 Role ARN。
在 Add New ARN 对话框中,点击 AWS Console with CloudFormation Template。
登录 AWS 管理控制台,你将被重定向到 AWS CloudFormation 的 Quick create stack 页面。
填写 Role Name。
确认创建新角色并点击 Create stack 以创建 Role ARN。
CloudFormation 堆栈执行完成后,你可以点击 Outputs 标签页,在 Value 列中找到 Role ARN 的值。

如果你在使用 AWS CloudFormation 创建 Role ARN 时遇到问题,可以按照以下步骤手动创建:
点击此处查看详细步骤
在前述步骤描述的 Add New ARN 对话框中,点击 Having trouble? Create Role ARN manually。你将获得 TiDB Cloud Account ID 和 TiDB Cloud External ID。
在 AWS 管理控制台中,为你的 Amazon S3 bucket 创建托管策略。
登录 AWS 管理控制台,打开 Amazon S3 控制台。
在 Buckets 列表中,选择包含源数据的 bucket 名称,然后点击 Copy ARN 获取你的 S3 bucket ARN(例如,
arn:aws:s3:::tidb-cloud-source-data)。请记录该 bucket ARN 以备后用。
打开 IAM 控制台,在左侧导航栏点击 Policies,然后点击 Create Policy。

在 Create policy 页面,点击 JSON 标签。
根据你的需求在策略文本框中配置策略。以下为一个示例,可用于从 TiDB Cloud 集群 导出和导入数据。
- 从 TiDB Cloud 集群 导出数据需要 s3:PutObject 和 s3:ListBucket 权限。
- 向 TiDB Cloud 集群 导入数据需要 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-databucket 的根目录,使用"Resource": "arn:aws:s3:::tidb-cloud-source-data/*"。 - 如果你的源数据存储在 bucket 的
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 key (SSE-KMS) 并使用自定义密钥加密,请确保策略中包含如下配置。
"arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f"是 bucket 的一个示例 KMS 密钥。{ "Sid": "AllowKMSkey", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-northeast-1:105880447796:key/c3046e91-fdfc-4f3a-acff-00597dd3801f" }如果你的 bucket 中的对象是从另一个加密 bucket 拷贝过来的,KMS key 的值需要包含两个 bucket 的密钥。例如,
"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 创建访问角色并获取 Role ARN。
在 IAM 控制台 左侧导航栏点击 Roles,然后点击 Create role。

创建角色时,填写以下信息:
- 在 Trusted entity type 选择 AWS account。
- 在 An AWS account 选择 Another AWS account,并将 TiDB Cloud account ID 粘贴到 Account ID 字段。
- 在 Options,点击 Require external ID (Best practice when a third party will assume this role),并将 TiDB Cloud External ID 粘贴到 External ID 字段。 如果创建角色时未勾选 Require external ID,则项目下所有 TiDB 集群配置完成后都可使用同一个 Role ARN 访问你的 Amazon S3 bucket。如果使用 account ID 和 external ID 创建角色,则只有对应的 TiDB 集群可以访问该 bucket。
点击 Next 打开策略列表,选择你刚刚创建的策略,然后点击 Next。
在 Role details 中设置角色名称,然后点击右下角的 Create role。角色创建完成后会显示角色列表。
在角色列表中,点击你刚刚创建的角色名称进入其概览页面,即可获取 Role ARN。

使用 AWS 访问密钥配置 Amazon S3 访问
推荐使用 IAM 用户(而非 AWS 账户 root 用户)创建访问密钥。
请按照以下步骤配置访问密钥:
创建 IAM 用户。详情请参阅 创建 IAM 用户。
使用你的 AWS 账户 ID 或账户别名,以及 IAM 用户名和密码登录 IAM 控制台。
创建访问密钥。详情请参阅 为 IAM 用户创建访问密钥。
配置 GCS 访问
要允许 TiDB Cloud 集群访问你的 GCS bucket,你需要为该 bucket 配置 GCS 访问权限。你可以使用服务账户密钥配置 bucket 访问:
请按照以下步骤配置服务账户密钥:
在 Google Cloud 服务账户页面点击 CREATE SERVICE ACCOUNT 创建服务账户。详情请参阅 创建服务账户。
输入服务账户名称。
可选:输入服务账户描述。
点击 CREATE AND CONTINUE 创建服务账户。
在
Grant this service account access to project,选择具有所需权限的 IAM 角色。- 从 TiDB Cloud 集群导出数据需要具有
storage.objects.create权限的角色。 - 向 TiDB Cloud 集群导入数据需要具有
storage.buckets.get、storage.objects.get和storage.objects.list权限的角色。
- 从 TiDB Cloud 集群导出数据需要具有
点击 Continue 进入下一步。
可选:在
Grant users access to this service account,选择需要将服务账户附加到其他资源的成员。点击 Done 完成服务账户创建。

点击服务账户,然后在
KEYS页面点击 ADD KEY 创建服务账户密钥。
选择默认的
JSON密钥类型,然后点击 CREATE 下载 Google Cloud 凭证文件。该文件包含你在为 TiDB Cloud 集群配置 GCS 访问时需要使用的服务账户密钥。
配置 Azure Blob Storage 访问
要允许 TiDB Cloud 访问你的 Azure Blob 容器,你需要为该容器创建服务 SAS token。
你可以通过 Azure ARM 模板(推荐)或手动配置创建 SAS token。
通过 Azure ARM 模板创建 SAS token,请按照以下步骤操作:
打开目标集群的 Import 页面。
登录 TiDB Cloud 控制台,进入项目的 Clusters 页面。
点击目标集群名称进入概览页面,然后在左侧导航栏点击 Data > Import。
打开 Generate New SAS Token via ARM Template Deployment 对话框。
点击 Export data to... > Azure Blob Storage。如果你的集群之前未进行过数据导入或导出操作,请在页面底部点击 Click here to export data to... > Azure Blob Storage。
向下滚动到 Azure Blob Storage Settings 区域,在 SAS Token 字段下点击 Click here to create a new one with Azure ARM template。
使用 Azure ARM 模板创建 SAS token。
在 Generate New SAS Token via ARM Template Deployment 对话框中,点击 Click to open the Azure Portal with the pre-configured ARM template。
登录 Azure 后,你将被重定向到 Azure Custom deployment 页面。
在 Custom deployment 页面填写 Resource group 和 Storage Account Name。你可以在容器所在的存储账户概览页面获取所有信息。

点击 Review + create 或 Next 进行部署预览。点击 Create 开始部署。
部署完成后,你将被重定向到部署概览页面。进入 Outputs 区域获取 SAS token。
如果你在使用 Azure ARM 模板创建 SAS token 时遇到问题,请按照以下步骤手动创建:
点击此处查看详细步骤
在 Azure Storage account 页面,点击容器所属的存储账户。
在 Storage account 页面,点击 Security+network,然后点击 Shared access signature。

在 Shared access signature 页面,按如下方式创建具有所需权限的服务 SAS token。详情请参阅 创建服务 SAS token。
在 Allowed services 区域选择 Blob 服务。
在 Allowed Resource types 区域选择 Container 和 Object。
在 Allowed permissions 区域根据需要选择权限。
- 从 TiDB Cloud 集群导出数据需要 Read 和 Write 权限。
- 向 TiDB Cloud 集群导入数据需要 Read 和 List 权限。
根据需要调整 Start and expiry date/time。
其他设置可保持默认值。

点击 Generate SAS and connection string 生成 SAS token。
配置阿里云对象存储服务(OSS)访问
要允许 TiDB Cloud 访问你的阿里云 OSS bucket,你需要为该 bucket 创建 AccessKey 对。
请按照以下步骤配置 AccessKey 对:
创建 RAM 用户并获取 AccessKey 对。详情请参阅 创建 RAM 用户。
在 Access Mode 区域选择 Using permanent AccessKey to access。
创建自定义策略并授予所需权限。详情请参阅 创建自定义策略。
在 Effect 区域选择 Allow。
在 Service 区域选择 Object Storage Service。
在 Action 区域根据需要选择权限。
向 TiDB Cloud 集群 导入数据需授予 oss:GetObject、oss:GetBucketInfo 和 oss:ListObjects 权限。
从 TiDB Cloud 集群 导出数据需授予
oss:PutObject和oss:GetBucketInfo权限。在 Resource 区域选择 bucket 及其对象。
将自定义策略附加到 RAM 用户。详情请参阅 为 RAM 用户授权。