S3 호환 저장소용 외부 볼륨 구성하기¶
S3 호환 스토리지에 데이터 및 메타데이터가 있는 외부 관리 또는 Snowflake 관리 Apache Iceberg™ 테이블의 경우, Amazon S3 호환 스토리지 위치와 연결된 외부 볼륨을 구성할 수 있습니다.
S3 호환 저장소용 외부 볼륨을 생성하려면 :ref:`SQL을 사용 <label-tables_iceberg_s3_compatible_sql>`하거나 :ref:`Snowsight를 사용 <label-tables_iceberg_s3_compatible_snowsight>`하면 됩니다.
전제 조건¶
Iceberg 테이블에 S3 호환 저장소를 사용하려면 Snowflake용 S3 호환 API 엔드포인트가 있어야 합니다. 자세한 내용은 S3 호환 저장소 요구 사항 섹션을 참조하십시오.
Create an external volume for S3-compatible storage by using SQL¶
S3 호환 저장소 위치를 지정하는 외부 볼륨을 만듭니다. CREATE EXTERNAL VOLUME 명령의 S3 호환 매개 변수에 대한 자세한 내용은 명령 구문 섹션을 참조하십시오.
CREATE OR REPLACE EXTERNAL VOLUME ext_vol_s3_compat
STORAGE_LOCATIONS = (
(
NAME = 'my_s3_compat_storage_location'
STORAGE_PROVIDER = 'S3COMPAT'
STORAGE_BASE_URL = 's3compat://mybucket/unload/mys3compatdata'
CREDENTIALS = (
AWS_KEY_ID = '1a2b3c...'
AWS_SECRET_KEY = '4x5y6z...'
)
STORAGE_ENDPOINT = 'mystorage.com'
)
);
Create an external volume for S3-compatible storage by using Snowsight¶
Snowsight 에 로그인합니다.
왼쪽 하단에서 이름 » :ui:`Switch role`을 선택하고 :ui:`ACCOUNTADMIN`을 선택하거나 CREATE EXTERNAL VOLUME 권한이 있는 역할을 선택합니다.
자세한 내용은 기본 역할 전환 섹션을 참조하십시오.
탐색 메뉴에서 Catalog » External data 를 선택합니다.
External volumes 탭을 선택합니다.
+ Create 을 선택합니다.
S3 compatible storage 을 선택합니다.
Next 을 선택합니다.
S3 호환 저장소 공급자에서 버킷에 액세스하고 오브젝트를 가져오는 데 필요한 권한이 있는 액세스 키 자격 증명을 생성합니다.
자세한 내용은 S3 호환 저장소 요구 사항 섹션을 참조하십시오.
Next 을 선택합니다.
외부 볼륨을 구성하려면 Configure external volume 페이지에서 필드를 완성합니다.
필드
설명
External volume name
외부 볼륨의 이름을 입력합니다.
Storage endpoint
S3 호환 API 엔드포인트를 가리키는 정규화된 도메인을 지정합니다.
참고
저장소 엔드포인트에는 버킷 이름을 포함하지 않아야 합니다. 예를 들어,
my_bucket.example.com이 아닌example.com을 지정합니다.AWS key ID
S3 호환 저장소 위치에 연결하고 액세스하기 위한 AWS 키 ID를 지정합니다.
AWS secret key
S3 호환 저장소 위치에 연결하고 액세스하기 위한 AWS 시크릿 키를 지정합니다.
Access scope
외부 볼륨에 대해 쓰기 작업이 허용되는지 여부를 지정합니다. 다음 테이블의 경우 :ui:`Allow writes`로 설정해야 합니다.
Snowflake를 카탈로그로 사용하는 Iceberg 테이블.
외부 카탈로그를 사용하고 쓰기 가능한 Iceberg 테이블. 외부 관리 Iceberg 테이블은 ALLOWED_WRITE_OPERATIONS 매개 변수가 TRUE로 설정된 카탈로그 연결 데이터베이스를 통해 액세스하는 경우에 쓰기 가능합니다.
Delta 테이블 파일에서 생성된 Iceberg 테이블의 경우 이 매개 변수를 Allow writes`로 설정하면 Snowflake가 외부 저장소에 Iceberg 메타데이터를 쓸 수 있습니다. 자세한 내용은 :ref:`label-tables_iceberg_metadata_delta 섹션을 참조하십시오.
이 필드의 값은 지정된 각 저장소 위치에 대해 클라우드 저장소 계정에 설정한 권한과도 일치해야 합니다.
참고
외부 관리 Iceberg 테이블을 읽는 데 외부 볼륨을 사용하려는 경우 이 필드를 Off로 설정하면 됩니다. 외부 Iceberg 카탈로그에서 테이블을 읽을 때 Snowflake는 클라우드 저장소에 데이터나 Iceberg 메타데이터 파일을 쓰지 않습니다.
Scope
이 외부 볼륨을 향후 Iceberg 테이블의 기본 위치로 설정할 위치를 선택합니다. 가능한 값은 다음과 같습니다.
Do not set a default: 어느 곳에서도 외부 볼륨을 기본값으로 설정하지 않습니다.
Account: 전체 계정에서 생성되는 Iceberg 테이블의 기본값으로 이 외부 볼륨을 설정합니다.
Specific database: 지정하는 데이터베이스 아래에 생성되는 Iceberg 테이블의 기본값으로 이 외부 볼륨을 설정합니다. 이 데이터베이스를 지정하려면 Specific database`를 선택할 때 표시되는 :ui:`Database 드롭다운을 사용합니다.
Specific schema: 지정하는 스키마 아래에 생성되는 Iceberg 테이블의 기본값으로 이 외부 볼륨을 설정합니다. 이 스키마를 지정하려면 표시되는 Database 드롭다운을 사용하여 먼저 스키마의 상위 데이터베이스를 선택한 다음 스키마를 선택합니다.
Comment
외부 볼륨에 대한 설명을 지정합니다.
Storage base URL
클라우드 저장소 위치의 기본 URL을 지정합니다.
Next 을 선택합니다.
Verify connection & create volume 페이지에서 Snowflake는 S3 호환 저장소에 대한 연결을 확인한 다음 “Successfully connected” 메시지를 표시합니다.
참고
Snowflake가 연결을 확인할 수 없는 경우 권한 또는 외부 볼륨 구성을 확인한 다음 :ui:`Verify again`을 선택합니다.
Create 를 선택합니다.
외부 볼륨 자격 증명 업데이트하기¶
외부 볼륨의 자격 증명을 변경하거나 업데이트하려면 ALTER EXTERNAL VOLUME … UPDATE 명령을 사용할 수 있습니다. 자격 증명을 변경할 저장소 위치의 이름을 지정합니다.
ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE
STORAGE_LOCATION = 'my_s3_compat_storage_location'
CREDENTIALS = (
AWS_KEY_ID = '4d5e6f...'
AWS_SECRET_KEY = '7g8h9i...'
);