S3 스테이지 만들기
S3 스테이지 만들기
외부(즉, Amazon S3) 스테이지는 데이터 파일이 저장되어 파일의 데이터를 테이블에 로드할 수 있는 위치를 지정해요.
지정된 S3 버킷의 파일에서 폴더 경로(또는 S3 용어로 접두사)가 있거나 없이 직접 데이터를 로드할 수 있어요. 경로가 /로 끝나면 해당 S3 폴더의 모든 객체가 로드돼요.
참고 — 이전 단계에서 외부 S3 버킷에 접근하는 데 필요한 정책과 권한으로 AWS IAM 역할을 구성하는 지침을 따랐다면 이미 S3 스테이지를 만든 거예요. 이 단계를 건너뛰고 S3 스테이지에서 데이터 복사로 계속할 수 있어요.
출처: Documentation
본문
외부 스테이지
Snowflake는 S3 버킷의 파일에서 직접 로드하는 것 외에도, 파일 스테이징에 필요한 모든 정보를 캡슐화하는 이름이 있는 외부 스테이지 만들기를 지원해요. 여기에는 다음이 포함돼요.
- 파일이 스테이징된 S3 버킷.
- 버킷의 이름이 있는 스토리지 통합 객체 또는 S3 자격 증명(버킷이 보호되는 경우).
- 암호화 키(버킷의 파일이 암호화된 경우).
이름이 있는 외부 스테이지는 선택 사항이지만, 같은 위치에서 정기적으로 데이터를 로드할 계획이라면 권장돼요.
참고 — Snowflake는 Amazon S3와 Google Cloud Storage에 업로드할 때 멀티파트 업로드를 사용해요. 이 과정은 외부 스테이지의 스토리지 위치에 완료되지 않은 업로드를 남길 수 있어요. 완료되지 않은 업로드가 쌓이지 않도록 수명 주기 규칙을 설정할 것을 권장해요. 지침은 Amazon S3 또는 Google Cloud Storage 문서를 참고해요.
외부 스테이지 만들기
SQL 또는 웹 인터페이스를 사용해 이름이 있는 외부 스테이지를 만들 수 있어요.
참고 — 스테이지를 만들려면 필요한 권한이 부여되거나 상속된 역할을 사용해야 해요. 자세한 내용은 CREATE STAGE의 액세스 제어 요구 사항을 참고해요.
SQL로 외부 스테이지 만들기
CREATE STAGE 명령을 사용해 SQL로 외부 스테이지를 만들어요.
다음 예제는 SQL을 사용해 encrypted_files/라는 폴더 경로가 있는 mybucket이라는 프라이빗/보호 S3 버킷을 참조하는 my_s3_stage라는 외부 스테이지를 만들어요. CREATE 문은 옵션 1: Amazon S3에 접근하도록 Snowflake 스토리지 통합 구성에서 만든 s3_int 스토리지 통합을 포함해 S3 버킷에 접근해요. 이 스테이지는 버킷 경로에 저장된 파일의 데이터를 설명하는 my_csv_format이라는 이름이 있는 파일 형식 객체를 참조해요.
CREATE STAGE my_s3_stage
STORAGE_INTEGRATION = s3_int
URL = 's3://mybucket/encrypted_files/'
FILE_FORMAT = my_csv_format;
참고 — 스테이지에 이름이 있는 파일 형식 객체(또는 개별 파일 형식 옵션)를 지정하면, 나중에 스테이지에서 데이터를 로드하는 COPY 명령에서 같은 파일 형식 옵션을 지정할 필요가 없어요.
Python으로 외부 스테이지 만들기
Snowflake Python API의 StageCollection.create 메서드를 사용해 외부 스테이지를 만들어요.
앞의 SQL 예제와 유사하게, 다음 Python 예제는 encrypted_files/라는 폴더 경로가 있는 mybucket이라는 S3 버킷을 참조하는 my_s3_stage라는 외부 스테이지를 만들어요.
from snowflake.core.stage import Stage
my_stage = Stage(
name="my_s3_stage",
storage_integration="s3_int",
url="s3://mybucket/encrypted_files/"
)
root.databases["<database>"].schemas["<schema>"].stages.create(my_stage)
참고 — Python API는 현재 CREATE STAGE SQL 명령의 FILE_FORMAT 매개 변수를 지원하지 않아요.
Snowsight로 외부 스테이지 만들기
Snowsight로 이름이 있는 외부 스테이지를 만들려면 다음을 수행해요.
- Snowsight에 로그인해요.
- 탐색 메뉴 상단에서 (Create) » Stage » External Stage를 선택해요.
- 외부 클라우드 스토리지 제공업체를 선택해요: Amazon S3, Microsoft Azure 또는 Google Cloud Platform.
- Create Stage 대화 상자에서 Stage Name을 입력해요.
- 스테이지를 만들 데이터베이스와 스키마를 선택해요.
- 외부 클라우드 스토리지 위치의 URL을 입력해요.
- 외부 스토리지가 공용이 아니면 Authentication을 활성화하고 세부 정보를 입력해요. 자세한 내용은 CREATE STAGE를 참고해요.
- 선택적으로 Directory table을 선택 해제해요. 디렉터리 테이블을 사용하면 스테이지의 파일을 볼 수 있지만 웨어하우스가 필요하므로 비용이 발생해요. 지금은 이 옵션을 선택 해제하고 나중에 디렉터리 테이블을 활성화할 수 있어요. Directory table을 활성화하면 선택적으로 Enable auto-refresh를 선택하고 이벤트 알림 또는 알림 통합을 선택해 파일이 추가되거나 제거될 때 디렉터리 테이블을 자동으로 새로 고쳐요. 자세한 내용은 Data Load Dirtables Auto를 참고해요.
- 파일이 암호화되어 있으면 Encryption을 활성화하고 세부 정보를 입력해요.
- (선택) 생성된 SQL 문을 보려면 SQL Preview를 펼쳐요. AUTO_REFRESH 같은 스테이지의 추가 옵션을 지정하려면 이 SQL 미리 보기를 워크시트에서 열 수 있어요.
- Create를 선택해요.