为 AWS S3 表创建 Iceberg REST Catalog
本文介绍如何在 StarRocks 中创建 Iceberg REST Catalog,以通过 AWS Glue Iceberg REST 端点访问 AWS S3 表中的数据。
AWS Glue Iceberg REST 端点实现了 Iceberg REST Catalog Open API 规范,提供了一个标准化接口用于与 Iceberg 表进行交互。要使用此端点访问 S3 表,您需要通过结合 IAM 策略和 AWS Lake Formation 授权来配置凭证。以下部分将指导您完成访问权限设置,包括定义所需的策略、在数据库和表级别建立 Lake Formation 权限,以及使用 StarRocks 创建一个 Iceberg REST catalog 以访问 S3 表。
(可选)创建一个表存储桶
如果您已经有一个用于 Iceberg 表的表存储桶,可以跳过此步骤。
- 以具有管理员权限的用户身份登录 Amazon S3 控制台。
- 在页面的右上角,选择您的 AWS 区域。
- 在左侧导航窗格中,从导航面板中选择 Table buckets。
- 点击 Create table bucket 创建一个表存储桶。
- 创建表存储桶后,选择它并点击 Create table with Athena。
- 创建一个命名空间。
- 创建命名空间后,再次点击 Create table with Athena 创建一个表。
注意
您可以使用 Athena 创建数据库和表,然后使用 StarRocks 查询。或者,您也可以仅创建表存储桶,然后使用 StarRocks 创建数据库和表。
创建 IAM 策略
要通过 AWS Glue 端点访问 S3 表,请创建一个具有 AWS Glue 和 Lake Formation 操作权限的 IAM 策略:
- 以具有管理员权限的用户身份登录 Amazon IAM 控制台。
- 在页面的右上角,选择您的 AWS 区域。
- 在左侧导航窗格中,从导航面板中选择 Policies。
- 选择 Create a policy,在策略编辑器中选择 JSON。
- 添加以下策略以授予对 AWS Glue 和 Lake Formation 操作的访问权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:CreateTable",
"glue:UpdateTable"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog",
"arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog/<s3_table_bucket_name>",
"arn:aws:glue:<region>:<account-id>:table/s3tablescatalog/<s3_table_bucket_name>/<namespace>/*",
"arn:aws:glue:<region>:<account-id>:database/s3tablescatalog/<s3_table_bucket_name>/<namespace>"
]
},
{
"Effect": "Allow",
"Action": [
"lakeformation:GetDataAccess"
],
"Resource": "*"
}
]
}
创建 IAM 策略后,将其附加到目标 IAM 用户:
- 从导航面板中选择 Users。
- 选择需要 S3 表访问权限的用户。
- 点击 Add permissions 并选择 Attach policies directly。
- 附加新创建的策略。