AWS Glue Iceberg REST 에 대한 카탈로그 통합 구성하기¶
`Signature Version 4(SigV4)<https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html>`_ 인증을 사용하여 `AWS Glue Iceberg REST 엔드포인트<https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html>`_에 대한 카탈로그 통합을 생성하려면 이 항목의 단계를 따릅니다.
참고
공용 인터넷 대신 비공개 IP 주소를 통해 AWS Glue Data Catalog에 연결하기 위한 카탈로그 통합을 구성하려면 아웃바운드 비공개 연결로 Apache Iceberg™ REST 카탈로그 통합 구성하기 섹션을 참조하세요.
1단계: AWS Glue Data Catalog에 대한 액세스 허가 구성¶
AWS Glue 데이터 카탈로그에 액세스하기 위해 Snowflake에 대한 IAM 정책을 만듭니다. 카탈로그 통합을 만들 때 지정하는 IAM 역할에 정책을 첨부합니다. 지침은 AWS Identity and Access Management 사용자 가이드에서 IAM 정책 만들기 및 역할 권한 정책 수정하기 를 참조하십시오.
읽기 전용 예제 정책¶
Snowflake는 최소한 다음 권한이 필요합니다.AWSGlue 데이터 카탈로그에서 다음 권한을 사용하여 Glue Iceberg REST 카탈로그를 사용하여 정보에 액세스합니다.
glue:GetCatalogglue:GetDatabaseglue:GetDatabasesglue:GetTableglue:GetTables
다음 예시 정책(JSON 형식)에서는 지정된 데이터베이스의 모든 테이블에 액세스하는 데 필요한 권한을 제공합니다.
참고
이 정책의
Resource요소를 수정하여 허용되는 리소스(예: 카탈로그, 데이터베이스 또는 테이블)를 추가로 제한할 수 있습니다. 자세한 내용은 AWS Glue에서 정의된 리소스 유형 을 참조하십시오.AWS Glue에 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 권한을 추가하도록 정책을 수정해야 합니다. 자세한 내용은 AWS Glue에서 암호화 설정하기 를 참조하십시오.
예제 정책 읽기 및 쓰기¶
다음 예제 정책(JSON형식)은 모든 데이터베이스의 모든 테이블에 대한 읽기 및 쓰기 액세스에 필요한 권한을 제공합니다. :doc:`외부 관리 테이블에 대한 쓰기 액세스 권한</user-guide/tables-iceberg-externally-managed-writes>`을 구성하려면 이 정책을 예로 사용합니다.
참고
AWS Glue 카탈로그가 테이블 위치에 메타데이터를 작성하려면 정책에서 저장소 위치에 대한 액세스 권한을 제공해야 합니다.
이 정책의
Resource요소에 있는"arn:aws:glue:*:<accountid>:database/*"줄은 모든 데이터베이스를 지정합니다. 이 작업은 CREATE SCHEMA 명령을 사용하여 Snowflake에서 Glue에 새 데이터베이스를 생성하려는 경우 필요합니다. 단일 데이터베이스에 대한 액세스를 제한하기 위해 이름으로 데이터베이스를 지정할 수 있습니다. 리소스 정의에 대한 자세한 내용은 `AWS Glue<https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsglue.html#awsglue-resources-for-iam-policies>에서 정의한 리소스 유형`_을 참조하세요.AWS Glue에 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 권한을 추가하도록 정책을 수정해야 합니다. 자세한 내용은 AWS Glue에서 암호화 설정하기 를 참조하십시오.
(선택 사항) Lake Formation 액세스 제어 구성하기¶
세분화된 액세스 제어를 위해 AWS Lake Formation을 사용하는 경우, Lake Formation 구성에서 Snowflake가 카탈로그 오브젝트 및 기본 데이터에 액세스할 수 있도록 허용하는지 확인합니다.
이전 단계에서 생성한 IAM 역할(카탈로그 통합을 생성할 때 Snowflake에서 지정하는 역할)에는 :code:`lakeformation:GetDataAccess`IAM 권한이 있어야 합니다. 이 권한은 기본 데이터에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.
자세한 내용은 Lake Formation 설명서의 `기본 데이터 액세스 제어<https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html>`_ 섹션을 참조하세요.
You must also grant data permissions to the IAM role. The method that you use to grant data permissions depends on your Lake Formation setup. For example, you might use the named resources method to grant permissions to AWS Glue objects, or you might use tag-based access control. For more information and instructions, see the AWS Lake Formation documentation.
2단계: Snowflake에서 카탈로그 통합 만들기¶
CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) 명령을 사용하여 `AWS Glue Iceberg REST 엔드포인트<https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html>`_에 대한 카탈로그 통합을 생성합니다. 구성한 IAM 역할을 지정합니다. :code:`CATALOG_NAME`에 AWS 계정 ID를 사용합니다.
여기서
CATALOG_URI는 AWS Glue Iceberg REST 카탈로그의 서비스 엔드포인트입니다.CATALOG_NAME은 AWS 계정의 ID 입니다.
자세한 내용은 AWS Glue에 대한 카탈로그 통합 구성 지침이 포함된 CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) 섹션을 참조하십시오.
3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색¶
Snowflake 계정의 AWS IAM 사용자 및 외부 ID 정보를 검색하려면 DESCRIBE CATALOG INTEGRATION 명령을 실행합니다. 다음 단계에서 이 정보를 AWS에 제공하여 신뢰 관계를 구축합니다.
다음 값을 기록합니다.
값
설명
GLUE_AWS_IAM_USER_ARNSnowflake 계정용으로 생성된 AWS IAM 사용자입니다(예:
arn:aws:iam::123456789001:user/abc1-b-self1234). Snowflake는 전체 Snowflake 계정에 대해 단일 IAM 사용자를 프로비저닝합니다. 계정의 모든 Glue 카탈로그 통합에서 해당 IAM 사용자를 사용합니다.
GLUE_AWS_EXTERNAL_ID신뢰 관계를 설정하기 위한 외부 ID입니다.
4단계: AWS Glue 데이터 카탈로그에 대한 IAM 사용자 액세스 권한 부여¶
카탈로그 통합을 생성할 때 ()을 사용하여 지정한 것과 IAM동일한ARN GLUE_AWS_ROLE_ARN 역할에 대한 신뢰 정책을 업데이트합니다. 이전 단계에서 기록한 값을 신뢰 정책에 추가합니다.
지침은 신뢰 정책 수정하기 를 참조하십시오.
다음 예시 정책은 GLUE_AWS_IAM_USER_ARN 및 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로 신뢰 정책을 수정하지 않으면 신뢰 관계를 확인할 수 없습니다.
권한이 올바르게 구성되었는지 확인하려면 이 카탈로그 통합을 사용하는 :doc:`Iceberg 테이블을 생성</user-guide/tables-iceberg-create>`합니다. Snowflake는 이 카탈로그 통합을 참조하는 Iceberg 테이블을 생성할 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.
다음 단계¶
AWS Glue Iceberg REST에 대한 카탈로그 통합을 구성한 후 :doc:`카탈로그 연결 데이터베이스를 생성 </user-guide/tables-iceberg-catalog-linked-database>`할 수 있습니다. 카탈로그 연결 데이터베이스를 생성할 때 카탈로그 통합의 이름을 카탈로그로 지정합니다.
카탈로그 연결 데이터베이스는 원격 카탈로그의 네임스페이스 및 테이블을 자동으로 검색하고 동기화하여 원격 Iceberg REST 카탈로그에서 Snowflake로 외부 데이터를 가져옵니다.