Iceberg 테이블에 대한 외부 볼륨 구성하기

이 항목에서는 Iceberg 테이블의 외부 볼륨 을 구성하는 데 도움이 되는 정보를 제공합니다. Iceberg 테이블을 생성하려면 먼저 외부 볼륨이 있어야 합니다.

다음 클라우드 저장소 서비스를 위한 외부 볼륨을 생성할 수 있습니다.

Amazon S3의 외부 볼륨 구성하기

이 섹션에서는 외부 볼륨을 사용하여 자체 Amazon S3 버킷에 Snowflake 제한 액세스 권한을 부여하는 방법을 다룹니다.

조직의 관리자가 Amazon Web Services(AWS) 계정에 IAM 사용자 권한을 부여합니다.

참고

  • Snowflake는 점이 포함된 버킷 이름(예: my.s3.bucket)을 가진 외부 볼륨을 지원할 수 없습니다. Snowflake는 가상 호스팅 스타일 경로와 HTTPS를 사용하여 S3의 데이터에 액세스합니다. 그러나 S3는 이름에 점이 있는 가상 호스팅 스타일 버킷에 대해서는 SSL을 지원하지 않습니다.

  • 이 섹션의 지침을 완료하려면 AWS에서 IAM 정책과 역할을 생성하고 관리할 권한이 있어야 합니다. AWS 관리자가 아닌 경우 AWS 관리자에게 이러한 작업을 수행하도록 요청하십시오.

  • 데이터 복구를 지원하려면 외부 클라우드 저장소 위치에 대한 버전 관리를 활성화하십시오.

1단계: S3 버킷에 대한 액세스 허가 구성

AWS 액세스 제어 요구 사항

Snowflake가 폴더와 하위 폴더의 파일에 액세스하기 위해 필요한 S3 버킷 및 폴더 권한은 다음과 같습니다.

  • s3:DeleteObject

  • s3:DeleteObjectVersion

  • s3:GetBucketLocation

  • s3:GetObject

  • s3:GetObjectVersion

  • s3:ListBucket

  • s3:PutObject

참고

s3:PutObject 권한은 외부 볼륨 위치에 대한 쓰기 액세스 권한을 부여합니다. 쓰기 액세스 권한을 완전히 구성하려면 외부 볼륨의 ALLOW_WRITES 매개 변수를 TRUE (기본값)로 설정해야 합니다.

가장 좋은 방법은 Snowflake에 S3 버킷에 대한 액세스 권한을 부여하도록 지정된 IAM 정책을 생성하는 것입니다. 그러면 정책을 역할에 연결하고 AWS에서 해당 역할에 대해 생성한 보안 자격 증명을 사용하여 버킷의 파일에 액세스할 수 있습니다.

IAM 정책 만들기

AWS Management Console에서 Snowflake에 대한 액세스 권한을 구성하려면 다음을 수행하십시오.

  1. AWS Management Console에 로그인합니다.

  2. 홈 대시보드에서 Identity & Access Management (IAM)를 선택합니다.

    AWS Management Console의 ID 및 액세스 관리
  3. 왼쪽 탐색 창에서 Account settings 를 선택합니다.

  4. Security Token Service Regions 목록에서 계정이 있는 Snowflake 리전 을 찾습니다. 상태가 Inactive 인 경우 Activate 를 선택합니다.

  5. 왼쪽 탐색 창에서 Policies 를 선택합니다.

  6. Create Policy 를 선택합니다.

    정책 페이지의 정책 생성 버튼
  7. JSON 탭을 선택합니다.

  8. S3 버킷과 폴더에 Snowflake 액세스 권한을 부여하는 정책을 추가합니다.

    AWS 정책에서는 다양한 보안 사용 사례를 지원합니다. 다음 정책(JSON 형식)은 Snowflake에 단일 버킷 및 폴더 경로를 사용하여 데이터를 읽거나 쓰기 위해 필요한 권한을 제공합니다.

    텍스트를 복사하여 정책 편집기에 붙여넣습니다.

    참고

    • bucketprefix 를 실제 버킷 이름과 폴더 경로 접두사로 바꿉니다.

    • 정부 리전 의 버킷에 대한 ARN(Amazon Resource Name)에는 arn:aws-us-gov:s3::: 접두사가 있습니다.

    • "s3:prefix": 조건을 ["*"] 또는 ["prefix/*"] 로 설정하면 지정된 버킷의 모든 접두사 또는 버킷의 경로에 각각 액세스 권한이 부여됩니다.

    {
       "Version": "2012-10-17",
       "Statement": [
             {
                "Effect": "Allow",
                "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:DeleteObject",
                   "s3:DeleteObjectVersion"
                ],
                "Resource": "arn:aws:s3:::<bucket>/<prefix>/*"
             },
             {
                "Effect": "Allow",
                "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
                ],
                "Resource": "arn:aws:s3:::<bucket>",
                "Condition": {
                   "StringLike": {
                         "s3:prefix": [
                            "<prefix>/*"
                         ]
                   }
                }
             }
       ]
    }
    
    Copy
  9. Review policy 를 선택합니다.

  10. 정책 Name (예: snowflake_access)과 선택 사항인 Description 을 입력합니다.

    정책 검토 페이지의 정책 생성 버튼
  11. Create policy 를 선택합니다.

