S3 호환 스테이지에 대한 프라이빗 연결

S3 호환 스테이지에 대한 프라이빗 연결

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

이 주제는 S3 호환 스토리지용 외부 스테이지에 대한 아웃바운드 프라이빗 연결을 설정하기 위한 구성 세부 정보를 제공해요. 아웃바운드 공용 연결과 아웃바운드 프라이빗 연결의 주요 차이는 스테이지의 USE_PRIVATELINK_ENDPOINT 속성을 구성하는 방법이에요.

스테이지가 프라이빗 연결을 사용하도록 구성되면 S3 호환 스토리지 서비스에 대한 연결이 클라우드 제공업체의 내부 네트워크를 통과해요. 스테이지를 아웃바운드 프라이빗 연결을 사용하도록 구성하면 스토리지 위치에 대한 공용 액세스를 차단해 데이터 로드 및 언로드 작업에 보안을 추가해요.

S3 호환 스테이지는 AWS(Amazon Web Services), Microsoft Azure, GCP(Google Cloud Platform)에 배포된 Snowflake 계정에서 지원돼요. 프라이빗 엔드포인트를 프로비저닝하는 단계는 Snowflake 계정을 호스팅하는 클라우드 제공업체에 따라 달라져요.

출처: Documentation

본문

아웃바운드 프라이빗 연결 비용

처리된 총 데이터와 함께 각 프라이빗 연결 엔드포인트에 대해 비용을 지불해요. 이 항목의 요금은 Snowflake 서비스 소비 테이블을 참고해요.

ACCOUNT_USAGE 및 ORGANIZATION_USAGE 스키마의 청구 뷰를 조회할 때 다음 서비스 유형으로 필터링해 이 항목의 비용을 확인할 수 있어요.

  • OUTBOUND_PRIVATELINK_ENDPOINT
  • OUTBOUND_PRIVATELINK_DATA_PROCESSED

예를 들어 USAGE_IN_CURRENCY_DAILY 뷰를 조회하고 이러한 서비스 유형으로 필터링할 수 있어요.

고려 사항

USE_PRIVATELINK_ENDPOINT 속성은 스테이지별로 설정되므로 단일 S3 호환 스토리지 서비스가 프라이빗 연결과 공용 연결을 동시에 지원할 수 있어요. 이렇게 하려면 같은 스토리지 서비스를 가리키는 별도의 스테이지를 만들어요.

  • 프라이빗 연결의 경우 USE_PRIVATELINK_ENDPOINT = TRUE로 스테이지를 만들어요.
  • 공용 연결의 경우 USE_PRIVATELINK_ENDPOINT = FALSE로 스테이지를 만들어요.

문법 업데이트

스테이지의 USE_PRIVATELINK_ENDPOINT 속성은 프라이빗 연결로 접근되는지 아니면 공용 네트워크를 통과해 접근되는지 결정해요. 프라이빗 연결을 사용하려면 스테이지를 만들거나 수정할 때 USE_PRIVATELINK_ENDPOINT = TRUE를 설정해요.

CREATE OR REPLACE STAGE <stage_name>
  URL = 's3compat://<bucket>/<path>/'
  ENDPOINT = '<s3_compatible_endpoint>'
  CREDENTIALS = (
    AWS_KEY_ID = '<key_id>'
    AWS_SECRET_KEY = '<secret_key>'
  )
  USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]

ALTER STAGE <stage_name>
  SET USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]

DESCRIBE STAGE 명령은 USE_PRIVATELINK_ENDPOINT 속성과 그 값을 포함해요.

외부 스테이지 액세스 구성

프라이빗 엔드포인트 프로비저닝

프라이빗 엔드포인트를 프로비저닝하는 단계는 Snowflake 계정을 호스팅하는 클라우드 제공업체에 따라 달라져요. 배포에 맞는 단계를 따르세요.

AWS

SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 S3 호환 스토리지 서비스용 Snowflake VPC에 프라이빗 엔드포인트를 프로비저닝해요.

USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  '<service_name>',
  '<s3_compatible_endpoint_hostname>');

여기서 <service_name>은 S3 호환 스토리지 제공업체가 제공하는 PrivateLink 서비스 이름(예: com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0)이고, <s3_compatible_endpoint_hostname>은 S3 호환 API 엔드포인트의 정규화된 호스트 이름(예: mystorage.example.com, 스테이지에서 ENDPOINT로 지정한 값)이에요.

Azure

SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 S3 호환 스토리지 서비스용 프라이빗 엔드포인트를 프로비저닝해요.

USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  '<resource_id>',
  '<s3_compatible_endpoint_hostname>',
  '<subresource>');

여기서 <resource_id>는 Azure 스토리지 Private Link 서비스의 Azure 리소스 ID(예: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount)이고, <s3_compatible_endpoint_hostname>은 S3 호환 API 엔드포인트의 정규화된 호스트 이름(예: mystorage.example.com)이며, <subresource>는 스토리지 서비스의 하위 리소스 유형으로 blob 또는 dfs예요.

함수를 호출한 후 Azure 스토리지 리소스의 소유자로서 Azure Portal에서 프라이빗 엔드포인트를 승인해요. 자세한 내용은 승인 프로세스를 참고해요.

GCP

SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해 S3 호환 스토리지 서비스용 프라이빗 엔드포인트를 프로비저닝해요.

USE ROLE ACCOUNTADMIN;

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  '<service_endpoint>',
  '<s3_compatible_endpoint_hostname>');

여기서 <service_endpoint>는 S3 호환 스토리지 제공업체가 제공하는 Private Service Connect 서비스 엔드포인트(예: projects/my-project/regions/us-central1/serviceAttachments/my-service-attachment)이고, <s3_compatible_endpoint_hostname>은 S3 호환 API 엔드포인트의 정규화된 호스트 이름(예: mystorage.example.com)이에요.

프라이빗 연결로 외부 스테이지 만들기

프라이빗 엔드포인트를 프로비저닝한 후 다음 단계를 따라 스테이지를 만들고 연결을 확인해요.

  1. SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출해요. 함수 출력에 "status": "APPROVED"가 포함되면 Snowflake에서 S3 호환 스토리지 서비스로의 연결이 프라이빗 연결을 사용할 수 있게 돼요. "APPROVED" 상태를 기다리는 동안 다음 단계를 계속 진행할 수 있어요.
  2. 외부 스테이지를 만들고 USE_PRIVATELINK_ENDPOINT 속성을 TRUE로 설정해요. 예를 들어:
CREATE STAGE my_s3compat_private_stage
  URL = 's3compat://mybucket/files/'
  ENDPOINT = 'mystorage.example.com'
  CREDENTIALS = (
    AWS_KEY_ID = '1a2b3c...'
    AWS_SECRET_KEY = '4x5y6z...'
  )
  USE_PRIVATELINK_ENDPOINT = TRUE;
  1. 프라이빗 엔드포인트가 "APPROVED" 상태가 된 후, 외부 스테이지에서 Snowflake로 데이터를 로드하는 것을 테스트해요.
COPY INTO my_table
  FROM @my_s3compat_private_stage/load/;

데이터 로드 및 언로드에 대한 자세한 내용은 Amazon S3 호환 스토리지 사용을 참고해요.

외부 볼륨 액세스 구성

Iceberg 테이블용 외부 볼륨으로 S3 호환 스토리지의 프라이빗 연결을 구성하려면 S3 호환 스토리지용 외부 볼륨에 대한 프라이빗 연결을 참고해요.

엔드포인트 프로비저닝 해제

외부 스테이지에 더 이상 프라이빗 연결 엔드포인트가 필요하지 않으면 스테이지의 USE_PRIVATELINK_ENDPOINT 속성을 설정 해제한 다음 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출해요.

더 알아보기