SnowCD(Connectivity Diagnostic Tool)

SnowCD(즉, Snowflake Connectivity Diagnostic Tool)는 사용자가 Snowflake에 대한 네트워크 연결을 진단하고 문제를 해결하는 데 도움이 됩니다.

이 항목의 내용:

개요

SnowCD는 SYSTEM$ALLOWLIST() 또는 SYSTEM$ALLOWLIST_PRIVATELINK() 함수에 의해 나열된 Snowflake 호스트 이름 IP 주소 및 포트를 활용하여 Snowflake와의 네트워크 연결을 평가하고 문제를 해결하기 위해 일련의 연결 확인 작업을 실행합니다.

중요

Snowflake 계정에서 Snowflake 서비스에 대한 비공개 연결을 사용하는 경우, SYSTEM$ALLOWLIST_PRIVATELINK 함수를 실행하여 Snowflake 호스트 이름 IP 주소 및 포트를 가져와 Snowflake에 대한 네트워크 연결을 평가하고 문제를 해결합니다.

자세한 내용은 다음을 참조하십시오.

SnowCD는 다음 중 1개를 반환합니다.

  1. All checks passed 는 정상적인 네트워크 연결을 나타냅니다.

  2. 문제를 해결하기 위한 제안과 함께 1개 이상의 검사가 실패했음을 알리는 메시지입니다.

사용자는 SnowCD를 사용하여 언제든지 Snowflake의 네트워크 연결을 평가하여 필수 구성 설정이 올바른지 확인할 수 있습니다. 예를 들어, 사용자는 SnowCD를 이러한 사용 사례에 통합할 수 있습니다.

  1. 자동화된 배포 스크립트.

  2. Snowflake에 연결하는 서비스를 배포하기 전 필수 구성 요소 확인.

  3. 새 시스템을 시작하는 동안 환경 확인.

  4. 실행 중 시스템에 대한 주기적 확인.

SnowCD는 직접 연결 또는 프록시 서버를 통한 연결로 작동합니다.

SnowCD는 데이터를 임시로 저장(예: 로드하기 위해)하기 위해 사용되는 스테이지 및 Snowflake 데이터베이스에 대한 액세스를 확인합니다.

SnowCD는 HTTP 호스트에서 HTTP 응답이 반환되었는지 확인합니다. 이를 통해 감지할 수 있는 문제는 다음과 같습니다.

  • 지정된 IP 주소 및 포트에서 실행 중인 HTTP 서버가 없습니다.

  • DNS(도메인 이름 시스템) 조회가 실패했습니다.

  • 메시지 가로채기(Man-In-The-Middle) 공격이 발생했으며 유효하지 않은 인증서를 사용하여 필요한 서비스를 가장했습니다.

  • 특정 유형의 다른 네트워크 장애가 HTTP 레벨 미만입니다.

SnowCD에서 가능한 모든 문제를 감지할 수 있는 것은 아닙니다. 알려진 제한 사항은 다음과 같습니다.

  • 스테이지에는 SnowCD의 경우 필요하지 않은 추가 인증 정보가 필요합니다. SnowCD는 스테이지에 대한 기본 액세스를 확인하지만, SnowCD는 스테이지에서 제공되는 HTTP 응답 코드를 엄격하게 검사하지 않습니다. 그러므로 SnowCD에서 감지할 수 없는 문제는 다음과 같습니다.

    • 스테이지에 대한 Amazon S3 버킷, Azure Blob 저장소 또는 Google Cloud Storage에 대한 액세스 정책 거부.

    • 고객의 프록시 서버 연결과 관련한 문제가 있습니다. 예를 들어, 프록시 서버가 HTTP 403 오류를 반환합니다.

SnowCD에서는 가능한 일부 문제를 감지할 수 없으므로, Snowflake는 SnowCD를 통해 스테이지 액세스를 확인한 후 PUT 명령을 실행하여 스테이지에 파일을 로드하는 후속 작업을 수행하는 것을 권장합니다. PUT 명령을 실행하는 가장 단순한 방법은 일반적으로 SnowSQL을 사용하는 것입니다.

주의

1개 이상의 네트워크 연결 문제를 해결하는 것은 까다로울 수 있습니다. 환경에 따라, 다른 문제 해결 방법과 SnowCD를 함께 사용해야 할 수 있습니다. 예를 들어, SnowCD에서 OCSP 문제에 대한 정보가 반환되면 이 페이지의 OCSP 섹션을 참조하십시오.

SnowCD 사용하기

2단계: SnowCD 다운로드 및 실행

Linux

Linux에 SnowCD를 다운로드 및 설치하려면 다음 단계를 실행합니다.

  1. SnowCD 다운로드 페이지에서 SnowCD의 최신 버전을 다운로드합니다.

  2. Linux Terminal 애플리케이션을 열고 파일을 다운로드한 디렉터리로 이동합니다.

  3. SHA256 체크섬이 일치하는지 확인합니다.

    $ sha256sum <filename>
    
    Copy
  4. 파일의 압축을 풉니다.

    $ gunzip <filename>
    
    Copy
  5. 파일을 실행 가능하도록 만듭니다.

    $ chmod +x <filename>
    
    Copy
  6. 실행 가능 파일의 이름을 snowcd 로 변경합니다.

    $ mv <filename> snowcd
    
    Copy

참고

RHEL 또는 CentOS를 실행 중인 Linux 사용자는 yum을 사용하여 SnowCD를 설치할 수 있지만, Debian 사용자는 apt를 사용하여 설치할 수 있습니다.

macOS

