ALTER EXTERNAL VOLUME¶
기존 외부 볼륨 의 속성을 수정합니다.
- 참고 항목:
CREATE EXTERNAL VOLUME , DROP EXTERNAL VOLUME , SHOW EXTERNAL VOLUMES , DESCRIBE EXTERNAL VOLUME
이 항목의 내용:
구문¶
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> ADD STORAGE_LOCATION =
(
NAME = '<name>'
cloudProviderParams
)
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> REMOVE STORAGE_LOCATION '<name>'
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET ALLOW_WRITES = TRUE
ALTER EXTERNAL VOLUME [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
여기서
cloudProviderParams (for Amazon S3) ::= STORAGE_PROVIDER = 'S3' STORAGE_AWS_ROLE_ARN = '<iam_role>' STORAGE_BASE_URL = 's3://<bucket>[/<path>/]' [ ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] | [ TYPE = 'NONE' ] ) ]cloudProviderParams (for Google Cloud Storage) ::= STORAGE_PROVIDER = 'GCS' STORAGE_BASE_URL = 'gcs://<bucket>[/<path>/]' [ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '<string>' ] | [ TYPE = 'NONE' ] ) ]cloudProviderParams (for Microsoft Azure) ::= STORAGE_PROVIDER = 'AZURE' AZURE_TENANT_ID = '<tenant_id>' STORAGE_BASE_URL = 'azure://<account>.blob.core.windows.net/<container>[/<path>/]'
매개 변수¶
name
변경할 외부 볼륨의 식별자를 지정합니다.
식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
ADD STORAGE_LOCATION
지정된 저장소 위치를 외부 볼륨 정의에 추가합니다. 여러 저장소 위치를 추가하려면 각 저장소 위치에 대해 ALTER EXTERNAL VOLUME 문을 실행하십시오.
참고
Iceberg 테이블은 Snowflake 계정과 동일한 리전에 있는 세트의 첫 번째 저장소 위치에 쓰고 해당 위치에서 읽습니다. 외부 볼륨 정의 및 저장소 위치 리전을 보려면 DESCRIBE EXTERNAL VOLUME 을 실행하십시오.
REMOVE STORAGE_LOCATION
지정된 저장소 위치를 외부 볼륨 정의에서 제거합니다. 여러 저장소 위치를 제거하려면 각 저장소 위치에 대해 ALTER EXTERNAL VOLUME 문을 실행하십시오.
참고
계정의 Iceberg 테이블에서 사용하는 활성 저장소 위치를 제거하려고 하면 ALTER EXTERNAL VOLUME 문이 실패합니다.
SET ...
외부 볼륨에 대해 설정할 하나 이상의 속성/매개 변수를 지정합니다(공백, 쉼표 또는 새 줄로 구분).
ALLOW_WRITES = TRUE
외부 볼륨에 대해 쓰기 작업이 허용됨을 지정하며, Snowflake를 카탈로그로 사용하는 Iceberg 테이블의 경우
TRUE
로 설정해야 합니다.COMMENT = 'string_literal'
외부 볼륨에 대한 설명을 지정하는 문자열(리터럴)입니다.
클라우드 공급자 매개 변수(cloudProviderParams
)¶
Amazon S3
STORAGE_PROVIDER = 'S3'
데이터 파일을 저장하는 클라우드 저장소 공급자를 지정합니다.
STORAGE_AWS_ROLE_ARN = iam_role
데이터 파일을 포함한 S3 버킷에 대한 권한을 부여하는 AWS ID 및 액세스 관리(IAM) 역할의 ARN(Amazon Resource Name)을 지정합니다. 자세한 내용은 Amazon S3에 대한 보안 액세스 구성하기 를 참조하십시오.
STORAGE_BASE_URL = 's3://bucket[/path/]'
클라우드 저장소 위치의 기본 URL을 지정합니다. 여기서
bucket
은 데이터 파일을 저장하는 S3 버킷의 이름입니다.
path
는 버킷의 오브젝트를 세부적으로 제어하기 위해 사용할 수 있는 선택적 경로입니다.ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = 'string' ] ] | [ TYPE = 'NONE' ] )
외부 볼륨의 데이터를 암호화하는 데 필요한 속성을 지정합니다.
TYPE = ...
사용되는 암호화 유형을 지정합니다. 가능한 값은 다음과 같습니다.
AWS_SSE_S3
: S3 관리형 암호화 키를 사용한 서버 측 암호화입니다. 자세한 내용은 Amazon S3 관리형 암호화 키(SSE-S3)와 함께 서버 측 암호화 사용하기 를 확인하십시오.
AWS_SSE_KMS
: KMS에 저장된 키를 사용하는 서버 측 암호화입니다. 자세한 내용은 AWS 키 관리 서비스(SSE-KMS)와 함께 서버 측 암호화 사용하기 를 확인하십시오.
NONE
: 암호화가 없습니다.KMS_KEY_ID = 'string'
(AWS_SSE_KMS
암호화에만 적용)버킷에 쓴 파일을 암호화하는 데 사용되는 AWS KMS 관리형 키의 ID를 선택적으로 지정합니다. 아무런 값도 입력하지 않으면 데이터 쓰기를 위해 파일을 암호화하는 데 기본 KMS 키를 사용합니다.
데이터를 읽을 때 이 값은 무시됩니다.
Google Cloud Storage
STORAGE_PROVIDER = 'GCS'
데이터 파일을 저장하는 클라우드 저장소 공급자를 지정합니다.
STORAGE_BASE_URL = 'gcs://bucket[/path/]'
클라우드 저장소 위치의 기본 URL을 지정합니다. 여기서
bucket
은 데이터 파일을 저장하는 Cloud Storage 버킷의 이름입니다.
path
는 버킷의 오브젝트를 세부적으로 제어하기 위해 사용할 수 있는 선택적 경로입니다.ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = 'string' ] | [ TYPE = 'NONE' ] )
외부 볼륨의 데이터를 암호화하는 데 필요한 속성을 지정합니다.
TYPE = ...
사용되는 암호화 유형을 지정합니다. 가능한 값은 다음과 같습니다.
GCS_SSE_KMS
: KMS에 저장된 키를 사용하는 서버 측 암호화입니다. 자세한 내용은 고객 관리 암호화 키 를 참조하십시오.
NONE
: 암호화가 없습니다.KMS_KEY_ID = 'string'
(GCS_SSE_KMS
암호화에만 적용)버킷에 쓴 파일을 암호화하는 데 사용되는 Cloud KMS 관리형 키의 ID를 지정합니다.
데이터를 읽을 때 이 값은 무시됩니다. 서비스 계정에 데이터 및 지정된 KMS 키에 대한 충분한 권한이 있으면 읽기 작업이 성공해야 합니다.
Microsoft Azure
STORAGE_PROVIDER = 'AZURE'
데이터 파일을 저장하는 클라우드 저장소 공급자를 지정합니다.
AZURE_TENANT_ID = 'tenant_id'
허용 및 차단된 저장소 계정이 속한 Office 365 tenant의 ID를 지정합니다. 외부 볼륨은 하나의 tenant에만 인증할 수 있으므로, 허용 및 차단된 저장소 위치는 모두 이 tenant에 속하는 저장소 계정을 참조해야 합니다.
Tenant ID를 찾으려면 Azure 포털에 로그인하여 Azure Active Directory » Properties 를 클릭하십시오. Tenant ID는 Tenant ID 필드에 표시됩니다.
STORAGE_BASE_URL = 'azure://account.blob.core.windows.net/container[/path/]'
클라우드 저장소 위치의 기본 URL을 지정합니다. 여기서
account
는 Azure 계정의 이름입니다(예:myaccount
).
container
는 데이터 파일을 저장하는 Azure 컨테이너의 이름입니다.
path
는 컨테이너의 논리적 디렉터리를 세부적으로 제어하기 위해 사용할 수 있는 선택적 경로입니다.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
OWNERSHIP |
외부 볼륨 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
다음 예에서는 exvol1
외부 볼륨에서 my-us-east-1
이라는 저장소 위치를 제거합니다.
ALTER EXTERNAL VOLUME exvol1 REMOVE STORAGE_LOCATION 'my-us-east-1';
다음 예에서는 외부 볼륨에 저장소 위치를 추가합니다.
Amazon S3
ALTER EXTERNAL VOLUME exvol1
ADD STORAGE_LOCATION =
(
NAME = 'my-s3-us-central-2'
STORAGE_PROVIDER = 'S3'
STORAGE_BASE_URL = 's3://my_bucket_us_central-1/'
STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myrole'
);
Google Cloud Storage
ALTER EXTERNAL VOLUME exvol2
ADD STORAGE_LOCATION =
(
NAME = 'my-gcs-europe-west4'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://my_bucket_europe-west4/'
);
Microsoft Azure
ALTER EXTERNAL VOLUME exvol3
ADD STORAGE_LOCATION =
(
NAME = 'my-azure-japaneast'
STORAGE_PROVIDER = 'AZURE'
STORAGE_BASE_URL = 'azure://sfcdev1.blob.core.windows.net/my_container_japaneast/'
AZURE_TENANT_ID = 'a9876545-4321-987b-b23c-2kz436789d0'
);