Private connectivity to external stages and Snowpipe automation for Microsoft Azure

Private connectivity to external stages and Snowpipe automation for Microsoft Azure (Microsoft Azure의 외부 스테이지 및 Snowpipe 자동화 사설 연결)

이 주제는 다음 Snowflake 기능에 대한 아웃바운드 사설 연결을 설정하는 구성 세부 정보를 제공해요.

  • 외부 스테이지를 사용한 Microsoft Azure에서의 벌크 로딩.
  • Microsoft Azure Blob Storage용 Snowpipe 자동화.

사설 연결용 벌크 로딩·Snowpipe 자동화를 공용 네트워크 트래픽용으로 구성하는 것과 다르게 구성하는 차이는 다음으로 이루어져요.

  • 필요한 저장 통합, 스테이지, 알림 통합에 대해 USE_PRIVATELINK_ENDPOINT = TRUE 설정.
  • 외부 스테이지용 사설 연결 엔드포인트 생성(벌크 로딩 및 Snowpipe 자동화).
  • 알림 통합용 사설 연결 엔드포인트 생성(Snowpipe 자동화만).

출처: Snowflake Documentation

본문

Business Critical 기능

이 기능은 Business Critical(또는 그 이상)이 필요해요. 업그레이드 문의는 Snowflake Support에 연락해요.

아웃바운드 사설 연결 비용

각 사설 연결 엔드포인트와 처리된 총 데이터에 대해 비용을 지불해요. 이 항목들의 가격은 Snowflake Service Consumption Table을 참고해요.

ACCOUNT_USAGE 및 ORGANIZATION_USAGE 스키마의 청구 뷰를 쿼리할 때 다음 서비스 유형으로 필터링해 이 항목들의 비용을 탐색할 수 있어요.

  • OUTBOUND_PRIVATELINK_ENDPOINT
  • OUTBOUND_PRIVATELINK_DATA_PROCESSED

예를 들어 USAGE_IN_CURRENCY_DAILY 뷰를 쿼리하고 이 서비스 유형들로 필터링할 수 있어요.

고려 사항

Note

Microsoft Fabric OneLake 저장소에는 사설 연결이 지원되지 않아요.

같은 저장소 계정에 대해 아웃바운드 공용 연결과 아웃바운드 사설 연결을 구성할 수 있어요. 이렇게 하려면 아웃바운드 공용 연결 전용 저장 통합을 만들고 USE_PRIVATELINK_ENDPOINT = FALSE를 지정해요.

사설 연결 속성

저장 통합 또는 외부 스테이지의 USE_PRIVATELINK_ENDPOINT 속성은 사설 연결을 통해 접근되는지 공용 네트워크를 경유하는지 결정해요. 사설 연결을 사용하려면 USE_PRIVATELINK_ENDPOINT = TRUE를 설정해요.

USE_PRIVATELINK_ENDPOINT = TRUE를 지정하는 저장 통합을 참조하는 스테이지는 사설 엔드포인트 구성을 상속해요. 그 결과 사설 연결을 사용하도록 구성된 저장 통합을 사용한다면 스테이지에서 USE_PRIVATELINK_ENDPOINT 속성을 지정할 필요가 없고, 스테이지를 수정해 USE_PRIVATELINK_ENDPOINT 속성을 설정할 수도 없어요.

외부 스테이지 접근 구성

이 단계들은 저장 통합과 함께 아웃바운드 사설 연결을 사용해 Microsoft Azure의 외부 스테이지로 데이터를 언로드하는 데 특화된 것이에요. 저장 통합을 참조하는 대신 스테이지의 CREDENTIALS 속성을 사용한다면 흐름을 수정해야 해요.

이 단계들은 벌크 로딩과 Snowpipe 자동화 둘 다에 필요해요.

  1. Snowflake에서 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 Snowflake VNet에 사설 연결 엔드포인트를 프로비저닝해 Snowflake가 사설 연결로 외부 Blob 저장소 계정에 연결할 수 있게 해요:
USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/storagedemo',
  'mystorageaccount.blob.core.windows.net',
  'blob'
);

이 함수는 사설 엔드포인트를 호스트 이름에 바인딩해 저장 통합이 사설 엔드포인트를 사용해 저장 위치에 연결할 수 있게 해요.

  1. Azure Portal에서 Microsoft Azure Blob 저장소 리소스의 소유자로서 사설 엔드포인트를 승인해요. 세부 사항은 승인 프로세스를 참고해요.
  2. Snowflake에서 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출해요.

함수 출력에 "status": "APPROVED"가 포함되면(다른 필요한 Snowflake 객체가 아웃바운드 사설 연결에 활성화된 후) 저장 계정으로의 연결이 사설 연결을 사용할 수 있게 돼요.

"APPROVED" 상태를 기다리는 동안 다음 단계를 계속할 수 있어요.

  1. 저장 통합을 만들고 USE_PRIVATELINK_ENDPOINT 속성을 반드시 지정해요:
CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int
  TYPE = EXTERNAL_STAGE
  STORAGE_PROVIDER = AZURE
  AZURE_TENANT_ID = 'cc2909f2-ed22-4c89-8e5d-bdc40e5eac26'
  STORAGE_ALLOWED_LOCATIONS = ('azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/')
  USE_PRIVATELINK_ENDPOINT = TRUE
  ENABLED = TRUE;

Note

저장 통합을 만든 후 Snowflake에 저장 위치 접근을 부여해야 해요. 자세한 내용은 Snowflake 저장 통합 구성을 참고해요.

  1. 저장 통합을 참조하는 외부 스테이지를 만들어요:
CREATE OR REPLACE STAGE my_storage_private_stage
  URL = 'azure://mystorageaccount.blob.core.windows.net/mycontainer/snowflake_privatelink_external_stage_test/'
  STORAGE_INTEGRATION = outbound_private_link_int;
  1. 사설 엔드포인트가 "APPROVED" 상태가 된 후 Snowflake에서 외부 스테이지로 데이터를 언로드하는 것을 테스트해요:
COPY INTO @my_storage_private_stage
  FROM mytable
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
  1. Microsoft Azure 스테이지에서 결과를 확인해요.

알림 통합 구문 업데이트

Microsoft Azure Blob Storage용 Snowpipe 자동화는 알림 통합을 만들어야 해요. 다음 구문 업데이트는 사설 연결용 알림 통합을 구성할 수 있게 해줘요.

CREATE [ OR REPLACE ] NOTIFICATION INTEGRATION [ IF NOT EXISTS ] <name>
  ...
  USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }

Snowpipe 자동화 구성

이 섹션은 Microsoft Azure Blob Storage용 Snowpipe 자동화에 설명된 절차를 수정해 사설 연결로 Snowpipe 자동화를 구현하는 방법을 강조해요. 유일한 차이는 사설 연결 엔드포인트를 프로비저닝하고 저장 통합·알림 통합의 USE_PRIVATELINK_ENDPOINT 속성을 구성하는 것이에요.

  1. 이 문서의 앞부분에 설명된 대로 전용 사설 연결 엔드포인트와 함께 저장 통합과 스테이지를 만들어요.
  2. Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 Snowflake에 저장 위치 접근 부여를 해요.
  3. Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 Event Grid 구독 구성을 해요.
  4. Snowflake에서 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 Snowflake VNet에 사설 엔드포인트를 프로비저닝해 Snowflake가 사설 연결로 Azure 큐에 연결할 수 있게 해요:
USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  '/subscriptions/cc2909f2-ed22-4c89-8e5d-bdc40e5eac26/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/mystorageaccount',
 'mystorageaccount.queue.core.windows.net',
 'queue'
);
  1. Azure Portal에서 Microsoft Azure 저장소 리소스의 소유자로서 사설 엔드포인트를 승인해요. 정보는 승인 프로세스를 참고해요.
  2. Snowflake에서 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출해요.

함수 출력에 "status": "APPROVED"가 포함되면(다른 필요한 Snowflake 객체가 아웃바운드 사설 연결에 활성화된 후) 저장 계정으로의 연결이 사설 연결을 사용할 수 있게 돼요.

Important

다음 단계로 계속하기 전에 상태가 APPROVED가 될 때까지 기다려야 해요.

  1. Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 저장소 큐 URL과 테넌트 ID 검색을 해요.
  2. 알림 통합을 만들고 USE_PRIVATELINK_ENDPOINT 속성을 반드시 지정해요:
CREATE OR REPLACE NOTIFICATION INTEGRATION ni_pl
  ENABLED = TRUE
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AZURE_STORAGE_QUEUE
  AZURE_STORAGE_QUEUE_PRIMARY_URI = "https://storageaccount.queue.core.windows.net/queuename"
  AZURE_TENANT_ID = '00000000-0000-0000-0000-000000000000'
  USE_PRIVATELINK_ENDPOINT = TRUE;
  1. Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 Snowflake에 저장소 큐 접근 부여를 해요.
  2. Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 auto-ingest가 활성화된 파이프 생성을 해요.

사설 연결 비활성화

사설 연결을 비활성화하는 과정은 엔드포인트가 저장 통합, 외부 스테이지, 또는 알림 통합 중 무엇을 위해 프로비저닝되었는지에 따라 달라져요.

저장 통합/외부 스테이지

외부 스테이지에 대한 사설 연결 엔드포인트가 더 이상 필요 없으면 스테이지나 저장 통합에서 USE_PRIVATELINK_ENDPOINT 속성을 해제한 다음 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해요.

알림 통합

저장 통합과 외부 스테이지와 달리 알림 통합의 USE_PRIVATELINK_ENDPOINT 속성은 해제할 수 없어요. 사설 연결이 더 이상 필요 없으면 알림 통합을 드롭한 다음 새로 만들어야 해요. 알림 통합을 다시 만든 후 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 엔드포인트를 프로비저닝 해제할 수 있어요.

더 알아보기 (Learn more)