SnowCD (Connectivity Diagnostic Tool)

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

このトピックの内容:

概要

SnowCD Snowflakeへのネットワーク接続の評価とトラブルシューティングに役立つ一連の接続チェックを実行するために、 SYSTEM$WHITELIST() または SYSTEM$WHITELIST_PRIVATELINK() 関数からリストされるSnowflakeホスト名 IP アドレスとポートを活用します。

重要

Snowflakeアカウントで AWS PrivateLink または Azure Private Link を使用している場合は、 SYSTEM$WHITELIST_PRIVATELINK 関数を実行してSnowflakeホスト名 IP アドレスとポートを取得し、Snowflakeへのネットワーク接続を評価およびトラブルシューティングします。

詳細については、 AWS PrivateLink とSnowflake および Azure Private Linkと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. Linuxオペレーティングシステム の 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. Apple(つまり、mac64)オペレーティングシステム の認証された SnowCD pkg ファイルの最新バージョンをダウンロードします。

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

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

    $ shasum -a 256 <filename>
    
  4. ファイルを抽出します。

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

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

    mv <filename> snowcd
    

Windows

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

  1. Windows(つまり、win64)オペレーティングシステム の最新バージョン SnowCD (つまり、 snowcd)をダウンロードします。

  2. Windowsインストーラーを使用して MSI ファイルを実行します。

ステップ3: SnowCD を実行する

macOS およびLinux環境で SnowCD を実行する前に、そのディレクトリを $PATH に追加できます。Windows環境では、環境変数に SnowCD を追加できます。

  1. macOS またはLinux環境のコマンドラインから、 ./snowcd <path_to_whitelist.json> [flags] を実行します。

  2. Windows環境では、 snowcd.exe <path_to_whitelist.json> [flags] を実行します。

ちなみに

snowcd がサポートするフラグの詳細については、 snowcd -h を実行してください。

すべてのチェックが有効な場合、 SnowCD は次のようにメッセージ All checks passed でホスト数のチェック数を返します。

Performing 30 checks on 12 hosts
All checks passed

SELECT SYSTEM$WHITELIST()から JSON ホワイトリスト情報を渡さずに SnowCD を実行しようとすると、現在サポートされているフラグのリスト、該当する場合はそのデータタイプ、およびフラグの簡単な説明とともに、ファイルを含めることを示すリマインダーとして次のエラーメッセージが表示されます。

Error: please provide whitelist generated by SYSTEM$WHITELIST()
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 whitelist.json \
  --proxyHost <hostname> \
  --proxyPort <port_number> \
  --proxyUser <username> \
  --proxyPassword <password>

ロギングはオプションであり、2つのロギングフラグをプロキシコマンドに追加できます。コマンドの実行時にログが記録されるように、ログファイルへのパスを含めることが重要です。

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

このコマンドを実行すると、 test.log ファイルでトレースを表示できます。