2단계: AWS에 IAM 역할 만들기

AWS 관리 콘솔에서 AWS IAM 역할을 생성하여 데이터 파일이 포함된 S3 버킷에 대한 권한을 부여합니다.

  1. AWS Management Console에 로그인합니다.

  2. 홈 대시보드에서 Identity & Access Management (IAM)를 선택합니다.

    AWS Management Console의 ID 및 액세스 관리
  3. 왼쪽 탐색 창에서 Roles 를 선택합니다.

  4. Create role 을 선택합니다.

    AWS Management Console에서 신뢰할 수 있는 엔터티 페이지 선택
  5. 신뢰할 수 있는 엔터티 유형에는 Another AWS account 를 선택합니다.

  6. Account ID 필드에 본인의 AWS 계정 ID를 입력합니다. 이후 단계에서는 신뢰할 수 있는 관계를 수정하고 Snowflake에 대한 액세스 권한을 부여합니다.

  7. Require external ID 옵션을 선택합니다. AWS 리소스(예: S3 버킷)에 대한 액세스 권한을 Snowflake와 같은 서드 파티에 부여하는 데 외부 ID가 사용됩니다.

    0000 과 같은 자리 표시자 ID를 입력합니다. 이후 단계에서는 IAM 역할의 신뢰 관계를 수정하고 외부 볼륨의 외부 ID를 지정합니다.

  8. Next 를 선택합니다.

  9. 1단계: S3 버킷에 대한 액세스 허가 구성 에서 생성한 정책을 찾아 이 정책을 선택합니다.

  10. Next 를 선택합니다.

    AWS Management Console의 검토 페이지
  11. 역할의 이름과 설명을 입력하고 Create role 을 선택합니다. 이제 버킷에 대한 IAM 정책을 생성하고 IAM 역할을 생성하며 정책을 역할에 연결했습니다.

  12. 역할 요약 페이지에서 Role ARN 값을 찾아서 기록합니다. 다음 단계에서 이 값을 사용하여 이 역할을 참조하는 Snowflake 외부 볼륨을 생성합니다.

    IAM 역할

3단계: SSE-KMS 암호화에 필요한 권한을 IAM 역할에 부여(선택 사항)

AWS KMS 키로 암호화된 오브젝트를 Amazon S3에 업로드하려면 2단계: AWS에 IAM 역할 만들기 에서 생성한 IAM 역할에 키에 대한 kms:GenerateDataKey 권한이 필요합니다. AWS KMS 키로 암호화된 오브젝트를 다운로드하려면 IAM 역할에 키에 대한 kms:Decrypt 권한이 필요합니다.

