

# AWS Glue Studio에서 Snowflake에 연결
<a name="connecting-to-data-snowflake"></a>

**참고**  
 AWS Glue for Spark를 사용하여 AWS Glue 4.0 이상 버전에서 Snowflake의 테이블에서 읽고 쓸 수 있습니다. 프로그래밍 방식으로 AWS Glue 작업을 통해 Snowflake를 구성하려면 [Redshift 연결](aws-glue-programming-etl-connect-redshift-home.md) 섹션을 참조하세요.

 AWS Glue에서는 Snowflake에 대한 기본 제공 지원을 제공합니다. AWS Glue Studio에서는 Snowflake에 연결하고, 데이터 통합 작업을 작성하며, AWS Glue Studio 서버리스 Spark 런타임에서 실행할 수 있는 시각적 인터페이스를 제공합니다.

 AWS Glue Studio에서 Snowflake용 통합 연결을 생성합니다. 자세한 내용은 [고려 사항](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations) 섹션을 참조하세요.

**Topics**
+ [Snowflake 연결 생성](creating-snowflake-connection.md)
+ [Snowflake 소스 노드 생성](creating-snowflake-source-node.md)
+ [Snowflake 대상 노드 생성](creating-snowflake-target-node.md)
+ [고급 옵션](#creating-snowflake-connection-advanced-options)

# Snowflake 연결 생성
<a name="creating-snowflake-connection"></a>

**참고**  
 통합 연결(연결 v2)은 모든 연결을 표준화하여 기본 인증 자격 증명에 `PASSWORD` 키인 `USERNAME`을 사용합니다. `sfUser`, `sfPassword`가 포함된 보안 암호로 API를 통해 v1 연결을 생성할 수 있습니다.

 AWS Glue Studio에서 **데이터 소스 - Snowflake** 노드를 추가할 때 기존 AWS Glue Snowflake 연결을 선택하거나 새 연결을 생성할 수 있습니다. Snowflake에 연결하도록 구성된 `JDBC` 유형 연결이 아니라 `SNOWFLAKE` 유형 연결을 선택해야 합니다. 다음 절차에 따라 AWS Glue Snowflake 연결을 생성합니다.

**Snowflake 연결을 생성하려면**

1. Snowflake에서 사용자, *snowflakeUser* 및 암호, *snowflakePassword*를 생성합니다.

1. 이 사용자가 상호 작용하는 Snowflake 웨어하우스(*snowflakeWarehouse*)를 결정합니다. Snowflake에서 *snowflakeUser*에 대해 `DEFAULT_WAREHOUSE`로 설정하거나 다음 단계에서 사용하도록 기억합니다.

1. AWS Secrets Manager에서 Snowflake 보안 인증을 사용하여 보안 암호를 생성합니다. Secrets Manager에서 보안 암호를 생성하려면 AWS Secrets Manager 설명서의 [Create an AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html#create_secret_cli)에서 제공하는 자습서를 따릅니다. 보안 암호를 생성한 후에는 다음 단계를 위해 보안 암호 이름, *secretName*을 유지합니다.
   + **키/값 페어**를 선택하면 키가 `sfUser`인 *snowflakeUser*에 대한 페어를 생성합니다.
   + **키/값 페어**를 선택하면 키가 `sfPassword`인 *snowflakePassword*에 대한 페어를 생성합니다.
   + **키/값 페어**를 선택하면 키가 `sfWarehouse`인 *snowflakeWarehouse*에 대한 페어를 생성합니다. Snowflake에 기본값이 설정된 경우에는 필요하지 않습니다.

1. AWS Glue 데이터 카탈로그에서 [AWS Glue 연결 추가](https://docs.aws.amazon.com//glue/latest/dg/console-connections.html) 단계에 따라 연결을 생성합니다. 연결을 생성한 후에는 다음 단계를 위해 연결 이름, *connectionName*을 유지합니다.
   + **연결 유형**을 선택할 때 Snowflake를 선택합니다.
   + **Snowflake URL**을 선택할 때 Snowflake 인스턴스의 호스트 이름을 제공합니다. URL은 `account_identifier.snowflakecomputing.com` 양식의 호스트 이름을 사용합니다.
   + **AWS 보안 암호**를 선택할 때 *secretName*을 입력합니다.

# Snowflake 소스 노드 생성
<a name="creating-snowflake-source-node"></a>

## 필요한 권한
<a name="creating-snowflake-source-node-permissions"></a>

 Snowflake 데이터 소스를 사용하는 AWS Glue Studio 작업에는 추가 권한이 필요합니다. ETL 작업에 권한을 추가하는 방법에 대한 자세한 내용은 [ETL 작업에 필요한 IAM 권한 검토](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)를 참조하세요.

 `SNOWFLAKE` AWS Glue 연결은 AWS Secrets Manager 보안 암호를 사용하여 보안 인증 정보를 제공합니다. AWS Glue Studio에서 작업 및 데이터 미리 보기 역할에는 이 보안 암호를 읽을 수 있는 권한이 있어야 합니다.

## Snowflake 데이터 소스 추가
<a name="creating-snowflake-source-node-add"></a>

**사전 조건:**
+ Snowflake 보안 인증의 AWS Secrets Manager 보안 암호
+ Snowflake 유형 AWS Glue 데이터 카탈로그 연결

****데이터 소스 - Snowflake** 노드를 추가하려면:**

1.  Snowflake 데이터 소스의 연결을 선택합니다. 이 경우 연결이 이미 존재하며 기존 연결 중에서 선택할 수 있다고 가정합니다. 연결을 생성해야 하는 경우 **Snowflake 연결 생성**을 선택합니다. 자세한 내용은 [커넥터 및 연결 사용 개요](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)를 참조하세요.

    연결을 선택한 후에는 **속성 보기**를 클릭하여 연결 속성을 볼 수 있습니다. URL, 보안 그룹, 서브넷, 가용 영역, 설명, 생성 날짜(UTC) 및 최종 업데이트(UTC) 타임스탬프를 비롯한 연결 정보가 표시됩니다.

1.  다음과 같은 Snowflake 소스 옵션을 선택합니다.
   +  **단일 테이블 선택** - 단일 Snowflake 테이블에서 액세스하려는 데이터가 들어 있는 테이블입니다.
   +  **사용자 지정 쿼리 입력** - 사용자 지정 쿼리를 기반으로 여러 Snowflake 테이블의 데이터 세트에 액세스할 수 있습니다.

1.  단일 테이블을 선택한 경우 Snowflake 스키마의 이름을 입력합니다.

    또는 **사용자 지정 쿼리 입력**을 선택합니다. 여러 Snowflake 테이블에서 사용자 지정 데이터 세트에 액세스하려면 이 옵션을 선택합니다. 이 옵션을 선택하는 경우 Snowflake 쿼리를 입력합니다.

1.  **성능 및 보안** 옵션(선택 사항)에서,
   +  **쿼리 푸시다운 활성화** - Snowflake 인스턴스로 작업을 오프로드할지 여부를 선택합니다.

1.  **사용자 지정 Snowflake 속성**(선택 사항)에서 필요한 경우 파라미터와 값을 입력합니다.

# Snowflake 대상 노드 생성
<a name="creating-snowflake-target-node"></a>

## 필요한 권한
<a name="creating-snowflake-target-node-permissions"></a>

 Snowflake 데이터 소스를 사용하는 AWS Glue Studio 작업에는 추가 권한이 필요합니다. ETL 작업에 권한을 추가하는 방법에 대한 자세한 내용은 [ETL 작업에 필요한 IAM 권한 검토](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html#getting-started-min-privs-job)를 참조하세요.

 `SNOWFLAKE` AWS Glue 연결은 AWS Secrets Manager 보안 암호를 사용하여 보안 인증 정보를 제공합니다. AWS Glue Studio에서 작업 및 데이터 미리 보기 역할에는 이 보안 암호를 읽을 수 있는 권한이 있어야 합니다.

## Snowflake 데이터 대상 추가
<a name="creating-snowflake-target-node-add"></a>

**Snowflake 대상 노드를 생성하려면:**

1.  기존 Snowflake 테이블을 대상으로 선택하거나 새 테이블 이름을 입력합니다.

1.  **데이터 대상 - Snowflake** 대상 노드를 사용하는 경우 다음 옵션 중에서 선택할 수 있습니다.
   +  **추가** - 테이블이 이미 있는 경우 모든 새 데이터를 테이블에 삽입으로 덤프합니다. 테이블이 없으면 새로 생성한 후 새 데이터를 모두 삽입합니다.
   +  **병합** - AWS Glue는 사용자가 지정한 조건에 따라 대상 테이블에 데이터를 추가하거나 업데이트합니다.

      다음과 같은 옵션을 선택합니다.
     + **키 및 간단한 작업 선택** - 소스 데이터와 대상 데이터 세트 사이에서 일치하는 키로 사용할 열을 선택합니다.

       일치하는 경우 다음 옵션을 지정합니다.
       + 대상 데이터 세트의 레코드를 소스의 데이터로 업데이트합니다.
       + 대상 데이터 세트에서 레코드를 삭제합니다.

       일치하지 않는 경우 다음 옵션을 지정합니다.
       + 소스 데이터를 대상 데이터 세트에 새 행으로 삽입합니다.
       + 아무 작업 안 함.
     + **사용자 지정 MERGE 명령문 입력** - 그런 다음 **병합 명령문 검증**을 선택하여 명령문이 유효한지 여부를 검증할 수 있습니다.
   +  **잘라내기** - 테이블이 이미 있는 경우 먼저 대상 테이블의 콘텐츠를 지워서 테이블 데이터를 잘라냅니다. 잘라내기에 성공하면 모든 데이터를 삽입합니다. 테이블이 없는 경우 테이블을 생성하고 모든 데이터를 삽입합니다. 잘라내기에 실패하면 작업에 실패합니다.
   +  **삭제** - 테이블이 이미 있는 경우 테이블 메타데이터와 데이터를 삭제합니다. 삭제에 성공하면 모든 데이터를 삽입합니다. 테이블이 없는 경우 테이블을 생성하고 모든 데이터를 삽입합니다. 삭제에 실패하면 작업에 실패합니다.

## 고급 옵션
<a name="creating-snowflake-connection-advanced-options"></a>

AWS Glue 개발자 안내서의 [Snowflake 연결](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-snowflake-home.html)을 참조하세요.