

 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/)을 참조하세요.

# datashare 생성
<a name="datashare-creation"></a>

Amazon Redshift가 있으면 데이터 공유를 사용하여 Amazon Redshift 클러스터 또는 AWS 계정 전반에서 실시간 데이터를 공유할 수 있습니다. 데이터 공유는 Amazon Redshift 클러스터의 실시간 데이터를 다른 클러스터 또는 AWS 계정과 공유할 수 있는 소비자-생산자 객체입니다. 데이터 공유를 만들어 액세스에 대한 제어를 유지 관리하고 데이터를 최신 상태로 유지하면서 안전한 데이터 공유가 가능합니다. 다음 섹션에서는 데이터 공유를 만들고 스키마, 테이블 및 뷰와 같은 데이터베이스 객체를 추가하여 실시간 데이터를 안전하게 공유하는 방법에 대한 세부 정보를 제공합니다.

## 데이터 공유 만들기
<a name="create-datashare-console"></a>

데이터 공유는 데이터베이스 객체, 권한 및 소비자가 포함된 논리적 컨테이너입니다. 소비자는 사용자 계정 및 기타 AWS 계정의 Amazon Redshift 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 네임스페이스입니다. 각 데이터 공유는 해당 데이터 공유가 생성된 데이터베이스와 연결되며 해당 데이터베이스의 객체만 추가할 수 있습니다. 생산자 관리자는 아래 절차 중 하나를 수행하여 콘솔과 SQL에서 데이터 공유를 만들 수 있습니다.

------
#### [ Console ]

콘솔에서 클러스터 또는 네임스페이스 세부 정보 페이지의 **데이터 공유** 탭에서 데이터 공유를 만들 수 있습니다. 데이터 공유가 만들어진 후 소비자 관리자로서 소비자의 데이터 공유에서 데이터베이스를 만들 수 있습니다.

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

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. 데이터베이스 연결이 없는 경우 클러스터 또는 네임스페이스 세부 정보 페이지에서 **데이터 공유** 탭의 **데이터 공유** 섹션에서 데이터베이스에 연결합니다. **내 계정에서 생성된 데이터 공유** 섹션에서 **데이터 공유 생성**을 선택합니다. **데이터 공유 생성** 페이지가 나타납니다.

1. [**datashare 생성(Create datashare)**]을 선택합니다. 로컬 데이터베이스에서만 datashare를 생성할 수 있습니다. 데이터베이스에 연결하지 않은 경우 **데이터베이스에 연결** 페이지가 나타납니다. [데이터베이스로 연결](connect-database-console.md)의 절차에 따라 데이터베이스에 연결합니다. 최근 연결이 있는 경우 **데이터 공유 생성** 페이지가 나타납니다.

1. **Datashare 정보(Datashare information)** 섹션에서 다음 중 하나를 선택합니다.
   + **데이터 공유**를 선택하여 각기 다른 Amazon Redshift 데이터 웨어하우스(프로비저닝된 클러스터 또는 Serverless 엔드포인트)에서 또는 동일한 AWS 계정이나 다른 AWS 계정에서 읽기 또는 쓰기 목적으로 데이터를 공유할 데이터 공유를 만듭니다.
   + **AWS Data Exchange datashare**를 선택하여 AWS Data Exchange를 통해 데이터에 라이선스를 부여할 datashare를 생성합니다.

1. **Datashare 이름(Datashare name)**, **데이터베이스 이름(Database name)** 및 **공개적으로 액세스 가능(Publicly accessible)** 값을 지정합니다. 데이터베이스 이름을 변경할 때 새 데이터베이스 연결을 만듭니다.

1. **범위가 지정된 권한** 또는 **직접 권한** 섹션을 사용하여 데이터 공유에 객체를 추가합니다. 데이터 공유에 객체를 추가하려면 [Amazon Redshift에서 데이터 공유 만들기](writes-creating-datashare.md) 섹션을 참조하세요.