서버 측 암호화에 KMS 키를 사용하려면 다음 단계에 따라 키를 만들고 참조하십시오.

  1. AWS Management Console에서 KMS 서비스로 이동합니다. 왼쪽 탐색에서 Customer managed keys 를 선택한 다음 Create key 를 선택합니다. 버킷과 동일한 리전에 키를 생성해야 합니다.

  2. 대칭 키 유형을 만듭니다. 키 사용량은 Encrypt and decrypt 를 선택하십시오. Next 를 선택합니다.

  3. Alias 상자에서 키 이름을 만들고 Next 를 선택합니다.

  4. 필요한 경우 키의 관리자를 입력하고 Next 를 선택합니다.

  5. Define key usage permissions 단계에서 IAM 역할의 이름을 입력합니다. 역할 옆에 있는 확인란을 선택한 다음 Next 를 선택합니다.

  6. Finish 를 선택하여 키를 생성합니다.

  7. 고객 관리 키 목록에서 키를 찾아 선택하고 해당 ARN을 기록합니다. 키의 ARN 예로는 arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000 을 들 수 있습니다.

    외부 볼륨을 생성할 때 KMS_KEY_ID 값을 키의 ARN으로 설정하십시오.

4단계: Snowflake에서 외부 볼륨 만들기

CREATE EXTERNAL VOLUME 명령을 사용하여 외부 볼륨을 생성합니다.

참고

계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 SQL 명령을 실행할 수 있습니다.

다음 예에서는 암호화로 Amazon S3 저장소 위치를 정의하는 외부 볼륨을 생성합니다.

CREATE OR REPLACE EXTERNAL VOLUME exvol
   STORAGE_LOCATIONS =
      (
         (
            NAME = 'my-s3-us-west-2'
            STORAGE_PROVIDER = 'S3'
            STORAGE_BASE_URL = 's3://MY_EXAMPLE_BUCKET/'
            STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myrole'
            ENCRYPTION=(TYPE='AWS_SSE_KMS' KMS_KEY_ID='arn:aws:kms:us-west-2:111111122222:key/1a1a11aa-aa1a-aaa1a-a1a1-000000000000')
         )
      );
Copy

참고

선택적으로, STORAGE_AWS_EXTERNAL_ID 매개 변수를 사용하여 자체 외부 ID를 지정합니다. 이 옵션을 선택하여 여러 외부 볼륨 및/또는 저장소 통합에서 동일한 외부 ID를 사용할 수 있습니다.

5단계: Snowflake 계정에 대한 AWS IAM 사용자 검색

  1. Snowflake 계정에 대해 자동으로 생성된 AWS IAM 사용자의 ARN을 검색하려면 DESCRIBE EXTERNAL VOLUME 명령을 사용하십시오. 이전에 생성한 외부 볼륨의 이름을 지정합니다.

    예:

    DESC EXTERNAL VOLUME exvol;
    
    Copy
  2. 다음 속성의 값을 기록합니다.

    속성

    설명

    STORAGE_AWS_IAM_USER_ARN

    Snowflake 계정용으로 생성된 AWS IAM 사용자입니다(예: arn:aws:iam::123456789001:user/abc1-b-self1234). Snowflake는 전체 Snowflake 계정에 대해 단일 IAM 사용자를 프로비저닝합니다. 계정의 모든 S3 외부 볼륨은 해당 IAM 사용자를 사용합니다.

    STORAGE_AWS_EXTERNAL_ID

    Snowflake가 AWS와의 신뢰 관계를 설정하는 데 사용하는 외부 ID입니다. 외부 볼륨을 생성할 때 외부 ID(STORAGE_AWS_EXTERNAL_ID)를 지정하지 않은 경우 Snowflake는 사용할 수 있는 ID를 생성합니다.

    다음 단계에서 이러한 값을 입력합니다.

6단계: 버킷 오브젝트에 액세스할 수 있도록 IAM 사용자 권한 부여

