本节包含有关 AWS Glue Iceberg REST 目录 API 和 AWS Glue 扩展 API 的规范,以及使用这些 API 时的注意事项。
对 AWS Glue Data Catalog 端点的 API 请求使用 AWS 签名版本 4(SigV4)进行身份验证。请参阅适用于 API 请求的 AWS 签名版本 4 部分以了解有关 AWS SigV4 的更多信息。
访问 AWS Glue 服务端点和 AWS Glue 元数据时,应用程序将代入一个需要 glue:getCatalog
IAM 操作的 IAM 角色。
可以使用 IAM、Lake Formation 或 Lake Formation 混合模式权限来管理对 Data Catalog 及其对象的访问权限。
Data Catalog 中的联合目录具有 Lake Formation 注册的数据位置。Lake Formation 可与 Data Catalog 结合使用,从而提供数据库式的权限来管理用户对 Data Catalog 对象的访问权限。
您可以使用 IAM、AWS Lake Formation 或 Lake Formation 混合模式权限来管理对默认 Data Catalog 及其对象的访问。
要创建、插入或删除 Lake Formation 托管式对象中的数据,必须为该 IAM 用户或角色设置具体的权限。
-
CREATE_CATALOG:创建目录所必需的
-
CREATE_DATABASE:创建数据库所必需的
-
CREATE_TABLE:创建表所必需的
-
DELETE:从表中删除数据所必需的
-
DESCRIBE:读取元数据所必需的
-
DROP:删除表或数据库所必需的
-
INSERT – 当主体需要将数据插入表中时需要
-
SELECT – 当主体需要选择表中数据时需要
有关更多信息,请参阅《AWS Lake Formation 开发人员指南》中的 Lake Formation permissions reference。
操作名称 | GetConfig |
类型 |
Iceberg REST 目录 API |
REST 路径 |
GET /iceberg/v1/config |
IAM 操作 |
glue:GetCatalog |
Lake Formation 权限 | 不适用 |
CloudTrail 事件 |
glue:GetCatalog |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L67 |
注意事项和限制
-
warehouse
查询参数必须设置为 AWS Glue 目录 ID。如果未设置,则将使用当前账户中的根目录来返回响应。有关更多信息,请参阅 前缀和目录路径参数。
操作名称 | GetCatalog |
类型 |
AWS Glue 扩展 API |
REST 路径 |
GET/extensions/v1/catalogs/{catalog} |
IAM 操作 |
glue:GetCatalog |
Lake Formation 权限 | DESCRIBE |
CloudTrail 事件 |
glue:GetCatalog |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L40 |
注意事项和限制
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
操作名称 | ListNamespaces |
类型 |
Iceberg REST 目录 API |
REST 路径 |
GET/iceberg/v1/catalogs/{catalog}/namespaces |
IAM 操作 |
glue:GetDatabase |
Lake Formation 权限 | ALL、DESCRIBE、SELECT |
CloudTrail 事件 |
glue:GetDatabase |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L205 |
注意事项和限制
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
-
仅显示下一层级的命名空间。要列出更深层级的命名空间,请在目录路径参数中指定嵌套目录 ID。
操作名称 | CreateNamespace |
类型 |
Iceberg REST 目录 API |
REST 路径 |
POST/iceberg/v1/catalogs/{catalog}/namespaces |
IAM 操作 |
glue:CreateDatabase |
Lake Formation 权限 | ALL、DESCRIBE、SELECT |
CloudTrail 事件 |
glue:CreateDatabase |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L256 |
注意事项和限制
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
-
只能创建单级命名空间。要创建多级命名空间,必须以迭代方式创建每个层级,然后使用目录路径参数连接到该层级。
操作名称 | StartCreateNamespaceTransaction |
类型 |
AWS Glue 扩展 API |
REST 路径 |
POST/extensions/v1/catalogs/{catalog}/namespaces |
IAM 操作 |
glue:CreateDatabase |
Lake Formation 权限 | ALL、DESCRIBE、SELECT |
CloudTrail 事件 |
glue:CreateDatabase |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L256 |
注意事项和限制
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
-
只能创建单级命名空间。要创建多级命名空间,必须以迭代方式创建每个层级,然后使用目录路径参数连接到该层级。
-
此 API 是异步的,并且会返回一个可以用于通过
CheckTransactionStatus
API 调用进行跟踪的事务 ID。 -
只有当
GetCatalog
API 调用在响应中包含use-extensions=true
参数时,才能调用此 API。
操作名称 | LoadNamespaceMetadata |
类型 |
Iceberg REST 目录 API |
REST 路径 |
GET/iceberg/v1/catalogs/{catalog}/namespaces/{ns} |
IAM 操作 |
glue:GetDatabase |
Lake Formation 权限 | ALL、DESCRIBE、SELECT |
CloudTrail 事件 |
glue:GetDatabase |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L302 |
操作名称 | UpdateNamespaceProperties |
类型 |
Iceberg REST 目录 API |
REST 路径 |
POST /iceberg/v1/catalogs/{catalog}/namespaces/{ns}/properties |
IAM 操作 |
glue:UpdateDatabase |
Lake Formation 权限 | ALL、ALTER |
CloudTrail 事件 |
glue:UpdateDatabase |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L400 |
操作名称 | DeleteNamespace |
类型 |
Iceberg REST 目录 API |
REST 路径 |
DELETE/iceberg/v1/catalogs/{catalog}/namespces/{ns} |
IAM 操作 |
glue:DeleteDatabase |
Lake Formation 权限 | ALL、DROP |
CloudTrail 事件 |
glue:DeleteDatabase |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L365 |
注意事项和限制
操作名称 | StartDeleteNamespaceTransaction |
类型 |
AWS Glue 扩展 API |
REST 路径 |
DELETE /extensions/v1/catalogs/{catalog}/namespces/{ns} |
IAM 操作 |
glue:DeleteDatabase |
Lake Formation 权限 | ALL、DROP |
CloudTrail 事件 |
glue:DeleteDatabase |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L85 |
注意事项和限制
操作名称 | ListTables |
类型 |
Iceberg REST 目录 API |
REST 路径 |
GET /iceberg/v1/catalogs/{catalog}/namespaces/{ns}/tables |
IAM 操作 |
glue:GetTables |
Lake Formation 权限 | ALL、SELECT、DESCRIBE |
CloudTrail 事件 |
glue:GetTables |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L463 |
注意事项和限制
操作名称 | CreateTable |
类型 |
Iceberg REST 目录 API |
REST 路径 |
GET /iceberg/v1/catalogs/{catalog}/namespaces/{ns}/tables |
IAM 操作 |
glue:CreateTable |
Lake Formation 权限 | ALL、CREATE_TABLE |
CloudTrail 事件 |
glue:CreateTable |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L497 |
注意事项和限制
操作名称 | CreateTable |
类型 |
AWS Glue 扩展 API |
REST 路径 |
POST/extensions/v1/catalogs/{catalog}/namespaces/{ns}/tables |
IAM 操作 |
glue:CreateTable |
Lake Formation 权限 | ALL、CREATE_TABLE |
CloudTrail 事件 |
glue:CreateTable |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L107 |
注意事项和限制
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
只能在 REST 路径参数中指定单级命名空间。有关更多信息,请参阅命名空间路径参数部分。
-
不支持将
CreateTable
与暂存功能结合使用。如果指定了stageCreate
查询参数,则操作将失败。这意味着不支持类似于CREATE TABLE AS SELECT
的操作,用户应组合使用CREATE TABLE
和INSERT INTO
来解决问题。 -
此 API 是异步的,并且会返回一个可以用于通过
CheckTransactionStatus
API 调用进行跟踪的事务 ID。 -
只有当
GetCatalog
API 调用的响应中指示use-extensions=true
时,才能使用此 API。
操作名称 | LoadTable |
类型 |
AWS Glue 扩展 API |
REST 路径 |
GET /iceberg/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:GeTTable |
Lake Formation 权限 | ALL、SELECT、DESCRIBE |
CloudTrail 事件 |
glue:GetTable |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L616 |
注意事项
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
只能在 REST 路径参数中指定单级命名空间。有关更多信息,请参阅命名空间路径参数部分。
-
不支持将
CreateTable
与暂存功能结合使用。如果指定了stageCreate
查询参数,则操作将失败。这意味着不支持类似于CREATE TABLE AS SELECT
的操作,用户应组合使用CREATE TABLE
和INSERT INTO
来解决问题。 -
此 API 是异步的,并且会返回一个可以用于通过
CheckTransactionStatus
API 调用进行跟踪的事务 ID。 -
只有当
GetCatalog
API 调用的响应中指示use-extensions=true
时,才能使用此 API。
操作名称 | LoadTable |
类型 |
AWS Glue 扩展 API |
REST 路径 |
GET /extensions/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:GetTable |
Lake Formation 权限 | ALL、SELECT、DESCRIBE |
CloudTrail 事件 |
glue:GetTable |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L134 |
注意事项
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
只能在 REST 路径参数中指定单级命名空间。有关更多信息,请参阅命名空间路径参数部分。
-
快照查询参数仅支持
all
模式。 -
与
LoadTable
API 相比,ExtendedLoadTable
API 的差异在于以下方面:并未严格强制要求所有字段都可用。
-
在响应的配置字段中提供了以下额外参数:
额外参数 配置密钥 描述 aws.server-side-capabilities.scan-planning
指示是否可以使用 PreparePlan 表和 PlanTable API 扫描该表。 aws.server-side-capabilities.data-commit
指示是否可以使用 StartUpdateTable 事务提交表。 aws.glue.staging.location
用于服务器端扫描计划或数据提交,这是一个可供引擎用于写入临时数据文件的服务托管暂存位置
aws.glue.staging.access-key-id
用于服务器端扫描计划或数据提交,这是用于访问服务托管暂存位置的临时 AWS 凭证的一部分
aws.glue.staging.secret-access-key
用于服务器端扫描计划或数据提交,这是用于访问服务托管暂存位置的临时 AWS 凭证的一部分。
aws.glue.staging.session-token
用于服务器端扫描计划或数据提交,这是用于访问服务托管暂存位置的临时 AWS 凭证的一部分。
aws.glue.staging.expiration-ms
用于服务器端扫描计划或数据提交,这是用于访问服务托管暂存位置的凭证的到期时间。
aws.glue.staging.data-transfer-role-arn
用于服务器端扫描计划或数据提交,这是一个代入后可以用来访问服务托管暂存位置的 IAM 角色。
操作名称 | PreplanTable |
类型 |
AWS Glue 扩展 API |
REST 路径 |
POST /extensions/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table}/preplan |
IAM 操作 |
glue:GetTable |
Lake Formation 权限 | ALL、SELECT、DESCRIBE |
CloudTrail 事件 |
glue:GetTable |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L211 |
注意事项
操作名称 | PlanTable |
类型 |
AWS Glue 扩展 API |
REST 路径 |
POST /extensions/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table}/plan |
IAM 操作 |
glue:GetTable |
Lake Formation 权限 | ALL、SELECT、DESCRIBE |
CloudTrail 事件 |
glue:GetTable |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L243 |
注意事项
操作名称 | TableExists |
类型 |
Iceberg REST 目录 API |
REST 路径 |
HEAD/iceberg/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:GetTable |
Lake Formation 权限 | ALL、SELECT、DESCRIBE |
CloudTrail 事件 |
glue:GetTable |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L833 |
操作名称 | UpdateTable |
类型 |
Iceberg REST 目录 API |
REST 路径 |
POST /iceberg/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:UpdateTable |
Lake Formation 权限 | ALL、ALTER |
CloudTrail 事件 |
glue:UpdateTable |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L677 |
操作名称 | StartUpdateTableTransaction |
类型 | AWS Glue 扩展 API |
REST 路径 |
POST/extensions/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:UpdateTable |
Lake Formation 权限 |
ALL、ALTER |
CloudTrail 事件 |
glue:UpdateTable |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L154 |
注意事项
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。
只能在 REST 路径参数中指定单级命名空间。有关更多信息,请参阅命名空间路径参数部分。
-
此 API 是异步的,并且会返回一个可以用于通过
CheckTransactionStatus
API 调用进行跟踪的事务 ID。 -
也可以通过此 API 执行
RenamTable
操作。发生这种情况时,调用者还必须拥有要重命名的表的 glue:CreateTable 或 LakeFormation CREATE_TABLE 权限。 -
只有当
ExtendedLoadTable
API 响应包含aws.server-side-capabilities.scan-planning=true
时,您才能使用此 API。
操作名称 | DeleteTable |
类型 |
Iceberg REST 目录 API |
REST 路径 |
DELETE/iceberg/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:DeleteTable |
Lake Formation 权限 | ALL、DROP |
CloudTrail 事件 |
glue:DeleteTable |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L793 |
注意事项
-
目录路径参数应遵循前缀和目录路径参数部分中描述的样式。
只能在 REST 路径参数中指定单级命名空间。有关更多信息,请参阅命名空间路径参数部分。
-
DeleteTable
API 操作支持 purge 选项。当清除设置为true
时,表数据会被删除,否则数据不会被删除。对于 Amazon S3 中的表,此操作不会删除表数据。当表存储在 Amazon S3 中且purge = TRUE,
时,此操作将会失败。对于存储在 Amazon Redshift 托管存储中的表,该操作将删除表数据,类似于 Amazon Redshift 中的
DROP TABLE
行为。当表存储在 Amazon Redshift 中且purge = FALSE
时,操作会失败。 -
不支持
purgeRequest=true
。
操作名称 | StartDeleteTableTransaction |
类型 |
AWS Glue 扩展 API |
REST 路径 |
DELETE /extensions/v1/catalogs/{catalog}/namespaces/{ns}/tables/{table} |
IAM 操作 |
glue:DeleteTable |
Lake Formation 权限 | ALL、DROP |
CloudTrail 事件 |
glue:DeleteTable |
Open API 定义 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml#L793 |
注意事项
操作名称 | CheckTransactionStatus |
类型 |
AWS Glue 扩展 API |
REST 路径 |
POST/extensions/v1/transactions/status |
IAM 操作 |
权限与启动事务的操作相同 |
Lake Formation 权限 | 权限与启动事务的操作相同 |
Open API 定义 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml#L273 |
注意事项
-
目录路径参数必须遵循前缀和目录路径参数部分中描述的样式。