기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
애플리케이션 통합 API 작업을 위한 Lake Formation 워크플로
애플리케이션 통합 API 작업의 워크플로는 다음과 같습니다.
-
사용자가 통합된 서드 파티 쿼리 엔진을 사용하여 쿼리를 제출하거나 데이터를 요청합니다. 쿼리 엔진은 사용자 또는 사용자 그룹을 나타내는 IAM 역할을 맡고, 애플리케이션 통합 API 작업을 호출할 때 사용할 신뢰할 수 있는 자격 증명을 검색합니다.
-
쿼리 엔진은
GetUnfilteredTableMetadata를 호출하고, 파티션된 테이블인 경우 쿼리 엔진은GetUnfilteredPartitionsMetadata를 호출하여 데이터 카탈로그에서 메타데이터 및 정책 정보를 검색합니다. -
Lake Formation은 요청에 대한 승인을 수행합니다. 사용자에게 테이블에 대한 적절한 권한이 없는 경우 AccessDeniedException이 발생합니다.
-
요청의 일부로 쿼리 엔진은 지원하는 필터링을 전송합니다. 배열 내에서 전송할 수 있는 두 가지 플래그는 COLUMN_PERMISSIONS 및 CELL_FILTER_PERMISSION입니다. 쿼리 엔진이 이러한 기능을 지원하지 않는데 해당 기능에 대한 정책이 테이블에 있는 경우 PermissionTypeMismatchException이 발생하고 쿼리가 실패합니다. 이는 데이터 유출을 방지하기 위함입니다.
-
반환된 응답에는 다음이 포함됩니다.
-
쿼리 엔진이 스토리지에서 데이터를 구문 분석하는 데 사용할 수 있는 테이블의 전체 스키마입니다.
-
사용자가 액세스할 수 있는 승인된 열 목록입니다. 승인된 열 목록이 비어 있는 경우 사용자에게
DESCRIBE권한은 있지만SELECT권한이 없는 것으로 표시되며 쿼리가 실패합니다. -
Lake Formation이 이 리소스 데이터에 자격 증명을 제공할 수 있는지 여부를 나타내는 플래그(
IsRegisteredWithLakeFormation)입니다. false가 반환되는 경우 고객의 자격 증명을 사용하여 Amazon S3에 액세스해야 합니다. -
데이터 행에 적용해야 하는
CellFilters목록(있는 경우)입니다. 이 목록에는 각 행을 평가하는 열과 표현식이 포함되어 있습니다. 이 값은 요청의 일부로 CELL_FILTER_PERMISSION이 전송되고 호출하는 사용자의 테이블에 대한 데이터 필터가 있는 경우에만 채워져야 합니다.
-
-
메타데이터가 검색되면 쿼리 엔진은
GetTemporaryGlueTableCredentials또는를 호출GetTemporaryGluePartitionCredentials하여 Amazon S3 위치에서 데이터를 검색하기 위한 AWS 자격 증명을 가져옵니다. -
쿼리 엔진은 Amazon S3에서 관련 객체를 읽고, 2단계에서 수신한 정책을 기반으로 데이터를 필터링하고, 결과를 사용자에게 반환합니다.
Lake Formation용 애플리케이션 통합 API 작업에는 서드 파티 쿼리 엔진과의 통합을 구성하기 위한 추가 콘텐츠가 포함되어 있습니다. 자격 증명 벤딩 API 작업 섹션에서 작업 세부 정보를 확인할 수 있습니다.
QuerySessionContext는 쿼리 엔진이 이러한 애플리케이션 통합 API 작업을 Lake Formation 위해에 추가로 전송할 수 있는 구조입니다. 이를 통해는 지정된 쿼리Lake Formation에 대한 추가 컨텍스트를 저장하고 활용할 수 있습니다. 다음은 QuerySessionContext를 사용하는 방법의 예입니다.
-
쿼리 엔진은
GetInternalUnfilteredMetadata호출을 수행하여 요청에 고유한 쿼리 ID가 포함된 QSC 구조를 전달합니다.{ "QuerySessionContext": { "QueryId": "your-unique-identifier-here" } } -
GetInternalUnfilteredMetadata호출은 응답에서QueryAuthorizationId문자열을 반환합니다. 입력에서 QSC 구조를 수락하는 다음(및 후속) 쿼리 호출에서 쿼리 엔진은에서QueryAuthorizationId반환한 도 포함하는 동일한 QSC 구조를 전달합니다Lake Formation. 이 다음 호출이 라고 가정해 보겠습니다GetTemporaryGlueTableCredentials. 요청에는 다음이 포함됩니다.{ "QuerySessionContext": { "QueryAuthorizationId": "lf-returned-query-authz-id-here", "QueryId": "your-unique-identifier-here" }, }