

# 데이터 카탈로그 액세스
<a name="access_catalog"></a>

 AWS Glue Data Catalog(Data Catalog)를 사용하면 데이터를 검색하고 파악할 수 있습니다. 데이터 카탈로그는 스키마 정의, 데이터 유형, 위치 및 기타 메타데이터를 일관되게 유지 관리할 수 있는 방법을 제공합니다. 다음 방법을 사용하여 데이터 카탈로그에 액세스할 수 있습니다.
+ AWS Glue 콘솔 - 웹 기반 사용자 인터페이스인 AWS Glue 콘솔을 통해 데이터 카탈로그에 액세스하고 관리할 수 있습니다. 콘솔을 사용하면 데이터베이스, 테이블 및 관련 메타데이터를 찾고 검색할 수 있을 뿐만 아니라 메타데이터 정의를 생성, 업데이트 및 삭제할 수 있습니다.
+ AWS Glue 크롤러 - 크롤러는 데이터 소스를 자동으로 스캔하고 데이터 카탈로그를 메타데이터로 채우는 프로그램입니다. 크롤러를 생성하고 실행하여 Amazon S3, Amazon RDS, Amazon DynamoDB, Amazon CloudWatch와 MySQL, PostgreSQL 등 같은 JDBC 호환 관계형 데이터베이스뿐만 아니라 Snowflake, Google BigQuery 등과 같은 여러 비 AWS 소스에서 데이터를 검색하고 카탈로그화할 수 있습니다.
+ AWS Glue API - AWS Glue API를 사용하여 프로그래밍 방식으로 데이터 카탈로그에 액세스할 수 있습니다. 이러한 API를 사용하면 다른 애플리케이션과 서비스에서 프로그래밍 방식으로 데이터 카탈로그와 상호 작용하여 자동화 및 통합을 수행할 수 있습니다.
+ AWS Command Line Interface(AWS CLI) - 명령줄에서 AWS CLI를 사용하여 데이터 카탈로그에 액세스하고 관리할 수 있습니다. CLI는 메타데이터 정의를 생성, 업데이트 및 삭제하는 명령과 메타데이터 정보를 쿼리하고 검색하는 명령을 제공합니다.
+ 다른 AWS 서비스와의 통합 - 데이터 카탈로그는 다른 많은 AWS 서비스와 통합되므로 이를 통해 카탈로그에 저장된 메타데이터에 액세스하고 활용할 수 있습니다. 예를 들어 Amazon Athena를 사용하면 데이터 카탈로그의 메타데이터를 사용하여 데이터 소스를 쿼리할 수 있으며, AWS Lake Formation을 사용하면 데이터 카탈로그 리소스에 대한 데이터 액세스 및 거버넌스를 관리할 수 있습니다.

**Topics**
+ [AWS Glue Iceberg REST 엔드포인트를 사용하여 Data Catalog에 연결](connect-glu-iceberg-rest.md)
+ [AWS Glue Iceberg REST 확장 엔드포인트를 사용하여 Data Catalog에 연결](connect-glue-iceberg-rest-ext.md)
+ [Apache Iceberg용 AWS Glue REST API 사양](iceberg-rest-apis.md)
+ [독립 실행형 Spark 애플리케이션에서 Data Catalog에 연결](connect-gludc-spark.md)
+ [Amazon Redshift와 Apache Iceberg 간의 데이터 매핑](data-mapping-rs-iceberg.md)
+ [AWS Glue Iceberg REST 카탈로그 API 사용 시 고려 사항 및 제한 사항](limitation-glue-iceberg-rest-api.md)

# AWS Glue Iceberg REST 엔드포인트를 사용하여 Data Catalog에 연결
<a name="connect-glu-iceberg-rest"></a>

 AWS Glue의 Iceberg REST 엔드포인트는 Apache Iceberg REST 사양에 명시된 API 작업을 지원합니다. Iceberg REST 클라이언트를 사용하여 분석 엔진에서 실행되는 애플리케이션을 Data Catalog에 호스팅되는 REST 카탈로그에 연결할 수 있습니다.

 엔드포인트는 v2로 기본 설정된 v1 및 v2의 Apache Iceberg 테이블 사양을 모두 지원합니다. Iceberg 테이블 v1 사양을 사용하는 경우 API 직접 호출에서 v1을 지정해야 합니다. API 작업을 사용하여 Amazon S3 객체 스토리지와 Amazon S3 Table 스토리지 모두에 저장된 Iceberg 테이블에 액세스할 수 있습니다.

