Accessing tables using the Amazon S3 Tables Iceberg REST endpoint
You can connect your Iceberg REST client to the Amazon S3 Tables Iceberg REST endpoint and make REST API calls to create, update, or query tables in S3 table buckets. The endpoint implements a set of standardized Iceberg REST APIs specified in the Apache Iceberg REST Catalog Open API specification
Note
Amazon S3 Tables Iceberg REST endpoint can be used to access tables in AWS Partner Network (APN) catalog implementations or custom catalog implementations. It can also be used if you only need basic read/write access to a single table bucket. For other access scenarios we recommend using the AWS Glue Iceberg REST endpoint to connect to tables, which provides unified table management, centralized governance, and fine-grained access control. For more information, see Accessing Amazon S3 tables using the AWS Glue Iceberg REST endpoint
Configuring the endpoint
You connect to the Amazon S3 Tables Iceberg REST endpoint using the service endpoint. S3 Tables Iceberg REST endpoints have the following format:
https://s3tables.<REGION>.amazonaws.com/iceberg
Refer to S3 Tables AWS Regions and endpoints for the Region-specific endpoints.
Catalog configuration properties
When using an Iceberg client to connect an analytics engine to the service endpoint, you must specify the following configuration properties when you initialize the catalog. Replace the placeholder values with the information for your Region and table bucket.
The region-specific endpoint as the endpoint URI:
https://s3tables.<REGION>.amazonaws.com/icebergYour table bucket ARN as the warehouse location:
arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>Sigv4 properties for authentication. The SigV4 signing name for the service endpoint requests is:
s3tables
The following examples show you how to configure different clients to use the Amazon S3 Tables Iceberg REST endpoint.
Authenticating and authorizing access to the endpoint
API requests to the S3 Tables service endpoints are authenticated using AWS Signature Version 4 (SigV4). See AWS Signature Version 4 for API requests to learn more about AWS SigV4.
The SigV4 signing name for Amazon S3 Tables Iceberg REST endpoint requests is: s3tables
Requests to the Amazon S3 Tables Iceberg REST endpoint are authorized using s3tables IAM actions corresponding to the REST API operations. These permissions can be defined in either IAM identity-based policies or resource-based policies attached to tables and table buckets. For more information, see Access management for S3 Tables.
You can track requests made to your tables through the REST endpoint with AWS CloudTrail. Requests will be logged as their corresponding S3 IAM action. For example, a LoadTable API will generate a management event for the GetTableMetadataLocation operation and a data event for the GetTableData operation. For more information, see Logging with AWS CloudTrail for S3 Tables.
Prefix and path parameters
Iceberg REST catalog APIs have a free-form prefix in their request URLs. For example, the ListNamespaces API call uses the GET/v1/{prefix}/namespaces URL format. For S3 Tables the REST path {prefix} is always your url-encoded table bucket ARN.
For example, for the following table bucket ARN:
arn:aws:s3tables:
the prefix would be:
us-east-1:111122223333:bucket/bucketnamearn%3Aaws%3As3tables%3A
us-east-1%3A111122223333%3Abucket%2Fbucketname
Namespace path parameter
Namespaces in an Iceberg REST catalog API path can have multiple levels. However, S3 Tables only supports single-level namespaces. To access a namespace in a multi-level catalog hierarchy, you can connect to a multi-level catalog above the namespace when referencing the namespace. This allows any query engine that supports the 3-part notation of catalog.namespace.table to access objects in S3 Tables’ catalog hierarchy without compatibility issues compared to using the multi-level namespace.
Supported Iceberg REST API operations
The following table contains the supported Iceberg REST APIs and how they correspond to S3 Tables actions.
| Iceberg REST operation | REST path | S3 Tables IAM action | CloudTrail EventName |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Considerations and limitations
Following are considerations and limitations when using the Amazon S3 Tables Iceberg REST endpoint.
Considerations
CreateTable API behavior – The
stage-createoption is not supported for this operation, and results in a400 Bad Requesterror. This means you cannot create a table from query results usingCREATE TABLE AS SELECT(CTAS).DeleteTable API behavior – You can only drop tables with purge enabled. Dropping tables with
purge=falseis not supported and results in a400 Bad Requesterror. Some versions of Spark always set this flag to false even when runningDROP TABLE PURGEcommands. You can try withDROP TABLE PURGEor use the S3 Tables DeleteTable operation to delete a table.-
The endpoint only supports standard table metadata operations. For table maintenance, such as snapshot management and compaction, use S3 Tables maintenance API operations. For more information, see S3 Tables maintenance.
Limitations
Multilevel namespaces are not supported.
OAuth-based authentication is not supported.
Only the
ownerproperty is supported for namespaces.View-related APIs defined in the Apache Iceberg REST Open API specification
are not supported. Running operations on a table with a
metadata.jsonfile over 5MB is not supported, and will return a400 Bad Requesterror. To control the size of yourmetadata.jsonfiles use table maintenance operations. For more information, see S3 Tables maintenance.