AWS Glue의 카탈로그 통합 구성하기¶
AWS Glue의 카탈로그 통합을 생성하고 Snowflake에 AWS Glue Data Catalog에 대한 제한적 액세스 권한을 부여합니다.
참고
이 섹션의 지침을 완료하려면 Amazon Web Services(AWS)에서 IAM 정책과 역할을 생성하고 관리할 권한이 있어야 합니다. AWS 관리자가 아닌 경우 AWS 관리자에게 이러한 작업을 수행하도록 요청하십시오.
1단계: AWS Glue Data Catalog에 대한 액세스 허가 구성¶
가장 좋은 방법은 Snowflake가 AWS Glue Data Catalog에 액세스할 수 있도록 새 IAM 정책을 만드는 것입니다. 그러면 정책을 IAM 역할에 연결하고 AWS가 그 역할에 대해 생성하는 보안 자격 증명을 사용하여 카탈로그의 파일에 액세스할 수 있습니다. 지침은 AWS Identity and Access Management 사용자 가이드에서 IAM 정책 만들기 및 역할 권한 정책 수정하기 를 참조하십시오.
Snowflake에서는 테이블에 대한 정보에 액세스하려면 최소한 AWS 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(AWS Glue) 명령을 사용하여 AWS Glue Data Catalog의 카탈로그 통합을 만듭니다.
다음 예에서는 AWS Glue Data Catalog 원본을 사용하는 카탈로그 통합을 만듭니다. 이 예제에서는 선택적 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 문을 사용하십시오. 자세한 내용은 테이블의 메타데이터 새로 고치기 섹션을 참조하십시오.