Iceberg 테이블의 카탈로그 통합 구성하기¶
이 항목에서는 Iceberg 테이블의 카탈로그 통합 을 만들고 구성하는 데 도움이 되는 정보를 제공합니다. 외부 Iceberg 카탈로그를 사용하거나 카탈로그를 전혀 사용하지 않는 Iceberg 테이블을 생성하려면 카탈로그 통합을 지정해야 합니다.
참고
외부 Iceberg 카탈로그를 사용하여 읽기 전용 Iceberg 테이블을 생성하려는 경우에만 카탈로그 통합이 필요합니다. Snowflake를 Iceberg 카탈로그로 사용하는 Iceberg 테이블을 생성하는 데는 카탈로그 통합이 필요하지 않습니다. Snowflake를 카탈로그로 사용하려면 CREATE ICEBERG TABLE 명령에서 CATALOG
매개 변수를 SNOWFLAKE
로 설정하십시오.
카탈로그 통합 만들기¶
CREATE CATALOG INTEGRATION 명령을 사용하여 Iceberg 테이블의 카탈로그 통합을 생성할 수 있습니다.
예: 오브젝트 저장소의 Iceberg 파일의 카탈로그 통합 만들기¶
다음 예시 문은 OBJECT_STORE
를 CATALOG_SOURCE
값으로 설정하여 외부 클라우드 저장소 위치에 있는 Iceberg 메타데이터의 카탈로그 통합을 생성합니다.
CREATE OR REPLACE CATALOG INTEGRATION icebergCatalogInt
CATALOG_SOURCE=OBJECT_STORE
TABLE_FORMAT=ICEBERG
ENABLED=TRUE;
카탈로그 통합을 만든 후에는 Iceberg 테이블을 생성 할 수 있습니다.
AWS Glue의 카탈로그 통합 구성하기¶
이 섹션에서는 AWS Glue의 카탈로그 통합을 생성하고 Snowflake에 Amazon Glue Data Catalog에 대한 제한적 액세스 권한을 부여하는 방법을 다룹니다.
참고
이 섹션의 지침을 완료하려면 Amazon Web Services(AWS)에서 IAM 정책과 역할을 생성하고 관리할 권한이 있어야 합니다. AWS 관리자가 아닌 경우 AWS 관리자에게 이러한 작업을 수행하도록 요청하십시오.
1단계: AWS Glue Data Catalog에 대한 액세스 허가 구성¶
가장 좋은 방법은 Snowflake가 Glue Data Catalog에 액세스할 수 있도록 새 IAM 정책을 만드는 것입니다. 그러면 정책을 IAM 역할에 연결하고 AWS가 그 역할에 대해 생성하는 보안 자격 증명을 사용하여 카탈로그의 파일에 액세스할 수 있습니다. 지침은 AWS Identity and Access Management 사용자 가이드에서 IAM 정책 만들기 및 역할 권한 정책 수정하기 를 참조하십시오.
Snowflake에서는 테이블에 대한 정보에 액세스하려면 최소한 Glue Data Catalog에 대해 다음 권한이 필요합니다.
glue:GetTable
glue:GetTables
다음 예시 정책(JSON 형식)에서는 지정된 데이터베이스의 모든 테이블에 액세스하는 데 필요한 권한을 제공합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGlueCatalogTableAccess",
"Effect": "Allow",
"Action": [
"glue:GetTable",
"glue:GetTables"
],
"Resource": [
"arn:aws:glue:*:<accountid>:table/*/*",
"arn:aws:glue:*:<accountid>:catalog",
"arn:aws:glue:*:<accountid>:database/<database-name>"
]
}
]
}
참고
이 정책의
Resource
요소를 수정하여 허용되는 리소스(예: 카탈로그, 데이터베이스 또는 테이블)를 추가로 제한할 수 있습니다. 자세한 내용은 AWS Glue에서 정의된 리소스 유형 을 참조하십시오.AWS Glue에 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 권한을 추가하도록 정책을 수정해야 합니다. 자세한 내용은 AWS Glue에서 암호화 설정하기 를 참조하십시오.
2단계: Snowflake에서 카탈로그 통합 만들기¶
CREATE CATALOG INTEGRATION 명령을 사용하여 Glue Data Catalog의 카탈로그 통합을 만듭니다.
다음 예에서는 AWS Glue 카탈로그 원본을 사용하는 카탈로그 통합을 만듭니다. 이 예제에서는 선택적 GLUE_REGION
매개 변수의 값을 지정합니다.
CREATE CATALOG INTEGRATION glueCatalogInt
CATALOG_SOURCE=GLUE
CATALOG_NAMESPACE='my.catalogdb'
TABLE_FORMAT=ICEBERG
GLUE_AWS_ROLE_ARN='arn:aws:iam::123456789012:role/myGlueRole'
GLUE_CATALOG_ID='123456789012'
GLUE_REGION='us-east-2'
ENABLED=TRUE;
3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색¶
카탈로그 통합을 생성할 때 Snowflake 계정용으로 생성된 AWS IAM 사용자 및 외부 ID에 대한 정보를 검색하려면 DESCRIBE CATALOG INTEGRATION 명령을 실행하십시오. 다음 섹션에서 이 정보를 AWS에 제공하여 신뢰 관계를 설정합니다.
다음 예제 명령은 이전 단계에서 생성된 카탈로그 통합을 설명합니다.
DESCRIBE CATALOG INTEGRATION glueCatalogInt;
다음 값을 기록합니다.
값
설명
GLUE_AWS_IAM_USER_ARN
Snowflake 계정용으로 생성된 AWS IAM 사용자입니다(예:
arn:aws:iam::123456789001:user/abc1-b-self1234
). Snowflake는 전체 Snowflake 계정에 대해 단일 IAM 사용자를 프로비저닝합니다. 계정의 모든 Glue 카탈로그 통합에서 해당 IAM 사용자를 사용합니다.
GLUE_AWS_EXTERNAL_ID
신뢰 관계를 구축하기 위해 필요한 외부 ID입니다.
이러한 값은 다음 섹션에서 입력합니다.
4단계: AWS Glue Data Catalog에 액세스할 수 있도록 IAM 사용자 권한 부여¶
카탈로그 통합을 생성할 때 ARN(GLUE_AWS_ROLE_ARN
)별로 지정한 것과 동일한 IAM 역할에 대한 신뢰 정책을 업데이트합니다. 3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색 에 기록한 값을 신뢰 정책에 추가합니다.
지침은 신뢰 정책 수정하기 를 참조하십시오.
다음 예시 신뢰 정책에서는 GLUE_AWS_IAM_USER_ARN
및 GLUE_AWS_EXTERNAL_ID
값을 지정할 위치를 보여줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "<glue_iam_user_arn>"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<glue_aws_external_id>"
}
}
}
]
}
여기서
glue_iam_user_arn
은 자신이 기록한GLUE_IAM_USER_ARN
값입니다.
glue_aws_external_id
는 자신이 기록한GLUE_AWS_EXTERNAL_ID
값입니다.
참고
보안상의 이유로, 새 카탈로그 통합을 생성하는 경우(또는 CREATE OR REPLACE CATALOG INTEGRATION 구문을 사용하여 기존 카탈로그 통합을 다시 생성하는 경우) 새 카탈로그 통합은 다른 외부 ID를 가지며 새 외부 ID로 신뢰 정책을 수정하지 않으면 신뢰 관계를 확인할 수 없습니다.
권한이 올바르게 구성되었는지 확인하려면 이 카탈로그 통합을 사용하여 Iceberg 테이블을 생성하십시오. Snowflake는 이 카탈로그 통합을 참조하는 Iceberg 테이블을 생성할 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.
다음 단계¶
AWS Glue의 카탈로그 통합을 구성하면 AWS Glue를 카탈로그로 사용하여 Iceberg 테이블 만들기 를 수행할 수 있습니다.
테이블을 업데이트하고 AWS Glue의 변경 사항과 동기화된 상태를 유지하려면 ALTER ICEBERG TABLE … REFRESH 문을 사용하십시오. 자세한 내용은 AWS Glue를 카탈로그로 사용하는 Iceberg 테이블의 메타데이터 새로 고치기 섹션을 참조하십시오.
계정, 데이터베이스 또는 스키마 수준에서 카탈로그 통합 설정하기¶
Iceberg 테이블에 사용할 기존 카탈로그 통합을 정의하려면 다음 수준에서 CATALOG 매개 변수를 설정하면 됩니다.
- 계정:
계정 관리자는 ALTER ACCOUNT 명령을 사용해 계정에 대한 매개 변수를 설정할 수 있습니다. 계정에 대해 값이 설정된 경우 외부 카탈로그를 사용하는 계정에서 생성된 모든 Iceberg 테이블은 기본적으로 이 카탈로그 통합을 사용합니다.
- 오브젝트:
사용자는 적절한 CREATE <오브젝트> 또는 ALTER <오브젝트> 명령을 실행하여 데이터베이스 또는 스키마 수준에서 CATALOG 매개 변수 값을 재정의할 수 있습니다. 가장 낮은 범위가 지정된 선언이 사용됩니다(스키마 > 데이터베이스 > 계정).
적절한 ALTER <object_type> 명령을 사용하여 오브젝트를 수정하는 데 필요한 최소 권한 외에도, 역할에는 카탈로그 통합에 대한 USAGE 권한이 있어야 합니다.
예¶
다음 문은 my_database_1
이라는 데이터베이스에 대한 카탈로그 통합(shared_catalog_integration
)을 설정합니다.
ALTER DATABASE my_database_1
SET CATALOG = 'shared_catalog_integration';
데이터베이스 수준에서 카탈로그 통합을 설정한 후 카탈로그 통합을 지정하지 않고도 해당 데이터베이스에 Iceberg 테이블을 생성할 수 있습니다. 다음 문은 데이터베이스에 대해 설정된 기본 카탈로그 통합(shared_catalog_integration
)을 사용하는 my_database_1
의 오브젝트 저장소에 있는 메타데이터에서 Iceberg 테이블을 생성합니다.
CREATE ICEBERG TABLE my_iceberg_table
EXTERNAL_VOLUME='my_external_volume'
METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';