Iceberg 테이블의 카탈로그 통합 구성하기

이 항목에서는 Iceberg 테이블의 카탈로그 통합 을 만들고 구성하는 데 도움이 되는 정보를 제공합니다. 외부 Iceberg 카탈로그를 사용하거나 카탈로그를 전혀 사용하지 않는 Iceberg 테이블을 생성하려면 카탈로그 통합을 지정해야 합니다.

참고

외부 Iceberg 카탈로그를 사용하여 읽기 전용 Iceberg 테이블을 생성하려는 경우에만 카탈로그 통합이 필요합니다. Snowflake를 Iceberg 카탈로그로 사용하는 Iceberg 테이블을 생성하는 데는 카탈로그 통합이 필요하지 않습니다. Snowflake를 카탈로그로 사용하려면 CREATE ICEBERG TABLE 명령에서 CATALOG 매개 변수를 SNOWFLAKE 로 설정하십시오.

카탈로그 통합 만들기

CREATE CATALOG INTEGRATION 명령을 사용하여 Iceberg 테이블의 카탈로그 통합을 생성할 수 있습니다.

예: 오브젝트 저장소의 Iceberg 파일의 카탈로그 통합 만들기

다음 예시 문은 OBJECT_STORECATALOG_SOURCE 값으로 설정하여 외부 클라우드 저장소 위치에 있는 Iceberg 메타데이터의 카탈로그 통합을 생성합니다.

CREATE OR REPLACE CATALOG INTEGRATION icebergCatalogInt
  CATALOG_SOURCE=OBJECT_STORE
  TABLE_FORMAT=ICEBERG
  ENABLED=TRUE;
Copy

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>"
         ]
      }
   ]
}
Copy

참고

  • 이 정책의 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;
Copy

3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색

카탈로그 통합을 생성할 때 Snowflake 계정용으로 생성된 AWS IAM 사용자 및 외부 ID에 대한 정보를 검색하려면 DESCRIBE CATALOG INTEGRATION 명령을 실행하십시오. 다음 섹션에서 이 정보를 AWS에 제공하여 신뢰 관계를 설정합니다.

다음 예제 명령은 이전 단계에서 생성된 카탈로그 통합을 설명합니다.

DESCRIBE CATALOG INTEGRATION glueCatalogInt;
Copy

다음 값을 기록합니다.

설명

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 사용자 권한 부여

신뢰 정책 수정하기 의 지침에 따라 3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색 에 기록한 값을 IAM 역할의 신뢰 정책에 추가합니다.

다음 예시 신뢰 정책에서는 GLUE_AWS_IAM_USER_ARNGLUE_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>"
         }
      }
      }
   ]
}
Copy

여기서

  • 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 테이블을 생성할 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.