

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon Redshift에 대한 Apache Iceberg 호환성
<a name="iceberg-integration_overview"></a>

전체 Amazon Redshift 프로비저닝된 클러스터 또는 서버리스 네임스페이스를 AWS Glue Data Catalog에 등록하여 AWS 계정 간에 라이브 데이터를 안전하게 공유하는 카탈로그를 만들 수 있습니다. Apache Iceberg REST API를 지원하는 SQL 쿼리 엔진에서 이러한 카탈로그에 액세스할 수 있습니다. AWS Lake Formation은 카탈로그에 대한 권한을 관리하므로 사용자는 구체화된 뷰 및 제로 ETL 통합과 같은 Amazon Redshift 기능을 활용하면서 단일 권한 집합으로 단일 데이터 복사본을 관리할 수 있습니다.

AWS Glue Data Catalog의 등록된 Amazon Redshift 프로비저닝된 클러스터 및 서버리스 네임스페이스에서 만들어진 모든 카탈로그는 동일한 계정에서 동일한 AWS 리전의 모든 프로비저닝된 클러스터 및 서버리스 작업 그룹에 외부 데이터베이스로 자동으로 탑재됩니다. Redshift Managed Storage(RMS)에 데이터를 저장하기 위해 AWS Glue Data Catalog에서 만들어진 카탈로그는 유사하게 외부 데이터베이스로 탑재됩니다. 탑재된 후에는 이러한 데이터베이스에 직접 연결하고 세 부분으로 구성된 표기법(`database@namespace-catalog.schema.table`)을 사용하여 객체를 쿼리할 수 있습니다.

## Apache Iceberg 호환성을 사용할 수 있는 리전
<a name="iceberg-integration-regions"></a>

Amazon Redshift와 Apache Iceberg의 호환성은 다음 AWS 리전에서 사용 가능합니다.
+  미국 동부(버지니아 북부) 
+  미국 동부(오하이오) 
+  미국 서부(캘리포니아 북부) 
+  아시아 태평양(홍콩) 
+  아시아 태평양(서울) 
+  아시아 태평양(싱가포르) 
+  아시아 태평양(시드니) 
+  아시아 태평양(도쿄) 
+  캐나다(중부) 
+  유럽(프랑크푸르트) 
+  유럽(아일랜드) 
+  유럽(런던) 
+  Europe (Stockholm) 
+  남아메리카(상파울루) 

## AWS Glue Data Catalog에서 Amazon Redshift 카탈로그를 사용할 때의 고려 사항 및 제한 사항
<a name="iceberg-integration-considerations"></a>

AWS Glue Data Catalog에서 Amazon Redshift 카탈로그를 사용할 때 다음 사항을 고려하세요.
+  AWS Glue Data Catalog에 등록된 데이터 웨어하우스는 테이블에 액세스하기 위해 세 부분으로 구성된 구문(`database@namespace-catalog.schema.table`)을 따릅니다. 예를 들어, d라는 테이블이 있는 c라는 스키마가 포함된 b라는 데이터베이스로 채워진 a라는 Amazon Redshift 네임스페이스를 등록한 경우 다음 문을 사용하여 d에서 선택합니다.

  ```
  SELECT * FROM b@a.c.d;
  ```

  구문에서 `database@namespace-catalog` 부분 전체 길이는 127자 이하여야 합니다.
+  클러스터 또는 네임스페이스를 AWS Glue Data Catalog에 등록하면 Amazon Redshift는 해당 클러스터 또는 네임스페이스의 모든 데이터베이스와 관계를 등록합니다.
+  여러 Redshift 클러스터와 네임스페이스를 AWS Glue Data Catalog에 등록할 수 있습니다.
+  클러스터 또는 네임스페이스를 등록하면 해당 클러스터 또는 네임스페이스에 있는 내부 스키마 및 관계만 등록됩니다. 다음은 등록되지 않습니다.
  +  외부 스키마 
  +  외부 테이블. 외부 테이블에서 만들어진 지연 바인딩 뷰가 등록된다는 것을 참고하세요.
  +  사용자가 만든 함수 
  +  프로시저 
  +  행 수준 보안 또는 동적 데이터 마스킹 정책이 연결된 테이블 
  +  이름이 대문자이거나 대소문자가 혼합된 데이터베이스 객체. 대문자이거나 대소문자가 혼합된 테이블은 등록되지 않습니다. 이는 [enable\$1case\$1sensitive\$1identifier](r_enable_case_sensitive_identifier.md)가 비활성화된 경우에도 적용됩니다.
