아웃바운드 비공개 연결로 Apache Iceberg™ REST 카탈로그 통합 구성하기¶
이 항목에서는 오픈 소스 Apache Iceberg™ REST OpenAPI 사양<https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml>`_을 준수하는 원격 카탈로그에서 관리되는 :doc:/user-guide/tables-iceberg`에 :ref:`카탈로그 통합<label-tables_iceberg_catalog_integration_def>`을 구성하는 방법에 대해 설명합니다.
이 구성을 사용하면 카탈로그 통합으로 공용 인터넷 대신 비공개 IP 주소를 통해 원격 Iceberg REST 카탈로그에 연결할 수 있습니다.
다음 다이어그램은 Iceberg 테이블이 외부 Iceberg 카탈로그와의 카탈로그 통합을 사용하는 방법을 보여줍니다.
아웃바운드 비공개 연결 비용<label-private_connect_costs>`을 포함한 Snowflake의 아웃바운드 비공개 연결에 대한 일반 정보는 :doc:/user-guide/private-connectivity-outbound` 섹션을 참조하세요.
이 항목에서는 다음 카탈로그 유형에 대한 구성 단계를 다룹니다.
일반 Iceberg REST 카탈로그
AWS Glue 데이터 카탈로그
Databricks Unity 카탈로그
참고
비공개 연결은 AWS PrivateLink를 사용하는 AWS 및 Azure Private Link를 사용하는 Azure에서만 지원됩니다.
비공개 연결은 동일한 클라우드 공급자 내에서만 사용할 수 있습니다. 카탈로그 및 Snowflake 배포는 동일한 클라우드 공급자에서 실행 중이어야 합니다.
아웃바운드 비공개 연결을 사용하여 카탈로그 통합을 구성할 때는 카탈로그 제공 자격 증명이 지원되지 않습니다.
1단계: 카탈로그에 대한 비공개 연결 정보 수집¶
비공개 연결 정보를 수집하여 나중에 :ref:`Snowflake VPC 또는 VNet<label-tables_iceberg_configure_catalog_integration_rest_private_provision_endpoint>`에서 해당 비공개 연결 엔드포인트를 프로비저닝할 때 지정해야 합니다. 해당 비공개 연결 엔드포인트를 프로비저닝할 때 Snowflake 계정이 AWS에서 호스팅되는 경우 Snowflake에 AWS PrivateLink 엔드포인트를 생성하거나 Snowflake 계정이 Azure에서 호스팅되는 경우 Azure 비공개 엔드포인트를 생성합니다.
카탈로그에 대한 비공개 연결 정보를 수집하려면 원격 REST Iceberg 카탈로그에 대한 설명서를 참조하세요.
다음 예제는 AWS: ``com.amazonaws.vpce.us-west-2.vpce-svc-0123456789abcdef``의 AWS VPC 엔드포인트 서비스 ID입니다.
AWS Glue 데이터 카탈로그에 대한 공급자 서비스 이름과 호스트 이름을 찾아야 합니다.
*공급자 서비스 이름*(
<provider_service_name>), copy을 얻으려면 com.amazonaws.<region>.glue를into your text editor where ``<region>``이 ceberg 테이블이 저장된 AWS 리전인 텍스트 편집기에 복사합니다.공급자 서비스 이름의 예제는 ``com.amazonaws.us-west-2.glue``입니다. 자세한 내용은 AWS 설명서의 `AWS Glue용 인터페이스 VPC 엔드포인트 만들기<https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html#vpc-endpoint-create>`_를 참조하세요.
*호스트 이름*(
<host_name>), copy을 얻으려면 glue.<region>.amazonaws.com을into your text editor where ``<region>``이 Iceberg 테이블이 저장된 AWS 리전인 텍스트 편집기에 복사합니다.호스트 이름의 예제는 ``glue.us-west-2.amazonaws.com``입니다. 자세한 내용은 AWS 설명서의 `AWS Glue Iceberg REST 엔드포인트를 사용하여 데이터 카탈로그에 연결<https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html>`_을 참조하세요.
참고
또는 이러한 값을 검색하려면 AWS 명령줄에서 describe-vpc-endpoint-services 하위 명령을 사용하면 됩니다. 자세한 내용은 비공개 연결 엔드포인트 프로비저닝 섹션을 참조하십시오.
Databricks Unity 카탈로그 및 Databricks 작업 공간 호스트 이름에 대해 PrivateLink VPC 엔드포인트 서비스 ID를 찾아야 합니다.
*PrivateLink VPC 엔드포인트 서비스 ID*(
<vpc_endpoint_service_id>)를 찾으려면 Databricks 설명서의 `PrivateLink VPC 엔드포인트 서비스<https://docs.databricks.com/aws/en/resources/ip-domain-region#privatelink>`_를 참조하세요.이 항목에는 각 AWS 리전에 대한 VPC 엔드포인트 서비스 IDs 목록이 포함되어 있습니다.
테이블이 호스팅되는 리전의 경우 엔드포인트 서비스 ID, 즉 *작업 공간(REST API 포함)*의 값을 텍스트 편집기에 복사합니다.
VPC 엔드포인트 서비스 ID의 예제는 :code:`com.amazonaws.vpce.us-west-2.vpce-svc-0129f463fcfbc46c5`입니다.
Databricks의 PrivateLink에 대한 자세한 내용은 Databricks 설명서의 `프런트 엔드 PrivateLink 구성하기<https://docs.databricks.com/aws/security/network/front-end/front-end-private-connect>`_를 참조하세요.
*Databricks 작업 공간 호스트 이름*(
<databricks_workspace_host_name>)을 찾으려면 다음 단계를 따릅니다.Databricks 작업 공간 URL을 검색합니다.
지침은 Databricks 설명서의 `작업 공간 오브젝트의 식별자 가져오기<https://docs.databricks.com/aws/en/workspace/workspace-details>`_를 참조하세요.
이 항목에는 예제 Databricks 작업 공간 URL이 포함되어 있습니다.
Databricks 작업 공간 URL을 텍스트 편집기에 복사합니다.
Databricks 작업 공간 URL에서 ``https://``를 제거합니다.
결과 값은 Databricks 작업 공간 호스트 이름입니다.
예를 들어 Databricks 작업 공간당 URL이 ``https://dbc-a1a11111-1a11.cloud.databricks.com``인 경우 Databricks 작업 공간 호스트 이름은 ``dbc-a1a11111-1a11.cloud.databricks.com``입니다.
Azure Portal에서 Databricks 작업 공간 리소스 ID를 찾고 Databricks 작업 공간 호스트 이름을 찾아야 합니다.
*Azure Portal에서 Databricks 작업 공간의 리소스 ID*(
<databricks_workspace_resource_id>)를 찾으려면 다음 단계를 따릅니다.Azure Portal에서 Databricks 작업 공간으로 이동합니다.
개요 페이지의 필수 섹션에서 JSON 뷰 링크를 선택합니다.
Databricks 작업 공간의 리소스 ID는 리소스 ID 필드에 표시됩니다. 이 리소스 ID의 예제는 ``/subscriptions/1111-22-333-4444-55555/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-databricks-workspace``입니다.
리소스 ID를 텍스트 편집기에 복사합니다.
*Databricks 작업 공간 호스트 이름*(
<databricks_workspace_host_name>)을 찾으려면 다음 단계를 따릅니다.Databricks 작업 공간당 URL을 검색합니다.
지침은 Azure Databricks 설명서의 `작업 공간별 URL 결정<https://learn.microsoft.com/en-us/azure/databricks/workspace/workspace-details#determine-per-workspace-url>`_을 참조하세요.
Databricks 작업 공간당 URL을 텍스트 편집기에 복사합니다.
Databricks 작업 공간당 URL에서 ``https://``를 제거합니다.
결과 값은 Databricks 작업 공간 호스트 이름입니다.
예를 들어 Databricks 작업 공간당 URL이 ``https://adb-1234567890123456.12.azuredatabricks.net``인 경우 Databricks 작업 공간 호스트 이름은 ``adb-1234567890123456.12.azuredatabricks.net``입니다.
2단계: 비공개 연결 엔드포인트 프로비저닝¶
이 단계에서는 Snowflake VPC 또는 VNet에서 비공개 연결 엔드포인트를 프로비저닝하여 Snowflake가 비공개 연결을 사용하여 원격 Iceberg REST 카탈로그에 연결할 수 있도록 지원합니다.
비공개 연결 엔드포인트를 프로비저닝하려면 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출합니다.
이 시스템 함수에 대한 인자를 지정하는 방법에 대한 지침은 비공개 연결을 통해 연결할 원격 REST Iceberg 카탈로그에 대한 설명서를 참조하세요.
다음 코드 블록은 AWS PrivateLink 엔드포인트를 프로비저닝하는 예제를 보여줍니다.
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.vpce.us-west-2.vpce-svc-0123456789abcdef', 'my.catalog.com' );
비공개 연결 엔드포인트를 프로비저닝하려면 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출합니다.
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '<provider_service_name>', '<host_name>' );
여기서
:code:`<provider_service_name>`은 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 복사한 공급자 서비스 이름입니다.
:code:`<host_name>`은 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 복사한 호스트 이름입니다.
예:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.<region>.glue', 'glue.<region>.amazonaws.com' );
참고
Snowflake VPC에서 하나의 비공개 연결 엔드포인트만 프로비저닝하면 됩니다. 이는 AWS Glue를 사용하면 하나의 Glue 비공개 연결 엔드포인트를 통해 동일한 리전의 AWS Glue 데이터 카탈로그에서 관리하는 모든 항목에 액세스할 수 있기 때문입니다. 자세한 내용은 AWS 설명서의 `AWS Glue용 인터페이스 VPC 엔드포인트 만들기<https://docs.aws.amazon.com/glue/latest/dg/vpc-interface-endpoints.html#vpc-endpoint-create>`_를 참조하세요.
하나의 비공개 연결 엔드포인트만 프로비저닝하면 됩니다. Unity는 동일한 리전의 Unity 데이터 카탈로그에서 관리하는 모든 항목에 액세스하기 위해 단 하나의 비공개 연결 엔드포인트만 있으면 됩니다.
비공개 연결 엔드포인트를 프로비저닝하려면 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출합니다.
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '<vpc_endpoint_service_id>', '<databricks_workspace_host_name>' );
여기서
:code:`<vpc_endpoint_service_id>`는 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 복사한 PrivateLink VPC 엔드포인트 서비스 ID입니다.
:code:`<databricks_workspace_host_name>`은 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 검색한 Databricks 작업 공간 호스트 이름입니다.
참고
동일한 AWS 리전에 여러 Databricks 작업 공간이 있는 경우 Databricks 작업 공간 URL에 와일드카드를 사용할 수 있습니다.
예:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.vpce.us-west-2.vpce-svc-0129f463fcfbc46c5', 'dbc-a1a11111-1a11.cloud.databricks.com' );
비공개 연결 엔드포인트를 프로비저닝하려면 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출합니다.
USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '<databricks_workspace_resource_id>', '<databricks_workspace_host_name>', 'databricks_ui_api' );
여기서
:code:`<<databricks_workspace_resource_id>>`는 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 복사한 Azure Portal의 Databricks 작업 공간 리소스 ID입니다.
:code:`<databricks_workspace_host_name>`은 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 검색한 Databricks 작업 공간 호스트 이름입니다.
:code:`databricks_ui_ap`는 Azure Databricks 작업 공간의 하위 리소스 값입니다.
예:
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/1111-22-333-4444-55555/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-databricks-workspace', 'adb-1234567890123456.12.azuredatabricks.net', 'databricks_ui_api' );
3단계: 엔드포인트 상태 확인하기¶
이 단계에서는 이전 단계에서 프로비저닝한 Snowflake VPC 또는 VNet에서 비공개 연결 엔드포인트의 엔드포인트 상태를 확인합니다.
엔드포인트 상태를 확인하려면 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 시스템 함수를 호출합니다.
SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
엔드포인트는 :code:`status`가 :code:`pending`에서 :code:`available`로 변경되면 사용할 수 있습니다.
4단계: 추가 카탈로그별 추가¶
카탈로그 유형에 대한 추가 구성 단계를 완료합니다.
참고
일부 카탈로그 또는 일부 유형의 비공개 연결 엔드포인트의 경우 연결을 승인하거나 카탈로그 서버 측에서 비공개 연결 엔드포인트를 허용 목록에 추가해야 합니다.
추가 구성 단계를 완료하려면 원격 REST Iceberg 카탈로그에 대한 설명서를 참조한 후 :ref:`다음 단계<label-iceberg_rest_private_step3>`로 진행합니다.
추가 구성이 필요하지 않습니다. :ref:`다음 단계<label-iceberg_rest_private_step3>`로 진행합니다.
이 단계에서는 Databricks에 Snowflake 엔드포인트를 등록하여 VPC 엔드포인트에서 수신되는 트래픽을 수락합니다.
Databricks에서 구성 단계 완료하기
Snowflake VPC 엔드포인트를 등록하기 전에 Databricks에서 다음 구성을 완료해야 합니다.
작업 공간은 고객이 관리하는 VPC에 위치해야 합니다.
Databricks 계정은 엔터프라이즈 구독에 있어야 합니다.
비공개 액세스 구성을 설정해야 합니다.
자세한 내용은 Databricks 설명서의 `Azure Databricks: 프런트 엔드 PrivateLink 구성하기<https://docs.databricks.com/aws/en/security/network/front-end/front-end-private-connect>`_를 참조하세요.
Snowflake VPC 엔드포인트 등록하기
VPC 엔드포인트를 등록하려면 다음 단계를 완료합니다.
Snowflake에서 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 시스템 함수를 호출한 후 응답에서 :code:`snowflake_endpoint_name`의 값을 복사합니다.
SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
예를 들어, 복사할 출력은 :code:`vpce-11111aaaa11aaaa11`과 같습니다. 이 값은 Snowflake 계정의 VPC 엔드포인트 ID입니다.
Databricks에서, 이전 단계에서 복사한 VPC 엔드포인트 ID 값을 지정하여 Snowflake VPC 엔드포인트 ID를 등록합니다.
지침은 Databricks 설명서의 `VPC 엔드포인트 등록 관리하기<https://docs.databricks.com/aws/en/security/network/classic/vpc-endpoints>`_를 참조하세요.
Databricks에서 비공개 액세스 설정을 추가한 후 이전 단계에서 등록한 VPC 엔드포인트를 지정합니다.
지침은 Databricks 설명서의 `비공개 액세스 설정 관리하기<https://docs.databricks.com/aws/en/security/network/classic/private-access-settings>`_를 참조하세요.
Databricks에서 구성 단계 완료하기
Snowflake VPC 엔드포인트를 등록하기 전에 Azure 가상 네트워크에 Azure Databricks 배포를 포함하여 Databricks에서 필수 구성을 완료해야 합니다. 이러한 모든 필수 구성은 Azure Databricks 설명서의 `프런트 엔드 Private Link 구성을 위한 요구 사항<https://learn.microsoft.com/en-us/azure/databricks/security/network/front-end/front-end-private-connect#requirements>`_을 참조하세요.
Snowflake에서 비공개 연결 승인하기
Snowflake에서 비공개 연결을 승인하려면 다음 단계를 완료합니다.
5단계: 카탈로그 통합 만들기¶
이 단계에서는 비공개 연결을 활성화하기 위해 카탈로그 REST 엔드포인트에 대한 카탈로그 통합을 구성합니다.
이 카탈로그 통합을 구성하려면 CREATECATALOGINTEGRATION 명령을 실행합니다.
예:
CREATE OR REPLACE CATALOG INTEGRATION iceberg_rest_catalog_cat_int_private CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG REST_CONFIG = ( CATALOG_URI = '<rest_api_endpoint_url>' CATALOG_API_TYPE = PRIVATE CATALOG_NAME = '<catalog_name>' ) REST_AUTHENTICATION = ( TYPE = OAUTH OAUTH_TOKEN_URI = '<token_server_uri>' OAUTH_CLIENT_ID = '<oauth_client_id>' OAUTH_CLIENT_SECRET = '<oauth_client_secret>' OAUTH_ALLOWED_SCOPES = ('all-apis', 'sql') ) ENABLED = true;
중요
아웃바운드 비공개 연결을 사용하려면 통합을 생성할 때 ``CATALOG_API_TYPE=PRIVATE``을 지정해야 합니다.
지원되는 인증 방법을 포함한 자세한 내용은 CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) 섹션을 참조하세요.
이 카탈로그 통합을 구성하려면 :doc:`/user-guide/tables-iceberg-configure-catalog-integration-rest-glue`의 단계를 따릅니다.
중요
아웃바운드 비공개 연결을 사용하려면
CATALOG_API_TYPE = AWS_GLUE대신 통합을 생성할 때 ``CATALOG_API_TYPE = AWS_PRIVATE_GLUE``를 지정해야 합니다.예:
CREATE CATALOG INTEGRATION glue_rest_catalog_int CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG REST_CONFIG = ( CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg' CATALOG_API_TYPE = AWS_PRIVATE_GLUE CATALOG_NAME = '123456789012' ) REST_AUTHENTICATION = ( TYPE = SIGV4 SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role' SIGV4_SIGNING_REGION = 'us-west-2' ) ENABLED = TRUE;
REST 카탈로그 통합을 생성하여 Databricks Unity 카탈로그에 연결하려면 CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) 명령을 사용합니다.
중요
아웃바운드 비공개 연결을 사용하려면 통합을 생성할 때
REST_CONFIG매개 변수 중 하나로 :code:`CATALOG_API_TYPE = PRIVATE`을 지정해야 합니다.CATALOG_URI및 :code:`OAUTH_TOKEN_URI`의 경우 비공개 엔드포인트의 이름이 아닌 Databricks 작업 공간 URL인 표준 공용 호스트 이름을 사용해야 합니다. Snowflake는 :code:`CATALOG_API_TYPE`이 :code:`PRIVATE`으로 설정되는 경우 프로비저닝된 비공개 엔드포인트를 통해 트래픽을 자동으로 라우팅합니다. Databricks 작업 공간 URL을 찾으려면 Databricks 설명서의 `작업 공간 오브젝트의 식별자 가져오기<https://docs.databricks.com/aws/en/workspace/workspace-details>`_를 참조하세요.
예제: 무기명 토큰 인증
Databricks에서 개인 액세스 토큰(PAT)이라는 무기명 토큰을 생성하려면 Databricks 설명서의 `AWS용 Databricks: Databricks 설명서에서 작업 공간 사용자를 위한 개인 액세스 토큰 생성<https://docs.databricks.com/aws/en/dev-tools/auth/pat#create-personal-access-tokens-for-workspace-users>`_을 참조하세요.
CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_private_pat CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG REST_CONFIG = ( CATALOG_URI = 'https://dbc-a1a11111-1a11.cloud.databricks.com/api/2.1/unity-catalog/iceberg-rest' CATALOG_NAME = '<catalog_name>' CATALOG_API_TYPE = PRIVATE ) REST_AUTHENTICATION = ( TYPE = BEARER BEARER_TOKEN = 'eyAbCD...eyDeF...' ) ENABLED = TRUE;
예제: 서비스 주체를 사용한 OAuth 인증
다음 예제에서는 Databricks 서비스 주체를 사용한 OAuth 인증을 사용합니다. Databricks에 필요한 자격 증명
client_id및 :code:`client_secret`이 있는 구성된 서비스 주체가 있어야 합니다. 서비스 주체 추가에 대한 지침은 Databricks 설명서의 `AWS용 Databricks: 계정에 서비스 주체 추가하기<https://docs.databricks.com/aws/en/admin/users-groups/manage-service-principals#-add-service-principals-to-your-account>`_를 참조하세요.USE ROLE ACCOUNTADMIN; CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_private_oauth CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG REST_CONFIG = ( CATALOG_API_TYPE = PRIVATE CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest' CATALOG_NAME = '<catalog_name>' ) REST_AUTHENTICATION = ( TYPE = OAUTH OAUTH_TOKEN_URI = '<databricks_workspace_url>/oidc/v1/token' OAUTH_CLIENT_ID = '<your_databricks_client_id>'' OAUTH_CLIENT_SECRET = '<your_databricks_client_secret>' OAUTH_ALLOWED_SCOPES = ('all-apis', 'sql') ) ENABLED = TRUE;
여기서
``<databricks_workspace_url>``은 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 검색한 Databricks 작업 공간 URL입니다. 예를 들어, ``https://dbc-a1a11111-1a11.cloud.databricks.com``은 Databricks 작업 공간 URL입니다.
REST 카탈로그 통합을 생성하여 Databricks Unity 카탈로그에 연결하려면 CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) 명령을 사용합니다.
중요
아웃바운드 비공개 연결을 사용하려면 통합을 생성할 때
REST_CONFIG매개 변수 중 하나로 :code:`CATALOG_API_TYPE = PRIVATE`을 지정해야 합니다.CATALOG_URI및 :code:`OAUTH_TOKEN_URI`의 경우 비공개 엔드포인트의 이름이 아닌 Databricks 작업 공간 URL인 표준 공용 호스트 이름을 사용해야 합니다. Snowflake는 :code:`CATALOG_API_TYPE`이 :code:`PRIVATE`으로 설정되는 경우 프로비저닝된 비공개 엔드포인트를 통해 트래픽을 자동으로 라우팅합니다. Databricks 작업 공간 URL을 찾으려면 Azure Databricks 설명서의 `작업 공간별 URL 결정<https://learn.microsoft.com/en-us/azure/databricks/workspace/workspace-details#determine-per-workspace-url>`_을 참조하세요.
예제: 무기명 토큰 인증
Databricks에서 개인 액세스 토큰(PAT)이라는 무기명 토큰을 생성하려면 Azure Databricks 설명서의 `Azure Databricks: Azure Databricks 설명서에서 작업 공간 사용자를 위한 개인 액세스 토큰 생성<https://learn.microsoft.com/en-us/azure/databricks/dev-tools/auth/pat#create-personal-access-tokens-for-workspace-users>`_을 참조하세요.
CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_private_pat CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG REST_CONFIG = ( CATALOG_URI = 'https://my-workspace.azuredatabricks.net/api/2.1/unity-catalog/iceberg-rest' CATALOG_NAME = '<catalog_name>' CATALOG_API_TYPE = PRIVATE ) REST_AUTHENTICATION = ( TYPE = BEARER BEARER_TOKEN = 'eyAbCD...eyDeF...' ) ENABLED = TRUE;
예제: 서비스 주체를 사용한 OAuth 인증
다음 예제에서는 Databricks 서비스 주체를 사용한 OAuth 인증을 사용합니다. Databricks에 필요한 자격 증명
client_id및 :code:`client_secret`이 있는 구성된 서비스 주체가 있어야 합니다. 서비스 주체 추가에 대한 지침은 Databricks 설명서의 `Azure Databricks: 계정에 서비스 주체 추가하기<https://learn.microsoft.com/en-us/azure/databricks/admin/users-groups/manage-service-principals#-add-service-principals-to-your-account>`_를 참조하세요.USE ROLE ACCOUNTADMIN; CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_private_oauth CATALOG_SOURCE = ICEBERG_REST TABLE_FORMAT = ICEBERG REST_CONFIG = ( CATALOG_API_TYPE = PRIVATE CATALOG_URI = '<databricks_per_workspace_url>/api/2.1/unity-catalog/iceberg-rest' CATALOG_NAME = '<catalog_name>' ) REST_AUTHENTICATION = ( TYPE = OAUTH OAUTH_TOKEN_URI = '<databricks_per_workspace_url>/oidc/v1/token' OAUTH_CLIENT_ID = '<your_databricks_client_id>' OAUTH_CLIENT_SECRET = '<your_databricks_client_secret>' OAUTH_ALLOWED_SCOPES = ('all-apis', 'sql') ) ENABLED = TRUE;
여기서
``<databricks_per_workspace_url>``은 :ref:`카탈로그에 대한 비공개 연결 정보를 수집<label-tables_iceberg_configure_catalog_integration_rest_private_gather_private_connectivity_information_catalog>`할 때 검색한 Databricks 작업 공간별 URL입니다. 예를 들어, ``https://adb-1234567890123456.12.azuredatabricks.net``은 Databricks 작업 공간당 URL입니다.
6단계: 카탈로그 통합 확인하기¶
카탈로그 통합 구성을 확인하려면 SYSTEM$VERIFY_CATALOG_INTEGRATION 함수를 호출합니다.
For more information, including an example, see Use SYSTEM$VERIFY_CATALOG_INTEGRATION to check your catalog integration configuration.
(선택 사항) 7단계: 카탈로그 구성 업데이트하기¶
비공개 연결을 통해서만 액세스할 수 있도록 원격 카탈로그의 구성을 업데이트하는 것이 좋습니다.
카탈로그에 대한 공개 액세스를 비활성화하려면 비공개 연결을 통해 연결하려는 원격 카탈로그에 대한 설명서를 참조하세요.
AWS Glue 데이터 카탈로그는 허용 목록에 있는 VPC 엔드포인트로만 액세스를 제한하는 것을 지원하지 않습니다.
카탈로그에 대한 공개 액세스를 비활성화하려면 Databricks 설명서의 `AWS용 Databricks: 프런트 엔드 PrivateLink 구성하기<https://docs.databricks.com/aws/en/security/network/front-end/front-end-private-connect>`_를 참조하세요.
카탈로그에 대한 공개 액세스를 비활성화하려면 Azure Databricks 설명서의 `프런트 엔드 Private Link 구성하기<https://learn.microsoft.com/en-us/azure/databricks/security/network/front-end/front-end-private-connect>`_를 참조하세요.
다음 단계¶
이 섹션에는 카탈로그 통합을 구성한 후 수행할 수 있는 몇 가지 작업이 포함되어 있습니다.
비공개 연결 엔드포인트 모니터링하기¶
비공개 연결 엔드포인트를 모니터링하려면 ACCOUNT_USAGE 스키마의 OUTBOUND_PRIVATELINK_ENDPOINTS 뷰 섹션을 참조하세요.
비공개 연결 엔드포인트의 비용을 알아보려면 아웃바운드 비공개 연결 비용 섹션을 참조하세요.
아웃바운드 비공개 연결로 외부 볼륨 구성하기¶
아웃바운드 비공개 연결로 외부 볼륨을 구성하려면 클라우드 공급자의 지침을 따릅니다.
카탈로그 연결 데이터베이스 만들기¶
외부 Iceberg REST 카탈로그에 연결된 Snowflake 데이터베이스를 생성하려면 카탈로그 연결 데이터베이스를 생성합니다.
자세한 내용은 카탈로그 연결 데이터베이스 만들기 섹션을 참조하십시오.
참고
카탈로그 연결 데이터베이스를 생성할 때 아웃바운드 비공개 연결로 구성된 카탈로그 통합을 지정합니다.
원격 카탈로그에 작성¶
Apache Iceberg™ REST에 대한 카탈로그 통합을 구성하고 카탈로그 연결 데이터베이스를 생성한 후에는 원격 카탈로그에 작성할 수 있습니다.
원격 카탈로그에 작성하려면 원격 카탈로그에 작성 섹션을 참조하세요.