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개를 반환합니다.
All checks passed
는 정상적인 네트워크 연결을 나타냅니다.문제를 해결하기 위한 제안과 함께 1개 이상의 검사가 실패했음을 알리는 메시지입니다.
사용자는 SnowCD를 사용하여 언제든지 Snowflake의 네트워크 연결을 평가하여 필수 구성 설정이 올바른지 확인할 수 있습니다. 예를 들어, 사용자는 SnowCD를 이러한 사용 사례에 통합할 수 있습니다.
자동화된 배포 스크립트.
Snowflake에 연결하는 서비스를 배포하기 전 필수 구성 요소 확인.
새 시스템을 시작하는 동안 환경 확인.
실행 중 시스템에 대한 주기적 확인.
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 사용하기¶
1단계: SYSTEM$ALLOWLIST 또는 SYSTEM$ALLOWLIST_PRIVATELINK 함수 실행¶
전제 조건 단계이며 한 번 수행해야 합니다. 단, 호스트 이름이나 포트가 변경되는 경우는 제외입니다.
웹 인터페이스를 통해 Snowflake에 연결합니다.
SELECT SYSTEM$ALLOWLIST();
또는SELECT SYSTEM$ALLOWLIST_PRIVATELINK();
를 실행합니다.쿼리 결과를 파일(즉,
allowlist.json
)에 저장합니다.
이러한 함수에 대한 자세한 내용은 SYSTEM$ALLOWLIST 또는 SYSTEM$ALLOWLIST_PRIVATELINK 를 참조하십시오.
아래 예에서는 JSON을 해당 SQL 함수로부터의 출력 형식으로 사용합니다. SnowCD는 3단계: SnowCD 실행 의 입력으로 JSON, CSV 또는 TSV 형식을 허용합니다.
쿼리 결과를 CSV 또는 TSV 형식으로 저장하려면, 웹 인터페이스에서 Download or View Results 아이콘을 클릭하고 CSV 또는 TSV 를 선택한 후 Export 를 클릭합니다.
예제 파일(들여쓰기 및 수정되지 않음)
SYSTEM$ALLOWLIST 를 실행하고 파일(예: allowlist.json
)에 출력을 저장합니다.
여기서:
<저장소_위치>
는 Snowflake 클라이언트가 읽거나 쓸 수 있는 파일을 저장하는 저장소 위치(Amazon S3, Google Cloud Storage 또는 Microsoft Azure)입니다.
<리전_id>
는 VPCs 및 Snowflake 계정이 위치한 AWS 리전입니다.[{"type":"STAGE","host":"<storage_location>.s3.<region_id>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>.s3-<region_id>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>.s3.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_1>.s3.<region_id>.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_2>.snowflakecomputing.com","port":443}, {"type":"OUT_OF_BAND_TELEMETRY","host":"<telemetry_subdomain>.snowflakecomputing.com","port":443}, {"type":"OCSP_CACHE","host":"ocsp.snowflakecomputing.com","port":80}, {"type":"OCSP_RESPONDER","host":"ocsp.digicert.com","port":80}]
예제 파일(들여쓰기 및 수정됨)
SYSTEM$ALLOWLIST 를 실행하고 파일(예: allowlist.json
)에 출력을 저장합니다.
여기서:
<저장소_위치>
는 Snowflake 클라이언트가 읽거나 쓸 수 있는 파일을 저장하는 저장소 위치(Amazon S3, Google Cloud Storage 또는 Microsoft Azure)입니다.
<리전_id>
는 VPCs 및 Snowflake 계정이 위치한 AWS 리전입니다.[{ "type": "STAGE", "host": "<storage_location>.s3.<region_id>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.s3-<region_id>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.s3.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_1>.s3.<region_id>.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_2>.snowflakecomputing.com", "port": 443 }, { "type": "OUT_OF_BAND_TELEMETRY", "host": "<telemetry_subdomain>.snowflakecomputing.com", "port": 443 }, { "type": "OCSP_CACHE", "host": "ocsp.snowflakecomputing.com", "port": 80 }, { "type": "OCSP_RESPONDER", "host": "ocsp.digicert.com", "port": 80 }]
예제 파일(들여쓰기 및 수정되지 않음)
SYSTEM$ALLOWLIST_PRIVATELINK 를 실행하고 파일(예: allowlist.json
)에 출력을 저장합니다.
여기서:
<저장소_위치>
는 Snowflake 클라이언트가 읽거나 쓸 수 있는 파일을 저장하는 저장소 위치(Amazon S3, Google Cloud Storage 또는 Microsoft Azure)입니다.
<리전_id>
는 VPCs 및 Snowflake 계정이 위치한 AWS 리전입니다.[{"type":"SNOWFLAKE_DEPLOYMENT","host":"<storage_location>.<region>.privatelink.snowflakecomputing.com","port":443}, {"type":"STAGE","host":"<storage_location>.<region>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>-<region>.amazonaws.com","port":443}, {"type":"STAGE","host":"<storage_location>.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_1>.s3.<region>.amazonaws.com","port":443}, {"type":"SNOWSQL_REPO","host":"<repository_name_2>.snowflakecomputing.com","port":443}, {"type":"OUT_OF_BAND_TELEMETRY","host":"<telemetry_subdomain>.snowflakecomputing.com","port":443}, {"type":"OCSP_CACHE","host":"ocsp.<storage_location>.<region>.privatelink.snowflakecomputing.com","port":80}]
예제 파일(들여쓰기 및 수정됨)
SYSTEM$ALLOWLIST_PRIVATELINK 를 실행하고 파일(예: allowlist.json
)에 출력을 저장합니다.
여기서:
<저장소_위치>
는 Snowflake 클라이언트가 읽거나 쓸 수 있는 파일을 저장하는 저장소 위치(Amazon S3, Google Cloud Storage 또는 Microsoft Azure)입니다.
<리전_id>
는 VPCs 및 Snowflake 계정이 위치한 AWS 리전입니다.[{ "type": "SNOWFLAKE_DEPLOYMENT", "host": "<storage_location>.<region>.privatelink.snowflakecomputing.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.<region>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>-<region>.amazonaws.com", "port": 443 }, { "type": "STAGE", "host": "<storage_location>.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_1>.s3.<region>.amazonaws.com", "port": 443 }, { "type": "SNOWSQL_REPO", "host": "<repository_name_2>.snowflakecomputing.com", "port": 443 }, { "type": "OUT_OF_BAND_TELEMETRY", "host": "<telemetry_subdomain>.snowflakecomputing.com", "port": 443 }, { "type": "OCSP_CACHE", "host": "ocsp.<storage_location>.<region>.privatelink.snowflakecomputing.com", "port": 80 }]
주의
사용자 환경에 다른 외부 허용 호스트 이름 및 포트가 정의된 위치에 allowlist.json
파일을 저장합니다.
팁
출력의 형식으로 JSON 형식이 아닌 테이블 형식을 사용하려면 다음을 실행합니다.
use warehouse my_warehouse;
select value:type as type,
value:host as host,
value:port as port
from table(flatten(input => parse_json(system$allowlist())));
2단계: SnowCD 다운로드 및 실행¶
Linux¶
Linux에 SnowCD를 다운로드 및 설치하려면 다음 단계를 실행합니다.
SnowCD 다운로드 페이지에서 SnowCD의 최신 버전을 다운로드합니다.
Linux Terminal 애플리케이션을 열고 파일을 다운로드한 디렉터리로 이동합니다.
SHA256 체크섬이 일치하는지 확인합니다.
$ sha256sum <filename>
파일의 압축을 풉니다.
$ gunzip <filename>
파일을 실행 가능하도록 만듭니다.
$ chmod +x <filename>
실행 가능 파일의 이름을
snowcd
로 변경합니다.$ mv <filename> snowcd
참고
RHEL 또는 CentOS를 실행 중인 Linux 사용자는 yum을 사용하여 SnowCD를 설치할 수 있지만, Debian 사용자는 apt를 사용하여 설치할 수 있습니다.
macOS¶
macOS에 SnowCD를 다운로드 및 설치하려면 다음 단계를 수행합니다.
SnowCD 다운로드 페이지에서 인증된 SnowCD
pkg
파일의 최신 버전을 다운로드합니다.pkg 파일에서 사용되는 명명 규칙은 다음과 같습니다.
snowcd-<버전_번호>-darwin_x86_64.pkg
예:
snowcd-1.0.5-darwin_x86_64.pkg
Terminal 애플리케이션을 열고 파일을 다운로드한 디렉터리로 이동합니다.
SHA256 체크섬이 일치하는지 확인합니다.
파일의 체크섬을 가져오려면, 다음 명령을 실행합니다.
$ shasum -a 256 <filename>
파일의 체크섬과 다운로드 사이트에 표시된 체크섬을 비교합니다.
Finder 애플리케이션을 열고 pkg 파일을 다운로드한 디렉터리로 이동합니다.
pkg 파일을 두 번 클릭하여 SnowCD의 압축을 풀고 설치합니다.
snowcd 실행 파일 등의 파일이 /opt/snowflake/snowcd 디렉터리에 설치됩니다.
Windows¶
Windows에 SnowCD를 다운로드 및 설치하려면 다음 단계를 수행합니다.
SnowCD 다운로드 페이지에서 SnowCD의 최신 버전을 다운로드합니다.
Windows 설치 관리자를 사용하여 MSI 파일을 실행합니다.
3단계: SnowCD 실행¶
macOS 및 Linux 환경에서 SnowCD를 실행하기 전, 디렉터리에 $PATH
를 추가할 수 있습니다. Windows 환경에서는 Environment Variables에 SnowCD를 추가할 수 있습니다.
macOS 또는 Linux 환경에서는
snowcd <path_to_allowlist.json> [flags]
를 실행하여 명령줄에서 snowcd 실행 파일을 실행할 수 있습니다.Windows 환경에서
snowcd.exe <path_to_allowlist.json> [flags]
를 실행합니다.
팁
플래그 snowcd
지원에 대한 전체 설명을 살펴보려면 snowcd -h
를 실행합니다.
모든 검사가 유효하면, SnowCD는 다음과 같이 All checks passed
메시지와 함께 호스트 개수에 대한 검사 횟수를 반환합니다.
Performing 30 checks on 12 hosts
All checks passed
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
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
HTTP 프록시에서 SnowCD 사용하기¶
HTTP 프록시에 대해 SnowCD를 실행하여 연결 상태를 확인할 수 있습니다.
중요
현재, Snowflake는 SSL 종료 프록시 서버를 지원하지 않습니다.
방화벽 및 프록시 허용 목록을 구성하는 동안 SSL 통과(즉, SSL 암호 해독 우회)를 사용하십시오.
대표적인 예로 Linux를 사용하여 다음 명령을 실행하여 프록시에 대해 SnowCD를 실행하고 필요한 경우 플래그 값을 바꿉니다.
snowcd allowlist.json \
--proxyHost <hostname> \
--proxyPort <port_number> \
--proxyUser <username> \
--proxyPassword <password>
로깅은 선택 사항이며, 사용자는 로깅 플래그 2개를 프록시 명령에 추가할 수 있습니다. 명령의 실행 중에 로깅이 수행되도록 하려면 로그 파일에 대한 경로를 포함하는 것이 중요합니다.
snowcd allowlist.json \
--proxyHost <hostname> \
--proxyPort <port_number> \
--proxyUser <username> \
--proxyPassword <password> \
--logLevel trace \
--logPath test.log
이 명령을 실행한 후에 test.log
파일에서 추적을 확인할 수 있습니다.