+  역할 기반 액세스 제어에서 부여한 역할과 같은 Amazon Redshift 데이터베이스 권한은 AWS Glue Data Catalog의 카탈로그로 전송되지 않습니다. AWS Lake Formation을 사용하여 AWS Glue Data Catalog에 대한 권한을 구성합니다. 권한 구성을 위한 Lake Formation 사용에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [Amazon Redshift 데이터 공유에 대한 권한 설정](https://docs.aws.amazon.com/lake-formation/latest/dg/setup-ds-perms.html)을 참조하세요.
+  등록된 클러스터 또는 서버리스 네임스페이스에서 카탈로그를 생성할 때 AWS Glue Data Catalog는 Amazon Redshift 컴퓨팅 리소스를 사용하여 해당 카탈로그를 쿼리할 때 컴퓨팅 요구 사항을 처리하는 Amazon Redshift 관리형 작업 그룹을 만듭니다. Amazon Redshift Serverless 콘솔에서 관리형 작업 그룹을 보고 AWS Glue에서 관리할 수 있습니다.
+  일시 중지된 클러스터를 등록하면 클러스터가 재개될 때까지 AWS Glue Data Catalog가 해당 클러스터를 카탈로그로 탑재하지 않습니다.
+  적극적으로 사용되지 않는 서버리스 네임스페이스를 등록하면 네임스페이스가 다시 사용될 때까지는 AWS Glue Data Catalog가 해당 네임스페이스를 카탈로그로 탑재하지 않습니다.
+  AWS Glue Data Catalog에 등록된 데이터 웨어하우스의 테이블에 액세스하려면 데이터베이스의 격리 수준이 SNAPSHOT이어야 합니다. 격리 수준이 SERIALIZABLE인 테이블에 액세스하려고 하면 오류가 발생합니다. 직렬화 가능 격리에 대한 자세한 내용은 [Amazon Redshift의 격리 수준](c_serial_isolation.md) 섹션을 참조하세요. 데이터베이스의 격리 수준 변경에 대한 자세한 내용은 [ALTER DATABASE](r_ALTER_DATABASE.md) 섹션을 참조하세요.

   기본 `dev` 데이터베이스의 격리 수준은 변경할 수 없습니다. 따라서 데이터 웨어하우스를 AWS Glue Data Catalog에 등록할 때 `dev` 데이터베이스의 테이블이 액세스 가능한 데이터에 포함되지 않습니다.

# Data Catalog에 등록된 클러스터 및 네임스페이스에 액세스하기 위한 IAM 정책 요구 사항
<a name="iceberg-integration-iam"></a>

이 주제에서는 프로비저닝된 클러스터 및 서버리스 네임스페이스를 Data Catalog에 등록하고 Amazon Redshift를 사용하여 액세스하는 데 필요한 IAM 권한을 설명합니다.

프로비저닝된 클러스터 또는 서버리스 네임스페이스를 AWS Glue Data Catalog에 등록한 후에는 이후에 만들어진 카탈로그의 생성 및 변경 사항을 검색하려면 다음 권한이 필요합니다.
+ `glue:GetCatalog`
+ `glue:GetCatalogs`
+ `lakeformation:GetDataAccess`

이러한 권한은 서비스 연결 역할 `AmazonRedshiftServiceLinkedRolePolicy`에 포함됩니다. 이 역할에 대한 자세한 내용은 *Amazon Redshift 관리 안내서*의 [Amazon Redshift에 대한 서비스 연결 역할 사용](https://docs.aws.amazon.com/redshift/latest/mgmt/using-service-linked-roles.html)을 참조하세요.

# Amazon Redshift 클러스터 및 네임스페이스를 AWS Glue Data Catalog에 등록
<a name="iceberg-integration-register"></a>

Amazon Redshift 프로비저닝된 클러스터와 서버리스 네임스페이스를 AWS Glue Data Catalog에 추가하여 Apache Iceberg REST API를 사용하여 액세스할 수 있습니다. 이렇게 하려면 Amazon Redshift 콘솔 또는 AWS CLI를 사용하여 Amazon Redshift 데이터 웨어하우스를 AWS Glue Data Catalog에 등록한 다음 AWS Lake Formation을 사용하여 웨어하우스에 대한 Amazon Redshift 페더레이션 카탈로그를 만듭니다.

Data Catalog에 등록된 Amazon Redshift 데이터 웨어하우스는 생산자 데이터 공유 역할을 합니다. 카탈로그에서 클러스터 또는 서버리스 네임스페이스를 변경하면 Redshift의 클러스터 또는 네임스페이스에 반영되고 그 반대의 경우도 마찬가지입니다.

------
#### [ Registering using the Amazon Redshift console ]

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1.  등록할 서버리스 네임스페이스 또는 프로비저닝된 클러스터로 이동하여 선택합니다.

1.  네임스페이스 또는 클러스터의 세부 정보 페이지의 **작업** 드롭다운 메뉴에서 **AWS Glue Data Catalog에 등록**을 선택합니다.

1.  네임스페이스 또는 클러스터를 등록할 대상 계정 ID를 입력하고 **등록**을 선택합니다.

1.  계정에서 AWS Glue의 동일한 계정으로 등록하는 경우 프로세스를 바로 완료하도록 AWS Lake Formation 콘솔로 이동합니다. 다른 계정에 등록하는 경우 Lake Formation으로 연결되는 링크가 나타납니다.

------
#### [ Registering using the AWS CLI ]

AWS CLI를 사용하여 클러스터 또는 네임스페이스를 AWS Glue Data Catalog에 등록하려면 다음 옵션과 함께 `register-namespace` 명령을 사용합니다.
+ `namespace-identifier`: 등록하려는 클러스터 또는 네임스페이스의 고유 식별자가 있는 객체입니다. 이 객체는 프로비저닝된 클러스터를 등록하는지 서버리스 네임스페이스를 등록하는지에 따라 다릅니다. 다음을 고려하세요.
  +  프로비저닝된 클러스터의 경우 등록하려는 클러스터의 고유 식별자가 있는 `ClusterIdentifier` 객체가 포함된 `ProvisionedIdentifier` 객체를 제공합니다.
  +  서버리스 네임스페이스의 경우 등록하려는 네임스페이스의 고유 식별자가 있는 `NamespaceIdentifier` 객체와 해당 네임스페이스와 연결된 작업 그룹의 고유 식별자가 있는 `WorkgroupIdentifier` 객체가 포함된 `ServerlessIdentifier` 객체를 제공합니다.
+ `consumer-identifiers`: 클러스터 또는 네임스페이스를 등록하려는 계정의 고유 식별자가 포함된 단일 요소가 있는 배열입니다.

 다음 예시에서는 `mySampleNamespace` 서버리스 네임스페이스를 계정 ID `012345678910`에 등록합니다.

```
aws redshift register-namespace /
--namespace-identifier {ServerlessIdentifier: {NamespaceIdentifer: mySampleNamespace, WorkgroupIdentifier: mySampleWorkgroup}} /
--consumer-identifiers [012345678910]
```

------

# AWS Glue Data Catalog에서 Amazon Redshift 클러스터 및 네임스페이스 등록 취소
<a name="iceberg-integration-deregister"></a>

Amazon Redshift 콘솔 또는 AWS CLI를 사용하여 AWS Glue Data Catalog에서 프로비저닝된 클러스터 또는 서버리스 네임스페이스의 등록을 취소할 수 있습니다. AWS Glue Data Catalog에서 등록 취소한 데이터 웨어하우스는 AWS Glue Data Catalog에서만 제거됩니다. Amazon Redshift 계정에는 웨어하우스가 남아 있습니다. 또한 카탈로그는 AWS Glue에 남아 있으므로 수동으로 제거해야 합니다. AWS Glue에서 카탈로그를 제거하면 카탈로그와 연결된 관리형 작업 그룹도 제거됩니다.

------
#### [ Deregistering using the Amazon Redshift console ]

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 등록 취소하려는 서버리스 네임스페이스 또는 프로비저닝된 클러스터로 이동하여 선택합니다.

1.  네임스페이스 또는 클러스터의 세부 정보 페이지의 **작업** 드롭다운 메뉴에서 **AWS Glue Data Catalog에서 등록 취소**를 선택합니다. 이 옵션은 AWS Glue Data Catalog에 이미 등록된 데이터 웨어하우스를 선택한 경우에만 나타납니다.

1.  클러스터 또는 네임스페이스가 있는 카탈로그를 소유한 계정 ID를 입력하고 **등록 취소**를 선택합니다.

------
#### [ Deregistering using the AWS CLI ]

AWS CLI를 사용하여 AWS Glue Data Catalog에서 클러스터 또는 네임스페이스의 등록을 취소하려면 다음 옵션과 함께 `deregister-namespace` 명령을 사용합니다.
+ `namespace-identifier`: 등록 취소하려는 클러스터 또는 네임스페이스의 고유 식별자가 있는 객체입니다. 이 객체는 프로비저닝된 클러스터를 등록 취소하는지 서버리스 네임스페이스를 등록 취소하는지에 따라 다릅니다. 다음을 고려하세요.
  +  프로비저닝된 클러스터의 경우 등록 취소하려는 클러스터의 고유 식별자가 있는 `ClusterIdentifier` 객체가 포함된 `ProvisionedIdentifier` 객체를 제공합니다.
  +  서버리스 네임스페이스의 경우 등록 취소하려는 네임스페이스의 고유 식별자가 있는 `NamespaceIdentifier` 객체와 해당 네임스페이스와 연결된 작업 그룹의 고유 식별자가 있는 `WorkgroupIdentifier` 객체가 포함된 `ServerlessIdentifier` 객체를 제공합니다.
+ `consumer-identifiers`: 클러스터 또는 네임스페이스를 등록 취소하려는 계정의 고유 식별자가 포함된 단일 요소가 있는 배열입니다.

 다음 예시에서는 `mySampleNamespace` 서버리스 네임스페이스를 계정 ID `012345678910`에서 등록 취소합니다.

```
aws redshift deregister-namespace /
--namespace-identifier {ServerlessIdentifier: {NamespaceIdentifer: mySampleNamespace, WorkgroupIdentifier: mySampleWorkgroup}} /
--consumer-identifiers [012345678910]
```

------

# 관리형 작업 그룹
<a name="iceberg-integration-managed-workgroups"></a>

 프로비저닝된 클러스터 또는 서버리스 네임스페이스를 AWS Glue Data Catalog에 등록하고 여기에서 카탈로그를 만들면 AWS Glue는 해당 카탈로그에 액세스하는 SQL 쿼리 엔진에 대한 컴퓨팅 리소스를 제공하는 관리형 작업 그룹을 만듭니다. 예를 들어 카탈로그에서 테이블을 쿼리하는 Amazon Athena 사용자는 관리형 작업 그룹의 Amazon Redshift 컴퓨팅 리소스로 컴퓨팅 요구 사항을 충족합니다. 관리형 작업 그룹은 Amazon Redshift 컴퓨팅 리소스를 사용하지만 AWS Glue에서 관리됩니다.

관리형 작업 그룹은 기본적으로 25인 Amazon Redshift Serverless 작업 그룹 할당량에 포함됩니다. 자세한 내용은 *Amazon Redshift 관리 가이드*의 [Amazon Redshift의 할당량 및 제한](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) 섹션을 참조하세요.

 Amazon Redshift Serverless 콘솔에서 관리형 작업 그룹에 대한 일반 정보, 성능 지표 및 쿼리 정보를 볼 수 있습니다. 자세한 내용은 *Amazon Redshift 관리 안내서*의 [작업 그룹 속성 보기](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-console-workgroups.html)를 참조하세요.

# AWS Glue Data Catalog에 등록된 카탈로그 쿼리
<a name="iceberg-integration-querying"></a>

Amazon Redshift 데이터 웨어하우스를 AWS Glue Data Catalog에 등록하고 AWS Lake Formation에서 결과 카탈로그에 대한 권한을 설정하면 동일한 계정 및 AWS 리전의 소스 데이터 웨어하우스에 액세스할 수 있는 모든 Amazon Redshift 인스턴스에 카탈로그가 자동으로 탑재됩니다. 그런 다음 로컬 클러스터 또는 작업 그룹과 마찬가지로 해당 카탈로그를 쿼리할 수 있습니다. Apache Iceberg REST Open API를 지원하는 SQL 엔진을 사용하여 AWS Glue Data Catalog에 등록된 카탈로그를 쿼리할 수도 있습니다. Apache Iceberg REST API를 사용하여 AWS Glue Data Catalog에서 카탈로그를 쿼리하는 방법에 대한 자세한 내용은 *AWS Glue 개발자 안내서*의 [데이터 카탈로그 액세스](https://docs.aws.amazon.com/glue/latest/dg/access_catalog.html)를 참조하세요. Apache Iceberg REST API에 대한 자세한 내용은 [Apache Iceberg REST Open API specification](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml)을 참조하세요.

카탈로그를 쿼리하려면 먼저 AWS Lake Formation을 사용하여 카탈로그에 대한 권한을 설정해야 합니다. AWS Lake Formation에서 카탈로그에 대한 권한 설정에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [Amazon Redshift 데이터 공유에 대한 권한 설정](https://docs.aws.amazon.com/lake-formation/latest/dg/setup-ds-perms.html)을 참조하세요. `AmazonRedshiftServiceLinkedRolePolicy` 관리형 정책이 연결된 IAM 역할도 필요합니다. 서비스 연결 역할에 대한 자세한 내용은 *Amazon Redshift 관리 안내서*의 [Amazon Redshift에 대한 서비스 연결 역할 사용](https://docs.aws.amazon.com/redshift/latest/mgmt/using-service-linked-roles.html)을 참조하세요.

 카탈로그에 대한 쿼리는 테이블에 액세스하려면 다음 세 부분으로 구성된 구문을 따라야 합니다.

```
database@namespace.schema.table
```

Amazon Redshift 데이터 웨어하우스 쿼리에 대한 일반적인 정보는 *Amazon Redshift 관리 안내서*의 [데이터베이스 쿼리](https://docs.aws.amazon.com//redshift/latest/mgmt/query-databases.html)를 참조하세요.

------
#### [ Querying using the query editor v2 ]

관리형 작업 그룹에 액세스하기 위해 계정에 대한 권한을 설정하면 해당 관리형 작업 그룹이 서버리스 데이터베이스의 외부 데이터베이스 섹션 아래 트리 뷰 패널에 나타납니다. 내부 Amazon Redshift 프로비저닝된 클러스터 또는 서버리스 작업 그룹을 쿼리하는 것과 동일한 방식으로 세 부분으로 구성된 구문 형식(`database@namespace/cluster.schema.table`)을 사용하여 관리형 작업 그룹을 쿼리할 수 있습니다. 다음 샘플 문을 참고하세요.

```
SELECT price FROM sales_db@mynamespace.sales_schema.inventory_table
```

------
#### [ Querying using the Data API ]

카탈로그의 Amazon 리소스 이름(ARN)을 관련 `database` 속성에 전달하여 내부 Amazon Redshift 프로비저닝된 클러스터 또는 서버리스 작업 그룹을 쿼리하는 것과 동일한 방식으로 Amazon Redshift Data API를 사용하여 관리형 작업 그룹을 쿼리할 수 있습니다. 카탈로그에 테이블을 만드는 다음 예시를 참고하세요.

```
aws redshift-data execute-statement —sql 'CREATE TABLE IF NOT EXISTS "dev@test-rms-catalog".public.t1 (c1 INT, c2 VARCHAR(10));' —database arn:aws:glue:us-east-1:550022730026:catalog/test-rms-catalog
```

------