シークレットへのアクセスのための API 参照情報¶
JavaまたはPythonを使用して、 CREATE SECRET ステートメントで作成したシークレットに含まれる認証情報を取得することができます。このトピックでは、シークレットから情報を取得する方法を示します。これらはSnowflakeに含まれる APIs で利用できます。
シークレットアクセスのための Java API¶
Javaのコードでは、 com.snowflake.snowpark_java.types.SnowflakeSecrets
クラスを使います。
次のテーブルは、シークレット内のデータにアクセスするためのメソッドをリストしたものです。
メソッド |
説明 |
---|---|
|
|
|
|
|
|
|
|
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
関数をリストしたものです。
関数 |
説明 |
---|---|
|
|
|
|
|
|
|
|
ハンドラーコードで _snowflake
モジュールを使うには、他のモジュールと同じようにインポートします。
次の例のコードは、 TYPE 句に設定された値を CREATE SECRET でシークレットを作成したときに取得します。ここで、 oauth_token
のシークレットは、 OAUTH2 型です。
CREATE OR REPLACE FUNCTION get_secret_type()
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = 3.8
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.8
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
$$;