자습서: S3 Tables 시작하기
이 자습서에서는 테이블 버킷을 생성하고 리전의 테이블 버킷을 AWS 분석 서비스와 통합합니다. 다음으로 AWS CLI를 사용하여 테이블 버킷에 첫 번째 네임스페이스와 테이블을 생성합니다. 그런 다음 AWS Lake Formation을 사용하여 테이블에 대한 권한을 부여하므로 Athena로 테이블 쿼리를 시작할 수 있습니다.
작은 정보
범용 버킷에서 테이블 버킷으로 테이블 형식 데이터를 마이그레이션하는 경우 AWS Solutions Library에 도움이 되는 안내 솔루션이 있습니다. 이 솔루션은 AWS Glue Data Catalog에 등록되고 범용 버킷에 저장된 Apache Iceberg 및 Apache Hive 테이블을 Apache Spark와 함께 AWS Step Functions 및 Amazon EMR을 사용하여 이동하는 작업을 자동화합니다. 자세한 내용은 AWS Solutions Library의 테이블 형식 데이터를 Amazon S3에서 S3 Tables로 마이그레이션하기 위한 지침
주제
1단계: 테이블 버킷 생성 및 AWS 분석 서비스와 통합
이 단계에서는 Amazon S3 콘솔을 사용하여 첫 번째 테이블 버킷을 생성합니다. 테이블 버킷을 생성하는 다른 방법은 Creating a table bucket을 참조하세요.
참고
기본적으로 Amazon S3 콘솔은 테이블 버킷을 Amazon SageMaker Lakehouse와 자동으로 통합하므로 AWS 분석 서비스가 S3 Tables 데이터를 자동으로 검색하고 액세스할 수 있습니다. AWS Command Line Interface(AWS CLI), AWS SDK 또는 REST API를 사용하여 프로그래밍 방식으로 첫 번째 테이블 버킷을 생성하는 경우 AWS 분석 서비스 통합을 수동으로 완료해야 합니다. 자세한 내용은 AWS 분석 서비스에서 Amazon S3 Tables 사용 섹션을 참조하세요.
AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/
에서 S3 콘솔을 엽니다. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 테이블 버킷을 생성하려는 리전을 선택합니다.
왼쪽 탐색 창에서 테이블 버킷을 선택합니다.
테이블 버킷 생성을 선택합니다.
일반 구성에서 테이블 버킷의 이름을 입력합니다.
테이블 버킷 이름은 다음과 같아야 합니다.
현재 리전의 AWS 계정 내에서 고유해야 합니다.
3~63자 이내여야 합니다.
소문자, 숫자 및 하이픈(
-
)만 포함해야 합니다.문자나 숫자로 시작하고 끝나야 합니다.
테이블 버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다. 테이블 버킷을 생성하는 AWS 계정이 해당 테이블 버킷을 소유합니다. 테이블 버킷 이름 지정에 대한 자세한 내용은 테이블 버킷 이름 지정 규칙 섹션을 참조하세요.
-
AWS 분석 서비스와의 통합 섹션에서 통합 활성화 확인란이 선택되어 있는지 확인합니다.
콘솔을 사용하여 첫 번째 테이블 버킷을 생성할 때 통합 활성화를 선택한 경우 Amazon S3는 테이블 버킷을 AWS 분석 서비스와 통합하려고 시도합니다. 이 통합을 통해 AWS 분석 서비스를 사용하여 현재 리전의 모든 테이블에 액세스할 수 있습니다. 자세한 내용은 AWS 분석 서비스에서 Amazon S3 Tables 사용 섹션을 참조하세요.
버킷 생성을 선택합니다.
2단계: 테이블 네임스페이스 및 테이블 생성
이 단계에서는 테이블 버킷에 네임스페이스를 생성한 다음 해당 네임스페이스 아래에 스키마가 있는 새 테이블을 생성합니다. 콘솔 또는 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."
라는 오류 메시지가 표시됩니다.
다음 절차에서는 Amazon S3 콘솔을 사용하여 Amazon Athena를 사용하여 네임스페이스와 테이블을 생성합니다.
테이블 네임스페이스와 테이블을 생성하려면
AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/
에서 S3 콘솔을 엽니다. -
왼쪽 탐색 창에서 테이블 버킷을 선택합니다.
-
테이블 버킷 페이지에서 테이블을 생성할 테이블 버킷을 선택합니다.
-
테이블 버킷 세부 정보 페이지에서 Athena로 테이블 생성을 선택합니다.
-
Athena로 테이블 생성 대화 상자에서 네임스페이스 생성을 선택한 다음 네임스페이스 이름 필드에 이름을 입력합니다. 네임스페이스 이름은 1~255자여야 하며 테이블 버킷 내에서 고유해야 합니다. 유효한 문자는 a-z, 0-9 및 밑줄(
_
)입니다. 네임스페이스 이름 시작에는 밑줄이 허용되지 않습니다. -
Create namespace(네임스페이스 생성)를 선택합니다.
-
Athena로 테이블 생성을 선택합니다.
-
Amazon Athena 콘솔이 열리고 Athena 쿼리 편집기가 나타납니다. 쿼리 편집기는 테이블을 생성하는 데 사용할 수 있는 샘플 쿼리로 채워집니다. 쿼리를 수정하여 테이블에 포함할 테이블 이름과 열을 지정합니다.
-
쿼리 수정을 마치면 실행을 선택하여 테이블을 생성합니다.
테이블 생성에 성공하면 Athena의 테이블 목록에 새 테이블 이름이 나타납니다. Amazon S3 콘솔로 돌아가면 목록을 새로 고친 후 테이블 버킷의 세부 정보 페이지에 있는 테이블 목록에 새 테이블이 나타납니다.
다음 AWS CLI 예제 명령을 사용하여 테이블 버킷에 네임스페이스를 생성한 다음 해당 네임스페이스 아래에 스키마가 있는 새 테이블을 생성하려면
값을 사용자 고유의 값으로 바꿉니다.user input
placeholder
사전 조건
-
IAM ID에
AmazonS3TablesFullAccess
정책을 연결합니다. -
AWS CLI 버전 2.23.10 이상을 설치합니다. 자세한 내용은 AWS Command Line Interface 사용 설명서의 AWS CLI 최신 버전의 설치 또는 업데이트를 참조하세요.
다음 명령을 실행하여 테이블 버킷에 새 네임스페이스를 생성합니다.
aws s3tables create-namespace \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
\ --namespacemy_namespace
다음 명령을 실행하여 네임스페이스가 성공적으로 생성되었는지 확인합니다.
aws s3tables list-namespaces \ --table-bucket-arn arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
다음 명령을 실행하여 테이블 스키마를 사용하여 새 테이블을 생성합니다.
aws s3tables create-table --cli-input-json file://
mytabledefinition.json
mytabledefinition.json
파일의 경우 다음 예제 테이블 정의를 사용합니다.{ "tableBucketARN": "arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
", "namespace": "my_namespace
", "name": "my_table
", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [{"name": "id", "type": "int","required": true}, {"name": "name", "type": "string"}, {"name": "value", "type": "int"}
] } } } }
(옵션) 3단계: 테이블에 대한 Lake Formation 권한 부여
이 단계에서는 다른 IAM 위탁자에게 새 테이블에 대한 Lake Formation 권한을 부여합니다. 이러한 권한을 통해 다른 위탁자는 Athena 및 기타 AWS 분석 서비스를 사용하여 테이블 버킷 리소스에 액세스할 수 있습니다. 자세한 내용은 테이블 또는 데이터베이스에 대한 권한 부여 섹션을 참조하세요. 테이블에 액세스할 유일한 사용자인 경우 이 단계를 건너뛸 수 있습니다.
-
https://console.aws.amazon.com/lakeformation/
에서 AWS Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 데이터 레이크 관리자 생성을 참조하세요. 탐색 창에서 데이터 권한을 선택한 다음 권한 부여를 선택합니다.
권한 부여 페이지의 위탁자에서 IAM 사용자 및 역할을 선택하고 테이블에 대한 쿼리를 실행할 IAM 사용자 또는 역할을 선택합니다.
LF 태그 또는 카탈로그 리소스에서 명명된 데이터 카탈로그 리소스를 선택합니다.
-
계정의 모든 테이블에 대한 액세스 권한을 부여할지 또는 생성한 테이블 버킷 내의 리소스에만 액세스 권한을 부여할지에 따라 다음 중 하나를 수행합니다.
-
카탈로그에서 테이블 버킷을 통합할 때 생성한 계정 수준 카탈로그를 선택합니다. 예를 들어
입니다.111122223333
:s3tablescatalog -
카탈로그에서 테이블 버킷의 하위 카탈로그를 선택합니다. 예를 들어
입니다.111122223333
:s3tablescatalog/amzn-s3-demo-table-bucket
-
-
(옵션) 테이블 버킷에 대한 하위 카탈로그를 선택한 경우 다음 중 하나 또는 둘 다를 수행합니다.
데이터베이스에서 생성한 테이블 버킷 네임스페이스를 선택합니다.
테이블에서 테이블 버킷에 생성한 테이블을 선택하거나 모든 테이블을 선택합니다.
-
카탈로그 또는 하위 카탈로그를 선택했는지 여부와 데이터베이스 또는 테이블을 선택했는지 여부에 따라 카탈로그, 데이터베이스 또는 테이블 수준에서 권한을 설정할 수 있습니다. Lake Formation 권한에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 Managing Lake Formation permissions를 참조하세요.
다음 중 하나를 수행합니다.
-
카탈로그 권한에서 슈퍼를 선택하여 다른 위탁자에게 카탈로그에 대한 모든 권한을 부여하거나 설명과 같은 세분화된 권한을 선택합니다.
-
데이터베이스 권한의 경우 슈퍼를 선택하여 다른 위탁자에게 데이터베이스에 대한 모든 권한을 부여할 수 없습니다. 대신 설명과 같이 더 세분화된 권한을 선택합니다.
-
테이블 권한에서 슈퍼를 선택하여 다른 위탁자에게 테이블에 대한 모든 권한을 부여하거나 선택 또는 설명과 같은 더 세분화된 권한을 선택합니다.
참고
데이터 카탈로그 리소스에 대한 Lake Formation 권한을 외부 계정에 부여하거나 다른 계정의 IAM 보안 주체에 직접 부여하면 Lake Formation은 AWS Resource Access Manager(AWS RAM) 서비스를 사용하여 리소스를 공유합니다. 피부여자 계정이 부여자 계정과 동일한 조직에 속해 있는 경우, 피부여자는 공유 리소스를 즉시 사용할 수 있습니다. 피부여자 계정이 같은 조직에 속해 있지 않은 경우, AWS RAM은 피부여자 계정에 리소스 부여를 수락하거나 거부하라는 초대를 보냅니다. 그런 다음 공유 리소스를 사용할 수 있게 하려면 피부여자 계정의 데이터 레이크 관리자가 AWS RAM 콘솔 또는 AWS CLI를 사용하여 초대를 수락해야 합니다. 계정 간 데이터 공유에 대한 자세한 내용은 AWS Lake Formation개발자 안내서의 Lake Formation에서의 계정 간 데이터 공유를 참조하세요.
-
-
권한 부여를 선택합니다.
4단계: Athena에서 SQL을 사용하여 데이터 쿼리
Athena에서 SQL을 사용하여 테이블을 쿼리할 수 있습니다. Athena는 S3 Tables에 대해 데이터 정의 언어(DDL), 데이터 조작 언어(DML) 및 데이터 쿼리 언어(DQL) 쿼리를 지원합니다.
Amazon S3 콘솔 또는 Amazon Athena 콘솔을 통해 Amazon Athena 쿼리에 액세스할 수 있습니다.
다음 절차에서는 Amazon S3 콘솔을 사용하여 Athena 쿼리 편집기에 액세스하여 Amazon Athena로 테이블을 쿼리할 수 있습니다.
테이블을 쿼리하려면
AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/
에서 S3 콘솔을 엽니다. -
왼쪽 탐색 창에서 테이블 버킷을 선택합니다.
-
테이블 버킷 페이지에서 쿼리할 테이블이 포함된 테이블 버킷을 선택합니다.
-
테이블 버킷 세부 정보 페이지에서 쿼리하려는 테이블 이름 옆에 있는 옵션 버튼을 선택합니다.
-
Athena를 사용하여 테이블 쿼리를 선택합니다.
-
Amazon Athena 콘솔이 열리고 Athena 쿼리 편집기가 샘플
SELECT
쿼리가 로드된 상태로 나타납니다. 사용 사례에 맞게 이 쿼리를 수정합니다. -
그런 다음 실행(Run)을 선택하여 쿼리를 실행합니다.
테이블을 쿼리하려면
https://console.aws.amazon.com/athena/
에서 Athena 콘솔을 엽니다. -
테이블을 쿼리합니다. 다음은 수정할 수 있는 샘플 쿼리입니다.
를 사용자의 정보로 대체합니다.user input placeholders
SELECT * FROM "s3tablescatalog/
amzn-s3-demo-table-bucket
"."my_namespace
"."my_table
" LIMIT 10 -
그런 다음 실행(Run)을 선택하여 쿼리를 실행합니다.