1. **데이터 소비자** 섹션에서 Amazon Redshift에 게시하거나 Lake Formation과 데이터 공유 프로세스를 시작하는 AWS Glue Data Catalog에 게시하도록 선택할 수 있습니다. 데이터 공유를 Amazon Redshift에 게시한다는 것은 다른 네임스페이스 또는 소비자 역할을 하는 Amazon Redshift 계정과 데이터를 공유한다는 의미입니다.
**참고**  
데이터 공유가 생성되면 구성을 편집하여 다른 옵션에 게시할 수 없습니다.

1. [**datashare 생성(Create datashare)**]을 선택합니다.

------
#### [ SQL ]

다음 명령을 실행하여 데이터 공유를 생성합니다.

```
CREATE DATASHARE salesshare;
```

데이터 공유를 만들 때 각 데이터 공유는 데이터베이스와 연결됩니다. 해당 데이터베이스의 객체만 해당 datashare에서 공유할 수 있습니다. 동일하거나 다른 세부 수준의 객체를 사용하여 동일한 데이터베이스에 여러 datashare를 생성할 수 있습니다. 클러스터가 생성할 수 있는 datashare 수에는 제한이 없습니다. Amazon Redshift 콘솔을 사용하여 datashare를 생성할 수도 있습니다. 자세한 내용은 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 섹션을 참조하세요.

만드는 중에 데이터 공유에 대한 보안 제한을 제어할 수도 있습니다. 다음 예에서는 퍼블릭 IP 액세스 권한이 있는 소비자가 데이터 공유를 읽을 수 있음을 보여줍니다.

```
CREATE DATASHARE my_datashare [PUBLICACCESSIBLE = TRUE];
```

PUBLICACCESSIBLE = TRUE로 설정하면 소비자가 공개적으로 액세스할 수 있는 클러스터 및 프로비저닝된 작업 그룹에서 데이터 공유를 쿼리할 수 있습니다. 허용하지 않으려면 이 옵션을 생략하거나 명시적으로 false로 설정하세요.

데이터 공유를 만든 후 소비자 유형에 대한 속성을 수정할 수 있습니다. 예를 들어 지정된 datashare의 데이터를 소비하려는 클러스터에 공개적으로 액세스할 수 없도록 정의할 수 있습니다. datashare에 지정된 보안 제한을 충족하지 않는 소비자 클러스터의 쿼리는 쿼리 런타임에 거부됩니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

------

## 데이터 공유에 데이터 공유 객체 추가
<a name="add-datashare-object-console"></a>

다음 절차 중 하나를 수행하여 콘솔 및 SQL에서 다양한 유형의 데이터베이스 객체를 추가할 수 있습니다.

------
#### [ Console ]

**범위가 지정된 권한** 또는 **직접 권한** 섹션을 사용하여 데이터 공유에 객체를 추가할 수 있습니다. 객체를 추가할 **범위가 지정된 권한 부여** 또는 **직접 권한 부여**를 선택합니다. **추가** 버튼을 선택하여 객체를 추가합니다. 대화 상자가 나타납니다. 다음 단계를 수행합니다.

1. **범위가 지정된 권한 부여**를 선택하면 데이터베이스 또는 스키마 수준에서 범위가 지정된 권한을 부여할 수 있는 **범위가 지정된 권한 부여** 페이지가 나타납니다. 범위가 지정된 권한이 있는 데이터 공유는 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대해 지정된 권한을 갖습니다. 자세한 내용은 [범위가 지정된 권한](t_scoped-permissions.md) 항목을 참조하세요.

   1. 그런 다음 **데이터베이스 범위가 지정된 권한**을 선택하여 데이터베이스 수준에서 범위가 지정된 권한을 부여합니다. 범위가 지정된 권한을 부여하면 데이터 공유를 만드는 동안 현재 데이터베이스에 적용됩니다. 이러한 권한은 개별 객체에 부여할 수 없으며 기존 객체와 새 객체(스키마, 테이블, 뷰, UDF) 모두에 적용됩니다.

   1. 스키마, 테이블 또는 뷰 또는 사용자 정의 함수에 범위가 지정된 권한을 하나 이상 선택합니다. 이렇게 하면 데이터베이스의 모든 객체가 소비자에게 부여된 선택된 권한을 갖게 됩니다. 데이터베이스 범위가 지정된 권한 부여를 완료하려면 **부여**를 선택합니다.

   1. 그런 다음 **스키마 범위가 지정된 권한**을 선택하여 스키마 수준에서 범위가 지정된 권한을 부여합니다. 스키마 범위가 지정된 권한을 부여하면 스키마에 추가된 모든 객체가 지정된 데이터 공유 권한을 갖게 됩니다.

   1. 드롭다운에서 데이터 공유에 추가할 스키마를 선택합니다. 한 번에 하나의 스키마만 선택할 수 있습니다. 그런 다음 선택한 스키마에 부여하려는 직접 권한을 하나 이상 선택합니다.

   1. 테이블, 뷰 및 사용자 정의 함수와 같은 스키마 객체에 범위가 지정된 권한을 하나 이상 선택합니다. 스키마의 매칭되는 모든 객체에 권한이 부여됩니다. 이러한 객체는 기존 객체이거나 향후 추가될 객체일 수 있습니다. 적용되면 범위가 지정된 권한을 취소하지 않고 객체에서 권한을 제거할 수 없습니다.

   1. 스키마 범위가 지정된 권한 부여를 완료하려면 **부여**를 선택합니다.

