This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new ec8fbbd4c62 Add IAM Assumed Role example (#2898)
ec8fbbd4c62 is described below
commit ec8fbbd4c62ce53245766ffb722dc1c6213de9e2
Author: Calvin Kirs <[email protected]>
AuthorDate: Sat Sep 20 01:51:27 2025 +0800
Add IAM Assumed Role example (#2898)
## Versions
- [x] dev
- [x] 3.0
- [x] 2.1
- [ ] 2.0
## Languages
- [x] Chinese
- [x] English
## Docs Checklist
- [ ] Checked by AI
- [ ] Test Cases Built
Co-authored-by: Mingyu Chen (Rayner) <[email protected]>
---
docs/lakehouse/catalogs/hive-catalog.mdx | 9 +++
docs/lakehouse/catalogs/iceberg-catalog.mdx | 21 ++++++
docs/lakehouse/catalogs/paimon-catalog.mdx | 77 +++++++++++++++++++++-
.../current/lakehouse/catalogs/hive-catalog.mdx | 9 +++
.../current/lakehouse/catalogs/iceberg-catalog.mdx | 21 ++++++
.../current/lakehouse/catalogs/paimon-catalog.mdx | 76 ++++++++++++++++++++-
.../lakehouse/catalogs/hive-catalog.mdx | 9 +++
.../lakehouse/catalogs/iceberg-catalog.mdx | 21 ++++++
.../lakehouse/catalogs/paimon-catalog.mdx | 76 ++++++++++++++++++++-
.../lakehouse/catalogs/hive-catalog.mdx | 9 +++
.../lakehouse/catalogs/iceberg-catalog.mdx | 21 ++++++
.../lakehouse/catalogs/paimon-catalog.mdx | 76 ++++++++++++++++++++-
scripts/check_move.js | 3 +-
.../lakehouse/catalogs/hive-catalog.mdx | 9 +++
.../lakehouse/catalogs/iceberg-catalog.mdx | 21 ++++++
.../lakehouse/catalogs/paimon-catalog.mdx | 77 +++++++++++++++++++++-
.../lakehouse/catalogs/hive-catalog.mdx | 9 +++
.../lakehouse/catalogs/iceberg-catalog.mdx | 21 ++++++
.../lakehouse/catalogs/paimon-catalog.mdx | 77 +++++++++++++++++++++-
19 files changed, 629 insertions(+), 13 deletions(-)
diff --git a/docs/lakehouse/catalogs/hive-catalog.mdx
b/docs/lakehouse/catalogs/hive-catalog.mdx
index afccfe5f5cb..1eb12eb12e0 100644
--- a/docs/lakehouse/catalogs/hive-catalog.mdx
+++ b/docs/lakehouse/catalogs/hive-catalog.mdx
@@ -211,6 +211,15 @@ Hive transactional tables are supported from version 3.x
onwards. For details, r
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG hive_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
Access HMS without Kerberos authentication
diff --git a/docs/lakehouse/catalogs/iceberg-catalog.mdx
b/docs/lakehouse/catalogs/iceberg-catalog.mdx
index 8db8b28d5dc..366f0e425eb 100644
--- a/docs/lakehouse/catalogs/iceberg-catalog.mdx
+++ b/docs/lakehouse/catalogs/iceberg-catalog.mdx
@@ -191,6 +191,17 @@ The current Iceberg dependency is version 1.6.1, which is
compatible with higher
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
Access HMS without Kerberos authentication
@@ -871,6 +882,16 @@ The current Iceberg dependency is version 1.6.1, which is
compatible with higher
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hadoop',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='COS' label='COS'>
```sql
diff --git a/docs/lakehouse/catalogs/paimon-catalog.mdx
b/docs/lakehouse/catalogs/paimon-catalog.mdx
index 2ffe69f8fe5..43ee177d22a 100644
--- a/docs/lakehouse/catalogs/paimon-catalog.mdx
+++ b/docs/lakehouse/catalogs/paimon-catalog.mdx
@@ -167,6 +167,17 @@ The currently dependent Paimon version is 1.0.0.
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket/warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -429,7 +440,7 @@ The currently dependent Paimon version is 1.0.0.
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -445,6 +456,16 @@ The currently dependent Paimon version is 1.0.0.
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'filesystem',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -523,7 +544,7 @@ The currently dependent Paimon version is 1.0.0.
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -1050,3 +1071,55 @@ Result:
## Appendix
+### FAQ
+
+1. `Could not find a file io implementation for scheme 's3a' in the classpath`
+
+ In versions prior to 3.1, when using HMS as metadata storage with 's3a' or
's3' protocol on the storage side, the following error occurs:
+
+ ```
+ java.io.UncheckedIOException:
org.apache.paimon.fs.UnsupportedSchemeException: Could not find a file io
implementation for scheme 's3a' in the classpath. Hadoop FileSystem also cannot
access this path 's3a://`.
+ ```
+
+ Versions prior to 3.1 do not support the `s3a` protocol. If you must use
it, you can temporarily add `s3a` protocol-related parameters as a workaround.
This operation is not needed for versions 3.1 and later.
+
+ For example:
+
+ ```sql
+ CREATE CATALOG `paimon_hms_on_s3a` PROPERTIES (
+ "type" = "paimon",
+ "paimon.catalog.type" = "hms",
+ "hive.metastore.uris" = "thrift://172.20.48.119:9383"
+ "warehouse" = "s3a://bucket/paimon_warehouse",
+ "s3.access_key" = "<ak>",
+ "s3.secret_key" = "<sk>",
+ "s3.region" = "ap-east-1",
+ "s3.endpoint" = "s3.ap-east-1.amazonaws.com",
+ -- explicitly add s3a parameters
+ "fs.s3a.access.key"="<ak>",
+ "fs.s3a.secret.key"="<sk>",
+ "fs.s3a.endpoint.region"="ap-east-1",
+ "fs.s3a.endpoint"="s3.ap-east-1.amazonaws.com",
+ "fs.s3a.impl"= "org.apache.hadoop.fs.s3a.S3AFileSystem",
+ );
+ ```
+
+ When using the `s3` protocol, you need to explicitly add Paimon S3-related
parameters, i.e., add the `paimon.` prefix. For example:
+
+ ```sql
+ CREATE CATALOG test_paimon_on_hms_aws_catalog PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket-hk/paimon_warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'ap-east-1',
+ 's3.endpoint' = 's3.ap-east-1.amazonaws.com',
+ 's3.access_key' = '<ak>',
+ 's3.secret_key' = '<sk>',
+ -- explicitly add s3a parameters
+ 'paimon.s3.region' = 'ap-east-1',
+ 'paimon.s3.endpoint' = 'ap-east-1',
+ 'paimon.s3.access-key' = '<ak>',
+ 'paimon.s3.secret-key' = '<sk>'
+ );
+ ```
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
index d5153174e62..e85042b18d9 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
@@ -220,6 +220,15 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG hive_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
访问未开启 Kerberos 认证的 HMS
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
index d3283c7812f..b74a54933ed 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
@@ -203,6 +203,17 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
访问未开启 Kerberos 认证的 HMS
@@ -883,6 +894,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hadoop',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='COS' label='COS'>
```sql
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
index d6a2d494a40..69dc5ef0fc4 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
@@ -166,6 +166,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.access_key' = '<ak>',
's3.secret_key' = '<sk>'
);
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket/warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
```
</TabItem>
<TabItem value='OSS' label='OSS'>
@@ -429,7 +439,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -445,6 +455,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'filesystem',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -523,7 +543,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -1049,3 +1069,55 @@ SELECT `bucket` , COUNT(*) as file_count,
SUM(file_size_in_bytes)/1024/1024 as t
## 附录
+### FAQ
+
+1. `Could not find a file io implementation for scheme 's3a' in the classpath`
+
+ 3.1 之前的版本,使用 HMS 作为元数据存储,存储端 使用 's3a' 或 's3' 协议的时候,出现如下报错:
+
+ ```
+ java.io.UncheckedIOException:
org.apache.paimon.fs.UnsupportedSchemeException: Could not find a file io
implementation for scheme 's3a' in the classpath. Hadoop FileSystem also cannot
access this path 's3a://`.
+ ```
+
+ 3.1 之前的不支持 `s3a` 协议,如果必须使用,可以临时显示添加 `s3a` 协议相关参数临时解决。3.1 之后的版本无需此操作。
+
+ 如:
+
+ ```sql
+ CREATE CATALOG `paimon_hms_on_s3a` PROPERTIES (
+ "type" = "paimon",
+ "paimon.catalog.type" = "hms",
+ "hive.metastore.uris" = "thrift://172.20.48.119:9383"
+ "warehouse" = "s3a://bucket/paimon_warehouse",
+ "s3.access_key" = "<ak>",
+ "s3.secret_key" = "<sk>",
+ "s3.region" = "ap-east-1",
+ "s3.endpoint" = "s3.ap-east-1.amazonaws.com",
+ -- explicitly add s3a parameters
+ "fs.s3a.access.key"="<ak>",
+ "fs.s3a.secret.key"="<sk>",
+ "fs.s3a.endpoint.region"="ap-east-1",
+ "fs.s3a.endpoint"="s3.ap-east-1.amazonaws.com",
+ "fs.s3a.impl"= "org.apache.hadoop.fs.s3a.S3AFileSystem",
+ );
+ ```
+
+ 使用 `s3` 协议的时候,需要显示添加 Paimon S3 相关参数,即添加 `paimon.` 前缀。如
+
+ ```sql
+ CREATE CATALOG test_paimon_on_hms_aws_catalog PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket-hk/paimon_warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'ap-east-1',
+ 's3.endpoint' = 's3.ap-east-1.amazonaws.com',
+ 's3.access_key' = '<ak>',
+ 's3.secret_key' = '<sk>',
+ -- explicitly add s3 parameters
+ 'paimon.s3.region' = 'ap-east-1',
+ 'paimon.s3.endpoint' = 'ap-east-1',
+ 'paimon.s3.access-key' = '<ak>',
+ 'paimon.s3.secret-key' = '<sk>'
+ );
+ ```
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
index d5153174e62..e85042b18d9 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
@@ -220,6 +220,15 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG hive_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
访问未开启 Kerberos 认证的 HMS
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
index d3283c7812f..b74a54933ed 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
@@ -203,6 +203,17 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
访问未开启 Kerberos 认证的 HMS
@@ -883,6 +894,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hadoop',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='COS' label='COS'>
```sql
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
index d6a2d494a40..69dc5ef0fc4 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
@@ -166,6 +166,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.access_key' = '<ak>',
's3.secret_key' = '<sk>'
);
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket/warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
```
</TabItem>
<TabItem value='OSS' label='OSS'>
@@ -429,7 +439,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -445,6 +455,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'filesystem',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -523,7 +543,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -1049,3 +1069,55 @@ SELECT `bucket` , COUNT(*) as file_count,
SUM(file_size_in_bytes)/1024/1024 as t
## 附录
+### FAQ
+
+1. `Could not find a file io implementation for scheme 's3a' in the classpath`
+
+ 3.1 之前的版本,使用 HMS 作为元数据存储,存储端 使用 's3a' 或 's3' 协议的时候,出现如下报错:
+
+ ```
+ java.io.UncheckedIOException:
org.apache.paimon.fs.UnsupportedSchemeException: Could not find a file io
implementation for scheme 's3a' in the classpath. Hadoop FileSystem also cannot
access this path 's3a://`.
+ ```
+
+ 3.1 之前的不支持 `s3a` 协议,如果必须使用,可以临时显示添加 `s3a` 协议相关参数临时解决。3.1 之后的版本无需此操作。
+
+ 如:
+
+ ```sql
+ CREATE CATALOG `paimon_hms_on_s3a` PROPERTIES (
+ "type" = "paimon",
+ "paimon.catalog.type" = "hms",
+ "hive.metastore.uris" = "thrift://172.20.48.119:9383"
+ "warehouse" = "s3a://bucket/paimon_warehouse",
+ "s3.access_key" = "<ak>",
+ "s3.secret_key" = "<sk>",
+ "s3.region" = "ap-east-1",
+ "s3.endpoint" = "s3.ap-east-1.amazonaws.com",
+ -- explicitly add s3a parameters
+ "fs.s3a.access.key"="<ak>",
+ "fs.s3a.secret.key"="<sk>",
+ "fs.s3a.endpoint.region"="ap-east-1",
+ "fs.s3a.endpoint"="s3.ap-east-1.amazonaws.com",
+ "fs.s3a.impl"= "org.apache.hadoop.fs.s3a.S3AFileSystem",
+ );
+ ```
+
+ 使用 `s3` 协议的时候,需要显示添加 Paimon S3 相关参数,即添加 `paimon.` 前缀。如
+
+ ```sql
+ CREATE CATALOG test_paimon_on_hms_aws_catalog PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket-hk/paimon_warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'ap-east-1',
+ 's3.endpoint' = 's3.ap-east-1.amazonaws.com',
+ 's3.access_key' = '<ak>',
+ 's3.secret_key' = '<sk>',
+ -- explicitly add s3 parameters
+ 'paimon.s3.region' = 'ap-east-1',
+ 'paimon.s3.endpoint' = 'ap-east-1',
+ 'paimon.s3.access-key' = '<ak>',
+ 'paimon.s3.secret-key' = '<sk>'
+ );
+ ```
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
index d5153174e62..e85042b18d9 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
@@ -220,6 +220,15 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG hive_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
访问未开启 Kerberos 认证的 HMS
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
index d3283c7812f..b74a54933ed 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
@@ -203,6 +203,17 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
访问未开启 Kerberos 认证的 HMS
@@ -883,6 +894,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hadoop',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='COS' label='COS'>
```sql
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
index d6a2d494a40..69dc5ef0fc4 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
@@ -166,6 +166,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.access_key' = '<ak>',
's3.secret_key' = '<sk>'
);
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket/warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
```
</TabItem>
<TabItem value='OSS' label='OSS'>
@@ -429,7 +439,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -445,6 +455,16 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
's3.secret_key' = '<sk>'
);
```
+ 使用 IAM Assumed Role 的方式获取 S3 访问凭证 (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'filesystem',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -523,7 +543,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -1049,3 +1069,55 @@ SELECT `bucket` , COUNT(*) as file_count,
SUM(file_size_in_bytes)/1024/1024 as t
## 附录
+### FAQ
+
+1. `Could not find a file io implementation for scheme 's3a' in the classpath`
+
+ 3.1 之前的版本,使用 HMS 作为元数据存储,存储端 使用 's3a' 或 's3' 协议的时候,出现如下报错:
+
+ ```
+ java.io.UncheckedIOException:
org.apache.paimon.fs.UnsupportedSchemeException: Could not find a file io
implementation for scheme 's3a' in the classpath. Hadoop FileSystem also cannot
access this path 's3a://`.
+ ```
+
+ 3.1 之前的不支持 `s3a` 协议,如果必须使用,可以临时显示添加 `s3a` 协议相关参数临时解决。3.1 之后的版本无需此操作。
+
+ 如:
+
+ ```sql
+ CREATE CATALOG `paimon_hms_on_s3a` PROPERTIES (
+ "type" = "paimon",
+ "paimon.catalog.type" = "hms",
+ "hive.metastore.uris" = "thrift://172.20.48.119:9383"
+ "warehouse" = "s3a://bucket/paimon_warehouse",
+ "s3.access_key" = "<ak>",
+ "s3.secret_key" = "<sk>",
+ "s3.region" = "ap-east-1",
+ "s3.endpoint" = "s3.ap-east-1.amazonaws.com",
+ -- explicitly add s3a parameters
+ "fs.s3a.access.key"="<ak>",
+ "fs.s3a.secret.key"="<sk>",
+ "fs.s3a.endpoint.region"="ap-east-1",
+ "fs.s3a.endpoint"="s3.ap-east-1.amazonaws.com",
+ "fs.s3a.impl"= "org.apache.hadoop.fs.s3a.S3AFileSystem",
+ );
+ ```
+
+ 使用 `s3` 协议的时候,需要显示添加 Paimon S3 相关参数,即添加 `paimon.` 前缀。如
+
+ ```sql
+ CREATE CATALOG test_paimon_on_hms_aws_catalog PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket-hk/paimon_warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'ap-east-1',
+ 's3.endpoint' = 's3.ap-east-1.amazonaws.com',
+ 's3.access_key' = '<ak>',
+ 's3.secret_key' = '<sk>',
+ -- explicitly add s3 parameters
+ 'paimon.s3.region' = 'ap-east-1',
+ 'paimon.s3.endpoint' = 'ap-east-1',
+ 'paimon.s3.access-key' = '<ak>',
+ 'paimon.s3.secret-key' = '<sk>'
+ );
+ ```
diff --git a/scripts/check_move.js b/scripts/check_move.js
index 27f6727e1ee..2ec9b85b1af 100644
--- a/scripts/check_move.js
+++ b/scripts/check_move.js
@@ -45,7 +45,8 @@ function isLocalLink(link) {
!link.startsWith("https://") &&
!link.startsWith("mailto:") &&
!link.startsWith("#") &&
- !path.isAbsolute(link);
+ !path.isAbsolute(link)&&
+ !/.*@.*\..*/.test(link);
}
function removeCodeBlocks(content) {
diff --git a/versioned_docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
b/versioned_docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
index afccfe5f5cb..1eb12eb12e0 100644
--- a/versioned_docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
+++ b/versioned_docs/version-2.1/lakehouse/catalogs/hive-catalog.mdx
@@ -211,6 +211,15 @@ Hive transactional tables are supported from version 3.x
onwards. For details, r
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG hive_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
Access HMS without Kerberos authentication
diff --git a/versioned_docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
b/versioned_docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
index 8db8b28d5dc..366f0e425eb 100644
--- a/versioned_docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
+++ b/versioned_docs/version-2.1/lakehouse/catalogs/iceberg-catalog.mdx
@@ -191,6 +191,17 @@ The current Iceberg dependency is version 1.6.1, which is
compatible with higher
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
Access HMS without Kerberos authentication
@@ -871,6 +882,16 @@ The current Iceberg dependency is version 1.6.1, which is
compatible with higher
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hadoop',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='COS' label='COS'>
```sql
diff --git a/versioned_docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
b/versioned_docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
index 2ffe69f8fe5..43ee177d22a 100644
--- a/versioned_docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
+++ b/versioned_docs/version-2.1/lakehouse/catalogs/paimon-catalog.mdx
@@ -167,6 +167,17 @@ The currently dependent Paimon version is 1.0.0.
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket/warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -429,7 +440,7 @@ The currently dependent Paimon version is 1.0.0.
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -445,6 +456,16 @@ The currently dependent Paimon version is 1.0.0.
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'filesystem',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -523,7 +544,7 @@ The currently dependent Paimon version is 1.0.0.
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -1050,3 +1071,55 @@ Result:
## Appendix
+### FAQ
+
+1. `Could not find a file io implementation for scheme 's3a' in the classpath`
+
+ In versions prior to 3.1, when using HMS as metadata storage with 's3a' or
's3' protocol on the storage side, the following error occurs:
+
+ ```
+ java.io.UncheckedIOException:
org.apache.paimon.fs.UnsupportedSchemeException: Could not find a file io
implementation for scheme 's3a' in the classpath. Hadoop FileSystem also cannot
access this path 's3a://`.
+ ```
+
+ Versions prior to 3.1 do not support the `s3a` protocol. If you must use
it, you can temporarily add `s3a` protocol-related parameters as a workaround.
This operation is not needed for versions 3.1 and later.
+
+ For example:
+
+ ```sql
+ CREATE CATALOG `paimon_hms_on_s3a` PROPERTIES (
+ "type" = "paimon",
+ "paimon.catalog.type" = "hms",
+ "hive.metastore.uris" = "thrift://172.20.48.119:9383"
+ "warehouse" = "s3a://bucket/paimon_warehouse",
+ "s3.access_key" = "<ak>",
+ "s3.secret_key" = "<sk>",
+ "s3.region" = "ap-east-1",
+ "s3.endpoint" = "s3.ap-east-1.amazonaws.com",
+ -- explicitly add s3a parameters
+ "fs.s3a.access.key"="<ak>",
+ "fs.s3a.secret.key"="<sk>",
+ "fs.s3a.endpoint.region"="ap-east-1",
+ "fs.s3a.endpoint"="s3.ap-east-1.amazonaws.com",
+ "fs.s3a.impl"= "org.apache.hadoop.fs.s3a.S3AFileSystem",
+ );
+ ```
+
+ When using the `s3` protocol, you need to explicitly add Paimon S3-related
parameters, i.e., add the `paimon.` prefix. For example:
+
+ ```sql
+ CREATE CATALOG test_paimon_on_hms_aws_catalog PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket-hk/paimon_warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'ap-east-1',
+ 's3.endpoint' = 's3.ap-east-1.amazonaws.com',
+ 's3.access_key' = '<ak>',
+ 's3.secret_key' = '<sk>',
+ -- explicitly add s3a parameters
+ 'paimon.s3.region' = 'ap-east-1',
+ 'paimon.s3.endpoint' = 'ap-east-1',
+ 'paimon.s3.access-key' = '<ak>',
+ 'paimon.s3.secret-key' = '<sk>'
+ );
+ ```
diff --git a/versioned_docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
b/versioned_docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
index afccfe5f5cb..1eb12eb12e0 100644
--- a/versioned_docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
+++ b/versioned_docs/version-3.0/lakehouse/catalogs/hive-catalog.mdx
@@ -211,6 +211,15 @@ Hive transactional tables are supported from version 3.x
onwards. For details, r
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG hive_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
Access HMS without Kerberos authentication
diff --git a/versioned_docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
b/versioned_docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
index 8db8b28d5dc..366f0e425eb 100644
--- a/versioned_docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
+++ b/versioned_docs/version-3.0/lakehouse/catalogs/iceberg-catalog.mdx
@@ -191,6 +191,17 @@ The current Iceberg dependency is version 1.6.1, which is
compatible with higher
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hms',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
Access HMS without Kerberos authentication
@@ -871,6 +882,16 @@ The current Iceberg dependency is version 1.6.1, which is
compatible with higher
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG iceberg_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'iceberg',
+ 'iceberg.catalog.type' = 'hadoop',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='COS' label='COS'>
```sql
diff --git a/versioned_docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
b/versioned_docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
index 2ffe69f8fe5..43ee177d22a 100644
--- a/versioned_docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
+++ b/versioned_docs/version-3.0/lakehouse/catalogs/paimon-catalog.mdx
@@ -167,6 +167,17 @@ The currently dependent Paimon version is 1.0.0.
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_hms_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket/warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -429,7 +440,7 @@ The currently dependent Paimon version is 1.0.0.
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -445,6 +456,16 @@ The currently dependent Paimon version is 1.0.0.
's3.secret_key' = '<sk>'
);
```
+ Obtaining S3 access credentials using an IAM Assumed Role (3.1.1+)
+ ```sql
+ CREATE CATALOG paimon_fs_on_s3_iamrole PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'filesystem',
+ 'warehouse' = 's3://bucket/warehouse',
+ 's3.region' = 'us-east-1',
+ 's3.role_arn' = 'arn:aws:iam::543815668950:role/role'
+ );
+ ```
</TabItem>
<TabItem value='OSS' label='OSS'>
```sql
@@ -523,7 +544,7 @@ The currently dependent Paimon version is 1.0.0.
'type' = 'paimon',
'paimon.catalog.type' = 'filesystem',
'warehouse' = 'hdfs://127.0.0.1:8020/user/doris/paimon1',
- 'fs.default.fs' = 'hdfs://127.0.0.1:8020'
+ 'fs.defaultFS' = 'hdfs://127.0.0.1:8020'
);
```
</TabItem>
@@ -1050,3 +1071,55 @@ Result:
## Appendix
+### FAQ
+
+1. `Could not find a file io implementation for scheme 's3a' in the classpath`
+
+ In versions prior to 3.1, when using HMS as metadata storage with 's3a' or
's3' protocol on the storage side, the following error occurs:
+
+ ```
+ java.io.UncheckedIOException:
org.apache.paimon.fs.UnsupportedSchemeException: Could not find a file io
implementation for scheme 's3a' in the classpath. Hadoop FileSystem also cannot
access this path 's3a://`.
+ ```
+
+ Versions prior to 3.1 do not support the `s3a` protocol. If you must use
it, you can temporarily add `s3a` protocol-related parameters as a workaround.
This operation is not needed for versions 3.1 and later.
+
+ For example:
+
+ ```sql
+ CREATE CATALOG `paimon_hms_on_s3a` PROPERTIES (
+ "type" = "paimon",
+ "paimon.catalog.type" = "hms",
+ "hive.metastore.uris" = "thrift://172.20.48.119:9383"
+ "warehouse" = "s3a://bucket/paimon_warehouse",
+ "s3.access_key" = "<ak>",
+ "s3.secret_key" = "<sk>",
+ "s3.region" = "ap-east-1",
+ "s3.endpoint" = "s3.ap-east-1.amazonaws.com",
+ -- explicitly add s3a parameters
+ "fs.s3a.access.key"="<ak>",
+ "fs.s3a.secret.key"="<sk>",
+ "fs.s3a.endpoint.region"="ap-east-1",
+ "fs.s3a.endpoint"="s3.ap-east-1.amazonaws.com",
+ "fs.s3a.impl"= "org.apache.hadoop.fs.s3a.S3AFileSystem",
+ );
+ ```
+
+ When using the `s3` protocol, you need to explicitly add Paimon S3-related
parameters, i.e., add the `paimon.` prefix. For example:
+
+ ```sql
+ CREATE CATALOG test_paimon_on_hms_aws_catalog PROPERTIES (
+ 'type' = 'paimon',
+ 'paimon.catalog.type' = 'hms',
+ 'warehouse' = 's3://bucket-hk/paimon_warehouse',
+ 'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
+ 's3.region' = 'ap-east-1',
+ 's3.endpoint' = 's3.ap-east-1.amazonaws.com',
+ 's3.access_key' = '<ak>',
+ 's3.secret_key' = '<sk>',
+ -- explicitly add s3a parameters
+ 'paimon.s3.region' = 'ap-east-1',
+ 'paimon.s3.endpoint' = 'ap-east-1',
+ 'paimon.s3.access-key' = '<ak>',
+ 'paimon.s3.secret-key' = '<sk>'
+ );
+ ```
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]