컨슈머 계정에서 이벤트 공유에 대한 정보 확인하기¶
이 항목에서는 공급자가 컨슈머가 계정에서 이벤트 공유를 활성화했는지 확인하기 위해 앱을 설정하는 방법을 설명합니다.
시스템 함수를 사용하여 이벤트 정의 확인¶
공급자는 컨슈머 계정에서 이벤트 공유가 사용 설정되어 있는지 확인하기 위해 설정 스크립트 내에서 다음 시스템 함수를 호출할 수 있습니다.
SYSTEM$IS_APPLICATION_AUTHORIZED_FOR_TELEMETRY_EVENT_SHARING()
AUTHORIZE_TELEMETRY_EVENT_SHARING 속성이 설정된 경우 TRUE를 반환하며, 이는 컨슈머 계정에서 이벤트 공유가 허용됨을 나타냅니다. 그렇지 않으면 이 시스템 함수는 FALSE를 반환합니다.
SYSTEM$IS_APPLICATION_ALL_MANDATORY_TELEMETRY_EVENT_DEFINITIONS_ENABLED()
컨슈머 계정에서 필요한 모든 이벤트 정의가 활성화된 경우 TRUE를 반환합니다. 그렇지 않으면 이 시스템 함수는 FALSE를 반환합니다.
다음 예제는 IS_APPLICATION_AUTHORIZED_FOR_TELEMETRY_EVENT_SHARING 및 IS_APPLICATION_ALL_MANDATORY_TELEMETRY_EVENT_DEFINITIONS_ENABLED 가 모두 TRUE로 설정된 경우에만 계산을 수행하는 저장 프로시저를 보여줍니다.
CREATE OR ALTER VERSIONED SCHEMA app_schema;
CREATE OR REPLACE PROCEDURE app_schema.sum(num1 float, num2 float)
RETURNS STRING
LANGUAGE SQL
EXECUTE AS OWNER
AS $$
BEGIN
IF (SYSTEM$IS_APPLICATION_AUTHORIZED_FOR_TELEMETRY_EVENT_SHARING() and SYSTEM$IS_APPLICATION_ALL_MANDATORY_TELEMETRY_EVENT_DEFINITIONS_ENABLED()) THEN
RETURN num1 + num2;
ELSE
-- notify consumers that they need to enable event sharing
RETURN 'Sorry you can\'t access the API, please enable event sharing.';
END IF;
END;
$$;
권한 SDK를 사용한 이벤트 정의 확인¶
Python Permission SDK 는 컨슈머 계정에서 공유가 활성화되어 있는지 여부를 판단하는 다음 함수를 제공합니다.
is_application_authorized_for_telemetry_event_sharing()
AUTHORIZE_TELEMETRY_EVENT_SHARING 속성이
true
인 경우true
를 반환합니다. 그렇지 않으면,false
를 반환합니다.is_application_all_mandatory_telemetry_event_definitions_enabled()
컨슈머 계정에서 모든 필수 이벤트 정의가 활성화된 경우
true
를 반환합니다.
다음 예제는 Python Permission SDK 의 is_application_authorized_for_telemetry_event_sharing()
및 is_application_all_mandatory_telemetry_event_definitions_enabled()
함수를 사용하여 컨슈머 계정에서 이벤트 공유가 활성화되어 있고 필수 이벤트가 활성화되었는지 확인하는 방법을 보여줍니다.
import streamlit as st
import snowflake.permissions as permissions
def critical_feature_that_requires_event_sharing():
st.write("critical_feature_that_requires_event_sharing")
def main():
if permissions.is_application_authorized_for_telemetry_event_sharing() and permissions.is_application_all_mandatory_telemetry_event_definitions_enabled():
critical_feature_that_requires_event_sharing()
else:
permissions.request_event_sharing()
if __name__ == "__main__":
main()