

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengakses tabel menggunakan Tabel Amazon S3 Iceberg REST titik akhir
<a name="s3-tables-integrating-open-source"></a>

Anda dapat menghubungkan Iceberg REST klien Anda ke titik akhir Amazon S3 T Iceberg REST ables dan melakukan REST API panggilan untuk membuat, memperbarui, atau menanyakan tabel di bucket tabel S3. Titik akhir mengimplementasikan serangkaian Iceberg REST API standar yang ditentukan dalam spesifikasi [Apache Iceberg REST Katalog Open API](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml). Titik akhir bekerja dengan menerjemahkan Iceberg REST API operasi ke dalam operasi Tabel S3 yang sesuai.

**catatan**  
Titik Iceberg REST akhir Tabel Amazon S3 dapat digunakan untuk mengakses tabel dalam implementasi katalog AWS Partner Network (APN) atau implementasi katalog khusus. Ini juga dapat digunakan jika Anda hanya membutuhkan read/write akses dasar ke ember meja tunggal. Untuk skenario akses lainnya, kami sarankan menggunakan AWS Glue Iceberg REST titik akhir untuk terhubung ke tabel, yang menyediakan manajemen tabel terpadu, tata kelola terpusat, dan kontrol akses yang halus. Untuk informasi selengkapnya, lihat [Mengakses tabel Amazon S3 menggunakan AWS Glue Iceberg REST titik akhir](s3-tables-integrating-glue-endpoint.md)

## Mengkonfigurasi titik akhir
<a name="configure-endpoint"></a>

Anda menyambung ke titik akhir Amazon S3 Iceberg REST Tables menggunakan titik akhir layanan. T Iceberg REST itik akhir Tabel S3 memiliki format berikut:

```
https://s3tables.<REGION>.amazonaws.com/iceberg
```

