외부 볼륨 수정하기
외부 볼륨 수정하기 (ALTER EXTERNAL VOLUME)
기존 external volume의 속성을 수정합니다.
참조:
CREATE EXTERNAL VOLUME , DROP EXTERNAL VOLUME , SHOW EXTERNAL VOLUMES , DESCRIBE EXTERNAL VOLUME
출처: 문서
본문
구문
ALTER EXTERNAL VOLUME [ IF EXISTS ] ADD STORAGE_LOCATION =
(
NAME = ''
cloudProviderParams
)
ALTER EXTERNAL VOLUME [ IF EXISTS ] REMOVE STORAGE_LOCATION ''
ALTER EXTERNAL VOLUME [ IF EXISTS ] UPDATE
STORAGE_LOCATION = ''
CREDENTIALS = (
AWS_KEY_ID = ''
AWS_SECRET_KEY = ''
)
ALTER EXTERNAL VOLUME [ IF EXISTS ] SET ALLOW_WRITES = { TRUE | FALSE }
ALTER EXTERNAL VOLUME [ IF EXISTS ] SET COMMENT = ''
여기서:
cloudProviderParams (for Amazon S3) ::=
STORAGE_PROVIDER = '{ S3 | S3GOV }'
STORAGE_AWS_ROLE_ARN = ''
STORAGE_BASE_URL = '://[//]'
[ STORAGE_AWS_ACCESS_POINT_ARN = '' ]
[ ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] |
[ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '' ] ] |
[ TYPE = 'NONE' ] ) ]
[ USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ]
cloudProviderParams (for Google Cloud Storage) ::=
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://[//]'
[ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '' ] |
[ TYPE = 'NONE' ] ) ]
cloudProviderParams (for Microsoft Azure) ::=
STORAGE_PROVIDER = 'AZURE'
AZURE_TENANT_ID = ''
[ USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ]
STORAGE_BASE_URL = 'azure://.blob.core.windows.net/[//]'
매개 변수
name
변경할 외부 볼륨의 식별자를 지정합니다.
식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자는 대소문자를 구분합니다.
자세한 내용은 Identifier requirements를 참조하세요.
ADD STORAGE_LOCATION = ( NAME = 'storage_location_name' cloudProviderParams )
외부 볼륨 정의에 명명된 스토리지 위치를 추가합니다. 여러 스토리지 위치를 추가하려면 각 스토리지 위치에 대해 ALTER EXTERNAL VOLUME 문을 실행하세요.
%iceberg-tm% 테이블은 Snowflake 계정과 동일한 리전에 있는 세트의 첫 번째 스토리지 위치에서 읽고 씁니다. 외부 볼륨 정의 및 스토리지 위치 리전을 보려면 DESCRIBE EXTERNAL VOLUME을 실행하세요.
REMOVE STORAGE_LOCATION 'storage_location_name'
외부 볼륨 정의에서 지정된 스토리지 위치를 제거합니다. 여러 스토리지 위치를 제거하려면 각 스토리지 위치에 대해 ALTER EXTERNAL VOLUME 문을 실행하세요.
계정의 Iceberg 테이블에서 사용하는 활성 스토리지 위치를 제거하려고 하면 ALTER EXTERNAL VOLUME 문이 실패합니다.
UPDATE STORAGE_LOCATION = 's3_compatible_storage_location_name'
외부 볼륨 정의에서 지정된 S3 호환 스토리지 위치를 업데이트합니다.
CREDENTIALS = ( AWS_KEY_ID = 'string' AWS_SECRET_KEY = 'string' )
S3 호환 스토리지 위치에 연결하고 액세스하기 위한 업데이트된 보안 자격 증명을 지정합니다.
SET ...
외부 볼륨에 설정할 하나 이상의 속성/매개 변수를 지정합니다(공백, 쉼표 또는 새 줄로 구분).
ALLOW_WRITES = { TRUE | FALSE }
외부 볼륨에 쓰기 작업이 허용되는지 여부를 지정합니다.
-
TRUE는 쓰기 작업이 허용됨을 지정합니다. 이 매개 변수는 다음 테이블에 대해TRUE로 설정해야 합니다.- Snowflake를 카탈로그로 사용하는 Iceberg 테이블.
- 외부 카탈로그를 사용하고 쓰기가 가능한 Iceberg 테이블. 외부 관리 Iceberg 테이블은 ALLOWED_WRITE_OPERATIONS 매개 변수가 TRUE로 설정된 카탈로그 연결 데이터베이스를 통해 액세스할 때 쓸 수 있습니다.
-
FALSE는 쓰기 작업이 허용되지 않음을 지정합니다. 외부 볼륨과 연결된 Snowflake 관리 Iceberg 테이블이 있는 경우 이 매개 변수의 값을FALSE로 변경할 수 없습니다.
COMMENT = 'string_literal'
외부 볼륨에 대한 주석을 지정하는 문자열(리터럴)입니다.
클라우드 공급자 매개 변수 (cloudProviderParams)
Amazon S3
STORAGE_PROVIDER = 'S3'
데이터 파일을 저장하는 클라우드 스토리지 공급자를 지정합니다.
STORAGE_AWS_ROLE_ARN = iam_role
데이터 파일이 포함된 S3 버킷에 대한 권한을 부여하는 AWS ID 및 액세스 관리(IAM) 역할의 Amazon 리소스 이름(ARN)을 지정합니다. 자세한 내용은 Configuring secure access to Amazon S3를 참조하세요.
STORAGE_BASE_URL = 'protocol://bucket[/path/]'
클라우드 스토리지 위치의 기본 URL을 지정합니다. 여기서:
-
protocol은 다음 중 하나입니다.
s3는 중국 외부의 공용 AWS 리전에 있는 S3 스토리지를 나타냅니다.s3gov는 government regions의 S3 스토리지를 나타냅니다.
-
bucket은 데이터 파일을 저장하는 S3 버킷의 이름 또는 S3 버킷 액세스 포인트의 bucket-style alias입니다. S3 액세스 포인트의 경우
STORAGE_AWS_ACCESS_POINT_ARN매개 변수에 대한 값도 지정해야 합니다. -
path는 버킷의 객체에 대한 세분화된 제어를 제공하는 데 사용할 수 있는 선택적 경로입니다.
STORAGE_AWS_ACCESS_POINT_ARN = 'string'
S3 액세스 포인트에 대한 Amazon 리소스 이름(ARN)을 지정합니다. 스토리지 STORAGE_BASE_URL에 S3 액세스 포인트 별칭을 지정하는 경우에만 필요합니다.
ENCRYPTION = ( [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = 'string' ] ] | [ TYPE = 'NONE' ] )
외부 볼륨의 데이터를 암호화하는 데 필요한 속성을 지정합니다.
TYPE = ...
사용되는 암호화 유형을 지정합니다. 가능한 값은 다음과 같습니다.
AWS_SSE_S3: S3 관리 암호화 키를 사용하는 서버 측 암호화. 자세한 내용은 Using server-side encryption with Amazon S3-managed encryption keys (SSE-S3)를 참조하세요.AWS_SSE_KMS: KMS에 저장된 키를 사용하는 서버 측 암호화. 자세한 내용은 Using server-side encryption with AWS Key Management Service (SSE-KMS)를 참조하세요.NONE: 암호화 없음.
KMS_KEY_ID = 'string' (AWS_SSE_KMS 암호화에만 적용)
버킷에 기록되는 파일을 암호화하는 데 사용되는 AWS KMS 관리 키의 ID를 선택적으로 지정합니다. 값을 제공하지 않으면 기본 KMS 키를 사용하여 데이터 쓰기용 파일을 암호화합니다.
이 값은 데이터를 읽을 때 무시됩니다.
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
보안 상태를 강화하기 위해 아웃바운드 프라이빗 연결을 사용할지 여부를 지정합니다. 이 매개 변수 사용에 대한 자세한 내용은 Private connectivity to external volumes for Amazon Web Services를 참조하세요.
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에 저장된 키를 사용하는 서버 측 암호화입니다. 자세한 내용은 customer-managed encryption keys를 참조하세요.NONE: 암호화를 사용하지 않습니다.
KMS_KEY_ID = 'string' (GCS_SSE_KMS 암호화에만 적용됩니다)
버킷에 기록되는 파일을 암호화하는 데 사용되는 Cloud KMS 관리 키의 ID를 지정합니다.
이 값은 데이터를 읽을 때는 무시됩니다. 서비스 계정에 데이터 및 지정된 KMS 키에 대한 충분한 권한이 있으면 읽기 작업이 성공해야 합니다.
Microsoft Azure
STORAGE_PROVIDER = 'AZURE'
데이터 파일을 저장하는 클라우드 스토리지 제공자를 지정합니다.
AZURE_TENANT_ID = 'tenant_id'
허용 및 차단된 스토리지 계정이 속한 Office 365 테넌트의 ID를 지정합니다. 외부 볼륨은 하나의 테넌트에만 인증할 수 있으므로, 허용 및 차단된 스토리지 위치는 모두 이 테넌트에 속한 스토리지 계정을 참조해야 합니다.
테넌트 ID를 찾으려면 Azure 포털에 로그인하고 Azure Active Directory %raa% 속성을 클릭하세요. 테넌트 ID는 테넌트 ID 필드에 표시됩니다.
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
보안 태세를 강화하기 위해 아웃바운드 프라이빗 연결을 사용할지 여부를 지정합니다. 이 매개변수 사용에 대한 자세한 내용은 Private connectivity to external volumes for Microsoft Azure를 참조하세요.
STORAGE_BASE_URL = 'azure://account.blob.core.windows.net/container[/path/]'
클라우드 스토리지 위치의 기본 URL을 지정합니다. 여기서:
- account는 Azure 계정의 이름입니다. 예를 들어
myaccount입니다. - container는 데이터 파일을 저장하는 Azure 컨테이너의 이름입니다.
- path는 컨테이너의 논리적 디렉터리를 세밀하게 제어하는 데 사용할 수 있는 선택적 경로입니다.
액세스 제어 요구 사항
이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 합니다.
| 권한 | 개체 | 참고 |
|---|---|---|
| OWNERSHIP | External volume | %ac-ownership% |
지정된 권한 집합을 가진 사용자 지정 역할을 만드는 방법에 대한 지침은 을 참조하세요.
보호 가능한 개체에 대해 SQL 작업을 수행하기 위한 역할 및 권한 부여에 대한 일반적인 정보는 Overview of Access Control을 참조하세요.
사용 참고 사항
S3 액세스 포인트를 사용하는 S3 외부 볼륨의 경우:
메타데이터 관련:
고객은 Snowflake 서비스를 사용할 때 (User 개체의 경우를 제외한) 개인 데이터, 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Metadata fields in 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'
);
S3 호환 스토리지
S3 호환 외부 볼륨의 자격 증명을 업데이트합니다:
ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE
STORAGE_LOCATION = 'my_s3_compat_storage_location'
CREDENTIALS = (
AWS_KEY_ID = '4d5e6f...'
AWS_SECRET_KEY = '7g8h9i...'
);