Gerenciamento de contas Snowflake e contas gerenciadas com Python

É possível usar Python para gerenciar contas e contas gerenciadas no Snowflake.

Pré-requisitos

Os exemplos neste tópico pressupõem que você tenha adicionado código para se conectar ao Snowflake e criar um objeto Root a partir do qual usar o Snowflake Python APIs.

Por exemplo, o seguinte código usa parâmetros de conexão definidos em um arquivo de configuração para criar uma conexão com o Snowflake:

from snowflake.core import Root
from snowflake.snowpark import Session

session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Copy

Usando o objeto Session resultante, o código cria um objeto Root para usar os tipos e métodos de API. Para obter mais informações, consulte Conexão ao Snowflake com o Snowflake Python APIs.

Gerenciamento de contas

É possível gerenciar contas na sua organização Snowflake. Para uma visão geral das contas em Snowflake, consulte Gerenciamento de contas em sua organização.

O Snowflake Python APIs representa contas com dois tipos separados:

  • Account: Expõe as propriedades de uma conta, como seu identificador de nome, o nome de login e a senha de seu usuário administrativo inicial e sua edição Snowflake.

  • AccountResource: Expõe métodos que você pode usar para buscar um objeto Account correspondente e para descartar e restaurar a conta.

Criação de uma conta

Para criar uma conta, primeiro crie um objeto Account e depois crie um objeto AccountCollection a partir do objeto Root da API. Usando AccountCollection.create, adicione a nova conta ao Snowflake.

O código no exemplo a seguir cria um objeto Account que representa uma conta nomeada my_account1 com as propriedades de conta especificadas:

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

Obtenção de detalhes da conta

É possível obter informações sobre uma conta chamando o método AccountResource.fetch, que retorna um objeto Account.

O código no exemplo a seguir obtém informações sobre uma conta nomeada my_account1:

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

Contas de listagem

É possível listar contas usando o método AccountCollection.iter, que retorna um iterador PagedIter de objetos Account.

O código no exemplo a seguir lista contas cujos nomes começam com my e imprime o nome de cada uma:

account_iter = root.accounts.iter(like="my%")  # returns a PagedIter[Account]
for account_obj in account_iter:
  print(account_obj.name)
Copy

O código no exemplo a seguir define o parâmetro opcional history=True para listar um histórico de contas, incluindo contas descartadas que ainda não foram excluídas.

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

Execução de operações de conta

É possível executar operações comuns de conta – como descartar e restaurar uma conta – com um objeto AccountResource.

Para demonstrar as operações que podem ser feitas com um recurso de conta, o código no exemplo a seguir faz o seguinte:

  1. Busca o objeto de recurso da conta my_account1.

  2. Exclui a conta com o período de cortesia especificado, que é o número de dias durante os quais a conta pode ser restaurada.

  3. Restaura a conta.

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

Administração de contas gerenciadas

É possível administrar contas gerenciadas Snowflake, que atualmente são usadas por provedores de dados para criar contas de leitores para seus consumidores. Para obter mais informações, consulte Gerenciamento de contas de leitor.

O Snowflake Python APIs representa contas gerenciadas com dois tipos separados:

  • ManagedAccount: Expõe as propriedades de uma conta gerenciada, como seu identificador de nome, o nome de login e a senha do usuário administrativo inicial, bem como seu tipo de conta.

  • ManagedAccountResource: Expõe métodos que podem ser usados para buscar um objeto ManagedAccount correspondente e descartar a conta gerenciada.

Criação de uma conta gerenciada

Para criar uma conta gerenciada, primeiro crie um objeto ManagedAccount e, em seguida, crie um objeto ManagedAccountCollection a partir do objeto Root da API. Usando ManagedAccountCollection.create, adicione a nova conta gerenciada ao Snowflake.

O código no exemplo a seguir cria um objeto ManagedAccount que representa uma conta gerenciada nomeada reader_acct1 com as propriedades de conta especificadas:

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

Como obter detalhes da conta gerenciada

É possível obter informações sobre uma conta gerenciada chamando o método ManagedAccountResource.fetch, que retorna um objeto ManagedAccount.

O código no exemplo a seguir obtém informações sobre uma conta gerenciada nomeada reader_acct1:

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

Listagem de contas gerenciadas

É possível listar contas gerenciadas usando o método ManagedAccountCollection.iter, que retorna um iterador PagedIter de objetos ManagedAccount.

O código no exemplo a seguir lista contas gerenciadas cujos nomes começam com reader e imprime o nome de cada uma:

account_iter = root.managed_accounts.iter(like="reader%")  # returns a PagedIter[ManagedAccount]
for account_obj in account_iter:
  print(account_obj.name)
Copy

Cancelamento de uma conta gerenciada

É possível descartar uma conta gerenciada com um objeto ManagedAccountResource.

O código no exemplo a seguir busca o objeto de recurso da conta gerenciada reader_acct1 e, em seguida, descarta a conta.

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