PythonによるSnowflakeアカウントと管理アカウントの管理¶
Pythonを使って、Snowflakeのアカウントや管理アカウントを管理することができます。
前提条件¶
このトピックの例では、Snowflakeと接続するコードを追加して Root オブジェクトを作成し、そこからSnowflake Python Snowflake Python APIs を使用することを想定しています。
たとえば、以下のコードでは、構成ファイルで定義された接続パラメーターを使用してSnowflakeへの接続を作成します。
from snowflake.core import Root
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
出来上がった Session オブジェクトを使って、コードは API のタイプとメソッドを使う Root オブジェクトを作成します。詳細については、 Snowflake Python APIs によるSnowflakeへの接続 をご参照ください。
アカウントの管理¶
Snowflake組織のアカウントを管理できます。Snowflake のアカウントの概要については、 組織内のアカウントの管理 をご参照ください。
Snowflake Python APIs は、2つのタイプに分かれたアカウントを表します。
Account: 名前識別子、初期管理ユーザーのログイン名とパスワード、Snowflakeエディションなどのアカウントのプロパティを公開します。AccountResource:対応するAccountオブジェクトをドロップしたりリストアするために使用できるメソッドを公開します。
アカウントの作成¶
アカウントを作成するには、まず Account オブジェクトを作成し、次に API Root オブジェクトから AccountCollection オブジェクトを作成します。 AccountCollection.create を使って、新しいアカウントをSnowflakeに追加します。
以下の例のコードは、指定されたアカウント・プロパティを持つ my_account1 という名前のアカウントを表す Account オブジェクトを作成します。
from snowflake.core.account import Account
my_account = Account(
name="my_account1",
admin_name="admin",
admin_password="TestPassword1",
first_name="Jane",
last_name="Smith",
email="myemail@myorg.org",
edition="ENTERPRISE",
region="aws_us_west_2",
comment="creating my account",
)
root.accounts.create(my_account)
アカウントのリスト¶
Account オブジェクトの PagedIter 反復子を返す AccountCollection.iter メソッドを使用して、ウェアハウスをリストすることができます。
次の例のコードは、名前が my で始まるアカウントを一覧表示し、それぞれの名前を表示します。
account_iter = root.accounts.iter(like="my%") # returns a PagedIter[Account]
for account_obj in account_iter:
print(account_obj.name)
以下の例のコードは、まだ削除されていないドロップされたアカウントを含むアカウントの履歴をリストするために、オプションのパラメーター history=True を設定します。
account_iter = root.accounts.iter(history=True) # returns a PagedIter[Account]
for account_obj in account_iter:
print(account_obj.name)
アカウント操作の実行¶
AccountResource オブジェクトを使って、アカウントの削除や復元など、一般的なアカウント操作を行うことができます。
アカウント・リソースでできる操作を示すために、次の例のコードでは次のようにしています。
my_account1アカウントリソースオブジェクトを取得します。指定された猶予期間(アカウントが復元される(「undropped」)日数)でアカウントをドロップします。
指定された猶予期間内(つまり、永久に削除される前)に、ドロップされたアカウントを復元します。
my_account_res = root.accounts["my_account1"]
my_account_res.drop(grace_period_in_days=4)
my_account_res.undrop()
管理アカウントの管理¶
現在、データプロバイダーがコンシューマーのリーダーアカウントを作成するために使用しているSnowflake管理アカウントを管理します。詳細については、 リーダーアカウントを管理する をご参照ください。
Snowflake Python APIs は、2つのタイプに分かれた管理アカウントを表します。
ManagedAccount: 管理アカウントの名前識別子、初期管理ユーザーのログイン名とパスワード、アカウントタイプなどのプロパティを公開します。ManagedAccountResource:対応するManagedAccountオブジェクトをドロップするために使用できるメソッドを公開します。
管理アカウントの作成¶
ウェアハウスを作成するには、まず ManagedAccount オブジェクトを作成して、 API Root オブジェクトから ManagedAccountCollection オブジェクトを作成します。 ManagedAccountCollection.create を使用して、新しい管理アカウントをSnowflakeに追加します。
以下の例のコードは、指定されたアカウント・プロパティを持つ reader_acct1 という名前の管理アカウントを表す ManagedAccount オブジェクトを作成します。
from snowflake.core.managed_account import ManagedAccount
my_managed_account = ManagedAccount(
name="reader_acct1",
admin_name="admin",
admin_password="TestPassword1",
type="READER",
comment="creating my managed account",
)
root.managed_accounts.create(my_managed_account)
管理アカウントのリスト¶
ManagedAccount オブジェクトの PagedIter 反復子を返す ManagedAccountCollection.iter メソッドを使用して、ウェアハウスを一覧表示することができます。
以下の例のコードは、名前が reader で始まる管理アカウントを一覧表示し、それぞれの名前を表示します。
account_iter = root.managed_accounts.iter(like="reader%") # returns a PagedIter[ManagedAccount]
for account_obj in account_iter:
print(account_obj.name)
管理アカウントのドロップ¶
ManagedAccountResource オブジェクトで管理アカウントを削除することができます。
次の例のコードは、 reader_acct1 管理アカウント・リソース・オブジェクトを取得し、アカウントを削除します。
my_managed_account_res = root.managed_accounts["reader_acct1"]
my_managed_account_res.drop()