SnowCD (Connectivity Diagnostic Tool)

SnowCD (つまり、Snowflake Connectivity Diagnostic Tool)は、ユーザーがSnowflakeへのネットワーク接続を診断およびトラブルシューティングするのに役立ちます。

このトピックの内容:

概要

SnowCD leverages the Snowflake hostname IP addresses and ports listed by either the SYSTEM$ALLOWLIST() or SYSTEM$ALLOWLIST_PRIVATELINK() functions to run a series of connection checks to evaluate and help troubleshoot the network connection to Snowflake.

重要

If your Snowflake account uses private connectivity to the Snowflake service, execute the SYSTEM$ALLOWLIST_PRIVATELINK function to obtain the Snowflake hostname IP address and ports to evaluate and troubleshoot network connections to Snowflake.

詳細については、次をご参照ください。

SnowCD は、次のいずれかを返します。

  1. ネットワーク接続が正常であることを示す All checks passed

  2. トラブルシューティングの提案で、1つ以上のチェックが失敗したことを示すメッセージ。

ユーザーは SnowCD を活用して、Snowflakeへのネットワーク接続をいつでも評価し、必要な構成設定が正しいことを確認できます。例えば、ユーザーは SnowCD を次のユースケースに統合できます。

  1. 自動デプロイスクリプト。

  2. Snowflakeに接続するサービスをデプロイする前の前提条件チェック。

  3. 新しいマシンの起動中の環境チェック。

  4. 実行中のマシンの定期的なチェック。

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 の使用

ステップ2: SnowCD をダウンロードし、インストールする

Linux

Linuxに SnowCD をダウンロードしてインストールするには、次のステップを実行します。

  1. SnowCD ダウンロード ページから SnowCD の最新バージョンをダウンロードします。

  2. Linuxターミナルアプリケーションを開き、ファイルをダウンロードしたディレクトリに移動します。

  3. SHA256 チェックサムが一致することを確認します。

    $ sha256sum <filename>
    
  4. ファイルを抽出します。

    $ gunzip <filename>
    
  5. ファイルを実行可能にします。

    $ chmod +x <filename>
    
  6. 実行可能ファイルの名前を snowcd に変更します。

    $ mv <filename> snowcd
    

注釈

RHEL または CentOS を実行しているLinuxユーザーはyumを使用して SnowCDをインストールできますが、Debianユーザーはaptを使用してインストールできます。

macOS

macOS に SnowCD をダウンロードしてインストールするには、次のステップを実行します。

  1. 認証済みの SnowCD pkg ファイルの最新バージョンを SnowCD ウンロード ページからダウンロードします。

    pkgファイルは、次の命名規則を使用します。

    snowcd-<バージョン番号>-darwin_x86_64.pkg

    例:

    snowcd-1.0.5-darwin_x86_64.pkg

  2. ターミナルアプリケーションを開き、ファイルをダウンロードしたディレクトリに移動します。

  3. SHA256 チェックサムが一致することを確認します。

    ファイルのチェックサムを取得するには、次のコマンドを実行します。

    $ shasum -a 256 <filename>
    

    ファイルのチェックサムをダウンロードサイトに表示されているチェックサムと比較します。

  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環境では、環境変数に 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

If you try to run SnowCD without passing in the JSON allow list information from SELECT SYSTEM$ALLOWLIST(), the following error message displays as a reminder to include the file, with the list of currently supported flags, their data type where applicable, and a brief description of the flag.

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 ファイルでトレースを表示できます。

最上部に戻る