이 단계에서는 Snowflake 계정의 IAM 사용자가 S3 버킷의 오브젝트에 액세스할 수 있도록 허용하는 권한을 구성합니다.

  1. AWS Management Console에 로그인합니다.

  2. Identity & Access Management (IAM)를 선택합니다.

    AWS Management Console의 ID 및 액세스 관리
  3. 왼쪽 탐색 창에서 Roles 를 선택합니다.

  4. 2단계: AWS에 IAM 역할 만들기 에서 생성한 역할을 선택합니다.

  5. Trust relationships 탭을 선택합니다.

  6. Edit trust relationship 을 선택합니다.

  7. 5단계: Snowflake 계정에 대한 AWS IAM 사용자 검색 에 기록한 출력값으로 정책 문서를 수정합니다.

    IAM 역할에 대한 정책 문서

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "<snowflake_user_arn>"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<snowflake_external_id>"
            }
          }
        }
      ]
    }
    
    Copy

    여기서

    • snowflake_user_arn 은 사용자가 기록한 STORAGE_AWS_IAM_USER_ARN 값입니다.

    • snowflake_external_id 는 사용자가 기록한 STORAGE_AWS_EXTERNAL_ID 값입니다.

    참고

    새 외부 볼륨을 생성하고(또는 CREATE OR REPLACE EXTERNAL VOLUME 구문을 사용하여 기존 외부 볼륨을 다시 생성하고) 자체 외부 ID를 제공하지 않는 경우 이 정책 문서를 업데이트해야 합니다. 보안상의 이유로, 새 외부 볼륨이나 다시 생성된 외부 볼륨에는 다른 외부 ID가 있으며 이 신뢰 정책을 업데이트하지 않으면 신뢰 관계를 확인할 수 없습니다.

  8. Update Trust Policy 를 선택합니다. 변경 사항이 저장됩니다.

참고

권한이 올바르게 구성되었는지 확인하려면 이 외부 볼륨을 사용하여 Iceberg 테이블을 생성하십시오. Snowflake는 이 외부 볼륨을 참조하는 첫 번째 Iceberg 테이블이 생성될 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.

다음 단계

외부 볼륨을 구성하면 Iceberg 테이블을 생성할 수 있습니다.

Google Cloud Storage용 외부 볼륨 구성하기

이 섹션에서는 외부 볼륨을 사용하여 Google Cloud Storage(GCS) 버킷에 Snowflake 제한 액세스 권한을 부여하는 방법을 다룹니다.

조직의 관리자가 Google Cloud 계정에 IAM 사용자 권한을 부여합니다.

참고

1단계: Snowflake에서 외부 볼륨 만들기

CREATE EXTERNAL VOLUME 명령을 사용하여 외부 볼륨을 생성합니다.

참고

계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 SQL 명령을 실행할 수 있습니다.

다음 예에서는 암호화로 GCS 저장소 위치를 정의하는 외부 볼륨을 생성합니다.

CREATE EXTERNAL VOLUME exvol
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-us-east-1'
        STORAGE_PROVIDER = 'GCS'
        STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
        ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
      )
    );
Copy

2단계: Snowflake 계정에 대한 Cloud Storage 서비스 계정 검색

Snowflake 계정에 대해 자동으로 생성된 Cloud Storage 서비스 계정에 대한 ID를 검색하려면 DESCRIBE EXTERNAL VOLUME 명령을 사용하십시오. 이전에 생성한 외부 볼륨의 이름을 지정합니다.

예:

DESC EXTERNAL VOLUME exvol;
Copy

출력에 STORAGE_GCP_SERVICE_ACCOUNT 속성 값을 기록합니다(예: service-account-id@project1-123456.iam.gserviceaccount.com).

Snowflake는 전체 Snowflake 계정에 대해 단일 Cloud Storage 서비스 계정을 프로비저닝합니다. 모든 Google Cloud Storage 외부 볼륨은 해당 서비스 계정을 사용합니다.

3단계: 서비스 계정에 버킷 오브젝트 액세스 권한 부여

이 단계에서는 Google Cloud Platform Console에서 Snowflake에 대한 IAM 액세스 권한을 구성합니다.

사용자 지정 IAM 역할 만들기

버킷에 액세스하고 오브젝트를 가져오기 위해 필요한 권한이 있는 사용자 지정 역할을 생성합니다.

  1. Google Cloud Platform Console에 프로젝트 편집자로 로그인합니다.

  2. 홈 대시보드에서 IAM & admin » Roles 를 선택합니다.

  3. Create Role 을 선택합니다.

  4. 사용자 지정 역할의 이름과 설명을 입력합니다.

  5. Add Permissions 를 선택합니다.

  6. 권한 목록을 필터링하고 목록에 다음을 추가합니다.

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  7. Create 를 선택합니다.

