연결 구성

연결 구성은 커넥터 구성 직후에 나오는 마법사 단계입니다. 이 단계에서는 사용자가 소스 시스템과의 연결을 설정하여 Snowflake에 데이터를 수집하는 데 필요한 속성을 지정할 수 있습니다. PUBLIC.SET_CONNECTION_CONFIGURATION(connection_configuration VARIANT) 프로시저는 이 마법사 단계에 대한 진입점입니다. 이 프로시저는 UI 또는 워크시트에서 호출할 수 있습니다. 사용자 지정 논리로 덮어쓸 때, 사용자 지정 Java 핸들러를 지정하기 위해 이 프로시저를 바꿔야 합니다.

이 프로시저를 호출하려면 사용자에게 ADMIN 애플리케이션 역할이 할당되어 있어야 합니다.

연결 구성 단계는 내부적으로 여러 단계로 구성됩니다. 단계 중 일부는 완전히 사용자 지정 가능하며, 기본적으로는 아무 작업도 수행하지 않습니다. 각 단계는 다음과 같습니다.

  1. 상태 유효성 검사

  2. 입력 유효성 검사

  3. 구성 업데이트

  4. 내부 콜백

  5. 연결 유효성 검사

  6. 상태 업데이트

요구 사항

연결 구성을 위해서는 Native App을 설치할 때 다음 SQL 파일 이상을 실행해야 합니다.

또한 SDK 사용자에 따라 달라지는 요구 사항도 있습니다.

  • PUBLIC.TEST_CONNECTION() 프로시저의 사용자 지정 구현

상태 유효성 검사

연결 구성을 수행하려면 커넥터의 내부 상태는 CONFIGURING 이고, 구성 상태는 CONFIGURED 또는 CONNECTED 여야 합니다. 구성 상태 중 첫 번째는 커넥터 구성 단계 바로 뒤에 설정되며, 어떤 이유로 인해 이후 단계에서 연결 구성을 업데이트해야 하는 경우 후자의 상태가 표시됩니다.

이 유효성 검사는 ConnectionConfigurationHandlerBuilder 를 사용하거나 저장 프로시저를 덮어쓰는 방식으로 덮어쓸 수 없습니다. 하지만 이런 종류의 유효성 검사가 필요하지 않은 사용자 지정 핸들러를 구현하는 것도 가능합니다.

입력 유효성 검사

입력은 속성 맵이 포함된 variant 여야 하지만, 일부 경우에는 적용되지 않을 수도 있습니다. 이러한 이유로 SDK는 내부 저장 프로시저 PUBLIC.SET_CONNECTION_CONFIG_VALIDATE(config VARIANT) 를 제공합니다. 기본적으로 이 프로시저는 'responseCode': 'OK' 만 반환하며, 이를 덮어쓰면 유효성 검사 중에 제공된 구성이 업데이트될 수 있습니다. 이 기능을 사용하면 사용자 지정 논리를 사용할 수 있습니다. 예를 들어, 입력 내용 잘라내기 또는 대문자/소문자로 변환 들이 이에 해당합니다. 어떤 식으로든 변환된 구성을 반환하려면 응답 Variant 에 추가 Variant 속성을 포함해야 하며, 이 속성에는 업데이트된 구성이 "config" 로 포함되어야 합니다. 이 프로시저는 SQL을 통해 덮어쓰거나 ConnectionConfigurationHandlerBuilder 를 사용하고 ConnectionConfigurationInputValidator 인터페이스의 사용자 지정 구현을 제공하여 사용자 지정할 수 있습니다.

다음은 변환을 포함한 사용자 지정 구현의 유효한 응답입니다.

{
    "response_code" : "OK",
    "config": {
        "key1": "value1",
        "key2": "value2"
    }
}
Copy

구성 업데이트

유효성 검사가 성공적으로 통과되면 구성이 내부 APP_CONFIG 테이블에 저장됩니다. 이를 담당하는 서비스는 공급자가 제공한 Variantconnection_configuration 키 아래에 저장합니다. 이 구성은 저장 시 추가적인 요구 사항을 따르지 않으며, 제공되는 속성 세트는 사용자에 따라 다릅니다.

