공급자 계정에서 이벤트 테이블 설정 및 관리

이 항목에서는 공급자가 앱에 대한 이벤트 테이블을 설정하고 이벤트 공유를 관리하는 방법을 설명합니다.

각 리전의 공급자 조직에 이벤트 테이블 설정

컨슈머가 공유하는 로그 메시지와 추적 이벤트를 수집하려면 공급자가 다음을 수행하여 이벤트 테이블을 설정해야 합니다.

  1. 계정을 이벤트 계정으로 설정 합니다.

  2. 이벤트 계정에서 이벤트 테이블을 생성 합니다.

  3. 이벤트 계정에서 이벤트 테이블을 활성 이벤트 테이블로 설정 합니다.

중요

컨슈머가 앱을 설치하기 전에 앱이 설치된 리전 내에 공급자에게 이벤트 계정 및 활성 이벤트 테이블이 없는 경우, 추적 이벤트와 로그 메시지는 삭제됩니다.

계정을 이벤트 계정으로 설정하기

공유 로그와 이벤트를 저장하려면 공급자가 이벤트 테이블을 보관할 계정을 선택해야 합니다. 공급자가 액세스할 수 있는 임의의 계정일 수 있습니다. 그러나 조직에 애플리케이션 패키지를 게시하는 공급자가 여러 명 있는 경우에는 컨슈머의 공유 이벤트를 저장하는 전용 Snowflake 계정을 사용하는 것이 좋습니다.

공유 이벤트를 저장하는 데 사용되는 계정에는 다음과 같은 제한이 적용됩니다.

  • 이벤트를 저장하는 데 사용되는 계정으로 계정을 설정하려면 ORGADMIN 역할을 사용해야 합니다.

  • 계정에는 활성 이벤트 테이블이 있어야 합니다.

  • 지정된 계정은 다음 중 하나일 수 없습니다.

    • 잠기거나 일시 중단된 계정.

    • 독자 계정.

    • 평가판 계정.

    • Snowflake 관리 계정.

참고

공급자는 컨슈머가 앱을 설치한 리전과 동일한 리전에서만 로그와 공유 이벤트를 수집할 수 있습니다. 공급자는 컨슈머가 앱에 대한 이벤트 공유를 구성하는 모든 리전에서 공유 이벤트를 저장할 이벤트 계정을 설정해야 합니다.

계정을 리전의 이벤트 계정으로 설정하려면 다음 예제와 같이 SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION 시스템 함수를 호출합니다.

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

여기서

snowflake_region

계정이 위치한 리전을 지정합니다(예: AWS_US_WEST_2, AWS_US_EAST_1).

region_group

리전 그룹을 지정합니다(예: PUBLIC). 자세한 내용은 리전 그룹 섹션을 참조하십시오.

account_name

계정 이름을 지정합니다. 지정된 리전에서 다른 계정이 이미 이벤트 계정으로 설정된 경우 이 명령을 실행하면 이벤트 계정이 여기에 지정된 계정으로 변경됩니다.

이벤트 계정에서 이벤트 테이블 생성

이벤트 테이블을 생성하려면 다음 예제에서와 같이 CREATE EVENT TABLE 명령을 실행합니다.

CREATE EVENT TABLE event_db.event_schema.my_event_table;
Copy

이 명령은 이벤트 테이블이 포함된 데이터베이스와 스키마를 지정합니다.

이벤트 테이블을 활성 이벤트 테이블로 설정

한 계정에 여러 이벤트 테이블이 있을 수 있지만, 한 번에 1개의 이벤트 테이블만 Snowflake 계정에서 활성 이벤트 테이블로 설정할 수 있습니다. 활성 이벤트 테이블이 없으면 컨슈머가 공유하는 로그 메시지와 추적 이벤트가 삭제됩니다.

이벤트 테이블을 생성한 후 ALTER ACCOUNT … SET EVENT_TABLE 명령을 사용하여 이벤트 테이블이 계정의 활성 테이블임을 지정합니다.

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

계정을 이벤트 계정으로 설정 취소

계정을 리전의 이벤트 계정이 되도록 설정 취소하려면 SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION 시스템 함수를 호출합니다.

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

여기서

snowflake_region

계정이 위치한 리전을 지정합니다(예: AWS_US_WEST_2).

region_group

리전 그룹을 지정합니다(예: PUBLIC).

account_name

계정 이름을 지정합니다.

조직의 이벤트 계정 보기

공급자 조직의 이벤트 계정을 표시하려면 SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS 시스템 함수를 호출합니다.

SELECT SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS()
Copy

참고

이 함수를 호출하려면 ORGADMIN 역할을 사용해야 합니다.

이 시스템 함수는 조직 내의 이벤트 계정 목록이 포함된 문자열을 JSON 형식으로 반환합니다. 메타데이터가 모든 리전에 전파되려면 시간이 걸리므로, 사용자가 조직의 이벤트 계정을 설정하거나 설정 취소한 후 가장 최근의 이벤트 계정을 표시하기 전까지 이 함수에 약간의 지연이 발생할 수 있습니다.

애플리케이션 패키지에 정의된 로깅 및 추적 이벤트 수준 보기

다음 예제와 같이 앱의 패키지에 정의된 로깅 수준과 애플리케이션 버전을 보려면 SHOW VERSIONS 명령을 사용합니다.

SHOW VERSIONS
  IN APPLICATION PACKAGE HelloSnowflake;
Copy

이벤트 테이블에서 로그 및 이벤트 보기

이벤트 테이블에 저장된 로그와 이벤트를 보려면 다음 예와 같이 SELECT 명령을 사용하십시오.

SELECT * FROM EVENT_DB.EVENT_SCHEMA.MY_EVENT_TABLE
Copy

이벤트 테이블을 쿼리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.

이벤트 테이블의 열에 대한 자세한 내용은 이벤트 테이블 열 섹션을 참조하십시오.

공급자에게 제공되는 공유 이벤트 정보

다음 섹션에서는 Native Apps Framework가 공급자와 공유하는 정보를 설명합니다.

공급자와 공유되는 앱 이벤트 컨텍스트

공급자가 공유 이벤트의 원본을 쉽게 식별하는 데 도움이 되도록, 공급자와 공유 시 이벤트 테이블의 RESOURCE_ATTRIBUTES 열에 다음 필드가 채워집니다.

  • snow.application.package.name

  • snow.application.consumer.organization

  • snow.application.consumer.name

  • snow.listing.name

  • snow.listing.global_name

공급자와 공유되지 않는 필드

컨슈머 정보를 보호하기 위해, RESOURCE_ATTRIBUTES 열의 다음 필드는 공급자와 공유되지 않습니다.

  • 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

snow.database.namesnow.query.id 필드를 공급자와 직접 공유하는 대신, Snowflake는 이 두 필드의 해시 값(SHA-1)을 다음 필드로 공유합니다.

  • snow.database.hash

  • snow.query.hash

Snowflake는 이러한 특성을 마스킹하는 데 사용되는 SHA-1 함수 를 제공합니다. 컨슈머는 데이터베이스 이름과 쿼리 ID에 대한 해시 값을 계산하여 공급자에게 문의할 때 참조 값으로 사용할 수 있습니다.