클라우드 저장소 서비스 계정에 사용자 지정 역할 할당하기

  1. Google Cloud Platform Console에 프로젝트 편집자로 로그인합니다.

  2. 홈 대시보드에서 Storage » Browser 를 선택합니다.

    Google Cloud Platform Console의 버킷 목록
  3. 액세스를 구성할 버킷을 선택합니다.

  4. 오른쪽 위 모서리에서 SHOW INFO PANEL 을 선택합니다. 버킷에 대한 정보 패널이 나타납니다.

  5. Add members 필드에서 2단계: Snowflake 계정에 대한 Cloud Storage 서비스 계정 검색 의 출력에서 서비스 계정 이름을 검색합니다.

    Google Cloud Platform Console의 버킷 정보 패널
  6. Select a role 드롭다운에서 Storage » Custom » <역할> 을 선택합니다. <역할>사용자 지정 IAM 역할 만들기 에서 만든 사용자 지정 Cloud Storage 역할입니다.

  7. Add 를 선택합니다. 서비스 계정 이름이 정보 패널의 Storage Object Viewer 역할 드롭다운에 추가됩니다.

    Google Cloud Platform Console의 저장소 오브젝트 뷰어 역할 목록

참고

권한이 올바르게 구성되었는지 확인하려면 이 외부 볼륨을 사용하여 Iceberg 테이블을 생성하십시오. Snowflake는 이 외부 볼륨을 참조하는 첫 번째 Iceberg 테이블이 생성될 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.

Cloud Key Management Service 암호화 키에 Cloud Storage 서비스 계정 권한 부여하기

참고

이 단계는 Google Cloud Key Management Service(클라우드 KMS)에 저장된 키를 사용하여 GCS 버킷을 암호화하는 경우에만 필요합니다.

  1. Google Cloud Platform Console에 프로젝트 편집자로 로그인합니다.

  2. 홈 대시보드에서 Security » Cryptographic keys 를 선택합니다.

  3. GCS 버킷에 할당된 키 링을 선택합니다.

  4. 오른쪽 위 모서리에서 SHOW INFO PANEL 을 선택합니다. 키 링에 대한 정보 패널이 나타납니다.

  5. Add members 필드에서 2단계: Snowflake 계정에 대한 Cloud Storage 서비스 계정 검색 의 DESCRIBE EXTERNAL VOLUME 출력에서 서비스 계정 이름을 검색합니다.

  6. Select a role 드롭다운에서 Cloud KMS CryptoKey Encrypter/Decrypter 역할을 선택합니다.

  7. Add 를 선택합니다. 서비스 계정 이름이 정보 패널의 Cloud KMS CryptoKey Encrypter/Decrypter 역할 드롭다운에 추가됩니다.

다음 단계

외부 볼륨을 구성하면 Iceberg 테이블을 생성할 수 있습니다.

Azure Storage의 외부 볼륨 구성하기

이 섹션에서는 외부 볼륨을 사용하여 자체 Microsoft Azure(Azure) 컨테이너에 Snowflake 제한 액세스 권한을 부여하는 방법을 다룹니다. Snowflake는 외부 볼륨에 대해 다음과 같은 Azure 클라우드 저장소 서비스를 지원합니다.

  • Blob 저장소

  • Data Lake Storage Gen2

  • 범용 v1

  • 범용 v2

조직의 관리자가 Azure 계정에 IAM 사용자 권한을 부여합니다.

참고

1단계: Snowflake에서 외부 볼륨 만들기

CREATE EXTERNAL VOLUME 명령을 사용하여 외부 볼륨을 생성합니다.

참고

계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 SQL 명령을 실행할 수 있습니다.

다음 예에서는 암호화로 Azure 저장소 위치를 정의하는 외부 볼륨을 생성합니다.

CREATE EXTERNAL VOLUME exvol
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-azure-northeurope'
        STORAGE_PROVIDER = 'AZURE'
        STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
        AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
      )
    );
Copy

