고성능 아키텍처를 갖춘 Snowpipe Streaming 구성

이 가이드에서는 Java 및 Python SDKs에서 사용할 수 있는 고성능 Snowpipe Streaming 클라이언트의 구성 설정에 대해 설명합니다. 구성에는 다음과 같은 두 가지 고유한 종류가 있습니다.

  • 프로세스 전반의 환경 변수: 실행 중인 전체 애플리케이션에 대한 로깅 및 메트릭을 제어하는 변수는 클라이언트가 초기화되기 전에 설정해야 합니다.

  • 클라이언트 측 속성: 보안 연결 및 수집 대상(예: url, userprivate_key)을 정의하는 속성은 일반적으로 인라인 맵 또는 profile.json 파일을 통해 특정 클라이언트 오브젝트에 대해 구성됩니다.

단일 애플리케이션은 여러 클라이언트 오브젝트를 실행할 수 있습니다. 각 오브젝트에는 고유한 클라이언트 측 속성이 있지만, 모두 로깅 및 메트릭에 대해 동일한 프로세스 전반의 환경 변수 설정을 공유합니다.

고성능 아키텍처에서는 클라이언트가 스키마, 변환 및 대상 테이블로의 수집을 관리하는 특정 PIPE 오브젝트에 명시적으로 바인딩되어야 합니다.

환경 변수

이러한 구성 설정은 로깅 및 메트릭 수집과 같은 프로세스 전반의 동작을 제어하며 클라이언트 오브젝트가 초기화되기 전에 환경 변수로 구성해야 합니다. 다음 테이블에서는 동일한 프로세스 내의 모든 Snowpipe Streaming 클라이언트 오브젝트에 적용되는 환경 변수를 보여줍니다.

변수

설명

기본값

SS_ENABLE_METRICS

기본 제공 Prometheus 메트릭 서버를 활성화하려면 TRUE로 설정합니다.

FALSE

SS_METRICS_PORT

메트릭을 노출하는 데 사용되는 포트입니다.

50000

SS_METRICS_IP

메트릭 서버가 호스팅되는 IP 주소입니다.

127.0.0.1

SS_LOG_LEVEL

출력할 최소 로깅 수준입니다.

info``(옵션: ``info, warn, error)

필수 속성

고성능 SDK에서는 보안 연결 및 특정 수집 대상(PIPE)을 모두 설정하기 위해 여러 속성을 요구합니다. 다음 테이블에서는 필수 연결 및 사용자 인증 속성을 보여줍니다.

속성

설명

url

계정 식별자를 포함하여 Snowflake 계정에 액세스하기 위한 URL입니다. 프로토콜(https://) 및 포트 번호는 선택 사항입니다.

user

Snowflake 계정의 사용자 로그인 이름입니다.

account

Snowflake 계정 식별자입니다(예: xy12345).

``authorization_type``이 ``JWT``(기본값)로 설정된 경우 다음 테이블에서와 같이 키 내용 또는 키 파일 경로를 제공해야 합니다.

속성

설명

private_key

사용자 인증에 사용되는 개인 키 내용입니다. 머리글, 바닥글 또는 줄 바꿈 없이 주요 내용만 포함합니다.

private_key_file

개인 키의 파일 경로입니다(예: rsa_key.p8). 키 내용을 직접 제공하는 대신 이 경로를 사용할 수 있습니다.

선택적 속성

다음 테이블에서는 고성능 SDK 선택적 속성을 보여줍니다.

속성

설명

role

Snowflake에 연결한 후 세션에 사용할 액세스 제어 역할입니다.

authorization_type

인증 방법을 구성하는 속성입니다. 옵션은 JWT(키 페어 인증, 기본값)입니다.

시크릿 외부화하기

Snowflake는 private_key 및 OAuth 자격 증명과 같은 시크릿을 외부화하고 키 관리 서비스(예: AWS KMS)에 저장할 것을 강력히 권장합니다.

구성 예제

다음 예제에서는 클라이언트 측 및 환경 변수 구성을 보여줍니다.

profile.json 파일을 통한 클라이언트 측 구성

다음 예제에서는 클라이언트 측 속성을 정의하는 방법을 보여줍니다.

// profile.json
{
  "authorization_type": "JWT",
  "url": "https://<account_identifier>.snowflakecomputing.com",
  "user": "MY_SNOWFLAKE_USER",
  "account": "XY12345",
  "private_key_file": "/path/to/rsa_key.p8",
  "role": "MY_INGEST_ROLE"
}
Copy

클라이언트 측 구성이 인라인으로 제공됨

다음 예제에서는 코드에서 직접 클라이언트 측 속성을 정의하는 방법을 보여줍니다.

Python 예제

config = {
    "authorization_type": "JWT",
    "url": "https://<account_identifier>.snowflakecomputing.com",
    "user": "MY_SNOWFLAKE_USER",
    "account": "XY12345",
    "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
}
# ... code to initialize client with 'config'
Copy

Java 예제

Map<String, Object> config = new HashMap<>();
config.put("authorization_type", "JWT");
config.put("url", "https://<account_identifier>.snowflakecomputing.com");
config.put("user", "MY_SNOWFLAKE_USER");
config.put("account", "XY12345");
config.put("private_key_file", "/path/to/rsa_key.p8");
config.put("role", "MY_INGEST_ROLE");
// ... code to initialize client with 'config'
Copy

환경 변수 구성

다음 예제에서는 애플리케이션을 실행하기 전에 셸에서 프로세스 전반의 환경 변수를 정의하는 방법을 보여줍니다.

Linux 또는 macOS(Bash 또는 Zsh)

# Set the log level for the entire application process to 'warn'
export SS_LOG_LEVEL=warn

# Change the IP for metrics to a specific loopback address
export SS_METRICS_IP=127.0.0.5

# Now run your application
Copy

Windows(명령 프롬프트)

# Set the log level for the entire application process to 'warn'
set SS_LOG_LEVEL=warn

# Change the metrics port
set SS_METRICS_PORT=55000

# Now run your application
Copy