**엔드포인트 구성**

서비스 엔드포인트를 사용하여 AWS Glue Iceberg REST 카탈로그에 액세스할 수 있습니다. 리전별 엔드포인트는 [AWS Glue 서비스 엔드포인트 참조 가이드](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region)를 참조하세요. 예를 들어 us-east-1 리전에서 AWS Glue에 연결할 때 다음과 같이 엔드포인트 URI 속성을 구성해야 합니다.

```
Endpoint : https://glue.us-east-1.amazonaws.com/iceberg
```

**추가 구성 속성** – Iceberg 클라이언트를 사용하여 Spark와 같은 분석 엔진을 서비스 엔드포인트에 연결하는 경우 다음 애플리케이션 구성 속성을 지정해야 합니다.

```
catalog_name = "mydatacatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    ... \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \
    .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \
    .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \    
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

AWS Glue Iceberg 엔드포인트 ` https://glue.us-east-1.amazonaws.com/iceberg`는 다음과 같은 Iceberg REST API를 지원합니다.
+ GetConfig
+ ListNamespaces
+ CreateNamespace
+ LoadNamespaceMetadata
+ UpdateNamespaceProperties
+ DeleteNamespace
+ ListTables
+ CreateTable
+ LoadTable
+ TableExists
+ UpdateTable
+ DeleteTable

## 접두사 및 카탈로그 경로 파라미터
<a name="prefix-catalog-path-parameters"></a>

Iceberg REST 카탈로그 API는 요청 URL에 자유 형식 접두사를 사용합니다. 예를 들어 `ListNamespaces` API 직접 호출은 `GET/v1/{prefix}/namespaces` URL 형식을 사용합니다. AWS Glue 접두사는 REST 경로가 AWS Glue 다중 카탈로그 계층 구조를 정렬하도록 항상 `/catalogs/{catalog}` 구조를 따릅니다. `{catalog}` 경로 파라미터는 다음 규칙에 따라 파생될 수 있습니다.


| **액세스 패턴** |  **Glue 카탈로그 ID 스타일**  |  **접두사 스타일**  | **기본 카탈로그 ID 예** |  **REST 경로 예**  | 
| --- | --- | --- | --- | --- | 
|  현재 계정의 기본 카탈로그에 액세스  | 불필요 | : |  해당 사항 없음  |  GET /v1/catalogs/:/namespaces  | 
|  특정 계정의 기본 카탈로그에 액세스  | accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces | 
|  현재 계정의 중첩 카탈로그에 액세스  |  catalog1/catalog2  |  catalog1/catalog2  |  rmscatalog1:db1  |  GET /v1/catalogs/rmscatalog1:db1/namespaces  | 
|  특정 계정의 중첩 카탈로그에 액세스  |  accountId:catalog1/catalog2  |  accountId:catalog1/catalog2  |  123456789012/rmscatalog1:db1  |  GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces  | 

이 카탈로그 ID/접두사 매핑은 REST API를 직접적으로 호출하는 경우에만 필요합니다. 엔진을 통해 AWS Glue Iceberg REST 카탈로그 API로 작업하는 경우 Iceberg REST AWS Glue 카탈로그 API 설정의 `warehouse` 파라미터 또는 AWS Glue 익스텐션 API 설정의 `glue.id` 파라미터에 카탈로그 ID를 지정해야 합니다. 예를 들어, [Spark와 함께 Iceberg 클러스터 사용](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html)에서 EMR Spark와 함께 사용하는 방법을 확인하세요.

## 네임스페이스 경로 파라미터
<a name="ns-path-param"></a>

