Streamlit in Snowflake の外部ネットワークアクセス¶
このトピックでは、Snowflake外部のネットワーク場所への安全なアクセスを作成する方法について説明します。
Streamlit in Snowflake の外部ネットワークアクセス¶
Snowflakeの外部にある特定のネットワークロケーションへの安全なアクセスを作成し、Streamlitアプリのコード内からそのアクセスを使用できるようになりました。アクセスは、外部アクセス統合を介して有効にすることができます。
Streamlit アプリが外部アクセス統合( EAI )を使用できるようにするには、 CREATE STREAMLIT または ALTER STREAMLIT コマンドを実行し、 EXTERNAL_ACCESS_INTEGRATIONS パラメーターをその EAI を含めるように設定します。
EAI を使えば、 requests や urllib のような、外部の場所にアクセスするPythonライブラリを使ったり、ネットワーク場所へのアクセスを必要とするサードパーティのライブラリを使ったりすることができます。
詳細については、 外部ネットワークアクセスの概要 をご参照ください。
例: OpenAI API にアクセスする¶
次の例は、 OpenAI API へのアウトバウンドリクエストのために、 EAI を作成する方法を示しています。
外部ネットワークの場所とアクセス制限を表すネットワークルールを作成するには、 CREATE NETWORK RULE コマンドを使用します。
CREATE OR REPLACE NETWORK RULE network_rules MODE = EGRESS TYPE = HOST_PORT VALUE_LIST = ('api.openai.com');
詳細については、 外部ネットワークロケーションを表すネットワークルールの作成 をご参照ください。
外部ネットワーク拠点との認証情報に相当するシークレットを作成するには、 CREATE SECRET コマンドを使用します。
CREATE OR REPLACE SECRET openai_key TYPE = GENERIC_STRING SECRET_STRING = '<any_string>';
詳細については、 認証情報を表すシークレットの作成 をご参照ください。
EAI を作成するには、 CREATE EXTERNAL ACCESS INTEGRATION コマンドを実行し、 ALLOWED_NETWORK_RULES を作成したネットワークルールに、 ALLOWED_AUTHENTICATION_SECRETS を作成したシークレットに設定します。
CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION openai_access_int ALLOWED_NETWORK_RULES = (network_rules) ALLOWED_AUTHENTICATION_SECRETS = (openai_key) ENABLED = TRUE;
Streamlit アプリ作成者に外部アクセス用の SECRET および INTEGRATION オブジェクトを使用するために必要な権限を付与するには、 GRANT <権限> ... TO ROLE コマンドを使用します。
GRANT READ ON SECRET openai_key TO ROLE streamlit_app_creator_role; GRANT USAGE ON INTEGRATION openai_access_int TO ROLE streamlit_app_creator_role;
Streamlit アプリが統合を使用できるようにするには、 ALTER STREAMLIT コマンドを実行し、 EXTERNAL_ACCESS_INTEGRATIONS プロパティを統合にセットします。
USE ROLE streamlit_app_creator_role; ALTER STREAMLIT streamlit_db.streamlit_schema.streamlit_app SET EXTERNAL_ACCESS_INTEGRATIONS = (openai_access_int) SECRETS = ('my_openai_key' = streamlit_db.streamlit_schema.openai_key);
注釈
CREATE STREAMLIT コマンドの実行時に EXTERNAL_ACCESS_INTEGRATIONS パラメーターを指定することで、外部アクセス統合を使用する新しい Streamlit オブジェクトをセットアップすることもできます。
CREATE STREAMLIT streamlit_db.streamlit_schema.streamlit_app ROOT_LOCATION = '<stage_path_and_root_directory>' MAIN_FILE = '<path_to_main_file_in_root_directory>' EXTERNAL_ACCESS_INTEGRATIONS = (openai_access_int) SECRETS = ('my_openai_key' = streamlit_db.streamlit_schema.openai_key);
Streamlit アプリのコードで、外部 API を呼び出します。
from openai import OpenAI import streamlit as st import _snowflake st.title(":speech_balloon: Simple chat app using an external LLM") st.write("This app shows how to call an external LLM to build a simple chat application.") # Use the _snowflake library to access secrets secret = _snowflake.get_generic_secret_string('my_openai_key') client = OpenAI(api_key=secret) # ... # code to use API # ...