참고

STORAGE_BASE_URL 값을 지정할 때 https:// 가 아닌 azure:// 접두사를 사용하십시오.

2단계: 저장소 위치에 Snowflake 액세스 권한 부여

  1. Microsoft 권한 요청 페이지의 URL을 검색하려면 DESCRIBE EXTERNAL VOLUME 명령을 사용하십시오. 이전에 생성한 외부 볼륨의 이름을 지정합니다.

    DESC EXTERNAL VOLUME exvol;
    
    Copy

    다음 속성의 값을 기록합니다.

    속성

    설명

    AZURE_CONSENT_URL

    Microsoft 권한 요청 페이지에 대한 URL입니다.

    AZURE_MULTI_TENANT_APP_NAME

    계정에 대해 생성된 Snowflake 클라이언트 애플리케이션의 이름입니다. 이 섹션의 이후 단계에서는 허용되는 저장소 위치에 대한 액세스 토큰을 획득하기 위한 권한을 이 애플리케이션에 부여해야 합니다.

    다음 단계에서 이러한 값을 사용합니다.

  2. 웹 브라우저에서 Microsoft 권한 요청 페이지(AZURE_CONSENT_URL)로 이동합니다.

  3. Accept 를 선택합니다. 이 작업을 통해 Snowflake 계정에 대해 생성된 Azure 서비스 주체에게 tenant 내부의 모든 리소스에 대한 액세스 토큰이 부여됩니다. 액세스 토큰은 서비스 주체에 컨테이너에 대한 적절한 권한을 부여한 경우에만 획득이 가능합니다(다음 단계 참조).

    Microsoft 권한 요청 페이지가 Snowflake 회사 사이트(snowflake.com)로 리디렉션됩니다.

  4. Microsoft Azure 포털에 로그인합니다.

  5. Azure Services » Storage Accounts 로 이동합니다. Snowflake 서비스 주체에 액세스 권한을 부여하려는 저장소 계정의 이름을 선택합니다.

    참고

    컨테이너 수준이 아닌 저장소 계정 수준에서 외부 볼륨에 대한 IAM 권한을 설정해야 합니다.

  6. Access Control (IAM) » Add role assignment 를 선택합니다.

  7. Storage Blob Data Contributor 역할을 선택하여 Snowflake 서비스 주체에 읽기 및 쓰기 액세스 권한을 부여합니다.

    참고

    Storage Blob Data Contributor 역할은 외부 볼륨 위치에 대한 쓰기 액세스 권한을 부여합니다. 쓰기 액세스 권한을 완전히 구성하려면 외부 볼륨의 ALLOW_WRITES 매개 변수를 TRUE (기본값)로 설정해야 합니다.

  8. Snowflake 서비스 포털 주체를 검색합니다. DESC EXTERNAL VOLUME 출력(1단계)에서 AZURE_MULTI_TENANT_APP_NAME 속성의 ID입니다. AZURE_MULTI_TENANT_APP_NAME 속성에서 밑줄 앞의 문자열을 검색합니다.

    중요

    • Azure에서 이 섹션의 Microsoft 요청 페이지를 통해 요청한 Snowflake 서비스 주체를 생성하기 위해서는 1시간이 이상 걸릴 수 있습니다. 서비스 주체를 즉시 사용할 수 없는 경우 1~2시간 기다린 후 다시 검색하십시오.

    • 서비스 주체를 삭제하면 외부 볼륨이 작동을 중지합니다.

    Azure Storage Console에서 역할 할당 추가하기
  9. Review + assign 을 선택합니다.

    참고

    역할을 할당하면 변경 사항이 적용되는 데 최대 10분이 걸릴 수 있습니다. 자세한 내용은 Microsoft Azure 설명서의 증상 - 역할 할당 변경 사항이 감지되지 않음 을 참조하십시오.

참고

권한이 올바르게 구성되었는지 확인하려면 이 외부 볼륨을 사용하여 Iceberg 테이블을 생성하십시오. Snowflake는 이 외부 볼륨을 참조하는 첫 번째 Iceberg 테이블이 생성될 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.

다음 단계

