Amazon S3 Tables를 AWS 분석 서비스와 통합하기
Amazon S3 Tables를 AWS 분석 서비스와 통합하기 (Integrating with AWS analytics services)
이 항목은 Amazon S3 테이블 버킷을 AWS 분석 서비스와 통합하는 데 필요한 사전 조건과 절차를 다뤄요. 통합이 어떻게 동작하는지에 대한 개요는 "S3 Tables integration overview" 문서를 참고하세요.
출처: 문서
본문
참고: 이 통합은 AWS Glue Data Catalog를 사용하며 AWS Glue 요청·스토리지 비용이 발생할 수 있어요. 자세한 내용은 AWS Glue 요금(Pricing) 문서를 참고하세요. S3 Tables에서 쿼리를 실행하면 추가 요금이 적용돼요. 자세한 내용은 사용 중인 쿼리 엔진의 요금 정보를 참고하세요.
통합 사전 조건
테이블 버킷을 AWS 분석 서비스와 통합하려면 다음 사전 조건이 필요해요.
- 테이블 버킷을 만들어요.
- AWS Identity and Access Management(IAM) 주체에 다음 AWS Glue 권한을 추가해요.
glue:CreateCatalog는 Data Catalog에s3tablescatalog연합 카탈로그를 만드는 데 필요해요.glue:PassConnection은 호출 주체가aws:s3tables연결 생성 위임을 Amazon S3 서비스에 부여할 수 있게 해줘요. - 최신 버전의 AWS Command Line Interface(AWS CLI)로 업데이트해요.
중요: 테이블을 만들 때 테이블 이름과 테이블 정의에 소문자만 사용하세요. 예를 들어 컬럼 이름을 모두 소문자로 만들어요. 테이블 이름이나 테이블 정의에 대문자가 포함되면 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 분석 서비스와 통합하기
테이블 버킷을 Data Catalog 및 AWS 분석 서비스와 통합할 때 기본적으로 IAM 접근 제어를 사용하거나, 선택적으로 Lake Formation 접근 제어를 사용할 수 있어요.
IAM 접근 제어로 통합할 때는 Amazon S3 테이블 버킷·테이블, Data Catalog 객체, 사용 중인 쿼리 엔진에 접근할 IAM 권한이 필요해요. Lake Formation으로 통합하기로 선택하면 IAM 접근 제어와 Lake Formation 권한 부여가 함께 Data Catalog 리소스에 대한 접근을 결정해요. Lake Formation 통합에 대해 자세히 알아보려면 AWS Lake Formation Developer Guide를 참고하세요.
다음 절들에서는 Amazon S3 관리 콘솔이나 AWS CLI로 IAM 접근 제어를 사용해 통합을 구성하는 방법을 설명해요.
Amazon S3 콘솔로 테이블 버킷을 통합하려면:
- https://console.aws.amazon.com/s3/ 에서 Amazon S3 콘솔을 열어요.
- 왼쪽 탐색 창에서 Table buckets를 선택해요.
- Create table bucket을 선택해요. Create table bucket 페이지가 열려요.
- Table bucket name을 입력하고 Enable integration 체크박스가 선택되어 있는지 확인해요.
- Create table bucket을 선택해요. Amazon S3가 해당 리전의 테이블 버킷 통합을 자동으로 시도해요.
IAM 접근 제어로 AWS CLI를 사용해 테이블 버킷을 통합하려면:
다음 단계는 AWS CLI로 테이블 버킷을 통합하는 방법을 보여줘요. 이 단계를 사용할 때는 사용자 입력 자리표시자를 자신의 정보로 바꾸세요.
- 테이블 버킷을 만들어요.
aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket - 다음 카탈로그가 들어 있는
catalog.json파일을 만들어요.{ "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": ["ALL"] } ], "CreateTableDefaultPermissions":[ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": ["ALL"] } ], "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 분석 서비스 통합 프로세스는 기본적으로 IAM 권한을 사용하도록 업데이트됐어요. 이미 통합을 설정했다면 현재 통합을 계속 사용할 수 있어요. 다만 기존 통합을 IAM 권한을 사용하도록 바꾸려면 AWS Lake Formation Developer Guide를 참고하세요. 통합을 다시 수행해 AWS Glue Data Catalog와 AWS Lake Formation의 기존 설정을 삭제하고 통합을 재실행할 수도 있어요. 이렇게 하면 s3tablescatalog에 대한 모든 기존 Lake Formation 권한 부여와 관련 접근 권한이 제거돼요.
- https://console.aws.amazon.com/lakeformation/ 에서 AWS Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인해요. 데이터 레이크 관리자를 만드는 방법에 대한 자세한 내용은 AWS Lake Formation Developer Guide의 "Create a data lake administrator" 문서를 참고하세요.
s3tablescatalog카탈로그를 삭제해요. 왼쪽 탐색 창에서 Catalogs를 선택해요. Catalogs 목록에서s3tablescatalog카탈로그 옆의 옵션 버튼을 선택해요. Actions 메뉴에서 Delete를 선택해요.s3tablescatalog카탈로그의 데이터 위치 등록을 해제해요. 왼쪽 탐색 창에서 Administration 섹션으로 가서 Data lake locations를 선택해요.s3tablescatalog데이터 레이크 위치(예:s3://tables:region:account-id:bucket/*) 옆의 옵션 버튼을 선택해요. Actions 메뉴에서 Remove를 선택해요. 나타나는 확인 대화 상자에서 Remove를 선택해요.- 이제
s3tablescatalog카탈로그와 데이터 레이크 위치를 삭제했으니, 업데이트된 통합 프로세스로 테이블 버킷을 AWS 분석 서비스와 통합하는 단계를 따르면 돼요.
참고: 통합된 AWS 분석 서비스에서 SSE-KMS로 암호화된 테이블로 작업하려면 사용하는 역할에 암호화 작업을 위한 AWS KMS 키 사용 권한이 있어야 해요. 자세한 내용은 "Granting IAM principals permissions to work with encrypted tables in integrated AWS analytics services" 문서를 참고하세요.
다음 단계
- 네임스페이스 만들기 (Create a namespace)
- 테이블 만들기 (Create a table)
더 알아보기 (Learn more)
- S3 Tables 통합 개요 (S3 Tables integration overview)
- AWS Glue Iceberg REST 엔드포인트로 테이블 접근하기 (Accessing tables using the AWS Glue Iceberg REST endpoint)