ALTER STORAGE INTEGRATION
ALTER STORAGE INTEGRATION
기존 스토리지 통합(storage integration)의 속성을 수정하는 명령이에요. 스토리지 통합은 Snowflake가 외부 클라우드 스토리지(Amazon S3, Google Cloud Storage, Microsoft Azure)에 접근할 수 있게 설정하는 객체예요.
출처: 문서
본문
관련 명령: CREATE STORAGE INTEGRATION, DROP INTEGRATION, SHOW INTEGRATIONS, DESCRIBE INTEGRATION
구문 (Syntax)
ALTER [ STORAGE ] INTEGRATION [ IF EXISTS ] <name> SET
[ cloudProviderParams ]
[ ENABLED = { TRUE | FALSE } ]
[ STORAGE_ALLOWED_LOCATIONS = ('<cloud>://<bucket>/<path>/' [ , '<cloud>://<bucket>/<path>/' ... ] ) ]
[ STORAGE_BLOCKED_LOCATIONS = ('<cloud>://<bucket>/<path>/' [ , '<cloud>://<bucket>/<path>/' ... ] ) ]
[ COMMENT = '<string_literal>' ]
ALTER [ STORAGE ] INTEGRATION [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER [ STORAGE ] INTEGRATION <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER [ STORAGE ] INTEGRATION [ IF EXISTS ] <name> UNSET {
ENABLED |
STORAGE_BLOCKED_LOCATIONS |
COMMENT
}
[ , ... ]
여기서:
cloudProviderParams (for Amazon S3) ::=
STORAGE_AWS_ROLE_ARN = '<iam_role>'
[ STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control' ]
[ STORAGE_AWS_EXTERNAL_ID = '<external_id>' ]
[ USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ]
cloudProviderParams (for Microsoft Azure) ::=
AZURE_TENANT_ID = '<tenant_id>'
[ USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } ]
매개변수 (Parameters)
name — 수정할 통합의 식별자예요. 식별자에 공백이나 특수 문자가 포함되어 있으면 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶은 식별자는 대소문자를 구분해요.
SET ... — 공백, 콤마 또는 줄바꿈으로 구분해 테이블에 설정할 하나 이상의 속성/매개변수를 지정해요:
ENABLED = { TRUE | FALSE } — 이 스토리지 통합이 스테이지에서 사용 가능한지 지정해요.
TRUE— 사용자가 이 통합을 참조하는 새 스테이지를 만들 수 있게 해요. 이 통합을 참조하는 기존 스테이지는 정상적으로 작동해요.FALSE— 사용자가 이 통합을 참조하는 새 스테이지를 만들 수 없게 해요. 이 통합을 참조하는 기존 스테이지는 스테이지 정의의 스토리지 위치에 접근할 수 없어요.
STORAGE_ALLOWED_LOCATIONS = ( 'cloud_specific_url' ) — 이 통합을 사용하는 외부 스테이지가 참조할 수 있는 스토리지 위치(Amazon S3, Google Cloud Storage 또는 Microsoft Azure)를 하나 이상으로 명시적으로 제한해요. 로드/언로드할 데이터 파일을 저장하는 기존 버킷과 선택적 경로의 URL을 콤마로 구분한 목록을 지원해요. 대안으로 * 와일드카드("모든 버킷 및/또는 경로에 대한 접근 허용"을 의미)를 지원해요.
Amazon S3 — STORAGE_ALLOWED_LOCATIONS = ( 'protocol://bucket/path/' [ , 'protocol://bucket/path/' ... ] )
protocol은 다음 중 하나예요:s3— 중국 외의 공개 AWS 리전의 S3 스토리지.s3china— 중국의 공개 AWS 리전의 S3 스토리지.s3gov— 정부 리전의 S3 스토리지.
bucket— 데이터 파일을 저장하는 S3 버킷의 이름(예:mybucket).path— 공통 문자열로 시작하는 파일 이름(즉 접두사 또는 폴더)으로 파일 집합에 대한 접근을 제한하는 클라우드 스토리지 위치의 선택적 대소문자 구분 경로예요.
Google Cloud Storage — STORAGE_ALLOWED_LOCATIONS = ( 'gcs://bucket/path/' [ , 'gcs://bucket/path/' ... ] )
bucket— 데이터 파일을 저장하는 GCS 버킷의 이름(예:mybucket).path— 파일 집합에 대한 접근을 제한하는 선택적 대소문자 구분 경로예요.
Microsoft Azure — STORAGE_ALLOWED_LOCATIONS = ( 'azure://account.blob.core.windows.net/container/path/' [ , 'azure://account.blob.core.windows.net/container/path/' ... ] )
account— Azure 계정의 이름(예:myaccount). 지원되는 모든 유형의 Azure blob 스토리지 계정(Data Lake Storage Gen2 포함)에blob.core.windows.net엔드포인트를 사용해요.container— 데이터 파일을 저장하는 Azure 컨테이너의 이름(예:mycontainer).path— 파일 집합에 대한 접근을 제한하는 선택적 대소문자 구분 경로예요.
STORAGE_BLOCKED_LOCATIONS = ( 'cloud_specific_url' ) — 이 통합을 사용하는 외부 스테이지가 참조하지 못하게 할 스토리지 위치(Amazon S3, Google Cloud Storage, Microsoft Azure)를 하나 이상으로 명시적으로 금지해요. 로드/언로드할 데이터 파일을 저장하는 기존 스토리지 위치와 선택적 경로의 URL을 콤마로 구분한 목록을 지원해요. 계정의 모든 버킷에 대한 접근을 허용하는 STORAGE_ALLOWED_LOCATIONS가 * 와일드카드로 설정된 경우 일반적으로 사용돼요.
참고: 개별 클라우드 스토리지 위치 URL만 따옴표로 묶어야 해요.
STORAGE_BLOCKED_LOCATIONS값 전체를 따옴표로 묶으면 값이 유효하지 않아요. 결과적으로 사용자가 스토리지 통합을 참조하는 스테이지를 만들 때STORAGE_BLOCKED_LOCATIONS매개변수 설정이 무시돼요.
Amazon S3 / GCS / Azure — ALLOWED_LOCATIONS와 같은 URL 형식을 사용해요(단, 경로는 파일 접근을 더 제한하는 버킷/컨테이너의 선택적 경로(또는 디렉터리)예요).
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] — 태그 이름과 태그 문자열 값을 지정해요. 태그 값은 항상 문자열이며, 최대 문자 수는 256이에요. 문에서 태그를 지정하는 방법은 태그 할당량을 참고하세요.
COMMENT = 'string_literal' — 통합에 대한 주석을 지정하는 문자열(리터럴)이에요.
UNSET ... — 스토리지 통합에서 해제할 하나 이상의 속성/매개변수를 지정해 기본값으로 되돌려요:
ENABLEDSTORAGE_BLOCKED_LOCATIONSTAG tag_name [ , tag_name ... ]COMMENT
클라우드 프로바이더 매개변수 (cloudProviderParams)
Amazon S3
STORAGE_AWS_ROLE_ARN = 'iam_role' — 데이터 파일이 들어 있는 S3 버킷에 권한을 부여하는 AWS IAM 역할의 Amazon Resource Name(ARN)을 지정해요. 자세한 내용은 Amazon S3에 대한 안전한 접근 구성을 참고하세요.
STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control' — S3 버킷 소유자에게 전체 제어권을 부여하는 AWS 접근 제어 목록(ACL) 지원을 활성화해요. 언로드된 테이블 데이터로 Amazon S3 버킷에 만들어진 파일은 AWS IAM 역할이 소유해요. ACL은 한 AWS 계정의 IAM 역할이 하나 이상의 다른 AWS 계정의 S3 버킷에 접근하도록 구성된 사용 사례를 지원해요. ACL 지원이 없으면 버킷 소유자 계정의 사용자는 스토리지 통합을 사용해 외부(S3) 스테이지로 언로드된 데이터 파일에 접근할 수 없어요.
사용자가 COPY INTO <location>로 Snowflake 테이블 데이터를 S3 스테이지의 데이터 파일로 언로드하면, 언로드 작업은 언로드된 데이터 파일에 ACL을 적용해 S3 버킷 소유자에게 전체 제어권을 부여해요("s3:x-amz-acl":"bucket-owner-full-control").
STORAGE_AWS_EXTERNAL_ID = 'external_id' — Snowflake가 AWS와 신뢰 관계를 설정하는 데 사용하는 외부 ID를 지정해요. 이 스토리지 통합을 위해 구성한 IAM 역할의 신뢰 정책에도 동일한 외부 ID를 지정해야 해요. 자세한 내용은 AWS 리소스에 대한 접근 권한을 제3자에 부여할 때 외부 ID 사용 방법을 참고하세요.
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } — 보안 태세를 강화하기 위해 아웃바운드 프라이빗 연결을 사용할지 여부를 지정해요. 이 매개변수 사용에 대한 정보는 Amazon Web Services에 대한 외부 스테이지로의 프라이빗 연결을 참고하세요.
Microsoft Azure
AZURE_TENANT_ID = 'tenant_id' — 허용 및 차단된 스토리지 계정이 속한 Office 365 테넌트의 ID를 지정해요. 스토리지 통합은 하나의 테넌트에만 인증할 수 있으므로 허용·차단된 스토리지 위치는 모두 이 테넌트에 속한 스토리지 계정을 참조해야 해요. 테넌트 ID를 찾으려면 Azure 포털에 로그인하고 Azure Active Directory » Properties를 클릭해요. 테넌트 ID가 Tenant ID 필드에 표시돼요.
USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE } — 보안 태세를 강화하기 위해 아웃바운드 프라이빗 연결을 사용할지 여부를 지정해요. 이 매개변수 사용에 대한 정보는 Microsoft Azure에 대한 외부 스테이지 및 Snowpipe 자동화로의 프라이빗 연결을 참고하세요.
사용 메모 (Usage notes)
메타데이터 관련: Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터를 입력하지 않도록 주의해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고하세요.
예시 (Examples)
다음 예시는 중지된 통합의 작동을 시작해요.
ALTER STORAGE INTEGRATION myint SET ENABLED = TRUE;
더 알아보기 (Learn more)
- CREATE STORAGE INTEGRATION — 스토리지 통합 만들기
- SHOW INTEGRATIONS — 통합 나열
- DESCRIBE INTEGRATION — 통합 설명