Athena에서 Data Catalog 뷰 사용 - Amazon Athena

Athena에서 Data Catalog 뷰 사용

Amazon Athena에서 Data Catalog 뷰를 생성하려면 특수한 CREATE VIEW 문이 필요합니다. 쿼리할 때는 일반적인 SQL SELECT 구문을 사용합니다. Data Catalog 뷰를 다중 언어 뷰 또는 MDV라고 합니다.

Data Catalog 뷰 생성

Athena에서 Data Catalog 뷰를 생성하려면 다음 구문을 사용합니다.

CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name SECURITY DEFINER [ SHOW VIEW JSON ] AS athena-sql-statement
참고

SHOW VIEW JSON 옵션은 Data Catalog 뷰에만 적용되며 Athena 뷰에는 적용되지 않습니다. SHOW VIEW JSON 옵션을 사용하면 입력의 유효성을 검사하는 ‘테스트 실행’이 수행되고, 검사가 성공하면 뷰를 나타내는 AWS Glue 테이블 객체의 JSON이 반환됩니다. 실제 뷰는 생성되지 않습니다. SHOW VIEW JSON 옵션을 지정하지 않으면 유효성 검사가 수행되고 데이터 카탈로그에 평소와 같이 뷰가 생성됩니다.

다음 예제 구문은 Definer 역할의 사용자가 orders_by_date Data Catalog 뷰를 생성하는 방법을 보여줍니다. 이 예제에서는 Definer 역할에 default 데이터베이스의 orders 테이블에 대한 전체 SELECT 권한이 있다고 가정합니다.

CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate

구문 정보는 CREATE PROTECTED MULTI DIALECT VIEW 섹션을 참조하세요.

Data Catalog 뷰 쿼리

뷰가 생성된 후 Lake Formation 관리자는 Data Catalog 뷰에 대한 Invoker 권한을 SELECT 보안 주체에게 부여할 수 있습니다. 그러면 Invoker 보안 주체는 뷰에서 참조하는 기본 테이블에 액세스하지 않고도 뷰를 쿼리할 수 있습니다. 다음은 Invoker 쿼리의 예입니다.

SELECT * from orders_by_date where price > 5000

고려 사항 및 제한

다음 Data Catalog 뷰 제한 사항은 대부분 Athena에만 해당됩니다. 다른 서비스에도 적용되는 추가 Data Catalog 뷰 제한 사항은 Lake Formation 설명서를 참조하세요.

  • Data Catalog 뷰는 다른 뷰, 데이터베이스 리소스 링크 또는 테이블 리소스 링크를 참조할 수 없습니다.

  • 뷰 정의에서 최대 10개의 테이블을 참조할 수 있습니다.

  • 테이블에는 Lake Formation의 IAMAllowedPrincipals 데이터 레이크 권한이 없어야 합니다. 이 권한이 있는 경우 다중 언어 뷰는 IAMAllowedPrincipals 권한이 없는 테이블만 참조라는 오류가 발생할 수 있습니다.

  • 테이블의 Amazon S3 위치를 Lake Formation 데이터 레이크 위치로 등록해야 합니다. 테이블이 등록되지 않은 경우 다중 언어 뷰는 Lake Formation 관리형 테이블만 참조 오류가 발생할 수 있습니다. Lake Formation에 Amazon S3 위치를 등록하는 자세한 방법은 AWS Lake Formation 개발자 가이드에서 Amazon S3 위치 등록을 참조하세요.

  • AWS Glue GetTablesSearchTables API 직접 호출은 IsRegisteredWithLakeFormation 파라미터를 업데이트하지 않습니다. 이 파라미터의 올바른 값을 보려면 AWS Glue GetTable API를 사용하세요. 자세한 내용은 AWS Lake Formation 개발자 가이드에서 GetTables 및 SearchTables API가 IsRegisteredWithLakeFormation 파라미터 값을 업데이트하지 않음을 참조하세요.

  • DEFINER 보안 주체는 IAM 역할만 될 수 있습니다.

  • DEFINER 역할에는 기본 테이블에 대한 전체 SELECT(부여 가능) 권한이 있어야 합니다.

  • UNPROTECTED Data Catalog 뷰는 지원되지 않습니다.

  • 사용자 정의 함수(UDF)는 뷰 정의에서 지원되지 않습니다.

  • Athena 페더레이션 데이터 소스는 Data Catalog 뷰에서 사용할 수 없습니다.

  • 외부 Hive 메타스토어에는 Data Catalog 뷰가 지원되지 않습니다.

  • Athena는 기한 경과 뷰를 감지하면 오류 메시지를 표시합니다. 다음 중 하나가 발생하면 기한 경과 뷰가 보고됩니다.

    • 뷰가 존재하지 않는 테이블 또는 데이터베이스를 참조합니다.

    • 스키마 또는 메타데이터 변경이 참조된 테이블에서 이루어집니다.

    • 참조된 테이블이 삭제되고 다른 스키마 또는 구성으로 재생성됩니다.

권한

Data Catalog 뷰에는 Lake Formation Admin, DefinerInvoker의 세 가지 역할이 필요합니다.

  • Lake Formation Admin - 모든 Lake Formation 권한을 구성할 수 있는 액세스 권한이 있습니다.

  • Definer - Data Catalog 뷰를 생성합니다. Definer 역할에는 뷰 정의가 참조하는 모든 기본 테이블에 대해 부여 가능한 전체 SELECT 권한이 있어야 합니다.

  • Invoker - Data Catalog 뷰를 쿼리하거나 해당 메타데이터를 확인할 수 있습니다. 쿼리 호출자를 표시하려면 invoker_principal() DML 함수를 사용할 수 있습니다. 자세한 내용은 invoker_principal() 단원을 참조하십시오.

Definer 역할의 신뢰 관계는 AWS Glue 및 Lake Formation 서비스 보안 주체에게 sts:AssumeRole 작업을 허용해야 합니다. 자세한 내용은 AWS Lake Formation 개발자 안내서뷰 생성을 위한 사전 조건을 참조하세요.

Athena 액세스를 위한 IAM 권한도 필요합니다. 자세한 내용은 Amazon Athena의 AWS 관리형 정책 단원을 참조하십시오.