macOS에 SnowCD를 다운로드 및 설치하려면 다음 단계를 수행합니다.

  1. SnowCD 다운로드 페이지에서 인증된 SnowCD pkg 파일의 최신 버전을 다운로드합니다.

    pkg 파일에서 사용되는 명명 규칙은 다음과 같습니다.

    snowcd-<버전_번호>-darwin_x86_64.pkg

    예:

    snowcd-1.0.5-darwin_x86_64.pkg

  2. Terminal 애플리케이션을 열고 파일을 다운로드한 디렉터리로 이동합니다.

  3. SHA256 체크섬이 일치하는지 확인합니다.

    파일의 체크섬을 가져오려면, 다음 명령을 실행합니다.

    $ shasum -a 256 <filename>
    
    Copy

    파일의 체크섬과 다운로드 사이트에 표시된 체크섬을 비교합니다.

  4. Finder 애플리케이션을 열고 pkg 파일을 다운로드한 디렉터리로 이동합니다.

  5. pkg 파일을 두 번 클릭하여 SnowCD의 압축을 풀고 설치합니다.

snowcd 실행 파일 등의 파일이 /opt/snowflake/snowcd 디렉터리에 설치됩니다.

Windows

Windows에 SnowCD를 다운로드 및 설치하려면 다음 단계를 수행합니다.

  1. SnowCD 다운로드 페이지에서 SnowCD의 최신 버전을 다운로드합니다.

  2. Windows 설치 관리자를 사용하여 MSI 파일을 실행합니다.

3단계: SnowCD 실행

macOS 및 Linux 환경에서 SnowCD를 실행하기 전, 디렉터리에 $PATH 를 추가할 수 있습니다. Windows 환경에서는 Environment Variables에 SnowCD를 추가할 수 있습니다.

  1. macOS 또는 Linux 환경에서는 snowcd <path_to_allowlist.json> [flags] 를 실행하여 명령줄에서 snowcd 실행 파일을 실행할 수 있습니다.

  2. Windows 환경에서 snowcd.exe <path_to_allowlist.json> [flags] 를 실행합니다.

플래그 snowcd 지원에 대한 전체 설명을 살펴보려면 snowcd -h 를 실행합니다.

모든 검사가 유효하면, SnowCD는 다음과 같이 All checks passed 메시지와 함께 호스트 개수에 대한 검사 횟수를 반환합니다.

Performing 30 checks on 12 hosts
All checks passed
Copy

SELECT SYSTEM$ALLOWLIST()에서 JSON 허용 목록 정보를 전달하지 않고 SnowCD를 실행하려면, 다음 오류 메시지가 현재 지원되는 플래그 목록, 데이터 타입(해당하는 경우) 및 플래그에 대한 간략한 설명과 함께 파일을 포함하라는 알림으로 표시됩니다.

Error: please provide whitelist generated by SYSTEM$ALLOWLIST()
Usage:
./snowcd <path to input json file> [flags]

Examples:
./snowcd test.json

Flags:
  -h, --help                   help for ./snowcd
  --logLevel string            log level (panic, fatal[default], error, warning, info, debug, trace) (default "fatal")
  --logPath string             Output directory for log. When not specified, no log is generated
  --proxyHost string           host for http proxy. (When not specified, does not use proxy at all)
  --proxyIsHTTPS               Is connection to proxy secure, i.e. https. (default false)
  --proxyPassword string       password for http proxy.(default empty)
  --proxyPort int              port for http proxy.(default 8080) (default 8080)
  --proxyUser string           user name for http proxy.(default empty)
  -t, --timeout int            timeout for each hostname's checks in seconds (default 5) (default 5)
  --version                    version for ./snowcd
Copy

SnowCD에서 잘못된 설정 또는 구성을 감지하면 실패한 검사 관련 정보가 문제 해결 제안 사항과 함께 표시됩니다. 예를 들어, 아래 응답은 유효하지 않은 호스트 이름을 나타냅니다.

Check for 1 hosts failed, display as follow:
==============================================
Host: www.google1.com
Port: 443
Type: SNOWFLAKE_DEPLOYMENT
Failed Check: DNS Check
Error: lookup www.google1.com: no such host
Suggestion: Check your configuration on DNS server
Copy

HTTP 프록시에서 SnowCD 사용하기

HTTP 프록시에 대해 SnowCD를 실행하여 연결 상태를 확인할 수 있습니다.

중요

현재, Snowflake는 SSL 종료 프록시 서버를 지원하지 않습니다.

방화벽 및 프록시 허용 목록을 구성하는 동안 SSL 통과(즉, SSL 암호 해독 우회)를 사용하십시오.

대표적인 예로 Linux를 사용하여 다음 명령을 실행하여 프록시에 대해 SnowCD를 실행하고 필요한 경우 플래그 값을 바꿉니다.

snowcd allowlist.json \
  --proxyHost <hostname> \
  --proxyPort <port_number> \
  --proxyUser <username> \
  --proxyPassword <password>
Copy

로깅은 선택 사항이며, 사용자는 로깅 플래그 2개를 프록시 명령에 추가할 수 있습니다. 명령의 실행 중에 로깅이 수행되도록 하려면 로그 파일에 대한 경로를 포함하는 것이 중요합니다.

snowcd allowlist.json \
  --proxyHost <hostname> \
  --proxyPort <port_number> \
  --proxyUser <username> \
  --proxyPassword <password> \
  --logLevel trace \
  --logPath test.log
Copy

이 명령을 실행한 후에 test.log 파일에서 추적을 확인할 수 있습니다.