Amazon S3 호환 스토리지 사용

Amazon S3 호환 스토리지 사용

이 주제는 Snowflake에서 Amazon S3 호환 스토리지에 접근하는 방법에 대한 정보를 제공해요.

스토리지 애플리케이션 또는 장치가 업계 표준인 Amazon Simple Storage Service(S3) REST API와 호환되는 API(응용 프로그래밍 인터페이스)를 제공하면 Amazon S3 호환인 거예요. Amazon S3 REST API는 스토리지 버킷과 객체에 대한 CRUD 작업과 관리 작업을 가능하게 해요.

Snowflake에서는 외부 스테이지를 사용해 온프레미스 스토리지와 퍼블릭 클라우드 밖에 존재하는 장치를 포함해 점점 더 많은 S3 호환 스토리지 솔루션에 연결할 수 있어요. 외부 스테이지는 S3 호환 API 엔드포인트, 버킷 이름과 경로, 자격 증명을 저장해요. 사용자가 스토리지 위치에서 데이터를 로드하고 언로드할 수 있도록 스테이지에 대한 권한을 역할에 부여해요.

Snowflake의 Amazon S3 호환 스토리지 지원을 사용해 다음과 같은 작업을 수행할 수 있어요.

참고 — S3 호환 스토리지용 외부 볼륨을 만들어 외부에서 관리되는 Apache Iceberg™ 테이블을 조회할 수도 있어요. 자세한 내용은 S3 호환 스토리지용 외부 볼륨 구성을 참고해요.

참고 — 보안 태세를 강화하려면 네트워크 트래픽에 공용 인터넷 대신 프라이빗 연결을 사용하도록 외부 스테이지를 구성할 수 있어요. 자세한 내용은 S3 호환 스테이지에 대한 프라이빗 연결을 참고해요.

출처: Documentation

본문

클라우드 플랫폼 지원

이 기능은 다음 지원되는 클라우드 플랫폼에 호스팅된 Snowflake 계정에서 사용할 수 있어요.

  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure

S3 호환 스토리지 요구 사항

Snowflake용 S3 호환 API 엔드포인트는 다음 요구 사항을 충족해야 해요.

  • S3 API와 호환성이 높고 (GitHub의) 공용 테스트 스위트를 통과할 수 있어야 해요. 엔드포인트가 S3처럼 동작하지 않으면 Snowflake에서 작동할 수 없어요.
  • 타사 스토리지 제공업체가 Snowflake S3 호환으로 테스트되고 호환되는 서비스로 지원해야 해요. 제품 중 적어도 일부를 테스트해 Snowflake에서 작동하는 것을 확인한 공급업체 목록은 S3 호환 스토리지 공급업체 지원을 참고해요.
  • Snowflake 계정이 호스팅된 퍼블릭 클라우드에서 접근 가능해야 해요.
  • 분석 요구를 충족하기 위해 고가용성과 성능을 갖춰야 해요.
  • 가상 호스트 스타일 요청을 사용하도록 구성해야 해요. 자세한 내용은 Amazon S3 문서의 버킷의 가상 호스팅을 참고해요.
  • 유효한 TLS 인증서로 HTTPS 통신을 사용하도록 구성해야 해요.
  • 직접 자격 증명을 사용하도록 구성해야 해요.
  • 포트 번호를 포함하면 안 돼요. 예를 들어 mystorage.com:3000 엔드포인트는 지원되지 않아요.

중요 — Amazon S3 호환 엔드포인트는 모든 계정에 자동으로 활성화되지는 않아요. r2.cloudflarestorage.com을 포함하는 Cloudflare 엔드포인트는 기본적으로 활성화돼요. 다른 엔드포인트를 활성화하려면 Snowflake 지원에 문의해요. 요청을 보내기 전에 (GitHub의) 공용 테스트 스위트를 사용해 엔드포인트를 검증해요. 요청에 다음 정보를 제공해요.

  • Snowflake 계정 이름과 클라우드 리전 배포.
  • 엔드포인트 URL(예: my-s3-endpoint.example.com).
  • 엔드포인트를 제공하는 소프트웨어 또는 하드웨어 공급업체.

S3 호환 스토리지용 외부 스테이지 만들기

S3 호환 스토리지용 외부 스테이지를 만들려면 CREATE STAGE 명령을 사용해 이름이 있는 외부 스테이지를 만들어요. 외부 스테이지를 사용해 파일 나열, 데이터 로드, 파일 언로드 같은 작업을 수행할 수 있어요.

선택적으로 외부 스테이지에 디렉터리 테이블을 추가해요. 디렉터리 테이블을 조회해 참조된 스토리지의 파일과 기타 메타데이터에 접근하기 위한 파일 URL을 검색할 수 있어요.

참고 — 디렉터리 테이블을 추가할 때는 AUTO_REFRESH 매개 변수를 FALSE로 설정해야 해요. S3 호환 외부 스테이지의 메타데이터는 자동으로 새로 고칠 수 없어요.

