SnowCD (Connectivity Diagnostic Tool)¶
SnowCD (つまり、Snowflake Connectivity Diagnostic Tool)は、ユーザーがSnowflakeへのネットワーク接続を診断およびトラブルシューティングするのに役立ちます。
このトピックの内容:
概要¶
SnowCD Snowflakeへのネットワーク接続の評価とトラブルシューティングに役立つ一連の接続チェックを実行するために、 SYSTEM$ALLOWLIST() または SYSTEM$ALLOWLIST_PRIVATELINK() 関数からリストされるSnowflakeホスト名 IP アドレスとポートを活用します。
重要
SnowflakeアカウントでSnowflakeサービスへのプライベート接続を使用している場合は、 SYSTEM$ALLOWLIST_PRIVATELINK 関数を実行してSnowflakeホスト名 IP アドレスとポートを取得し、Snowflakeへのネットワーク接続を評価およびトラブルシューティングします。
詳細については、次をご参照ください。
SnowCD は、次のいずれかを返します。
ネットワーク接続が正常であることを示す
All checks passed。
トラブルシューティングの提案で、1つ以上のチェックが失敗したことを示すメッセージ。
ユーザーは SnowCD を活用して、Snowflakeへのネットワーク接続をいつでも評価し、必要な構成設定が正しいことを確認できます。例えば、ユーザーは SnowCD を次のユースケースに統合できます。
自動デプロイスクリプト。
Snowflakeに接続するサービスをデプロイする前の前提条件チェック。
新しいマシンの起動中の環境チェック。
実行中のマシンの定期的なチェック。
SnowCD は、直接接続またはプロキシサーバー経由の接続のいずれかで動作します。
SnowCD は、Snowflakeデータベースへのアクセスと、データを一時的に格納するために使用されるステージへのアクセスをチェックします(ロードなど)。
SnowCD は、 HTTP ホストから HTTP 応答が返されたことを確認します。これにより、次のような問題を検出できます。
- 指定された IP アドレスとポートで HTTP サーバーが実行されていません。 
- DNS (ドメインネームシステム)ルックアップエラーが発生しました。 
- 中間者攻撃が発生し、無効な証明書を使用して目的のサービスを偽装しました。 
- HTTP レベル以下の特定のタイプのその他のネットワーク障害。 
SnowCD は、考えられるすべての問題を検出するわけではありません。既知の制限は次のとおりです。
- ステージには、 SnowCD にはない追加の認証情報が必要です。 SnowCD はステージへの基本的なアクセスを検証しますが、 SnowCD はステージからの HTTP 応答コードの厳密なチェックを実行しません。したがって、 SnowCD は次のような問題を検出しません。 - Amazon S3バケット、Azure Blobストレージ、またはステージ用のGoogle Cloud Storageのアクセスポリシー拒否。 
- 顧客のプロキシサーバーへの接続に問題があります。たとえば、プロキシサーバーが HTTP 403エラーを返します。 
 
SnowCD は考えられるすべての問題を検出するわけではないため、 SnowCDを介してステージへのアクセスを正常に確認した後、 PUT コマンドを実行してファイルをステージにロードすることをお勧めします。 PUT コマンドを実行する最も簡単な方法は、通常 SnowSQL を使用することです。
注意
1つ以上のネットワーク接続の問題に対するトラブルシューティングは困難です。環境に応じて、他のトラブルシューティング方法で SnowCD の使用が必要となる場合があります。例えば、 SnowCD が OCSP の問題に関する情報を返す場合、このページの OCSP セクションをご参照ください。
SnowCD の使用¶
ステップ1: SYSTEM$ALLOWLIST または SYSTEM$ALLOWLIST_PRIVATELINK 関数を実行する¶
これは前提条件の手順であり、ホスト名またはポートが変更されない限り、1度完了する必要があります。
- ウェブインターフェイスを介してSnowflakeに接続します。 
- SELECT SYSTEM$ALLOWLIST();または- SELECT SYSTEM$ALLOWLIST_PRIVATELINK();を実行します。
- クエリ結果をファイル(つまり、 - allowlist.json)に保存します。
これらの関数の詳細については、 SYSTEM$ALLOWLIST または SYSTEM$ALLOWLIST_PRIVATELINK をご参照ください。
以下の例では、対応する SQL 関数からの出力形式として JSON を使用しています。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>は、 AWS 地域で VPCs とSnowflakeアカウントが置かれている場所です。[{"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>は、 AWS 地域で VPCs とSnowflakeアカウントが置かれている場所です。[{ "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>は、 AWS 地域で VPCs とSnowflakeアカウントが置かれている場所です。[{"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>は、 AWS 地域で VPCs とSnowflakeアカウントが置かれている場所です。[{ "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 ファイルを保存します。
Tip
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ターミナルアプリケーションを開き、ファイルをダウンロードしたディレクトリに移動します。 
- SHA256 チェックサムが一致することを確認します。 - $ sha256sum <filename> 
- ファイルを抽出します。 - $ gunzip <filename> 
- ファイルを実行可能にします。 - $ chmod +x <filename> 
- 実行可能ファイルの名前を - snowcdに変更します。- $ mv <filename> snowcd 
注釈
RHEL または CentOS を実行しているLinuxユーザーはyumを使用して SnowCDをインストールできますが、Debianユーザーはaptを使用してインストールできます。
macOS¶
macOS に SnowCD をダウンロードしてインストールするには、次のステップを実行します。
- 認証済みの SnowCD - pkgファイルの最新バージョンを SnowCD ウンロード ページからダウンロードします。- pkgファイルは、次の命名規則を使用します。 - snowcd-<バージョン番号>-darwin_x86_64.pkg - 例: - snowcd-1.0.5-darwin_x86_64.pkg 
- ターミナルアプリケーションを開き、ファイルをダウンロードしたディレクトリに移動します。 
- 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環境では、環境変数に SnowCD を追加できます。
- macOS またはLinux環境では、 - snowcd <path_to_allowlist.json> [flags]を実行することにより、コマンドラインからsnowcd実行可能ファイルを実行できます。
- Windows環境では、 - snowcd.exe <path_to_allowlist.json> [flags]を実行します。
Tip
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 ファイルでトレースを表示できます。