外部ネットワークアクセスの制限¶
このトピックでは、ユーザー定義関数およびプロシージャから外部ネットワークロケーションにアクセスする際の制限について説明します。
制限事項¶
現在、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)]
デフォルトでは、Snowflake は トライアルアカウント に対して外部アクセスを有効にしません。トライアルアカウントで外部アクセスを有効にするには、アカウント担当者にお問い合わせください。
Snowflakeは、ストアドプロシージャまたは UDF から任意の宛先へのイグレスを許可する方法として、ネットワークルールで
0.0.0.0
を指定することをサポートしていません。