|
2 | 2 | title: 连接参数 |
3 | 3 | --- |
4 | 4 | import FunctionDescription from '@site/src/components/FunctionDescription'; |
| 5 | +import Tabs from '@theme/Tabs'; |
| 6 | +import TabItem from '@theme/TabItem'; |
5 | 7 |
|
6 | 8 | <FunctionDescription description="Introduced or updated: v1.2.294"/> |
7 | 9 |
|
8 | | -连接参数是用于建立与外部存储服务(如 Amazon S3)安全连接的键值对。这些参数对于创建 Stage、将数据复制到 Databend 以及查询外部文件等任务至关重要。 |
9 | | - |
10 | | -有关每个存储服务的具体连接详细信息,请参见下表。 |
| 10 | +运行 `CREATE CONNECTION` 时需要给出一组键值对作为连接参数,用来定义可复用的外部连接。创建好连接后,可以在 Stage、COPY 等语句中通过 `CONNECTION = (CONNECTION_NAME = '<connection-name>')` 直接引用。完整语法请参见 [CREATE CONNECTION](../10-sql-commands/00-ddl/13-connection/create-connection.md)。 |
11 | 11 |
|
12 | | -import Tabs from '@theme/Tabs'; |
13 | | -import TabItem from '@theme/TabItem'; |
| 12 | +不同存储服务的连接参数见下表。 |
14 | 13 |
|
15 | 14 | <Tabs groupId="operating-systems"> |
16 | 15 | <TabItem value="Amazon S3" label="Amazon S3"> |
17 | 16 |
|
18 | | -下表列出了用于访问类似 Amazon S3 的存储服务的连接参数: |
| 17 | +下表列出了访问 Amazon S3 及其兼容存储服务所需的连接参数: |
19 | 18 |
|
20 | 19 | | Parameter | Required? | Description | |
21 | 20 | |--------------------------- |----------- |-------------------------------------------------------------- | |
22 | | -| endpoint_url | Yes | 类似 Amazon S3 的存储服务的 Endpoint URL。 | |
23 | | -| access_key_id | Yes | 用于标识请求者的 Access Key ID。 | |
24 | | -| secret_access_key | Yes | 用于身份验证的 Secret Access Key。 | |
25 | | -| enable_virtual_host_style | No | 是否使用虚拟主机样式的 URL。默认为 *false*。 | |
26 | | -| master_key | No | 用于高级数据加密的可选 Master Key。 | |
27 | | -| region | No | Bucket 所在的 AWS 区域。 | |
28 | | -| security_token | No | 用于临时凭证的安全令牌。 | |
| 21 | +| endpoint_url | Yes | Amazon S3 兼容存储的 Endpoint URL。 | |
| 22 | +| access_key_id | Yes | 请求方的 Access Key ID。 | |
| 23 | +| secret_access_key | Yes | 用于认证的 Secret Access Key。 | |
| 24 | +| enable_virtual_host_style | No | 是否使用虚拟主机样式 URL,默认 *false*。 | |
| 25 | +| master_key | No | 用于高级加密的 Master Key。 | |
| 26 | +| region | No | Bucket 所在的 AWS 区域。 | |
| 27 | +| security_token | No | 临时凭证的安全令牌。 | |
29 | 28 |
|
30 | 29 | :::note |
31 | | -- 如果命令中未指定 **endpoint_url** 参数,则 Databend 默认在 Amazon S3 上创建 Stage。因此,当您在 S3 兼容的对象存储或其他对象存储解决方案上创建外部 Stage 时,请务必包含 **endpoint_url** 参数。 |
| 30 | +- 如果命令里没有 **endpoint_url**,Databend 会默认把 Stage 建在 Amazon S3。因此在 S3 兼容对象存储或其他对象存储上建外部 Stage 时,记得显式填写 **endpoint_url**。 |
32 | 31 |
|
33 | | -- **region** 参数不是必需的,因为 Databend 可以自动检测区域信息。通常不需要手动为此参数指定值。如果自动检测失败,Databend 将默认使用 'us-east-1' 作为区域。当使用 MinIO 部署 Databend 且未配置区域信息时,它将自动默认使用 'us-east-1',并且可以正常工作。但是,如果您收到诸如 "region is missing" 或 "The bucket you are trying to access requires a specific endpoint. Please direct all future requests to this particular endpoint" 之类的错误消息,则需要确定您的区域名称并将其显式分配给 **region** 参数。 |
| 32 | +- **region** 通常不需手动填写,Databend 会自动识别区域信息;若识别失败,则回落到 `us-east-1`。例如在 MinIO 未配置区域时仍能正常工作。如果看到 “region is missing” 或 “The bucket you are trying to access requires a specific endpoint...” 之类的错误提示,请确认实际区域并为 **region** 指定正确值。 |
34 | 33 | ::: |
35 | 34 |
|
36 | | -```sql title='Examples' |
| 35 | +```sql title='示例' |
| 36 | +-- 创建可复用的 Amazon S3 连接 |
| 37 | +CREATE CONNECTION my_s3_conn |
| 38 | + STORAGE_TYPE = 's3' |
| 39 | + ACCESS_KEY_ID = '<your-ak>' |
| 40 | + SECRET_ACCESS_KEY = '<your-sk>'; |
| 41 | + |
| 42 | +-- 创建 Stage 时引用连接 |
37 | 43 | CREATE STAGE my_s3_stage |
38 | | - 's3://my-bucket' |
39 | | - CONNECTION = ( |
40 | | - ACCESS_KEY_ID = '<your-ak>', |
41 | | - SECRET_ACCESS_KEY = '<your-sk>' |
42 | | - ); |
| 44 | + URL = 's3://my-bucket' |
| 45 | + CONNECTION = (CONNECTION_NAME = 'my_s3_conn'); |
43 | 46 |
|
| 47 | +-- 为 MinIO 等 S3 兼容服务创建连接 |
| 48 | +CREATE CONNECTION my_minio_conn |
| 49 | + STORAGE_TYPE = 's3' |
| 50 | + ENDPOINT_URL = 'http://localhost:9000' |
| 51 | + ACCESS_KEY_ID = 'ROOTUSER' |
| 52 | + SECRET_ACCESS_KEY = 'CHANGEME123'; |
| 53 | + |
44 | 54 | CREATE STAGE my_minio_stage |
45 | | - 's3://databend' |
46 | | - CONNECTION = ( |
47 | | - ENDPOINT_URL = 'http://localhost:9000', |
48 | | - ACCESS_KEY_ID = 'ROOTUSER', |
49 | | - SECRET_ACCESS_KEY = 'CHANGEME123' |
50 | | - ); |
| 55 | + URL = 's3://databend' |
| 56 | + CONNECTION = (CONNECTION_NAME = 'my_minio_conn'); |
51 | 57 | ``` |
52 | 58 |
|
| 59 | +也可以改用 AWS IAM Role 和 External ID 认证,以更细粒度地控制可访问的 S3 Bucket,同时增加额外的安全校验。更多背景请参考 [AWS 文档](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)。 |
53 | 60 |
|
54 | | -要访问您的 Amazon S3 Bucket,您还可以指定 AWS IAM 角色和外部 ID 进行身份验证。通过指定 AWS IAM 角色和外部 ID,您可以更精细地控制用户可以访问哪些 S3 Bucket。这意味着,如果 IAM 角色已被授予仅访问特定 S3 Bucket 的权限,则用户将只能访问这些 Bucket。外部 ID 可以通过提供额外的验证层来进一步增强安全性。有关更多信息,请参见 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html |
55 | | - |
56 | | -下表列出了使用 AWS IAM 角色身份验证访问 Amazon S3 存储服务的连接参数: |
| 61 | +下表列出了使用 AWS IAM 角色访问 Amazon S3 的连接参数: |
57 | 62 |
|
58 | 63 | | Parameter | Required? | Description | |
59 | 64 | |-------------- |----------- |------------------------------------------------------- | |
60 | 65 | | endpoint_url | No | Amazon S3 的 Endpoint URL。 | |
61 | | -| role_arn | Yes | 用于授权访问 S3 的 AWS IAM 角色的 ARN。 | |
62 | | -| external_id | No | 用于增强角色承担安全性的外部 ID。 | |
63 | | - |
64 | | -```sql title='Examples' |
65 | | -CREATE STAGE my_s3_stage |
66 | | - 's3://my-bucket' |
67 | | - CONNECTION = ( |
68 | | - ROLE_ARN = 'arn:aws:iam::123456789012:role/my-role', |
69 | | - EXTERNAL_ID = 'my-external-id' |
70 | | - ); |
| 66 | +| role_arn | Yes | 用于授权访问 S3 的 AWS IAM 角色 ARN。 | |
| 67 | +| external_id | No | 用于增强角色授权安全性的 External ID。 | |
| 68 | + |
| 69 | +```sql title='示例' |
| 70 | +-- 使用 IAM 角色创建连接 |
| 71 | +CREATE CONNECTION my_iam_conn |
| 72 | + STORAGE_TYPE = 's3' |
| 73 | + ROLE_ARN = 'arn:aws:iam::123456789012:role/my-role' |
| 74 | + EXTERNAL_ID = 'my-external-id'; |
| 75 | + |
| 76 | +-- 创建 Stage 时引用连接 |
| 77 | +CREATE STAGE my_iam_stage |
| 78 | + URL = 's3://my-bucket' |
| 79 | + CONNECTION = (CONNECTION_NAME = 'my_iam_conn'); |
71 | 80 | ``` |
72 | 81 |
|
73 | 82 | </TabItem> |
74 | 83 |
|
75 | 84 | <TabItem value="Azure Blob" label="Azure Blob"> |
76 | 85 |
|
77 | | -下表列出了用于访问 Azure Blob Storage 的连接参数: |
| 86 | +下表列出了访问 Azure Blob Storage 的连接参数: |
78 | 87 |
|
79 | 88 | | Parameter | Required? | Description | |
80 | 89 | |----------------|-------------|-------------------------------------------------------| |
81 | 90 | | endpoint_url | Yes | Azure Blob Storage 的 Endpoint URL。 | |
82 | | -| account_key | Yes | 用于身份验证的 Azure Blob Storage 帐户密钥。 | |
83 | | -| account_name | Yes | 用于标识的 Azure Blob Storage 帐户名称。 | |
84 | | - |
85 | | -```sql title='Examples' |
| 91 | +| account_key | Yes | Azure Blob Storage 帐户密钥。 | |
| 92 | +| account_name | Yes | Azure Blob Storage 帐户名称。 | |
| 93 | + |
| 94 | +```sql title='示例' |
| 95 | +-- 创建 Azure Blob Storage 连接 |
| 96 | +CREATE CONNECTION my_azure_conn |
| 97 | + STORAGE_TYPE = 'azblob' |
| 98 | + ACCOUNT_NAME = 'myaccount' |
| 99 | + ACCOUNT_KEY = 'myaccountkey' |
| 100 | + ENDPOINT_URL = 'https://<your-storage-account-name>.blob.core.windows.net'; |
| 101 | + |
| 102 | +-- 创建 Stage 并引用该连接 |
86 | 103 | CREATE STAGE my_azure_stage |
87 | | - 'azblob://my-container' |
88 | | - CONNECTION = ( |
89 | | - ACCOUNT_NAME = 'myaccount', |
90 | | - ACCOUNT_KEY = 'myaccountkey', |
91 | | - ENDPOINT_URL = 'https://<your-storage-account-name>.blob.core.windows.net' |
92 | | - ); |
| 104 | + URL = 'azblob://my-container' |
| 105 | + CONNECTION = (CONNECTION_NAME = 'my_azure_conn'); |
93 | 106 | ``` |
94 | 107 |
|
95 | 108 | </TabItem> |
96 | 109 |
|
97 | 110 | <TabItem value="Google GCS" label="Google GCS"> |
98 | 111 |
|
99 | | -下表列出了用于访问 Google Cloud Storage 的连接参数: |
| 112 | +下表列出了访问 Google Cloud Storage 的连接参数: |
100 | 113 |
|
101 | 114 | | Parameter | Required? | Description | |
102 | 115 | |----------------|-------------|-------------------------------------------------------| |
103 | | -| credential | Yes | 用于身份验证的 Google Cloud Storage 凭据。 | |
| 116 | +| credential | Yes | 用于认证的 Google Cloud Storage 凭证。 | |
104 | 117 |
|
105 | | -要获取 `credential`,您可以按照 Google 文档中的主题 [创建服务帐户密钥](https://cloud.google.com/iam/docs/keys-create-delete#creating) |
106 | | -创建一个服务帐户密钥文件并下载。下载服务帐户密钥文件后,您可以 |
107 | | -通过以下命令将其转换为 base64 字符串: |
| 118 | +可以按照 Google 文档 [Create a service account key](https://cloud.google.com/iam/docs/keys-create-delete#creating) 生成服务账号密钥文件,并用下面的命令把它转成 base64: |
108 | 119 |
|
109 | 120 | ``` |
110 | | -base64 -i -o ~/Desktop/base64-encoded-key.txt |
| 121 | +base64 -i <key.json> -o ~/Desktop/base64-encoded-key.txt |
111 | 122 | ``` |
112 | 123 |
|
113 | | -```sql title='Examples' |
| 124 | +```sql title='示例' |
| 125 | +-- 创建 GCS 连接 |
| 126 | +CREATE CONNECTION my_gcs_conn |
| 127 | + STORAGE_TYPE = 'gcs' |
| 128 | + CREDENTIAL = '<your-base64-encoded-credential>'; |
| 129 | + |
| 130 | +-- 创建 Stage 时引用连接 |
114 | 131 | CREATE STAGE my_gcs_stage |
115 | | - 'gcs://my-bucket' |
116 | | - CONNECTION = ( |
117 | | - CREDENTIAL = '<your-base64-encoded-credential>' |
118 | | - ); |
| 132 | + URL = 'gcs://my-bucket' |
| 133 | + CONNECTION = (CONNECTION_NAME = 'my_gcs_conn'); |
119 | 134 | ``` |
120 | 135 |
|
121 | 136 | </TabItem> |
122 | 137 |
|
123 | 138 | <TabItem value="Alibaba OSS" label="Alibaba Cloud OSS"> |
124 | 139 |
|
125 | | -下表列出了用于访问阿里云 OSS 的连接参数: |
| 140 | +下表列出了访问阿里云 OSS 的连接参数: |
126 | 141 |
|
127 | 142 | | Parameter | Required? | Description | |
128 | 143 | |---------------------- |----------- |--------------------------------------------------------- | |
129 | | -| access_key_id | Yes | 用于身份验证的阿里云 OSS Access Key ID。 | |
130 | | -| access_key_secret | Yes | 用于身份验证的阿里云 OSS Access Key Secret。 | |
| 144 | +| access_key_id | Yes | 阿里云 OSS Access Key ID。 | |
| 145 | +| access_key_secret | Yes | 阿里云 OSS Access Key Secret。 | |
131 | 146 | | endpoint_url | Yes | 阿里云 OSS 的 Endpoint URL。 | |
132 | | -| presign_endpoint_url | No | 用于预签名阿里云 OSS URL 的 Endpoint URL。 | |
| 147 | +| presign_endpoint_url | No | 用于预签名 URL 的 Endpoint。 | |
| 148 | + |
| 149 | +```sql title='示例' |
| 150 | +-- 创建阿里云 OSS 连接 |
| 151 | +CREATE CONNECTION my_oss_conn |
| 152 | + STORAGE_TYPE = 'oss' |
| 153 | + ACCESS_KEY_ID = '<your-ak>' |
| 154 | + ACCESS_KEY_SECRET = '<your-sk>' |
| 155 | + ENDPOINT_URL = 'https://<bucket-name>.<region-id>[-internal].aliyuncs.com'; |
133 | 156 |
|
134 | | -```sql title='Examples' |
| 157 | +-- 创建 Stage 并引用该连接 |
135 | 158 | CREATE STAGE my_oss_stage |
136 | | - 'oss://my-bucket' |
137 | | - CONNECTION = ( |
138 | | - ACCESS_KEY_ID = '<your-ak>', |
139 | | - ACCESS_KEY_SECRET = '<your-sk>', |
140 | | - ENDPOINT_URL = 'https://<bucket-name>.<region-id>[-internal].aliyuncs.com' |
141 | | - ); |
| 159 | + URL = 'oss://my-bucket' |
| 160 | + CONNECTION = (CONNECTION_NAME = 'my_oss_conn'); |
142 | 161 | ``` |
143 | 162 |
|
144 | 163 | </TabItem> |
145 | 164 |
|
146 | 165 | <TabItem value="Tencent COS" label="Tencent COS"> |
147 | 166 |
|
148 | | -下表列出了用于访问腾讯云对象存储(COS)的连接参数: |
| 167 | +下表列出了访问腾讯云对象存储(COS)的连接参数: |
149 | 168 |
|
150 | 169 | | Parameter | Required? | Description | |
151 | 170 | |-------------- |----------- |------------------------------------------------------------- | |
152 | | -| endpoint_url | Yes | 腾讯云对象存储的 Endpoint URL。 | |
153 | | -| secret_id | Yes | 用于身份验证的腾讯云对象存储 Secret ID。 | |
154 | | -| secret_key | Yes | 用于身份验证的腾讯云对象存储 Secret Key。 | |
155 | | - |
156 | | -```sql title='Examples' |
| 171 | +| endpoint_url | Yes | 腾讯云 COS 的 Endpoint URL。 | |
| 172 | +| secret_id | Yes | 腾讯云 COS Secret ID。 | |
| 173 | +| secret_key | Yes | 腾讯云 COS Secret Key。 | |
| 174 | + |
| 175 | +```sql title='示例' |
| 176 | +-- 创建腾讯云 COS 连接 |
| 177 | +CREATE CONNECTION my_cos_conn |
| 178 | + STORAGE_TYPE = 'cos' |
| 179 | + SECRET_ID = '<your-secret-id>' |
| 180 | + SECRET_KEY = '<your-secret-key>' |
| 181 | + ENDPOINT_URL = '<your-endpoint-url>'; |
| 182 | + |
| 183 | +-- 创建 Stage 并引用该连接 |
157 | 184 | CREATE STAGE my_cos_stage |
158 | | - 'cos://my-bucket' |
159 | | - CONNECTION = ( |
160 | | - SECRET_ID = '<your-secret-id>', |
161 | | - SECRET_KEY = '<your-secret-key>', |
162 | | - ENDPOINT_URL = '<your-endpoint-url>' |
163 | | - ); |
| 185 | + URL = 'cos://my-bucket' |
| 186 | + CONNECTION = (CONNECTION_NAME = 'my_cos_conn'); |
164 | 187 | ``` |
165 | 188 |
|
166 | 189 | </TabItem> |
167 | 190 |
|
168 | 191 | <TabItem value="Hugging Face" label="HuggingFace"> |
169 | 192 |
|
170 | | -下表列出了用于访问 Hugging Face 的连接参数: |
| 193 | +下表列出了访问 Hugging Face 的连接参数: |
171 | 194 |
|
172 | 195 | | Parameter | Required? | Description | |
173 | 196 | |-----------|-----------------------|-----------------------------------------------------------------------------------------------------------------| |
174 | | -| repo_type | No (default: dataset) | Hugging Face 仓库的类型。可以是 `dataset` 或 `model`。 | |
175 | | -| revision | No (default: main) | Hugging Face URI 的修订版本。可以是仓库的分支、标签或提交。 | |
176 | | -| token | No | 来自 Hugging Face 的 API 令牌,可能需要用于访问私有仓库或某些资源。 | |
177 | | - |
178 | | -```sql title='Examples' |
| 197 | +| repo_type | No (default: dataset) | Hugging Face 仓库类型,可取 `dataset` 或 `model`。 | |
| 198 | +| revision | No (default: main) | Hugging Face URI 的版本,可为分支、标签或提交。 | |
| 199 | +| token | No | Hugging Face API Token,访问私有仓库或部分资源时需要。 | |
| 200 | + |
| 201 | +```sql title='示例' |
| 202 | +-- 创建 Hugging Face 连接 |
| 203 | +CREATE CONNECTION my_hf_conn |
| 204 | + STORAGE_TYPE = 'hf' |
| 205 | + REPO_TYPE = 'dataset' |
| 206 | + REVISION = 'main' |
| 207 | + TOKEN = '<optional-access-token>'; |
| 208 | + |
| 209 | +-- 创建 Stage 并引用该连接 |
179 | 210 | CREATE STAGE my_huggingface_stage |
180 | | - 'hf://opendal/huggingface-testdata/' |
181 | | - CONNECTION = ( |
182 | | - REPO_TYPE = 'dataset' |
183 | | - REVISION = 'main' |
184 | | - ); |
| 211 | + URL = 'hf://opendal/huggingface-testdata/' |
| 212 | + CONNECTION = (CONNECTION_NAME = 'my_hf_conn'); |
185 | 213 | ``` |
186 | 214 |
|
187 | | -</TabItem> |
| 215 | +访问公开仓库可以省略 `TOKEN`,访问私有或受限仓库时再补上。 |
188 | 216 |
|
189 | | -</Tabs> |
| 217 | +</TabItem> |
| 218 | +</Tabs> |
0 commit comments