1. **직접 권한 부여**를 선택하면 **직접 권한 부여** 페이지가 나타나 스키마, 테이블, 뷰 또는 사용자 정의 함수와 같은 각 객체 수준에서 직접 권한을 부여할 수 있습니다. 직접 권한을 부여하려면 먼저 데이터 공유에 관련 스키마를 추가해야 합니다.

   1. 그런 다음 스키마에 **직접 권한 부여**를 선택하여 특정 스키마에 직접 권한을 적용합니다. 그런 다음 테이블, 뷰 및 사용자 정의 함수와 같은 스키마 객체의 스키마 권한을 하나 이상 선택하고 데이터 공유에 추가할 스키마를 선택합니다. **부여**를 선택하여 데이터 공유에 스키마 추가를 완료합니다.

   1. 데이터 공유에 스키마를 추가한 후 스키마 객체에 대한 직접 권한 추가를 진행할 수 있습니다. **직접 권한 부여**를 다시 선택합니다. **직접 권한 부여** 페이지가 나타납니다. 그런 다음 스키마 객체에 대한 직접 권한 탭으로 이동합니다.

   1. **테이블 및 뷰에 직접 권한 부여**를 선택하여 이러한 객체에 객체 수준 직접 권한을 부여합니다. 목록에서 필요한 직접 권한 하나 이상과 필요한 객체를 선택합니다. 검색 필드를 사용하여 데이터 공유 객체를 찾습니다. 부여를 선택하여 데이터 공유에 테이블 및 뷰 추가를 완료합니다.

   1. **사용자 정의 함수에 직접 권한 부여**를 선택하여 사용자 정의 함수에 객체 수준 직접 권한을 부여합니다. 목록에서 필요한 직접 권한 하나 이상과 필요한 객체를 선택합니다. 검색 필드를 사용하여 데이터 공유 객체를 찾습니다. **부여**를 선택하여 데이터 공유에 사용자 정의 함수 추가를 완료합니다.

1. **미래 객체를 추가**할지도 선택할 수 있습니다. 스키마에 추가된 데이터 공유 객체를 포함하도록 선택하면 스키마에 추가된 객체가 데이터 공유에 자동으로 추가됩니다.

1. **추가**를 선택하여 섹션을 완료하고 객체를 추가합니다. 추가된 객체는 **데이터 공유 객체**에 나열됩니다.

1. 객체를 추가한 후 개별 객체를 선택하고 권한을 편집할 수 있습니다. 스키마를 선택하면 **범위가 지정된 권한**을 추가할지 묻는 대화 상자가 나타납니다. 이렇게 하면 스키마의 기존 객체 또는 추가된 각 객체가 객체 유형에 적합한 미리 선택된 권한 세트를 갖게 됩니다. 예를 들어 관리자는 추가된 모든 테이블에 SELECT 및 UPDATE 권한을 갖도록 설정할 수 있습니다.

1. 모든 데이터 공유 객체는 **범위가 지정된 권한** 또는 **직접 권한** 섹션에 나열됩니다.

