Configuração e gerenciamento de uma tabela de evento na conta do provedor

Este tópico descreve como os provedores podem definir uma tabela de evento e gerenciar o compartilhamento de evento para um aplicativo.

Configuração de uma tabela de evento na organização do provedor em cada região

Para coletar mensagens de log e rastrear eventos que um consumidor compartilha, um provedor deve definir uma tabela de evento executando o seguinte:

  1. Defina uma conta como a conta de evento.

  2. Crie uma tabela de evento na conta de evento.

  3. Defina a tabela de evento como a tabela de evento ativa na conta de evento.

Importante

Se um provedor não tiver uma conta de evento e uma tabela de evento ativa na região onde o aplicativo está instalado antes que o consumidor instale um aplicativo, os eventos de rastreamento e as mensagens de log serão descartados.

Definição de uma conta como a conta de eventos

Para armazenar logs e eventos compartilhados, um provedor deve selecionar uma conta para manter uma tabela de eventos. Pode ser qualquer conta que um provedor possa acessar. No entanto, se uma organização tiver vários provedores publicando pacotes de aplicativos, considere usar uma conta Snowflake dedicada ao armazenamento de eventos compartilhados do consumidor.

As seguintes restrições se aplicam às contas usadas para armazenar eventos compartilhados:

  • Você deve usar a função ORGADMIN para definir uma conta como a conta usada para armazenar eventos.

  • A conta deve ter uma tabela de eventos ativos.

  • A conta especificada não pode ser nenhuma das seguintes opções:

    • Uma conta bloqueada ou suspensa.

    • Uma conta de leitor.

    • Uma conta de avaliação.

    • Uma conta gerenciada do Snowflake.

Nota

Um provedor pode coletar logs e eventos compartilhados somente na mesma região onde um consumidor instala um aplicativo. Os provedores devem definir uma conta de evento para armazenar eventos compartilhados em cada região onde os consumidores configuram o compartilhamento de evento para um aplicativo.

Para definir uma conta como a conta de evento de uma região, chame a função do sistema SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION, conforme mostrado no exemplo a seguir:

SELECT SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

Onde:

snowflake_region

Especifica o nome da região onde a conta está localizada, por exemplo: AWS_US_WEST_2, AWS_US_EAST_1

region_group

Especifica o grupo de regiões, por exemplo: PUBLIC. Consulte Grupos de regiões para obter detalhes.

account_name

Especifica o nome da conta. Se outra conta já estiver definida como a conta de eventos na região especificada, a execução desse comando altera a conta de eventos para a conta especificada aqui.

Criação de uma tabela de evento na conta de evento

Para criar uma tabela de evento, execute o comando CREATE EVENT TABLE, conforme mostrado no exemplo a seguir:

CREATE EVENT TABLE event_db.event_schema.my_event_table;
Copy

Este comando especifica o banco de dados e o esquema com a tabela de evento.

Definição da tabela de evento como a tabela de evento ativa

Uma conta pode ter várias tabelas de evento, mas apenas uma pode ser definida como a tabela de evento ativa em uma conta Snowflake por vez. Sem uma tabela de evento ativa, as mensagens de log e os eventos de rastreamento que o consumidor compartilha são descartados.

Após criar a tabela de evento, use ALTER … ACCOUNT … SET EVENT_TABLE para especificar que a tabela de evento é a tabela ativa para a conta:

ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
Copy

Remoção da definição de uma conta como conta de evento

Para remover a definição de uma conta como conta de evento para uma região, chame a função do sistema SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION:

SELECT SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

Onde:

snowflake_region

Especifica o nome da região onde a conta está localizada, por exemplo: AWS_US_WEST_2

region_group

Especifica o grupo de regiões, por exemplo: PUBLIC.

account_name

Especifica o nome da conta.

Exibição das contas de evento em uma organização

Para mostrar contas de evento na organização de um provedor, chame a função do sistema SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS:

SELECT SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS()
Copy

Nota

Você deve usar a função ORGADMIN para chamar essa função.

Esta função do sistema retorna uma string em formato JSON contendo uma lista de contas de eventos dentro da organização. Como os metadados levam algum tempo para serem propagados para todas as regiões, esta função pode ter um pequeno atraso antes de mostrar a conta de evento mais atual depois que o usuário define ou desfaz a conta de evento para a organização.

Exibição dos níveis de log e rastreamento de eventos definidos em um pacote de aplicativo

Use o comando SHOW VERSIONS para exibir o nível de registro em log das versões do aplicativo definidas em um pacote de aplicativo, conforme mostrado no exemplo a seguir:

SHOW VERSIONS
  IN APPLICATION PACKAGE HelloSnowflake;
Copy

Exibição dos logs e eventos na tabela de eventos

Para visualizar os logs e eventos armazenados na tabela de eventos, use o comando SELECT como mostrado no exemplo a seguir:

SELECT * FROM EVENT_DB.EVENT_SCHEMA.MY_EVENT_TABLE
Copy

Para obter mais informações sobre como consultar a tabela de evento, consulte o seguinte:

Consulte Colunas da tabela de eventos para obter informações sobre as colunas na tabela de evento.

Informações de eventos compartilhados disponíveis para o provedor

As seções a seguir descrevem as informações que o Native Apps Framework compartilha com os provedores.

Contexto do evento do aplicativo compartilhado com o provedor

Para ajudar os provedores a identificar facilmente a origem dos eventos compartilhados, os campos a seguir são preenchidos na coluna RESOURCE_ATTRIBUTES da tabela de eventos quando são compartilhados com o provedor:

  • snow.application.package.name

  • snow.application.consumer.organization

  • snow.application.consumer.name

  • snow.listing.name

  • snow.listing.global_name

Campos que não são compartilhados com o provedor

Para proteger as informações do consumidor, os seguintes campos da coluna RESOURCE_ATTRIBUTES não são compartilhados com o provedor:

  • snow.database.id

  • snow.database.name

  • snow.schema.id

  • snow.executable.id

  • snow.owner.name

  • snow.owner.id

  • snow.warehouse.name

  • snow.warehouse.id

  • snow.query.id

  • snow.session.id

  • snow.session.role.primary.name

  • snow.session.role.primary.id

  • snow.user.name

  • snow.user.id

  • db.user

Em vez de compartilhar diretamente os campos snow.database.name e snow.query.id com o provedor, o Snowflake compartilha os valores de hash (SHA-1) desses dois campos como os seguintes campos:

  • snow.database.hash

  • snow.query.hash

O Snowflake fornece a função SHA-1 usada para mascarar esses atributos. Os consumidores podem calcular os valores de hash para o nome do banco de dados e o ID da consulta e usá-los como valores de referência ao entrar em contato com o provedor.