Iceberg REST 카탈로그 API 경로의 네임스페이스는 여러 수준을 가질 수 있습니다. 그러나 AWS Glue는 단일 수준 네임스페이스만 지원합니다. 다중 수준 카탈로그 계층 구조의 네임스페이스에 액세스하려면 네임스페이스 위의 다중 수준 카탈로그에 연결하여 네임스페이스를 참조하면 됩니다. 이렇게 하면 다중 수준 네임스페이스를 사용하는 것에 비해 호환성 문제 없이 `catalog.namespace.table`의 3부 표기법을 지원하는 모든 쿼리 엔진이 AWS Glue의 다중 수준 카탈로그 계층 구조의 객체에 액세스할 수 있습니다.

# AWS Glue Iceberg REST 확장 엔드포인트를 사용하여 Data Catalog에 연결
<a name="connect-glue-iceberg-rest-ext"></a>

 AWS Glue Iceberg REST 확장 엔드포인트는 Apache Iceberg REST 사양에 없는 추가 API를 제공하고 서버 측 스캔 계획 기능을 제공합니다. 이러한 추가 API는 Amazon Redshift 관리형 스토리지에 저장된 테이블에 액세스할 때 사용됩니다. 엔드포인트는 애플리케이션에서 Apache Iceberg AWS Glue Data Catalog 확장 프로그램을 사용하여 액세스할 수 있습니다.

**엔드포인트 구성** - 서비스 엔드포인트를 사용하여 Redshift 관리형 스토리지에 테이블이 있는 카탈로그에 액세스할 수 있습니다. 리전별 엔드포인트는 [AWS Glue 서비스 엔드포인트 참조 가이드](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region)를 참조하세요. 예를 들어 us-east-1 리전에서 AWS Glue에 연결할 때 다음과 같이 엔드포인트 URI 속성을 구성해야 합니다.

```
Endpoint : https://glue.us-east-1.amazonaws.com/extensions
```

