콜백

이 항목에서는 앱 간 통신에 사용할 수 있는 콜백에 대해 설명합니다.

Snowflake Native App Framework 는 앱 수명 주기를 관리하는 데 도움이 되는 콜백을 제공합니다. 이러한 콜백을 사용하여 앱의 기능과 워크플로를 개선할 수 있습니다.

콜백을 사용하려면 다음 예제와 같이 콜백을 매니페스트 파일의 lifecycle_callbacks 섹션에 추가합니다.

lifecycle_callbacks:
    before_configuration_change: app_schema.before_config_change_callback
Copy

콜백의 유형

Snowflake Native App Framework 는 동기 및 비동기 콜백을 제공합니다.

동기 콜백

동기 콜백은 SQL 명령 트리거의 일부로 호출됩니다. 동기 콜백은 SQL 명령 호출을 차단합니다. 콜백이 오류를 반환하면 명령은 오류를 반환하고 콜백의 오류 메시지는 명령의 SQL 오류 메시지의 일부로 반환됩니다.

동기 콜백은 웨어하우스에서 실행되므로 호출 프로시저에는 세션 웨어하우스가 설정되어 있어야 합니다.

비동기 콜백

비동기 콜백은 SQL 명령 호출 후 백그라운드에서 실행됩니다. 비동기 콜백은 SQL 명령 호출을 차단하지 않으며, 비동기 콜백의 오류는 호출하는 명령에 의해 반환되지 않습니다.

비동기 콜백에 최신 정보가 포함되도록 보장하기 위해 콜백 서명은 상태 또는 상태 정보를 제공하지 않습니다. 대신, 콜백은 SHOW CONFIGURATIONS 또는 :doc:`SHOW SPECIFICATIONS </sql-reference/sql/show-specifications>`와 같은 적절한 SQL 명령을 사용하여 최신 정보를 검색해야 합니다. 자세한 내용은 각 비동기 콜백에 대한 설명을 참조하세요.

비동기 콜백의 반환 값은 무시됩니다.

조심

비동기 콜백의 실행 순서는 보장되지 않습니다. 앱은 작업을 수행하기 위해 비동기 콜백의 순서에 의존해서는 안 됩니다.

권한

이 항목에 나열된 콜백 프로시저는 애플리케이션 역할에 부여할 필요가 없습니다. 프로시저는 앱 내부에 있을 수 있으며 컨슈머가 실행할 필요가 없습니다. Snowflake Native App Framework 는 콜백을 트리거합니다.

사양 및 연결 콜백

after_specification_changeafter_server_connection_change 모두 사양이 승인되거나 거부될 때 실행됩니다. 두 콜백의 차이점은 다음과 같습니다.

  • :ref:`label-native_apps_specification_callbacks_after_specification_change`는 애플리케이션 사양 프레임워크의 일부입니다. 컨슈머가 사양 요청을 승인하거나 거부할 때만 트리거됩니다.

  • :ref:`label-native_apps_connection_callbacks_after_server_connection_change`는 앱 간 통신 프레임워크의 일부입니다. 다음을 포함하여 애플리케이션 사양의 연결 상태에 직접 또는 간접적으로 영향을 미치는 모든 작업에 의해 트리거됩니다.

    • 사양 승인하기

    • 승인된 사양 거부하기

    • 승인된 사양 삭제하기

    • 서버 앱 삭제하기

연결 설정, 손실 또는 서버 앱 삭제와 같이 앱이 연결 자체의 변경 사항에 응답해야 하는 경우 after_server_connection_change 를 사용합니다. 이 콜백은 사양 승인만 사용할 때보다 더 광범위한 이벤트를 다루기 때문에 더 나은 연결 추적을 제공합니다.

앱이 사양 요청의 승인 또는 거부에만 응답해야 하거나 CONNECTION 이외의 애플리케이션 사양 유형을 처리하는 경우 after_specification_change 를 사용합니다.

콜백 참조

Snowflake Native Apps 에 대해 제공되는 콜백 카테고리는 다음과 같습니다.

구성 콜백

이러한 콜백은 :doc:`구성 </developer-guide/native-apps/app-configuration>`이 변경될 때 트리거됩니다.

validate_configuration_change

이 콜백은 동기 콜백입니다.

이 콜백은 ALTER APPLICATION SET CONFIGURATION VALUE 명령의 일부로 호출됩니다. 이 콜백을 통해 앱은 서버 앱에서 제공한 값에 대해 추가 사용자 지정 유효성 검사를 수행할 수 있습니다. 구문 오류와 같이 콜백이 실패하거나 콜백이 오류를 반환하는 경우 set 명령이 실패하고 새 값이 설정되지 않습니다.

서명
validate_configuration_change(configuration_name, configuration_value)
Copy
매개 변수
  • configuration_name: 구성 오브젝트의 이름입니다.

  • configuration_value: 서버 앱에서 제공하는 값입니다.

반환 값

콜백은 다음 JSON 형식에서 문자열을 반환하여 유효성 검사 성공 또는 오류를 나타냅니다.

{
  "type": "SUCCESS | ERROR",
  "payload":{
      "error_message": "Error message indicating the validation failure"
  }
}
Copy

함수가 ERROR`의 :code:`type`을 반환하는 경우 오류 메시지는 :code:`SET 명령에 대한 SQL 오류 메세지의 일부로 반환됩니다. 함수가 :code:`SUCCESS`의 :code:`type`을 반환하는 경우 오류 메시지는 무시됩니다.

before_configuration_change

