外部ネットワークアクセスの制限

このトピックでは、ユーザー定義関数およびプロシージャから外部ネットワークロケーションにアクセスする際の制限について説明します。

制限事項

  • 現在、JavaまたはPythonのみで記述されたハンドラーが、Snowflakeの外部ネットワークのロケーションにアクセスできます。

  • パブリックインターネット上にない外部ネットワークロケーションは、外部アクセスに対応していません。例えば、仮想プライベートネットワーク(VPN)や仮想ネットワーク(VNet)の背後にあるロケーションは、UDF やプロシージャから到達することはできません。

  • ネットワークルール のVALUE_LIST 値にワイルドカードを使用する場合、次のようなワイルドカードの使用は無効です。

    • snowflake.*.google.com

      アスタリスクは英数字とハイフンのみに使用できるため、 snowflake.sub1.sub2.google.com には使用できません。

    • *.*.google.com

      ワイルドカードに複数のアスタリスクがあるため無効です。

    • *.com

      アスタリスクはセカンダリ レベル ドメインにマッチしないため無効です。

  • PASSWORD タイプの シークレット を使用する場合、コロン文字 (:) は USERNAME または PASSWORD パラメーターではサポートされません。

  • ハンドラーコード内では、プロシージャのメインスレッドまたは UDF から シークレット API にアクセスする必要があります。ハンドラーコードが新しいスレッドをフォークし、そこからシークレット API を使用しようとすると、次のようなエラーが表示されます。

    Secrets can only be accessed from the main thread.
    

    たとえば、以下のPythonコードはエラーを生成します。

    with ThreadPoolExecutor(max_workers=1) as executor:
      futures = [executor.submit(function, get_generic_secret)]
    
    Copy
  • デフォルトでは、Snowflake は トライアルアカウント に対して外部アクセスを有効にしません。トライアルアカウントで外部アクセスを有効にするには、アカウント担当者にお問い合わせください。

  • Snowflakeは、ストアドプロシージャまたは UDF から任意の宛先へのイグレスを許可する方法として、ネットワークルールで 0.0.0.0 を指定することをサポートしていません。