Google Cloud Storage용 외부 볼륨 구성하기¶
외부 볼륨을 사용하여 Snowflake에게 Google Cloud Storage(GCS) 버킷에 대한 제한된 액세스 권한을 부여합니다.
전제 조건¶
외부 볼륨을 구성하기 전에 다음을 수행해야 합니다.
- Google Cloud Storage 버킷. - 외부에서 관리되는 Iceberg 테이블에 외부 볼륨을 사용하려면 모든 테이블 데이터와 메타데이터 파일이 버킷에 있어야 합니다. 
- 데이터 복구를 지원하려면 외부 클라우드 저장소 위치에 대한 버전 관리를 활성화하십시오. 
 
- Google Cloud에서 IAM 정책 및 역할을 만들고 관리할 수 있는 권한. Google Cloud 관리자가 아닌 경우 Google Cloud 관리자에게 이러한 작업을 수행하도록 요청합니다. 
1단계: Snowflake에서 외부 볼륨 만들기¶
CREATE EXTERNAL VOLUME 명령을 사용하여 외부 볼륨을 생성합니다.
참고
계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 SQL 명령을 실행할 수 있습니다.
다음 예에서는 암호화로 단일 GCS 저장소 위치를 정의하는 외부 볼륨을 생성합니다.
CREATE EXTERNAL VOLUME my_gcs_external_volume
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-us-west-2'
        STORAGE_PROVIDER = 'GCS'
        STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
        ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
      )
    );
2단계: Snowflake 계정에 대한 GCS 서비스 계정 검색¶
Snowflake 계정에 대해 자동으로 생성된 GCS 서비스 계정에 대한 ID를 검색하려면 DESCRIBE EXTERNAL VOLUME 명령을 사용합니다. 이전에 생성한 외부 볼륨의 이름을 지정합니다.
예:
DESC EXTERNAL VOLUME my_gcs_external_volume;
출력에 STORAGE_GCP_SERVICE_ACCOUNT 속성 값을 기록합니다(예: service-account-id@project1-123456.iam.gserviceaccount.com).
Snowflake는 전체 Snowflake 계정에 대해 단일 GCS 서비스 계정을 프로비저닝합니다. 모든 GCS 외부 볼륨은 해당 서비스 계정을 사용합니다.
3단계: 서비스 계정에 버킷 오브젝트 액세스 권한 부여¶
이 단계에서는 Google Cloud console 에서 Snowflake에 대한 IAM 액세스 허가를 구성합니다.
사용자 지정 IAM 역할 만들기¶
버킷에 액세스하고 오브젝트를 가져오기 위해 필요한 권한이 있는 사용자 지정 역할을 생성합니다.
- 프로젝트 편집기로 Google Cloud console 에 로그인합니다. 
- 홈 대시보드에서 IAM & Admin » Roles 를 선택합니다. 
- Create Role 을 선택합니다. 
- 사용자 지정 역할에 Title 및 선택 사항 Description 을 입력합니다. 
- Add Permissions 를 선택합니다. 
- Filter 에서, Service 를 선택한 다음 storage 를 선택합니다. 
- 권한 목록을 필터링하고 목록에 다음을 추가합니다. - storage.buckets.get
- storage.objects.create
- storage.objects.delete
- storage.objects.get
- storage.objects.list
 
- Add 를 선택합니다. 
- Create 를 선택합니다. 
GCS 서비스 계정에 사용자 지정 역할 할당¶
- 프로젝트 편집기로 Google Cloud console 에 로그인합니다. 
- 홈 대시보드에서 Cloud Storage » Buckets 를 선택합니다. 
- 버킷 목록을 필터링하고 외부 볼륨을 생성할 때 지정한 버킷을 선택합니다. 
- Permissions » View by principals 을 선택한 다음 Grant access 를 선택합니다. 
- Add principals 아래에 출력된 서비스 계정 이름의 이름을 2단계: Snowflake 계정에 대한 GCS 서비스 계정 검색 에 붙여넣습니다. 
- Assign roles 에서, 이전에 만든 사용자 지정 IAM 역할을 선택한 다음 Save 를 선택합니다. 
Google Cloud 키 관리 서비스 키에 대한 GCS 서비스 계정 권한 부여¶
참고
이 단계는 Google Cloud Key Management Service(클라우드 KMS)에 저장된 키를 사용하여 GCS 버킷을 암호화하는 경우에만 필요합니다.
- 프로젝트 편집기로 Google Cloud console 에 로그인합니다. 
- 홈 대시보드에서 Security » Key Management 를 검색하여 선택합니다. 
- GCS 버킷에 할당된 키 링을 선택합니다. 
- 오른쪽 위 모서리에서 SHOW INFO PANEL 을 선택합니다. 키 링에 대한 정보 패널이 나타납니다. 
- Add members 필드에서 2단계: Snowflake 계정에 대한 GCS 서비스 계정 검색 의 DESCRIBE EXTERNAL VOLUME 출력에서 서비스 계정 이름을 검색합니다. 
- Select a role 드롭다운에서 Cloud KMS CryptoKey Encrypter/Decrypter 역할을 선택합니다. 
- Add 를 선택합니다. 서비스 계정 이름이 정보 패널의 Cloud KMS CryptoKey Encrypter/Decrypter 역할 드롭다운에 추가됩니다. 
4단계: 저장소 액세스 확인¶
Snowflake가 저장소 공급자를 성공적으로 인증할 수 있는지 확인하려면 SYSTEM$VERIFY_EXTERNAL_VOLUME 함수를 호출합니다.
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_external_volume');
참고
다음 오류가 발생하면 계정 관리자가 Snowflake 배포 리전에서 AWS STS를 활성화해야 합니다. 지침은 AWS 설명서의 `AWS 리전에서 AWS STS 관리<https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html>`_를 참조하세요.
Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.
다음 단계¶
외부 볼륨을 구성하면 Iceberg 테이블을 생성할 수 있습니다.
- 외부 카탈로그를 사용하는 읽기 전용 Iceberg 테이블을 만들려면 카탈로그 통합 구성하기 섹션을 참조하십시오. 
- Snowflake 플랫폼이 완벽하게 지원되는 Iceberg 테이블을 만들려면 Snowflake 관리 테이블 만들기 를 참조하십시오.