S3 스테이지 만들기¶
외부(즉, Amazon S3) 스테이지에서는 파일의 데이터를 테이블에 로드할 수 있도록 데이터 파일이 저장되는 위치를 지정합니다.
폴더 경로(또는 S3 용어로 접두사)가 포함되거나 포함되지 않은 지정된 S3 버킷의 파일에서 데이터를 직접 로드할 수 있습니다. 경로가 / 로 끝나면 해당 S3 폴더의 모든 오브젝트가 로드됩니다.
참고
이전 단계 에서, 지침에 따라 외부 S3 버킷에 액세스하기 위해 필요한 정책 및 권한으로 AWS IAM 역할을 구성한 경우에는 이미 S3 스테이지를 생성한 것입니다. 이 단계를 건너뛰고 S3 스테이지에서 데이터 복사하기 를 진행할 수 있습니다.
이 항목의 내용:
외부 스테이지¶
Snowflake는 S3 버킷의 파일에서 직접 로드하는 기능뿐만 아니라 파일을 스테이징 하기 위해 필요한 모든 정보를 캡슐화하는 명명된 외부 스테이지 생성을 지원하며, 여기에는 다음이 포함됩니다.
파일이 스테이징되는 S3 버킷.
버킷의 명명된 저장소 통합 오브젝트 또는 S3 자격 증명(보호된 경우).
암호화 키(버킷의 파일이 암호화된 경우).
명명된 외부 스테이지는 선택 사항이지만 동일한 위치에서 정기적으로 데이터를 로드하려면 사용하는 것이 권장 됩니다.
참고
Snowflake는 Amazon S3 및 Google Cloud Storage에 업로드할 때 멀티파트 업로드를 사용합니다. 이 프로세스로 인해 외부 스테이지의 저장소 위치에 불완전한 업로드가 남아 있을 수 있습니다.
불완전한 업로드가 누적되지 않도록 하려면 수명 주기 규칙을 설정하는 것이 좋습니다. 지침은 `Amazon S3<https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html>`_ 또는 `Google Cloud Storage<https://cloud.google.com/storage/docs/lifecycle#abort-mpu>`_ 설명서를 참조하세요.
외부 스테이지 만들기¶
명명된 외부 스테이지는 SQL 또는 웹 인터페이스를 사용하여 생성할 수 있습니다.
참고
스테이지를 생성하려면 필요한 권한을 부여받거나 상속하는 역할을 사용해야 합니다. 자세한 내용은 /sql-reference/sql/create-stage`의 :ref:`label-create_stage_privileges 섹션을 참조하세요.
SQL을 사용하여 외부 스테이지 만들기¶
SQL을 사용하여 외부 스테이지를 만들려면 CREATE STAGE 명령을 사용하십시오.
다음 예에서는 SQL을 사용하여 encrypted_files/ 폴더 경로가 포함된 비공개/보호 S3 버킷인 mybucket 을 참조하는 my_s3_stage 외부 스테이지를 생성합니다. CREATE 문에는 S3 버킷에 액세스하기 위해 옵션 1: Amazon S3에 액세스하기 위한 Snowflake 저장소 통합 구성하기 에서 만든 s3_int 저장소 통합이 포함됩니다. 이 스테이지는 버킷 경로에 저장된 파일의 데이터를 설명하는 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 APIs 의 StageCollection.create 메서드를 사용합니다.
앞의 SQL 예제와 유사하게, 다음 Python 예제는 mybucket 라는 폴더 경로로 encrypted_files/ 라는 이름의 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 를 사용하여 명명된 외부 스테이지를 만들려면 다음을 수행하십시오.
Sign in to Snowsight.
At the top of the navigation menu, select
(Create) » Stage » External Stage.외부 클라우드 저장소 공급자(Amazon S3, Microsoft Azure 또는 Google Cloud Platform)를 선택합니다.
Create Stage 대화 상자에서 Stage Name 을 입력합니다.
스테이지를 생성할 데이터베이스와 스키마를 선택합니다.
외부 클라우드 저장소 위치의 URL 을 입력합니다.
외부 저장소가 공용이 아닌 경우 Authentication 을 활성화하고 세부 정보를 입력합니다. 자세한 내용은 CREATE STAGE 섹션을 참조하십시오.
원하는 경우 Directory table 을 선택 취소하십시오. 디렉터리 테이블을 사용하면 스테이지에서 파일을 볼 수 있지만 웨어하우스가 필요하므로 비용이 발생합니다. 지금은 이 옵션을 선택 취소하고 나중에 디렉터리 테이블을 활성화하도록 할 수 있습니다.
Directory table`을 활성화하는 경우 선택적으로 :ui:`Enable auto-refresh`를 선택한 후 이벤트 알림 또는 알림 통합을 선택하여 파일이 추가되거나 제거될 때 디렉터리 테이블을 자동으로 새로 고칩니다. 자세한 내용은 :doc:`data-load-dirtables-auto 섹션을 참조하세요.
파일이 암호화된 경우 :ui:`Encryption`을 활성화하고 세부 정보를 입력합니다.
(선택 사항) 생성된 SQL 문을 보려면 :ui:`SQL Preview`를 확장합니다. 스테이지에 대해 AUTO_REFRESH와 같은 추가 옵션을 지정하려면 워크시트에서 이 SQL 미리 보기를 열면 됩니다.
Create 를 선택합니다.
Classic Console을 사용하여 외부 스테이지 만들기¶
Databases » <db_이름> » Stages 을 선택합니다.
다음 항목: S3 스테이지에서 데이터 복사하기