1. **데이터 소비자** 섹션에서 네임스페이스를 추가하거나 AWS 계정을 데이터 공유의 소비자로 추가할 수 있습니다.

1. **데이터 공유 생성**을 선택하여 변경 사항을 저장합니다.

데이터 공유를 만들면 **내 네임스페이스에서 생성된 데이터 공유** 아래 목록에 해당 데이터 공유가 나타납니다. 목록에서 데이터 공유를 선택하면 해당 소비자, 객체 및 기타 속성을 볼 수 있습니다.

------
#### [ SQL ]

SQL을 사용하면 데이터 공유 소유자는 데이터 공유에 추가할 스키마에 대해 USAGE 권한을 부여해야 합니다. GRANT는 스키마에서 CREATE 및 USAGE를 포함하여 다양한 작업을 허용하는 데 사용됩니다. 스키마에는 공유 객체가 들어 있습니다.

```
CREATE SCHEMA myshared_schema1;
CREATE SCHEMA myshared_schema2;
 
GRANT USAGE ON SCHEMA myshared_schema1 TO DATASHARE my_datashare;
GRANT CREATE, USAGE ON SCHEMA myshared_schema2 TO DATASHARE my_datashare;
```

또는 관리자가 ALTER 명령을 계속 실행하여 데이터 공유에 스키마를 추가할 수도 있습니다. 이러한 방식으로 스키마를 추가할 경우 USAGE 권한만 부여됩니다.

```
ALTER DATASHARE my_datashare ADD SCHEMA myshared_schema1;
```

관리자는 스키마를 추가한 후 스키마의 객체에 대해 데이터 공유 권한을 부여할 수 있습니다. 이 권한은 읽기 및 쓰기 권한일 수 있습니다. GRANT ALL 샘플은 모든 권한을 부여하는 방법을 보여줍니다.

```
GRANT SELECT, INSERT ON TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1
TO DATASHARE my_datashare;
                     
GRANT ALL ON TABLE myshared_schema1.table4 TO DATASHARE my_datashare;
```

계속해서 ALTER DATASHARE와 같은 명령을 실행하여 테이블을 추가할 수 있습니다. 이렇게 하면 추가된 객체에 대해 SELECT 권한만 부여됩니다.

```
ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
```

데이터베이스 또는 스키마 내 특정 유형의 모든 객체에 대해 범위가 지정된 권한을 데이터 공유에 부여할 수 있습니다. 범위가 지정된 권한이 있는 데이터 공유는 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대해 지정된 권한을 갖습니다.

 [SVV\_DATABASE\_PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md)에서 데이터베이스 수준 범위 지정 권한의 범위를 볼 수 있습니다. [SVV\_SCHEMA\_PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md)에서 스키마 수준 범위 지정 권한의 범위를 볼 수 있습니다.

다음은 데이터 공유에 범위가 지정된 권한을 부여할 때 사용하는 구문입니다. 범위가 지정된 권한에 대한 자세한 내용은 [범위가 지정된 권한](t_scoped-permissions.md) 섹션을 참조하세요.

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }FOR SCHEMAS IN
DATABASE db_name 
TO DATASHARE { datashare_name}

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } }FOR TABLES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}

GRANT { EXECUTE | ALL [ PRIVILEGES ] }FOR FUNCTIONS IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}
```

------

## 데이터 공유에 데이터 소비자 추가
<a name="add-data-consumer-console"></a>

datashare기에 데이터 소비자를 하나 이상 추가할 수 있습니다. 데이터 소비자는 Amazon Redshift 클러스터 또는 AWS 계정을 고유하게 식별한 네임스페이스일 수 있습니다.

퍼블릭 액세스 권한이 있는 클러스터에서 datashare를 해제하거나 설정하도록 명시적으로 선택해야 합니다.
+ **데이터 공유에 네임스페이스 추가**를 선택합니다. 네임스페이스는 Amazon Redshift 클러스터에 대한 GUID(전역 고유 식별자)입니다.
+ datashare에 **AWS 계정 추가(Add)**를 선택합니다. 지정된 AWS 계정에 datashare에 대한 액세스 권한이 있어야 합니다.