

# 자습서: S3 Tables 시작하기
<a name="s3-tables-getting-started"></a>

이 자습서에서는 테이블 버킷을 생성하고 리전의 테이블 버킷을 AWS 분석 서비스와 통합합니다. 다음으로 AWS CLI 또는 콘솔을 사용하여 테이블 버킷에 첫 번째 네임스페이스와 테이블을 생성합니다. 그런 다음 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로 마이그레이션하기 위한 지침](https://aws.amazon.com/solutions/guidance/migrating-tabular-data-from-amazon-s3-to-s3-tables/)을 참조하세요.

**Topics**
+ [1단계: 테이블 버킷 생성 및 AWS 분석 서비스와 통합](#s1-tables-tutorial-create-bucket)
+ [2단계: 테이블 네임스페이스 및 테이블 생성](#s2-tables-tutorial-create-namespace-and-table)
+ [3단계: Athena에서 SQL을 사용하여 데이터 쿼리](#s4-query-tables)

## 1단계: 테이블 버킷 생성 및 AWS 분석 서비스와 통합
<a name="s1-tables-tutorial-create-bucket"></a>

이 단계에서는 Amazon S3 콘솔을 사용하여 첫 번째 테이블 버킷을 생성합니다. 테이블 버킷을 생성하는 다른 방법은 [Creating a table bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-create.html)을 참조하세요.

**참고**  
기본적으로 Amazon S3 콘솔은 테이블 버킷을 AWS Glue Data Catalog와 자동으로 통합하므로 AWS 분석 서비스가 S3 Tables 데이터를 자동으로 검색하고 액세스할 수 있습니다. AWS Command Line Interface(AWS CLI), AWS SDK 또는 REST API를 사용하여 프로그래밍 방식으로 첫 번째 테이블 버킷을 생성하는 경우 AWS 분석 서비스 통합을 수동으로 완료해야 합니다. 자세한 내용은 [AWS 분석 서비스와 Amazon S3 Tables 통합](s3-tables-integrating-aws.md) 섹션을 참조하세요.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 테이블 버킷을 생성하려는 리전을 선택합니다.

1. 왼쪽 탐색 창에서 **테이블 버킷**을 선택합니다.

1. **테이블 버킷 생성**을 선택합니다.

1. **일반 구성**에서 테이블 버킷의 이름을 입력합니다.

   테이블 버킷 이름은 다음과 같아야 합니다.
   + 현재 리전의 AWS 계정 내에서 고유해야 합니다.
   + 3\~63자 이내여야 합니다.
   + 소문자, 숫자 및 하이픈(`-`)만 포함해야 합니다.
   + 문자나 숫자로 시작하고 끝나야 합니다.

   테이블 버킷을 생성한 후에는 해당 이름을 변경할 수 없습니다. 테이블 버킷을 생성하는 AWS 계정이 해당 테이블 버킷을 소유합니다. 테이블 버킷 이름 지정에 대한 자세한 내용은 [테이블 버킷 이름 지정 규칙](s3-tables-buckets-naming.md#table-buckets-naming-rules) 섹션을 참조하세요.

1. **AWS 분석 서비스와의 통합** 섹션에서 **통합 활성화** 확인란이 선택되어 있는지 확인합니다.

   콘솔을 사용하여 첫 번째 테이블 버킷을 생성할 때 **통합 활성화**를 선택한 경우 Amazon S3는 테이블 버킷을 AWS 분석 서비스와 통합하려고 시도합니다. 이 통합을 통해 AWS 분석 서비스를 사용하여 현재 리전의 모든 테이블에 액세스할 수 있습니다. 자세한 내용은 [AWS 분석 서비스와 Amazon S3 Tables 통합](s3-tables-integrating-aws.md) 섹션을 참조하세요.

1. **버킷 생성**을 선택합니다.

## 2단계: 테이블 네임스페이스 및 테이블 생성
<a name="s2-tables-tutorial-create-namespace-and-table"></a>

이 단계에서는 테이블 버킷에 네임스페이스를 생성한 다음 해당 네임스페이스 아래에 스키마가 있는 새 테이블을 생성합니다. 콘솔 또는 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."라는 오류 메시지가 표시됩니다.

### S3 콘솔 및 Amazon Athena 사용
<a name="s3-tables-tutorial-create-table-console"></a>

다음 절차에서는 Amazon S3 콘솔을 사용하여 Amazon Athena를 사용하여 네임스페이스와 테이블을 생성합니다.

**테이블 네임스페이스와 테이블을 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **테이블 버킷**을 선택합니다.

1. **테이블 버킷** 페이지에서 테이블을 생성할 테이블 버킷을 선택합니다.

1. 테이블 버킷 세부 정보 페이지에서 **Athena로 테이블 생성**을 선택합니다.

1. **Athena로 테이블 생성** 대화 상자에서 **네임스페이스 생성**을 선택한 다음 **네임스페이스 이름** 필드에 이름을 입력합니다. 네임스페이스 이름은 1\~255자여야 하며 테이블 버킷 내에서 고유해야 합니다. 유효한 문자는 a-z, 0-9 및 밑줄(`_`)입니다. 네임스페이스 이름 시작에는 밑줄이 허용되지 않습니다.

1. **Create namespace(네임스페이스 생성)**를 선택합니다.

1. **Athena로 테이블 생성**을 선택합니다.

1. Amazon Athena 콘솔이 열리고 Athena 쿼리 편집기가 나타납니다. 쿼리 편집기는 테이블을 생성하는 데 사용할 수 있는 샘플 쿼리로 채워집니다. 쿼리를 수정하여 테이블에 포함할 테이블 이름과 열을 지정합니다.

1. 쿼리 수정을 마치면 **실행**을 선택하여 테이블을 생성합니다.

테이블 생성에 성공하면 Athena의 테이블 목록에 새 테이블 이름이 나타납니다. Amazon S3 콘솔로 돌아가면 목록을 새로 고친 후 테이블 버킷의 세부 정보 페이지에 있는 **테이블** 목록에 새 테이블이 나타납니다.

### AWS CLI 사용
<a name="s3-tables-tutorial-create-table-CLI"></a>

다음 AWS CLI 예제 명령을 사용하여 테이블 버킷에 네임스페이스를 생성한 다음 해당 네임스페이스 아래에 스키마가 있는 새 테이블을 생성하려면 `{{user input placeholder}}` 값을 사용자 고유의 값으로 바꿉니다.

**사전 조건**
+ IAM ID에 [https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html](https://docs.aws.amazon.com//aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html) 정책을 연결합니다.
+ AWS CLI 버전 2.23.10 이상을 설치합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI 최신 버전의 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

1. 다음 명령을 실행하여 테이블 버킷에 새 네임스페이스를 생성합니다.

   ```
   aws s3tables create-namespace \
   --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-table-bucket}} \
   --namespace {{my_namespace}}
   ```

   1. 다음 명령을 실행하여 네임스페이스가 성공적으로 생성되었는지 확인합니다.

     ```
     aws s3tables list-namespaces \
     --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-table-bucket}}
     ```

1. 다음 명령을 실행하여 테이블 스키마를 사용하여 새 테이블을 생성합니다.

   ```
   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단계: Athena에서 SQL을 사용하여 데이터 쿼리
<a name="s4-query-tables"></a>

Athena에서 SQL을 사용하여 테이블을 쿼리할 수 있습니다. Athena는 S3 Tables에 대해 데이터 정의 언어(DDL), 데이터 조작 언어(DML) 및 데이터 쿼리 언어(DQL) 쿼리를 지원합니다.

Amazon S3 콘솔 또는 Amazon Athena 콘솔을 통해 Amazon Athena 쿼리에 액세스할 수 있습니다.

### S3 콘솔 및 Amazon Athena 사용
<a name="s4-query-tables-query-table-s3-console"></a>

다음 절차에서는 Amazon S3 콘솔을 사용하여 Athena 쿼리 편집기에 액세스하여 Amazon Athena로 테이블을 쿼리할 수 있습니다.

**테이블을 쿼리하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **테이블 버킷**을 선택합니다.

1. **테이블 버킷** 페이지에서 쿼리할 테이블이 포함된 테이블 버킷을 선택합니다.

1. 테이블 버킷 세부 정보 페이지에서 쿼리하려는 테이블 이름 옆에 있는 옵션 버튼을 선택합니다.

1. **Athena를 사용하여 테이블 쿼리**를 선택합니다.

1. Amazon Athena 콘솔이 열리고 Athena 쿼리 편집기가 샘플 `SELECT` 쿼리가 로드된 상태로 나타납니다. 사용 사례에 맞게 이 쿼리를 수정합니다.

1. 그런 다음 **실행(Run)**을 선택하여 쿼리를 실행합니다.

### Amazon Athena 콘솔 사용
<a name="s4-query-tables-query-table-athena-console"></a>

**테이블을 쿼리하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 테이블을 쿼리합니다. 다음은 수정할 수 있는 샘플 쿼리입니다. `{{user input placeholders}}`를 사용자의 정보로 대체합니다.

   ```
   SELECT * FROM "s3tablescatalog/{{amzn-s3-demo-table-bucket}}"."{{my_namespace}}"."{{my_table}}" LIMIT 10
   ```

1. 그런 다음 **실행(Run)**을 선택하여 쿼리를 실행합니다.