다음 예제는 mystorage.com 엔드포인트의 my_bucket/files/라는 버킷과 경로를 가리키는 my_s3_compat_stage라는 외부 스테이지를 만들어요. 이 예제에서 사용된 AWS_KEY_ID와 AWS_SECRET_KEY 값은 설명 목적으로만 사용됐어요.

CREATE STAGE my_s3compat_stage
  URL = 's3compat://my_bucket/files/'
  ENDPOINT = 'mystorage.com'
  CREDENTIALS = (AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...')

데이터 로드 및 언로드

S3 호환 스토리지용으로 구성된 외부 스테이지를 사용해 데이터를 로드하고 언로드할 수 있어요. 다음 기능이 S3 호환 스토리지에서 작동해요.

  • COPY INTO <table> 명령을 사용한 대량 데이터 로드. 예를 들어 my_s3compat_stage라는 스테이지에 정의된 버킷과 경로의 load 하위 경로에 있는 모든 파일에서 테이블 t1로 데이터를 로드해요.
COPY INTO t1
  FROM @my_s3compat_stage/load/;
COPY INTO @my_s3compat_stage/unload/
  FROM t2;

외부 테이블로 데이터 레이크 확장

S3 호환 스토리지와 함께 외부 테이블을 사용해 데이터를 먼저 Snowflake에 로드하지 않고 조회할 수 있어요. 이 섹션은 S3 호환 스토리지용으로 구성된 외부 스테이지의 위치를 참조하는 외부 테이블을 만들고 조회하는 방법을 간략히 다뤄요.

먼저 CREATE EXTERNAL TABLE을 사용해 S3 호환 외부 스테이지를 참조하는 외부 테이블을 만들어요.

참고 — 이러한 외부 테이블의 메타데이터는 자동으로 새로 고칠 수 없어요. AUTO_REFRESH = TRUE 매개 변수 설정은 지원되지 않아요. 추가되거나 제거된 파일을 등록하려면 ALTER EXTERNAL TABLE … REFRESH 명령을 실행해 메타데이터를 수동으로 새로 고쳐야 해요.

다음 예제는 my_s3compat_stage라는 스테이지의 path1 하위 경로를 참조하는 et라는 외부 테이블을 만들어요. path1 하위 경로의 파일은 Apache Parquet 형식이에요.

CREATE EXTERNAL TABLE et
 LOCATION=@my_s3compat_stage/path1/
 AUTO_REFRESH = FALSE
 REFRESH_ON_CREATE = TRUE
 FILE_FORMAT = (TYPE = PARQUET);

S3 호환 스토리지용 외부 테이블을 만든 후 조회할 수 있어요. 예를 들어 이전에 만든 외부 테이블의 value 컬럼을 조회해요.

SELECT value FROM et;

조회 성능은 네트워크와 애플리케이션 또는 장치 성능에 따라 달라져요. 성능이 중요하다면 외부 테이블에 구체화된 뷰를 만들어요. 구체화된 뷰는 미리 계산되므로, 구체화된 뷰를 조회하는 것이 뷰의 기본 테이블에 대해 쿼리를 실행하는 것보다 빨라요.

S3 호환 스토리지 공급업체 지원

S3 호환 API가 있는 장치 또는 애플리케이션을 Snowflake와 함께 사용할 수 있어요. 그러나 스토리지 서비스 제공업체가 호환성을 보장할 책임이 있어요.

다음 공급업체는 제품 중 적어도 일부를 테스트해 Snowflake에서 작동하는 것을 확인했다고 Snowflake에 밝혔어요.

  • Akave
  • Backblaze
  • Cloudflare
  • Cloudian
  • Cohesity
  • Dell
  • Hitachi Content Platform
  • IBM Storage Ceph
  • IDrive e2
  • MinIO
  • NetApp(StorageGRID)
  • Nutanix
  • PureStorage
  • Scality
  • Wasabi

이 목록은 편의를 위해서만 제공돼요. Snowflake는 외부 제품을 테스트해 호환성을 검증하지 않으며, 타사 공급업체가 판매하는 제품의 문제를 고칠 수 없어요. S3 API가 있는 하드웨어 또는 소프트웨어가 Snowflake에서 작동하는지 또는 어떻게 작동하는지에 대해 질문이 있으면 공급업체에 직접 문의해요.

S3 호환 API 테스트

S3 호환 API를 만든 하드웨어 또는 소프트웨어 개발자라면 (GitHub의) 공용 테스트 스위트를 사용해 S3 API가 Snowflake에서 작동하는지 테스트할 수 있어요. 테스트 스위트는 구현과 Snowflake가 S3에서 기대하는 것 사이의 분명한 불일치를 찾아요. 그러나 테스트가 비호환성을 식별하지 못하는 경우도 있을 수 있어요.

고객이라면 자신의 장치를 테스트하려면 공급업체에 문의해 이 테스트를 실행해요. 공용 테스트를 자신의 장치에서 실행해 호환성을 평가할 수도 있어요.

더 알아보기