이 콜백은 동기 콜백입니다. 이 콜백은 ALTER APPLICATION SET CONFIGURATION VALUEALTER APPLICATION UNSET CONFIGURATION 명령의 일부로 호출됩니다. 이 콜백을 통해 앱은 설정된 구성 값에 따라 추가 작업을 수행할 수 있습니다. 콜백에 전달된 값은 ALTER APPLICATION UNSET CONFIGURATION 명령에 대해 null입니다.

서명
before_configuration_change(configuration_name, configuration_value)
Copy
매개 변수
  • configuration_name: 구성 오브젝트의 이름입니다.

  • configuration_value: 서버 앱에서 제공하는 값입니다.

반환 값

콜백의 반환 값은 무시됩니다.

after_configuration_change

이 콜백은 비동기 콜백입니다. 이 콜백은 ALTER APPLICATION SET CONFIGURATION VALUEALTER APPLICATION UNSET CONFIGURATION 명령이 완료된 이후에 호출됩니다. 이 콜백을 사용하면 서버 앱에서 값이 제공될 때 클라이언트 앱에 알림이 제공됩니다.

서명
after_configuration_change(configuration_name)
Copy
매개 변수
  • configuration_name: 구성 오브젝트의 이름입니다.

최신 상태 검색

콜백에서 다음 코드 조각을 사용하여 구성의 현재 상태와 값을 검색할 수 있습니다.

session.sql(f"""
  SHOW CONFIGURATIONS ->>
      SELECT "status", "value"
      FROM $1
      WHERE "name" = '{configuration_name}';
  """);
Copy

연결 콜백

이러한 콜백은 연결 상태가 변경될 때 트리거됩니다.

after_server_connection_change

이 콜백은 비동기 콜백입니다. 이 콜백은 다음을 포함하여 애플리케이션 사양의 연결 상태에 직접 또는 간접적으로 영향을 미치는 모든 작업에 의해 트리거됩니다.

  • 사양 승인하기

  • 승인된 사양 거부하기

  • 승인된 사양 삭제하기

  • 서버 앱 삭제하기

서명
after_server_connection_change(server_name)
Copy
매개 변수
  • server_name: 연결이 변경된 서버 앱의 이름입니다.

최신 상태 검색

콜백에서 다음 코드 조각은 서버 앱에 대한 현재 연결 상태를 검색합니다.

session.sql(f"""
  SHOW SPECIFICATIONS ->>
  SELECT "status"
  FROM $1
  WHERE PARSE_JSON("definition"):"SERVER_APPLICATION"::STRING = '{server_name}';
  """);
Copy

after_client_connection_change

이 콜백은 비동기 콜백입니다. 이 콜백은 다음을 포함하여 애플리케이션 사양의 연결 상태에 직접 또는 간접적으로 영향을 미치는 모든 작업에 의해 트리거됩니다.

  • 사양 승인하기

  • 승인된 사양 거부하기

  • 승인된 사양 삭제하기

  • 클라이언트 앱 삭제하기

서명
after_client_connection_change(client_name)
Copy
매개 변수
  • client_name: 연결이 변경된 클라이언트 앱의 이름입니다.

최신 상태 검색

콜백에서 다음 코드 조각은 클라이언트 앱에 부여된 역할(있는 경우)을 검색합니다.

session.sql(f"""
  SHOW GRANTS TO APPLICATION {client_name} ->>
  SELECT "name"
  FROM $1
  WHERE "granted_on" = 'APPLICATION_ROLE'
      AND STARTSWITH("name", CURRENT_DATABASE())
  """);
Copy

after_server_version_change

이 콜백은 비동기 콜백입니다. 이 콜백은 서버 앱의 버전 또는 패치 번호가 변경된 이후에 호출됩니다. 이를 통해 클라이언트 앱이 업그레이드 또는 다운그레이드에 대응할 수 있습니다.

서명
after_server_version_change(server_name)
Copy
매개 변수
  • server_name: 버전이 변경된 서버 앱의 이름입니다.

최신 상태 검색

콜백에서 다음 코드 조각을 사용하여 서버 앱의 현재 버전을 검색할 수 있습니다.

session.sql(f"""
  SHOW APPLICATIONS ->>
  SELECT "version", "patch"
  FROM $1
  WHERE "name" = {server_name}
  """);
Copy

사양 콜백

모든 유형의 사양에 상태 변경이 있을 때 콜백이 트리거됩니다.

  • after_specification_change

after_specification_change

이 콜백은 비동기 콜백입니다. 이 콜백은 ALTER APPLICATION APPROVE SPECIFICATION 또는 ALTER APPLICATION DECLINE SPECIFICATION 명령이 완료된 이후에 호출됩니다. 이 콜백을 사용하면 사양 상태가 변경될 때 앱에 알림을 보낼 수 있습니다.

이 콜백은 specification_action 콜백의 기능을 대체합니다. 매니페스트 파일에는 after_specification_change 또는 specification_action 중 하나만 지정할 수 있습니다. specification_action 콜백에 대한 자세한 내용은 앱 사양과 함께 콜백 함수 사용 섹션을 참조하세요.

서명
after_specification_change(spec_name)
Copy
매개 변수
  • spec_name: 승인 또는 거부된 애플리케이션 사양의 이름입니다.

최신 상태 검색

콜백에서 다음 코드 조각을 사용하여 사양의 현재 상태를 검색할 수 있습니다.

session.sql(f"""
  SHOW SPECIFICATIONS ->>
      SELECT "status"
      FROM $1
      WHERE "name" = '{spec_name}';
  """);
Copy