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)
Copy

出来上がった 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)
Copy

アカウント詳細の取得

Account オブジェクトを返す AccountResource.fetch メソッドを呼び出すことで、イメージリポジトリに関する情報を取得できます。

次の例のコードは、 my_account1 という名前の管理アカウントに関する情報を取得します。

my_account = root.accounts["my_account1"].fetch()
print(my_account.to_dict())
Copy

アカウントのリスト

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)
Copy

以下の例のコードは、まだ削除されていないドロップされたアカウントを含むアカウントの履歴をリストするために、オプションのパラメーター history=True を設定します。

account_iter = root.accounts.iter(history=True)  # returns a PagedIter[Account]
for account_obj in account_iter:
  print(account_obj.name)
Copy

アカウント操作の実行

AccountResource オブジェクトを使用して、アカウントの削除や削除解除など、一般的なアカウント操作を行うことができます。

アカウント・リソースでできる操作を示すために、次の例のコードでは次のようにしています。

  1. my_account1 アカウント・リソース・オブジェクトを取得します。

  2. 指定された猶予期間(アカウントが復元される(「undropped」)日数)でアカウントをドロップします。

  3. アカウントをアンドロップします。

my_account_res = root.accounts["my_account1"]
my_account_res.drop(grace_period_in_days=4)
my_account_res.undrop()
Copy

管理アカウントの管理

現在、データプロバイダーがコンシューマーのリーダーアカウントを作成するために使用している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)
Copy

管理アカウントの詳細を取得する

ManagedAccount オブジェクトを返す ManagedAccountResource.fetch メソッドを呼び出すことで、データベースに関する情報を取得できます。

次の例のコードは、 reader_acct1 という名前の管理アカウントに関する情報を取得します。

my_managed_account = root.managed_accounts["reader_acct1"].fetch()
print(my_managed_account.to_dict())
Copy

管理アカウントのリスト

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)
Copy

管理アカウントのドロップ

ManagedAccountResource オブジェクトで管理アカウントを削除することができます。

次の例のコードは、 reader_acct1 管理アカウント・リソース・オブジェクトを取得し、アカウントをドロップします。

my_managed_account_res = root.managed_accounts["reader_acct1"]
my_managed_account_res.drop()
Copy