AWS 용 외부 볼륨에 대한 비공개 연결¶
이 항목에서는 AWS 에서 외부 볼륨에 대한 아웃바운드 비공개 연결을 설정하는 구성 세부 정보를 제공합니다. 아웃바운드 공용 연결과 아웃바운드 비공개 연결의 주요 차이점은 외부 볼륨에 대한 USE_PRIVATELINK_ENDPOINT
속성을 설정하는 방법입니다.
외부 볼륨이 비공개 연결을 사용하도록 구성된 경우 AWS 클라우드 저장소 서비스에 대한 연결은 AWS 내부 네트워크를 통해 이루어집니다. 아웃바운드 비공개 연결을 사용하도록 외부 볼륨을 구성하면 저장소 계정에 대한 공개 액세스를 차단하여 데이터 언로딩 작업에 보안을 강화할 수 있습니다.
외부 볼륨을 사용하여 Iceberg 테이블용 외부 클라우드 저장소에 연결하는 방법에 대한 자세한 내용은 외부 볼륨 구성 섹션을 참조하십시오.
참고
AWS PrivateLink 를 사용하여 Snowflake가 관리하는 Iceberg 테이블 및 오브젝트 저장소 통합을 사용하는 Iceberg 테이블에 액세스할 수 있습니다. 현재 비공개 연결을 사용하여 다른 카탈로그 통합을 사용하는 Iceberg 테이블에 액세스할 수 없습니다.
아웃바운드 비공개 연결 비용¶
처리된 총 데이터와 함께 각 비공개 연결 엔드포인트에 대한 비용을 지불합니다. 이러한 품목의 가격은 Snowflake서비스 사용 테이블 을 참조하십시오.
ACCOUNT_USAGE 및 ORGANIZATION_USAGE 스키마에서 청구 뷰를 쿼리할 때 다음 서비스 유형을 필터링하여 이러한 항목의 비용을 탐색할 수 있습니다.
OUTBOUND_PRIVATELINK_ENDPOINT
OUTBOUND_PRIVATELINK_DATA_PROCESSED
예를 들어 USAGE_IN_CURRENCY_DAILY 뷰를 쿼리하고 이러한 서비스 유형을 필터링할 수 있습니다.
고려 사항¶
동일한 클라우드 저장소 서비스에 대해 아웃바운드 공용 연결과 아웃바운드 비공개 연결을 구성할 수 있습니다. 이렇게 하려면 아웃바운드 공용 연결을 위한 전용 외부 볼륨을 만들고 USE_PRIVATELINK_ENDPOINT = FALSE
를 지정하십시오.
구문 업데이트¶
외부 볼륨의 USE_PRIVATELINK_ENDPOINT
속성은 비공개 연결을 통해 액세스할지 아니면 공용 네트워크를 통과하여 액세스할지를 결정합니다. 비공개 연결을 사용하려면 외부 볼륨을 만들거나 수정할 때 USE_PRIVATELINK_ENDPOINT = TRUE
로 설정하십시오.
CREATE EXTERNAL VOLUME 및 ALTER EXTERNAL VOLUME 의 새로운 구문은 다음과 같습니다.
CREATE OR REPLACE EXTERNAL VOLUME <ext_volume_name>
STORAGE_LOCATIONS =
(
(
NAME = 'my-s3-loc'
STORAGE_PROVIDER = 's3'
STORAGE_BASE_URL = 's3://<bucket>[/<path>/]'
STORAGE_AWS_ROLE_ARN = '<iam_role>'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ]
)
)
ALLOW_WRITES=true;
ALTER EXTERNAL VOLUME <ext_volume_name>
UPDATE STORAGE_LOCATION = '<storage_location_name>'
USE_PRIVATELINK_ENDPOINT = [ TRUE | FALSE ];
DESCRIBE EXTERNAL VOLUME 명령에는 USE_PRIVATELINK_ENDPOINT
속성과 해당 값이 포함됩니다.
외부 볼륨 액세스 구성하기¶
다음 단계에 따라 아웃바운드 비공개 연결을 사용하여 AWS 에서 외부 볼륨으로 데이터를 언로드합니다.
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출하여 Snowflake VNet 에서 비공개 엔드포인트를 프로비저닝하여 Snowflake가 비공개 연결을 통해 외부 AWS 클라우드 저장소에 연결할 수 있도록 하십시오.
다음 예제에서 볼 수 있듯이 개별 AWS S3 버킷을 지정하는 대신 와일드카드 문자(
*
)를 사용해야 합니다. 와일드카드를 사용한다고 해서 모든 S3 버킷이 비공개 연결을 통해 액세스되는 것은 아닙니다. USE_PRIVATELINK_ENDPOINT 매개 변수가 활성화된 외부 볼륨에서 참조하는 버킷만 엔드포인트를 통해 액세스할 수 있습니다.USE ROLE ACCOUNTADMIN; SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.us-west-2.s3', '*.s3.us-west-2.amazonaws.com');
이 함수는 비공개 엔드포인트를 호스트 이름에 바인딩하여 오브젝트에서 AWS PrivateLink 가 활성화되어 있는 한 외부 볼륨이 비공개 엔드포인트를 사용하여 저장소 위치에 연결할 수 있도록 합니다.
SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 함수를 호출합니다.
함수의 출력에
"status": "APPROVED
가 포함되면 Snowflake에서 저장소 계정으로의 연결은 비공개 연결을 사용할 수 있습니다."APPROVED"
상태를 대기하는 동안 다음 단계를 계속 진행할 수 있습니다.USE_PRIVATELINK_ENDPOINT
속성을TRUE
로 설정하여 외부 볼륨을 생성합니다. 예:CREATE EXTERNAL VOLUME external_volume STORAGE_LOCATIONS = ( ( NAME = 'my-s3-loc' STORAGE_PROVIDER = 's3' STORAGE_BASE_URL = 's3://bucketinuswest2/' STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::001234567890:role/myrole' USE_PRIVATELINK_ENDPOINT = TRUE ) ) ALLOW_WRITES=TRUE;
CREATE ICEBERG TABLE 명령을 사용하여 외부 볼륨을 참조하는 Iceberg 테이블을 만듭니다. 예:
CREATE ICEBERG TABLE rand_table (data string) BASE_LOCATION='table' EXTERNAL_VOLUME=external_volume CATALOG='snowflake';
프라이빗 엔드포인트가
"APPROVED"
상태가 되면, Snowflake에서 외부 볼륨으로 데이터를 언로딩하는 것을 테스트합니다.
엔드포인트 프로비저닝 해제¶
외부 볼륨에 대한 비공개 연결 엔드포인트가 더 이상 필요하지 않은 경우 외부 볼륨의 USE_PRIVATELINK_ENDPOINT
속성을 설정 해제하고 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출합니다.