```
catalog_name = "myredshiftcatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "glue") \
    .config(f"spark.sql.catalog.{catalog_name}.glue.id", "{123456789012}:redshiftnamespacecatalog/redshiftdb") \
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

# Apache Iceberg용 AWS Glue REST API 사양
<a name="iceberg-rest-apis"></a>

이 섹션에는 AWS Glue Iceberg REST 카탈로그 및 AWS Glue 익스텐션 API에 대한 사양과 이러한 API를 사용할 때의 고려 사항이 포함되어 있습니다.

AWS Glue Data Catalog 엔드포인트에 대한 API 요청은 AWS Signature Version 4(SigV4)를 사용하여 인증됩니다. AWS SigV4에 대한 자세한 내용은 [API 요청용 AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) 섹션을 참조하세요.

AWS Glue 서비스 엔드포인트 및 AWS Glue 메타데이터에 액세스할 때 애플리케이션은 IAM 작업이 필요한 `glue:getCatalog` IAM 역할을 수임합니다.

Data Catalog 및 해당 객체에 대한 액세스는 IAM, Lake Formation 또는 Lake Formation 하이브리드 모드 권한을 사용하여 관리할 수 있습니다.

Data Catalog의 페더레이션 카탈로그에는 Lake Formation에 등록된 데이터 위치가 있습니다. Lake Formation은 Data Catalog와 연동하며 Data Catalog 객체에 대한 사용자 액세스를 관리할 수 있는 데이터베이스 스타일 권한을 제공합니다.

IAM, AWS Lake Formation 또는 Lake Formation 하이브리드 모드 권한을 사용하여 기본 Data Catalog 및 해당 객체에 대한 액세스를 관리할 수 있습니다.

Lake Formation 관리형 객체에서 데이터를 생성, 삽입 또는 삭제하려면 IAM 사용자 또는 역할에 대한 권한을 설정해야 합니다.
+ CREATE\$1CATALOG – 카탈로그를 생성하는 데 필요합니다.
+ CREATE\$1DATABASE – 데이터베이스를 생성하는 데 필요합니다.
+ CREATE\$1TABLE – 테이블을 생성하는 데 필요합니다.
+ DELETE - 테이블에서 데이터를 삭제하는 데 필요합니다.
+ DESCRIBE - 메타데이터를 읽는 데 필요합니다.
+ DROP - 테이블 또는 데이터베이스를 삭제하는 데 필요합니다.
+ INSERT - 위탁자가 테이블에 데이터를 삽입해야 할 때 필요합니다.
+ SELECT - 위탁자가 테이블에서 데이터를 선택해야 할 때 필요합니다.

자세한 내용은 AWS Lake Formation 개발자 가이드에서 [Lake Formation 권한 참조](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-reference.html)를 참조하세요.

# GetConfig
<a name="get-config"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | GetConfig | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  GET /iceberg/v1/config  | 
| IAM 작업 |  glue:GetCatalog  | 
| Lake Formation 권한 | 해당 사항 없음 | 
| CloudTrail 이벤트 |  glue:GetCatalog  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L67 | 

****고려 사항 및 제한 사항****
+ `warehouse` 쿼리 파라미터는 AWS Glue 카탈로그 ID로 설정해야 합니다. 설정하지 않을 경우 현재 계정의 루트 카탈로그가 응답을 반환하는 데 사용됩니다. 자세한 내용은 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션을 참조하세요.

# GetCatalog
<a name="get-catalog"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | GetCatalog | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  GET/extensions/v1/catalogs/\$1catalog\$1  | 
| IAM 작업 |  glue:GetCatalog  | 
| Lake Formation 권한 | DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetCatalog  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L40 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.

# ListNamespaces
<a name="list-ns"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | ListNamespaces | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| IAM 작업 |  glue:GetDatabase  | 
| Lake Formation 권한 | ALL, DESCRIBE, SELECT | 
| CloudTrail 이벤트 |  glue:GetDatabase  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L205 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ 그 다음 수준의 네임스페이스만 표시됩니다. 네임스페이스를 더 깊은 수준에서 나열하려면 카탈로그 경로 파라미터에 중첩 카탈로그 ID를 지정합니다.

# CreateNamespace
<a name="create-ns"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | CreateNamespace | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  POST/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| IAM 작업 |  glue:CreateDatabase  | 
| Lake Formation 권한 | ALL, DESCRIBE, SELECT | 
| CloudTrail 이벤트 |  glue:CreateDatabase  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L256 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ 단일 수준 네임스페이스만 생성할 수 있습니다. 다중 수준 네임스페이스를 생성하려면 각 수준을 반복적으로 생성하고 카탈로그 경로 파라미터를 사용하여 해당 수준에 연결해야 합니다.

# StartCreateNamespaceTransaction
<a name="start-create-ns-transaction"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | StartCreateNamespaceTransaction | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces  | 
| IAM 작업 |  glue:CreateDatabase  | 
| Lake Formation 권한 | ALL, DESCRIBE, SELECT | 
| CloudTrail 이벤트 |  glue:CreateDatabase  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L256 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ 단일 수준 네임스페이스만 생성할 수 있습니다. 다중 수준 네임스페이스를 생성하려면 각 수준을 반복적으로 생성하고 카탈로그 경로 파라미터를 사용하여 해당 수준에 연결해야 합니다.
+ 이 API는 비동기식이며 `CheckTransactionStatus` API 직접 호출을 사용하여 추적하는 데 사용할 수 있는 트랜잭션 ID를 반환합니다.
+  `GetCatalog` API 직접 호출의 응답에 `use-extensions=true` 파라미터가 포함된 경우에만 이 API를 직접적으로 호출할 수 있습니다.

## LoadNamespaceMetadata
<a name="load-ns-metadata"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | LoadNamespaceMetadata | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1  | 
| IAM 작업 |  glue:GetDatabase  | 
| Lake Formation 권한 | ALL, DESCRIBE, SELECT | 
| CloudTrail 이벤트 |  glue:GetDatabase  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L302 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.

## UpdateNamespaceProperties
<a name="w2aac20c29c16c21c13"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | UpdateNamespaceProperties | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  POST /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/properties  | 
| IAM 작업 |  glue:UpdateDatabase  | 
| Lake Formation 권한 | ALL, ALTER | 
| CloudTrail 이벤트 |  glue:UpdateDatabase  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L400 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.

# DeleteNamespace
<a name="delete-ns"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | DeleteNamespace | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| IAM 작업 |  glue:DeleteDatabase  | 
| Lake Formation 권한 | ALL, DROP | 
| CloudTrail 이벤트 |  glue:DeleteDatabase  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L365 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 데이터베이스에 객체가 존재할 경우, 해당 작업은 실패합니다.
+ 이 API는 비동기식이며 `CheckTransactionStatus` API 직접 호출을 사용하여 추적하는 데 사용할 수 있는 트랜잭션 ID를 반환합니다.
+  `GetCatalog` API 직접 호출이 응답으로 `use-extensions=true`를 나타내는 경우에만 이 API를 사용할 수 있습니다.

# StartDeleteNamespaceTransaction
<a name="start-delete-ns-transaction"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | StartDeleteNamespaceTransaction | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  DELETE /extensions/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| IAM 작업 |  glue:DeleteDatabase  | 
| Lake Formation 권한 | ALL, DROP | 
| CloudTrail 이벤트 |  glue:DeleteDatabase  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L85 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 데이터베이스에 객체가 존재할 경우, 해당 작업은 실패합니다.
+ 이 API는 비동기식이며 `CheckTransactionStatus` API 직접 호출을 사용하여 추적하는 데 사용할 수 있는 트랜잭션 ID를 반환합니다.
+  `GetCatalog` API 직접 호출이 응답으로 `use-extensions=true`를 나타내는 경우에만 이 API를 사용할 수 있습니다.

# ListTables
<a name="list-tables"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | ListTables | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| IAM 작업 |  glue:GetTables  | 
| Lake Formation 권한 | ALL, SELECT, DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetTables  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L463 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ Iceberg가 아닌 테이블을 포함한 모든 테이블이 나열됩니다. 테이블을 Iceberg 테이블로 로드할 수 있는지 여부를 확인하려면 `LoadTable` 작업을 직접적으로 호출합니다.

# CreateTable
<a name="create-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | CreateTable | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| IAM 작업 |  glue:CreateTable  | 
| Lake Formation 권한 | ALL, CREATE\$1TABLE | 
| CloudTrail 이벤트 |  glue:CreateTable  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L497 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 스테이징이 포함된 `CreateTable`은 지원되지 않습니다. `stageCreate` 쿼리 파라미터를 지정하면 작업이 실패합니다. 즉, `CREATE TABLE AS SELECT`와 같은 작업은 지원되지 않으며, 해결 방법으로 `CREATE TABLE` 및 `INSERT INTO`의 조합을 사용할 수 있습니다.
+ `CreateTable` API 작업은 `state-create = TRUE` 옵션을 지원하지 않습니다.

# StartCreateTableTransaction
<a name="start-create-table-transaction"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | CreateTable | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| IAM 작업 |  glue:CreateTable  | 
| Lake Formation 권한 | ALL, CREATE\$1TABLE | 
| CloudTrail 이벤트 |  glue:CreateTable  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L107 | 

****고려 사항 및 제한 사항****
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 스테이징이 포함된 `CreateTable`은 지원되지 않습니다. `stageCreate` 쿼리 파라미터를 지정하면 작업이 실패합니다. 즉, `CREATE TABLE AS SELECT`와 같은 작업은 지원되지 않으며, 해결 방법으로 `CREATE TABLE` 및 `INSERT INTO`의 조합을 사용해야 합니다.
+ 이 API는 비동기식이며 `CheckTransactionStatus` API 직접 호출을 사용하여 추적하는 데 사용할 수 있는 트랜잭션 ID를 반환합니다.
+  `GetCatalog` API 직접 호출이 응답으로 `use-extensions=true`를 나타내는 경우에만 이 API를 사용할 수 있습니다.

# LoadTable
<a name="load-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | LoadTable | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:GetTable  | 
| Lake Formation 권한 | ALL, SELECT, DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetTable  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L616 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 스테이징이 포함된 `CreateTable`은 지원되지 않습니다. `stageCreate` 쿼리 파라미터를 지정하면 작업이 실패합니다. 즉, `CREATE TABLE AS SELECT`와 같은 작업은 지원되지 않으며, 해결 방법으로 `CREATE TABLE` 및 `INSERT INTO`의 조합을 사용해야 합니다.
+ 이 API는 비동기식이며 `CheckTransactionStatus` API 직접 호출을 사용하여 추적하는 데 사용할 수 있는 트랜잭션 ID를 반환합니다.
+  `GetCatalog` API 직접 호출이 응답으로 `use-extensions=true`를 나타내는 경우에만 이 API를 사용할 수 있습니다.

# ExtendedLoadTable
<a name="extended-load-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | LoadTable | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  GET /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:GetTable  | 
| Lake Formation 권한 | ALL, SELECT, DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetTable  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L134 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 스냅샷 쿼리 파라미터에는 `all` 모드만 지원됩니다.
+ `LoadTable` API와 비교하여 `ExtendedLoadTable` API는 다음과 같은 측면에서 다릅니다.
  +  모든 필드를 사용할 수 있도록 엄격하게 강제하지는 않습니다.
  + 응답의 구성 필드에 다음과 같은 추가 파라미터를 제공합니다.  
**추가 파라미터**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/extended-load-table.html)

# PreplanTable
<a name="preplan-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | PreplanTable | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  POST /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/preplan  | 
| IAM 작업 |  glue:GetTable  | 
| Lake Formation 권한 | ALL, SELECT, DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetTable  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L211 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 이 API의 호출자는 항상 페이지 토큰을 기반으로 가져올 나머지 결과가 있는지 확인해야 합니다. 서버 측이 아직 처리 중이지만 지정된 응답 시간 내에 결과를 생성할 수 없는 경우 빈 페이지 항목이 있지만 페이지 매김 토큰이 있는 응답이 가능합니다.
+  `ExtendedLoadTable` API 응답에 `aws.server-side-capabilities.scan-planning=true`가 포함된 경우에만 이 API를 사용할 수 있습니다.

# PlanTable
<a name="plan-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | PlanTable | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  POST /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/plan  | 
| IAM 작업 |  glue:GetTable  | 
| Lake Formation 권한 | ALL, SELECT, DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetTable  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L243 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 이 API의 호출자는 항상 페이지 토큰을 기반으로 가져올 나머지 결과가 있는지 확인해야 합니다. 서버 측이 아직 처리 중이지만 지정된 응답 시간 내에 결과를 생성할 수 없는 경우 빈 페이지 항목이 있지만 페이지 매김 토큰이 있는 응답이 가능합니다.
+  `ExtendedLoadTable` API 응답에 `aws.server-side-capabilities.scan-planning=true`가 포함된 경우에만 이 API를 사용할 수 있습니다.

# TableExists
<a name="table-exists"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | TableExists | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  HEAD/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:GetTable  | 
| Lake Formation 권한 | ALL, SELECT, DESCRIBE | 
| CloudTrail 이벤트 |  glue:GetTable  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L833 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.

# UpdateTable
<a name="update-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | UpdateTable | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  POST /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:UpdateTable  | 
| Lake Formation 권한 | ALL, ALTER | 
| CloudTrail 이벤트 |  glue:UpdateTable  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L677 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.

# StartUpdateTableTransaction
<a name="start-update-table-transaction"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | StartUpdateTableTransaction | 
| 유형 | AWS Glue 익스텐션 API | 
| REST 경로 |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:UpdateTable  | 
| Lake Formation 권한 |  ALL, ALTER  | 
| CloudTrail 이벤트 |  glue:UpdateTable  | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L154 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ 이 API는 비동기식이며 `CheckTransactionStatus` API 직접 호출을 사용하여 추적하는 데 사용할 수 있는 트랜잭션 ID를 반환합니다.
+  이 API를 통해 `RenamTable` 작업을 수행할 수도 있습니다. 이 경우 호출자는 이름을 바꿀 테이블에 대한 glue:CreateTable 또는 LakeFormation CREATE\$1TABLE 권한도 얻어야 합니다.
+  `ExtendedLoadTable` API 응답에 `aws.server-side-capabilities.scan-planning=true`가 포함된 경우에만 이 API를 사용할 수 있습니다.

# DeleteTable
<a name="delete-table"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | DeleteTable | 
| 유형 |  Iceberg REST 카탈로그 API  | 
| REST 경로 |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:DeleteTable  | 
| Lake Formation 권한 | ALL, DROP | 
| CloudTrail 이벤트 |  glue:DeleteTable  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L793 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ `DeleteTable` API 작업은 제거 옵션을 지원합니다. 제거를 `true`로 설정하면 테이블 데이터가 삭제되고, 그렇지 않으면 데이터가 삭제되지 않습니다. Amazon S3의 테이블에서는 이 작업을 실행해도 테이블 데이터가 삭제되지 않습니다. 테이블이 Amazon S3 및 `purge = TRUE,`에 저장되어 있는 경우 이 작업이 실패합니다.

  Amazon Redshift 관리형 스토리지에 저장된 테이블의 경우 이 작업은 Amazon Redshift의 `DROP TABLE` 동작과 마찬가지로 테이블 데이터를 삭제합니다. 테이블이 Amazon Redshift 및 `purge = FALSE`에 저장되어 있는 경우 이 작업이 실패합니다.
+ `purgeRequest=true`는 지원되지 않습니다.

# StartDeleteTableTransaction
<a name="start-delete-table-transaction"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | StartDeleteTableTransaction | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  DELETE /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| IAM 작업 |  glue:DeleteTable  | 
| Lake Formation 권한 | ALL, DROP | 
| CloudTrail 이벤트 |  glue:DeleteTable  | 
| API 정의 열기 | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L793 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.
+ REST 경로 파라미터에는 단일 수준 네임스페이스만 지정할 수 있습니다. 자세한 내용은 [네임스페이스 경로 파라미터](connect-glu-iceberg-rest.md#ns-path-param) 섹션을 참조하세요.
+ `purgeRequest=false`는 지원되지 않습니다.
+  이 API는 비동기식이며 `CheckTransactionStatus`를 통해 추적할 수 있는 트랜잭션 ID를 반환합니다.

# CheckTransactionStatus
<a name="check-transaction-status"></a>


**일반 정보**  

|  |  | 
| --- |--- |
| 작업 이름 | CheckTransactionStatus | 
| 유형 |  AWS Glue 익스텐션 API  | 
| REST 경로 |  POST/extensions/v1/transactions/status  | 
| IAM 작업 |  트랜잭션을 시작하는 작업과 동일한 권한  | 
| Lake Formation 권한 | 트랜잭션을 시작하는 작업과 동일한 권한 | 
| API 정의 열기 | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L273 | 

**고려 사항**
+ 카탈로그 경로 파라미터는 [접두사 및 카탈로그 경로 파라미터](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) 섹션에 설명된 스타일을 따라야 합니다.

# 독립 실행형 Spark 애플리케이션에서 Data Catalog에 연결
<a name="connect-gludc-spark"></a>

독립 실행형 애플리케이션에서 Apache Iceberg 커넥터를 사용하여 Data Catalog에 연결할 수 있습니다.

1. Spark 애플리케이션에 대한 IAM 역할을 생성합니다.

1. AWS Glue Iceberg 커넥터를 사용하여 Iceberg Rest 엔드포인트에 연결합니다.

   ```
   # configure your application. Refer to https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html for best practices on configuring environment variables.
   export AWS_ACCESS_KEY_ID=$(aws configure get appUser.aws_access_key_id)
   export AWS_SECRET_ACCESS_KEY=$(aws configure get appUser.aws_secret_access_key)
   export AWS_SESSION_TOKEN=$(aws configure get appUser.aws_secret_token)
   
   export AWS_REGION=us-east-1
   export REGION=us-east-1
   export AWS_ACCOUNT_ID = {specify your aws account id here}
   
   ~/spark-3.5.3-bin-hadoop3/bin/spark-shell \
       --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.0 \
       --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://glue.us-east-1.amazonaws.com/iceberg" \
       --conf "spark.sql.catalog.spark_catalog.warehouse = {AWS_ACCOUNT_ID}" \
       --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-name=glue" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-region=us-east-1" \
       --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"
   ```

1. Data Catalog의 데이터를 쿼리합니다.

   ```
   spark.sql("create database myicebergdb").show()
   spark.sql("""CREATE TABLE myicebergdb.mytbl (name string) USING iceberg location 's3://bucket_name/mytbl'""")
   spark.sql("insert into myicebergdb.mytbl values('demo') ").show()
   ```

# Amazon Redshift와 Apache Iceberg 간의 데이터 매핑
<a name="data-mapping-rs-iceberg"></a>

Redshift와 Iceberg는 다양한 데이터 유형을 지원합니다. 다음 호환성 매트릭스는 이러한 두 데이터 시스템 간에 데이터를 매핑할 때 지원되는 항목과 제한 사항을 간략하게 설명합니다. 각 데이터 시스템에서 지원되는 데이터 유형에 대한 자세한 내용은 [Amazon Redshift 데이터 유형](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)과 [Apache Iceberg 테이블 사양](https://iceberg.apache.org/spec/#primitive-types)을 참조하세요.


| Redshift 데이터 유형 | 에일리어스 | Iceberg 데이터 유형 | 
| --- | --- | --- | 
| SMALLINT | INT2 | int | 
| INTEGER | INT, INT4 | int | 
| BIGINT | INT8 | long | 
| DECIMAL | NUMERIC | decimal | 
| REAL | FLOAT4 | float | 
| REAL | FLOAT4 | float | 
| DOUBLE PRECISION | FLOAT8, FLOAT | double | 
| CHAR | CHARACTER, NCHAR | 문자열 | 
| VARCHAR | CHARACTER VARYING, NVARCHAR | 문자열 | 
| BPCHAR |  | 문자열 | 
| TEXT |  | 문자열 | 
| 날짜 |  | date | 
| TIME | TIME WITHOUT TIMEZONE | 시간 | 
| TIME | TIME WITH TIMEZONE | 지원되지 않음 | 
| TIMESTAMP | TIMESTAMP WITHOUT TIMEZONE | TIMESTAMP | 
| TIMESTAMPZ | TIMESTAMP WITH TIMEZONE | TIMESTAMPZ | 
| INTERVAL YEAR TO MONTH |  | 지원되지 않음 | 
| INTERVAL DAY TO SECOND |  | 지원되지 않음 | 
| BOOLEAN | BOOL | bool | 
| HLLSKETCH |  | 지원되지 않음 | 
| SUPER |  | 지원되지 않음 | 
| VARBYTE | VARBINARY, BINARY VARYING | 이진수 | 
| GEOMETRY |  | 지원되지 않음 | 
| GEOGRAPHY |  | 지원되지 않음 | 

# AWS Glue Iceberg REST 카탈로그 API 사용 시 고려 사항 및 제한 사항
<a name="limitation-glue-iceberg-rest-api"></a>

다음은 Apache Iceberg REST 카탈로그 데이터 정의 언어(DDL) 작업 동작을 사용할 때 고려해야 할 사항과 제한 사항입니다.

**고려 사항**
+  **`RenameTable` API 동작** - `RenameTable` 작업은 Amazon Redshift의 테이블에서는 지원되지만 Amazon S3에서는 지원되지 않습니다.
+  **Amazon Redshift의 네임스페이스 및 테이블에 대한 DDL 작업** - Amazon Redshift의 네임스페이스 및 테이블에 대한 생성, 업데이트, 삭제 작업은 Amazon Redshift 관리형 작업 그룹을 언제 사용할 수 있는지 여부, 그리고 서로 충돌하는 DDL 및 DML 트랜잭션이 진행 중이고 작업이 잠금을 기다린 다음 변경 사항을 커밋해야 하는지 여부에 따라 달라지기 때문에 비동기 작업입니다.

**제한 사항**
+  Apache Iceberg REST 사양의 보기 API는 AWS Glue Iceberg REST 카탈로그에서 지원되지 않습니다.