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 자동화만).
본문
이 기능은 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 자동화 둘 다에 필요해요.
- 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'
);
이 함수는 사설 엔드포인트를 호스트 이름에 바인딩해 저장 통합이 사설 엔드포인트를 사용해 저장 위치에 연결할 수 있게 해요.
- Azure Portal에서 Microsoft Azure Blob 저장소 리소스의 소유자로서 사설 엔드포인트를 승인해요. 세부 사항은 승인 프로세스를 참고해요.
- Snowflake에서 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출해요.
함수 출력에 "status": "APPROVED"가 포함되면(다른 필요한 Snowflake 객체가 아웃바운드 사설 연결에 활성화된 후) 저장 계정으로의 연결이 사설 연결을 사용할 수 있게 돼요.
"APPROVED" 상태를 기다리는 동안 다음 단계를 계속할 수 있어요.
- 저장 통합을 만들고
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 저장 통합 구성을 참고해요.
- 저장 통합을 참조하는 외부 스테이지를 만들어요:
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;
- 사설 엔드포인트가
"APPROVED"상태가 된 후 Snowflake에서 외부 스테이지로 데이터를 언로드하는 것을 테스트해요:
COPY INTO @my_storage_private_stage
FROM mytable
FILE_FORMAT = (FORMAT_NAME = my_csv_format);
- 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 속성을 구성하는 것이에요.
- 이 문서의 앞부분에 설명된 대로 전용 사설 연결 엔드포인트와 함께 저장 통합과 스테이지를 만들어요.
- Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 Snowflake에 저장 위치 접근 부여를 해요.
- Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 Event Grid 구독 구성을 해요.
- 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'
);
- Azure Portal에서 Microsoft Azure 저장소 리소스의 소유자로서 사설 엔드포인트를 승인해요. 정보는 승인 프로세스를 참고해요.
- Snowflake에서 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출해요.
함수 출력에 "status": "APPROVED"가 포함되면(다른 필요한 Snowflake 객체가 아웃바운드 사설 연결에 활성화된 후) 저장 계정으로의 연결이 사설 연결을 사용할 수 있게 돼요.
Important
다음 단계로 계속하기 전에 상태가 APPROVED가 될 때까지 기다려야 해요.
- Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 저장소 큐 URL과 테넌트 ID 검색을 해요.
- 알림 통합을 만들고
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;
- Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 Snowflake에 저장소 큐 접근 부여를 해요.
- Microsoft Azure Blob Storage용 Snowpipe 자동화 주제에 설명된 대로 auto-ingest가 활성화된 파이프 생성을 해요.
사설 연결 비활성화
사설 연결을 비활성화하는 과정은 엔드포인트가 저장 통합, 외부 스테이지, 또는 알림 통합 중 무엇을 위해 프로비저닝되었는지에 따라 달라져요.
저장 통합/외부 스테이지
외부 스테이지에 대한 사설 연결 엔드포인트가 더 이상 필요 없으면 스테이지나 저장 통합에서 USE_PRIVATELINK_ENDPOINT 속성을 해제한 다음 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해요.
알림 통합
저장 통합과 외부 스테이지와 달리 알림 통합의 USE_PRIVATELINK_ENDPOINT 속성은 해제할 수 없어요. 사설 연결이 더 이상 필요 없으면 알림 통합을 드롭한 다음 새로 만들어야 해요. 알림 통합을 다시 만든 후 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 엔드포인트를 프로비저닝 해제할 수 있어요.
더 알아보기 (Learn more)
- Bulk loading from Microsoft Azure — Azure 벌크 로딩
- SYSTEM$PROVISION_PRIVATELINK_ENDPOINT — 사설 엔드포인트 프로비저닝
- Automating Snowpipe for Microsoft Azure Blob Storage — Snowpipe 자동화
- Private connectivity overview — 사설 연결 개요