외부 볼륨을 구성하면 Iceberg 테이블을 생성할 수 있습니다.

외부 클라우드 저장소에 대한 버전 관리 활성화하기

Iceberg 테이블 데이터는 자신이 관리하는 외부 클라우드 저장소에 저장됩니다. 데이터가 여러 도구와 서비스로 운영되는 중앙 데이터 리포지토리(또는 데이터 레이크)에 있는 경우 실수로 삭제되거나 손상될 수 있습니다.

오브젝트 복구를 지원하기 위해 외부 클라우드 저장소에 대한 버전 관리를 활성화할 수 있습니다.

활성 저장소 위치

미리 보기 기간 동안 각 외부 볼륨은 단일 활성 저장소 위치를 지원합니다. 활성 위치는 외부 볼륨의 수명 동안 동일하게 유지됩니다.

외부 볼륨을 생성 할 때 여러 저장소 위치를 지정하면 Snowflake가 한 위치를 외부 볼륨의 활성 위치로 할당합니다.

외부 볼륨을 사용하는 첫 번째 테이블이 생성될 때 할당이 발생합니다. Snowflake는 다음 논리를 사용하여 활성 위치를 선택합니다.

  • STORAGE_LOCATIONS 목록에 하나 이상의 로컬 저장소 위치가 포함된 경우 Snowflake는 목록의 첫 번째 로컬 저장소 위치를 사용합니다. 로컬 저장소 위치는 Snowflake 계정과 동일한 클라우드 공급자와 동일한 리전에 있습니다.

  • STORAGE_LOCATIONS 목록에 로컬 저장소 위치가 없으면 Snowflake는 목록의 첫 번째 위치를 선택합니다.

참고

  • 클라우드 간/리전 간 Iceberg 테이블은 카탈로그 통합을 사용하는 경우에만 지원됩니다. 자세한 내용은 클라우드 간/리전 간 지원 을 참조하십시오.

  • Snowflake 버전 7.44 이전에 생성된 외부 볼륨은 다른 논리를 사용하여 활성 위치를 선택했을 수 있습니다.

계정, 데이터베이스 또는 스키마 수준에서 외부 볼륨 설정하기

Iceberg 테이블에 사용할 기존 외부 볼륨을 정의하려면 다음 수준에서 EXTERNAL_VOLUME 매개 변수를 설정하면 됩니다.

계정:

계정 관리자는 ALTER ACCOUNT 명령을 사용해 계정에 대한 매개 변수를 설정할 수 있습니다. 계정에 대해 값이 설정된 경우 계정에서 생성된 모든 Iceberg 테이블은 기본적으로 이 외부 볼륨에서 읽고 볼륨에 씁니다.

오브젝트:

사용자는 적절한 CREATE <오브젝트> 또는 ALTER <오브젝트> 명령을 실행하여 데이터베이스 또는 스키마 수준에서 EXTERNAL_VOLUME 매개 변수 값을 재정의할 수 있습니다. 가장 낮은 범위가 지정된 선언이 사용됩니다(스키마 > 데이터베이스 > 계정).

적절한 ALTER <object_type> 명령을 사용하여 오브젝트를 수정하는 데 필요한 최소 권한 외에도, 역할에는 외부 볼륨에 대한 USAGE 권한이 있어야 합니다.

다음 문은 my_database_1 이라는 데이터베이스의 외부 볼륨(my_s3_vol)을 설정합니다.

ALTER DATABASE my_database_1
  SET EXTERNAL_VOLUME = 'my_s3_vol';
Copy

데이터베이스 수준에서 외부 볼륨을 설정한 후 외부 볼륨을 지정하지 않고도 해당 데이터베이스에 Iceberg 테이블을 생성할 수 있습니다. 다음 문은 Snowflake를 카탈로그로 사용하고 데이터베이스에 설정된 기본 외부 볼륨(my_s3_vol)을 사용하는 Iceberg 테이블을 my_database_1 에 생성합니다.

CREATE ICEBERG TABLE iceberg_reviews_table (
  id STRING,
  product_name STRING,
  product_id STRING,
  reviewer_name STRING,
  review_date DATE,
  review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';
Copy