シークレットへのアクセスのための API 参照情報¶
JavaまたはPythonを使用して、 CREATE SECRET ステートメントで作成したシークレットに含まれる認証情報を取得することができます。このトピックでは、シークレットから情報を取得する方法を示します。これらはSnowflakeに含まれる APIs で利用できます。
シークレットアクセスのための Java API¶
Javaのコードでは、 com.snowflake.snowpark_java.types.SnowflakeSecrets クラスを使います。
次のテーブルは、シークレット内のデータにアクセスするためのメソッドをリストしたものです。
メソッド  | 
説明  | 
|---|---|
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
AWS など、クラウドプロバイダーとのセッションを作成するために使用できる値を含むクラウドプロバイダーのトークンを取得します。以下のメソッドを持つ  
  | 
SnowflakeSecrets クラスを使うには
CREATE FUNCTION に記載されているように、 PACKAGES 句を使用してハンドラーコードでSnowparkライブラリを使用できるようにします。
ハンドラーコードで、
com.snowflake.snowpark_java.types.SnowflakeSecretsをインポートします。SnowflakeSecretsオブジェクトを作成し、上記のメソッドのいずれかを呼び出してシークレットにアクセスします。
次の例のコードは、 TYPE 句に設定された値を CREATE SECRET でシークレットを作成したときに取得します。ここで、 oauth_token のシークレットは、 OAUTH2 型です。
CREATE OR REPLACE FUNCTION get_secret_type()
  RETURNS STRING
  LANGUAGE JAVA
  HANDLER = 'SecretTest.getSecretType'
  EXTERNAL_ACCESS_INTEGRATIONS = (external_access_integration)
  PACKAGES = ('com.snowflake:snowpark:latest')
  SECRETS = ('cred' = oauth_token )
  AS
  $$
  import com.snowflake.snowpark_java.types.SnowflakeSecrets;
  public class SecretTest {
    public static String getSecretType() {
      SnowflakeSecrets sfSecrets = SnowflakeSecrets.newInstance();
      String secretType = sfSecrets.getSecretType("cred");
      return secretType;
    }
  }
  $$;
シークレットアクセスのためのPython API¶
Pythonのコードには、Snowflake内で実行されるPython UDFs に公開される _snowflake モジュールを使用します。次のテーブルは、シークレット内のデータにアクセスするための _snowflake 関数をリストしたものです。
関数  | 
説明  | 
|---|---|
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
AWS のような、クラウド・プロバイダーとのセッションを作成するために使用できる値を含むクラウド・プロバイダー・オブジェクトを取得します。以下の属性を持つ型を返します。 
  | 
ハンドラーコードで _snowflake モジュールを使うには、他のモジュールと同じようにインポートします。
次の例のコードは、 TYPE 句に設定された値を CREATE SECRET でシークレットを作成したときに取得します。ここで、 oauth_token のシークレットは、 OAUTH2 型です。
CREATE OR REPLACE FUNCTION get_secret_type()
  RETURNS STRING
  LANGUAGE PYTHON
  RUNTIME_VERSION = 3.9
  HANDLER = 'get_secret'
  EXTERNAL_ACCESS_INTEGRATIONS = (external_access_integration)
  SECRETS = ('cred' = oauth_token )
  AS
$$
import _snowflake
def get_secret():
  secret_type = _snowflake.get_secret_type('cred')
  return secret_type
$$;
以下の例のコードは、シークレットで保持されているユーザー名とパスワードを取得します。
CREATE OR REPLACE FUNCTION get_secret_username_password()
  RETURNS STRING
  LANGUAGE PYTHON
  RUNTIME_VERSION = 3.9
  HANDLER = 'get_secret_username_password'
  EXTERNAL_ACCESS_INTEGRATIONS = (external_access_integration)
  SECRETS = ('cred' = credentials_secret )
  AS
$$
import _snowflake
def get_secret_username_password():
  username_password_object = _snowflake.get_username_password('cred');
  username_password_dictionary = {}
  username_password_dictionary["Username"] = username_password_object.username
  username_password_dictionary["Password"] = username_password_object.password
  return username_password_dictionary
$$;