Python을 사용하여 Snowflake 계정 및 관리 계정 관리

Python을 사용하여 Snowflake에서 계정 및 관리되는 계정을 관리할 수 있습니다.

전제 조건

이 항목의 예제에서는 Snowflake와 연결하고 Snowflake Python APIs 을 사용할 수 있는 Root 오브젝트를 생성하는 코드를 추가했다고 가정합니다.

예를 들어, 다음 코드는 구성 파일에 정의된 연결 매개 변수를 사용하여 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 은 다음 두 가지 별도의 유형의 계정을 나타냅니다.

  • 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. 지정된 유예 기간 동안 계정을 삭제합니다. 유예 기간이란 계정을 복구할 수 있는 일수(“삭제 취소”)를 말합니다.

  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 은 두 가지 별도의 유형으로 관리되는 계정을 나타냅니다.

  • 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