AWS 분석 서비스와 Amazon S3 Tables 통합
이 주제에서는 Amazon S3 Tables 버킷을 AWS 분석 서비스와 통합하는 데 필요한 사전 조건과 절차를 다룹니다. 통합 작동 방식에 대한 개요는 S3 Tables 통합 개요 섹션을 참조하세요.
참고
이 통합은 AWS Glue 및 AWS Lake Formation 서비스를 사용하며 AWS Glue 요청 및 스토리지 비용이 발생할 수 있습니다. 자세한 내용은 AWS Glue 요금
S3 테이블에서 쿼리를 실행하는 경우 추가 요금이 적용됩니다. 자세한 내용은 사용 중인 쿼리 엔진의 요금 정보를 참조하세요.
통합 조건
테이블 버킷을 AWS 분석 서비스와 통합하려면 다음 사전 조건을 충족해야 합니다.
AWSLakeFormationDataAdmin AWS 관리형 정책을 AWS Identity and Access Management(IAM) 위탁자에 연결하여 해당 사용자를 데이터 레이크 관리자로 생성합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 데이터 레이크 관리자 생성을 참조하세요.
-
IAM 위탁자에
glue:PassConnection
작업에 대한 권한을 추가합니다. -
IAM 위탁자에
lakeformation:RegisterResource
및lakeformation:RegisterResourceWithPrivilegedAccess
작업에 대한 권한을 추가합니다.
중요
테이블을 만들 때 테이블 이름 및 테이블 정의에 모두 소문자를 사용해야 합니다. 예를 들어 열 이름이 모두 소문자인지 확인합니다. 테이블 이름 또는 테이블 정의에 대문자가 포함된 경우 테이블은 AWS Lake Formation 또는 AWS Glue Data Catalog에서 지원되지 않습니다. 이 경우 테이블 버킷이 AWS 분석 서비스와 통합되어 있더라도 Amazon Athena와 같은 AWS 분석 서비스에는 테이블이 표시되지 않습니다.
테이블 정의에 대문자가 포함된 경우 Athena에서 SELECT
쿼리를 실행할 때 "GENERIC_INTERNAL_ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names."
라는 오류 메시지가 표시됩니다.
테이블 버킷을 AWS 분석 서비스와 통합
이 통합은 AWS 리전당 한 번 수행해야 합니다.
중요
이제 AWS 분석 서비스 통합은 registerResource
Lake Formation API 작업의 WithPrivilegedAccess
옵션을 사용하여 S3 테이블 버킷을 등록합니다. 통합은 이제 CreateCatalog
AWS Glue API 작업의 AllowFullTableExternalDataAccess
옵션을 사용하여 AWS Glue Data Catalog에 s3tablescatalog
카탈로그도 생성합니다.
미리 보기 릴리스와의 통합을 설정한 경우 현재 통합을 계속 사용할 수 있습니다. 그러나 업데이트된 통합 프로세스는 성능 개선을 제공하므로 마이그레이션하는 것이 좋습니다. 업데이트된 통합으로 마이그레이션하려면 업데이트된 통합 프로세스로 마이그레이션 섹션을 참조하세요.
https://console.aws.amazon.com/s3/
에서 S3 콘솔을 엽니다. 왼쪽 탐색 창에서 테이블 버킷을 선택합니다.
테이블 버킷 생성을 선택합니다.
테이블 버킷 생성 페이지가 열립니다.
테이블 버킷 이름을 입력하고 통합 활성화 확인란이 선택되어 있는지 확인합니다.
테이블 버킷 생성을 선택합니다. Amazon S3는 해당 리전에서 테이블 버킷을 자동으로 통합하려고 시도합니다.
어떤 리전에서든 테이블 버킷을 처음 통합하면 Amazon S3가 사용자를 대신하여 새 IAM 서비스 역할을 생성합니다. 이 역할을 통해 Lake Formation은 계정의 모든 테이블 버킷에 액세스하고 AWS Glue Data Catalog의 테이블에 대한 액세스를 페더레이션할 수 있습니다.
AWS CLI를 사용하여 테이블 버킷을 통합하는 방법
다음 단계에서는 AWS CLI를 사용하여 테이블 버킷을 통합하는 방법을 보여줍니다. 이 단계를 사용하려면
를 실제 정보로 대체합니다.user input placeholders
테이블 버킷을 생성합니다.
aws s3tables create-table-bucket \ --region
us-east-1
\ --nameamzn-s3-demo-table-bucket
-
Lake Formation이 테이블 리소스에 액세스할 수 있도록 허용하는 IAM 서비스 역할을 생성합니다.
-
다음 신뢰 정책을 포함하는
Role-Trust-Policy.json
이라는 파일을 생성합니다.다음 명령을 사용하여 IAM 서비스 역할을 생성합니다.
aws iam create-role \ --role-name
S3TablesRoleForLakeFormation
\ --assume-role-policy-document file://Role-Trust-Policy.json
-
다음 신뢰 정책을 포함하는
LF-GluePolicy.json
이라는 파일을 생성합니다.다음 명령을 사용하여 정책을 역할에 연결합니다.
aws iam put-role-policy \ --role-name
S3TablesRoleForLakeFormation
\ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
-
-
다음을 포함하는
input.json
이라는 파일을 생성합니다.{ "ResourceArn": "arn:aws:s3tables:
us-east-1
:111122223333
:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333
:role/S3TablesRoleForLakeFormation
" }다음 명령을 사용하여 Lake Formation에 테이블 버킷을 등록합니다.
aws lakeformation register-resource \ --region
us-east-1
\ --with-privileged-access \ --cli-input-json file://input.json
-
다음 카탈로그를 포함하는
catalog.json
이라는 파일을 생성합니다.{ "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:
us-east-1
:111122223333
:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "AllowFullTableExternalDataAccess": "True" } }다음 명령을 사용하여
s3tablescatalog
카탈로그를 생성합니다. 이 카탈로그를 생성하면 테이블 버킷, 네임스페이스 및 테이블에 해당하는 객체로 AWS Glue Data Catalog를 채웁니다.aws glue create-catalog \ --region
us-east-1
\ --cli-input-json file://catalog.json
다음 명령을 사용하여
s3tablescatalog
카탈로그가 AWS Glue에 추가되었는지 확인합니다.aws glue get-catalog --catalog-id s3tablescatalog
AWS 분석 서비스 통합 프로세스가 업데이트되었습니다. 미리 보기 릴리스와의 통합을 설정한 경우 현재 통합을 계속 사용할 수 있습니다. 그러나 업데이트된 통합 프로세스는 성능을 개선하므로 다음 단계를 사용하여 마이그레이션하는 것이 좋습니다. 마이그레이션 또는 통합 프로세스에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 AWS Glue Data Catalog에서 Amazon S3 Tables 카탈로그 생성을 참조하세요.
-
https://console.aws.amazon.com/lakeformation/
에서 AWS Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 데이터 레이크 관리자 생성을 참조하세요. -
다음을 수행하여
s3tablescatalog
카탈로그를 삭제합니다.-
왼쪽 탐색 창에서 카탈로그를 선택합니다.
-
카탈로그 목록의
s3tablescatalog
카탈로그 옆에 있는 옵션 버튼을 선택합니다. [Actions] 메뉴에서 [Delete]를 선택합니다.
-
-
다음을 수행하여
s3tablescatalog
카탈로그의 데이터 위치를 등록 취소합니다.-
왼쪽 탐색 창에서 관리 섹션으로 이동하고 데이터 레이크 위치를 선택합니다.
-
s3tablescatalog
데이터 레이크 위치 옆의 옵션 버튼을 선택합니다. 예를 들어,s3://tables:
입니다.region
:account-id
:bucket/* -
작업 메뉴에서 제거를 선택합니다.
-
나타나는 대화 상자에서 제거를 선택합니다.
-
-
이제
s3tablescatalog
카탈로그 및 데이터 레이크 위치를 삭제했으므로 업데이트된 통합 프로세스를 사용하여 테이블 버킷을 AWS 분석 서비스와 통합하는 단계를 수행할 수 있습니다.
참고
통합 AWS 분석 서비스에서 SSE-KMS로 암호화된 테이블에 대한 작업을 수행하려면 사용하는 역할이 암호화 작업에 AWS KMS 키를 사용할 수 있는 권한을 가져야 합니다. 자세한 내용은 IAM 위탁자에게 통합 AWS 분석 서비스에서 암호화된 테이블에 대한 작업을 수행할 수 있는 권한 부여 섹션을 참조하세요.
통합 후 테이블에 액세스하기 위한 Lake Formation 권한이 IAM 위탁자에 부여되면 다른 IAM 위탁자가 테이블에 액세스하도록 허용하려는 경우 테이블에 대한 Lake Formation 권한을 해당 위탁자에 부여해야 합니다. 자세한 내용은 Lake Formation을 사용하여 테이블 또는 데이터베이스에 대한 액세스 관리 섹션을 참조하세요.