내부 콜백

내부 콜백은 사용자 지정이 가능한 단계 중 하나입니다. 이는 기본적으로 PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT) 을 호출하며, 'response_code': 'OK' 를 반환합니다. 예를 들어, 외부 액세스 통합을 허용하여 다른 프로시저를 변경하는 데 사용할 수 있습니다. SQL 스크립트를 통해 덮어쓰거나 ConnectionConfigurationHandlerBuilder 를 사용하여 ConnectionConfigurationCallback 인터페이스의 사용자 지정 구현을 제공함으로써 덮어쓸 수 있습니다.

연결 유효성 검사

이 단계에서는 PUBLIC.TEST_CONNECTION 프로시저를 트리거합니다. 이 프로시저는 원본 시스템에서 데이터에 대한 쿼리를 시도합니다. 이 프로시저는 기본적으로 구현되지 않으며 SDK 사용자가 제공해야 합니다. 또한 이 단계를 사용자 지정하기 위해 ConnectionValidator 인터페이스 구현을 ConnectionConfigurationHandlerBuilder 에 제공할 수 있으며, 이 경우 저장 프로시저를 구현할 필요가 없습니다. 이 절차에서는 최소한의 연결 확인만 수행하여 Snowflake의 외부 액세스 기능이 올바르게 구성되었는지, Connector에 해당 기능을 사용하는 데 필요한 모든 권한이 있는지 확인하는 것이 좋습니다.

상태 업데이트

위의 모든 단계가 성공적으로 완료되면 커넥터의 내부 상태가 다음과 같이 업데이트됩니다.

{
    "status": "CONFIGURING",
    "configurationStatus": "CONNECTED"
}
Copy

상태 전환의 전체 다이어그램은 커넥터 흐름 섹션을 참조하십시오.

구성 보기

내부 테이블에서 현재 연결 구성을 반환하는 ADMINVIEWER 사용자가 사용할 수 있는 PUBLIC.GET_CONNECTION_CONFIGURATION() 프로시저가 있습니다.

응답

성공 응답

프로시저가 성공적으로 완료되면 TEST_CONNECTION 프로시저가 응답을 반환합니다. 다음 형식을 사용하는 것이 좋습니다.

{
  "response_code": "OK"
}
Copy

오류 응답

오류가 발생한 경우 응답은 아래 형식을 따릅니다.

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

가능한 오류 코드는 다음과 같습니다.

  • INVALID_CONNECTOR_STATUS - 커넥터 상태가 잘못되었습니다. 필요한 상태: [CONFIGURING]

  • INVALID_CONNECTOR_CONFIGURATION_STATUS - 커넥터 구성 상태가 잘못되었습니다. 필요한 상태: CONFIGURED

  • INTERNAL_ERROR - 내부적으로 문제가 발생했습니다. 메시지에는 설명이 포함되어야 합니다.

  • PROCEDURE_NOT_FOUND - 호출된 프로시저가 없습니다. 이 경우 주로 TEST_CONNECTION 프로시저에 대한 것입니다.

  • UNKNOWN_SQL_ERROR - 내부 프로시저 호출 시 예상치 못한 일이 발생할 때 발생하는 오류입니다.

  • INVALID_RESPONSE - 이 오류는 내부 프로시저에서 수신한 응답에 response_code 가 포함되어 있지 않거나 오류 응답에 message 가 포함되어 있지 않고 response_code 가 포함된 경우 발생합니다.

  • UNKNOWN_ERROR - 예상치 못한 문제가 발생했다는 의미입니다. 발생한 예외의 메시지가 전달됩니다.

  • TEST_CONNECTION() 프로시저에서 수신한 사용자 지정 오류 코드 - 커넥터 개발자가 정의함

  • SET_CONNECTION_CONFIGURATION_INTERNAL() 프로시저에서 수신한 사용자 지정 오류 코드 - 커넥터 개발자가 정의함