Lihat [Tabel S3 Wilayah AWS dan titik akhir](s3-tables-regions-quotas.md#s3-tables-regions) untuk Region-specific titik akhir.

**Properti konfigurasi katalog**

Saat menggunakan klien Iceberg untuk menghubungkan mesin analitik ke titik akhir layanan, Anda harus menentukan properti konfigurasi berikut saat menginisialisasi katalog. Ganti {{placeholder values}} dengan informasi untuk Wilayah dan bucket meja Anda.
+ Titik akhir khusus wilayah sebagai URI titik akhir: `https://s3tables.<REGION>.amazonaws.com/iceberg`
+ Ember meja ARN Anda sebagai lokasi gudang: `arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>`
+ Properti Sigv4 untuk otentikasi. Nama penandatanganan SIGv4 untuk permintaan titik akhir layanan adalah: `s3tables`

Contoh berikut menunjukkan cara mengonfigurasi klien yang berbeda untuk menggunakan Iceberg REST titik akhir Tabel Amazon S3.

------
#### [ PyIceberg ]

Untuk menggunakan titik akhir Amazon S3 Iceberg REST Tables denganPyIceberg, tentukan properti konfigurasi aplikasi berikut:

```
rest_catalog = load_catalog(
  catalog_name,
  **{
    "type": "rest",    
    "warehouse":"arn:aws:s3tables:{{<Region>:<accountID>}}:bucket/{{<bucketname>}}",
    "uri": "https://s3tables.{{<Region>}}.amazonaws.com/iceberg",
    "rest.sigv4-enabled": "true",
    "rest.signing-name": "s3tables",
    "rest.signing-region": "{{<Region>}}"
  }
)
```

------
#### [ Apache Spark ]

Untuk menggunakan titik akhir Tabel Amazon Iceberg REST S3 denganSpark, tentukan properti konfigurasi aplikasi berikut, ganti {{placeholder values}} dengan informasi untuk Wilayah dan bucket tabel Anda.

```
spark-shell \
  --packages "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160,software.amazon.awssdk:url-connection-client:2.20.160" \
  --master "local[*]" \
  --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
  --conf "spark.sql.defaultCatalog=spark_catalog" \
   --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \
  --conf "spark.sql.catalog.spark_catalog.type=rest" \
  --conf "spark.sql.catalog.spark_catalog.uri=https://s3tables.{{<Region>}}.amazonaws.com/iceberg" \
  --conf "spark.sql.catalog.spark_catalog.warehouse=arn:aws:s3tables:{{<Region>:<accountID>}}:bucket/{{<bucketname>}}" \
  --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \
  --conf "spark.sql.catalog.spark_catalog.rest.signing-name=s3tables" \
  --conf "spark.sql.catalog.spark_catalog.rest.signing-region={{<Region>}}" \
  --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \
  --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider" \
  --conf "spark.sql.catalog.spark_catalog.rest-metrics-reporting-enabled=false"
```

------

## Mengautentikasi dan mengotorisasi akses ke titik akhir
<a name="tables-endpoint-auth"></a>

Permintaan API ke titik akhir layanan Tabel S3 diautentikasi menggunakan Sig AWS nature Version 4 (SIGv4). Lihat T [AWS anda Tangan Versi 4 untuk permintaan API ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) untuk mempelajari lebih lanjut tentang AWS SIGv4.

Nama penandatanganan SIGv4 untuk permintaan Iceberg REST titik akhir Amazon S3 Tables adalah: `s3tables`

Permintaan ke titik akhir Amazon S3 Iceberg REST Tables diotorisasi menggunakan tindakan `s3tables` IAM yang sesuai dengan operasi REST API. Izin ini dapat ditentukan dalam kebijakan berbasis identitas IAM atau kebijakan berbasis sumber daya yang dilampirkan ke tabel dan bucket tabel. Untuk informasi selengkapnya, lihat [Manajemen akses untuk Tabel S3](s3-tables-setting-up.md).

 Anda dapat melacak permintaan yang dibuat ke tabel Anda melalui titik REST akhir dengan AWS CloudTrail. Permintaan akan dicatat sebagai tindakan S3 IAM yang sesuai. Misalnya, `LoadTable` API akan menghasilkan peristiwa manajemen untuk `GetTableMetadataLocation` operasi dan peristiwa data untuk `GetTableData` operasi. Untuk informasi selengkapnya, lihat [Logging dengan AWS CloudTrail untuk Tabel S3](s3-tables-logging.md). 

## Parameter awalan dan jalur
<a name="endpoint-parameter"></a>

 Iceberg RESTAPI katalog memiliki awalan bentuk bebas di URL permintaan mereka. Misalnya, panggilan `ListNamespaces` API menggunakan format `GET/v1/{prefix}/namespaces` URL. Untuk Tabel S3, jalur `{prefix}` REST selalu berupa bucket tabel yang dikodekan url ARN Anda. 

Misalnya, untuk tabel bucket ARN `arn:aws:s3tables:{{us-east-1}}:111122223333:bucket/{{bucketname}}` berikut: awalan adalah: `arn%3Aaws%3As3tables%3A{{us-east-1}}%3A{{111122223333}}%3Abucket%2F{{bucketname}}` 

### Parameter jalur namespace
<a name="endpoint-parameter-namespace"></a>

 Ruang nama dalam jalur API Iceberg REST katalog dapat memiliki beberapa level. Namun, Tabel S3 hanya mendukung ruang nama tingkat tunggal. Untuk mengakses namespace dalam hierarki katalog multi-level, Anda dapat terhubung ke katalog multi-level di atas namespace saat mereferensikan namespace. Ini memungkinkan mesin kueri apa pun yang mendukung notasi 3 bagian `catalog.namespace.table` untuk mengakses objek dalam hierarki katalog Tabel S3 tanpa masalah kompatibilitas dibandingkan dengan menggunakan namespace multi-level. 

## Didukung Iceberg REST Operasi API
<a name="endpoint-supported-api"></a>

Tabel berikut berisi API REST Iceberg yang didukung dan bagaimana mereka sesuai dengan tindakan Tabel S3. 


| Operasi REST gunung es | Jalur REST | Tindakan IAM Tabel S3 | CloudTrail EventName | 
| --- | --- | --- | --- | 
| `getConfig` | `GET /v1/config` | `s3tables:GetTableBucket` | `s3tables:GetTableBucket` | 
| `listNamespaces` | `GET /v1/{prefix}/namespaces` | `s3tables:ListNamespaces` | `s3tables:ListNamespaces` | 
| `createNamespace` | `POST /v1/{prefix}/namespaces` | `s3tables:CreateNamespace` | `s3tables:CreateNamespace` | 
| `loadNamespaceMetadata` | `GET /v1/{prefix}/namespaces/{namespace}` | `s3tables:GetNamespace` | `s3tables:GetNamespace` | 
| `dropNamespace` | `DELETE /v1/{prefix}/namespaces/{namespace}` | `s3tables:DeleteNamespace` | `s3tables:DeleteNamespace` | 
| `listTables` | `GET /v1/{prefix}/namespaces/{namespace}/tables` | `s3tables:ListTables` | `s3tables:ListTables` | 
| `createTable` | `POST /v1/{prefix}/namespaces/{namespace}/tables` | `s3tables:CreateTable`, `s3tables:PutTableData` | `s3tables:CreateTable`, `s3tables:PutObject` | 
| `loadTable` | `GET /v1/{prefix}/namespaces/{namespace}/tables/{table}` | `s3tables:GetTableMetadataLocation`, `s3tables:GetTableData` | `s3tables:GetTableMetadataLocation`, `s3tables:GetObject` | 
| `updateTable` | `POST /v1/{prefix}/namespaces/{namespace}/tables/{table}` | `s3tables:UpdateTableMetadataLocation`, `s3tables:PutTableData`, `s3tables:GetTableData` | `s3tables:UpdateTableMetadataLocation`, `s3tables:PutObject`, `s3tables:GetObject` | 
| `dropTable` | `DELETE /v1/{prefix}/namespaces/{namespace}/tables/{table}` | `s3tables:DeleteTable` | `s3tables:DeleteTable` | 
| `renameTable` | `POST /v1/{prefix}/tables/rename` | `s3tables:RenameTable` | `s3tables:RenameTable` | 
| `tableExists` | `HEAD /v1/{prefix}/namespaces/{namespace}/tables/{table}` | `s3tables:GetTable` | `s3tables:GetTable` | 
| `namespaceExists` | `HEAD /v1/{prefix}/namespaces/{namespace}` | `s3tables:GetNamespace` | `s3tables:GetNamespace` | 

## Pertimbangan dan batasan
<a name="endpoint-considerations"></a>

Berikut ini adalah pertimbangan dan batasan saat menggunakan Iceberg REST titik akhir Tabel Amazon S3.

****Pertimbangan-pertimbangan****
+ **CreateTable Perilaku API ** — `stage-create` Opsi tidak didukung untuk operasi ini, dan mengakibatkan `400 Bad Request` kesalahan. Ini berarti Anda tidak dapat membuat tabel dari hasil kueri menggunakan `CREATE TABLE AS SELECT` (CTAS).
+ **DeleteTable Perilaku API ** — Anda hanya dapat melepas tabel dengan purge diaktifkan. Menjatuhkan tabel dengan `purge=false` tidak didukung dan menghasilkan `400 Bad Request` kesalahan. Beberapa versi Spark selalu mengatur flag ini ke false bahkan saat menjalankan `DROP TABLE PURGE` perintah. Anda dapat mencoba dengan `DROP TABLE PURGE` atau menggunakan [ DeleteTable ](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTable.html) operasi Tabel S3 untuk menghapus tabel.
+  Titik akhir hanya mendukung operasi metadata tabel standar. Untuk pemeliharaan tabel, seperti manajemen snapshot dan pemadatan, gunakan operasi API pemeliharaan Tabel S3. Untuk informasi selengkapnya, lihat [Pemeliharaan Tabel S3](s3-tables-maintenance-overview.md). 

****Batasan****
+ Ruang nama bertingkat tidak didukung.
+ OAuth-based otentikasi tidak didukung.
+ Hanya `owner` properti yang didukung untuk ruang nama.
+ View-related API yang ditentukan dalam spesifikasi [Apache Iceberg REST Open API tidak ](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) didukung.
+ Menjalankan operasi pada tabel dengan `metadata.json` file lebih dari 50MB tidak didukung, dan akan mengembalikan `400 Bad Request` kesalahan. Untuk mengontrol ukuran `metadata.json` file Anda, gunakan operasi pemeliharaan tabel. Untuk informasi selengkapnya, lihat [Pemeliharaan Tabel S3](s3-tables-maintenance-overview.md).