访问密钥的 API 参考¶
You can use Java, Python, or Scala to retrieve credentials contained in a secret you created with the CREATE SECRET statement. This topic lists the methods for getting information from a secret. These are available with APIs included in Snowflake.
用于密钥访问的 Java API¶
对于 Java 代码,请使用 com.snowflake.snowpark_java.types.SnowflakeSecrets 类。
备注
您也可以在 Scala 代码中使用 Java API。
下表列出了访问密钥中数据的方法。
方法 |
描述 |
|---|---|
|
获取 |
|
获取 |
|
获取 |
|
从 |
|
获取云提供商令牌,其中包含在创建与云提供商(例如 AWS)的会话时使用的值。使用以下方法返回
|
要使用 SnowflakeSecrets 类,请执行以下操作:
如 CREATE FUNCTION 中所述,使用 PACKAGES 子句使 Snowpark 库对处理程序代码可用。
在处理程序代码中,导入
com.snowflake.snowpark_java.types.SnowflakeSecrets。构造
SnowflakeSecrets对象,并调用上面列出的方法之一来访问密钥。
以下示例中的代码在使用 CREATE SECRET 创建密钥时检索 TYPE 子句的值集。其中,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 模块,请像导入其他模块一样导入该模块。
以下示例中的代码在使用 CREATE SECRET 创建密钥时检索 TYPE 子句的值集。其中,oauth_token 密钥的类型是 OAUTH2。
CREATE OR REPLACE FUNCTION get_secret_type()
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = 3.12
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.12
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
$$;