

# AWS 분석 서비스와 Amazon S3 Tables 통합 개요
<a name="s3-tables-integration-overview"></a>

AWS 분석 서비스에서 계정의 테이블에 액세스할 수 있도록 하려면 Amazon S3 Tables 버킷을 Amazon SageMaker Lakehouse와 통합하세요. 이 통합을 통해 AWS 분석 서비스는 테이블 데이터를 자동으로 검색하고 액세스할 수 있습니다. 이 통합을 사용하여 아래 서비스에서 테이블을 사용할 수 있습니다.
+ [Amazon Athena](s3-tables-integrating-athena.md) 
+  [Amazon Redshift](s3-tables-integrating-redshift.md)
+  [Amazon EMR](s3-tables-integrating-emr.md)
+  [Quick](s3-tables-integrating-quicksight.md)
+  [Amazon Data Firehose](s3-tables-integrating-firehose.md)

**참고**  
이 통합은 AWS Glue 및 AWS Lake Formation 서비스를 사용하며 AWS Glue 요청 및 스토리지 비용이 발생할 수 있습니다. 자세한 내용은 [AWS Glue 요금](https://aws.amazon.com/glue/pricing/)을 참조하세요.  
S3 테이블에서 쿼리를 실행하는 경우 추가 요금이 적용됩니다. 자세한 내용은 사용 중인 쿼리 엔진의 요금 정보를 참조하세요.

## 통합의 작동 방식
<a name="how-table-integration-works"></a>

콘솔에서 테이블 버킷을 생성하면 Amazon S3는 다음 작업을 시작하여 선택한 리전의 테이블 버킷을 AWS 분석 서비스와 통합합니다.

1. Lake Formation에 모든 테이블 버킷에 대한 액세스 권한을 부여하는 새 AWS Identity and Access Management(IAM) [서비스 역할](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-service.html)을 생성합니다.

1. Lake Formation은 이 서비스 역할을 사용하여 현재 리전에 테이블 버킷을 등록합니다. 이를 통해 Lake Formation은 해당 리전의 모든 현재 및 미래 테이블 버킷에 대한 액세스, 권한 및 거버넌스를 관리할 수 있습니다.

1. 현재 리전의 AWS Glue Data Catalog에 `s3tablescatalog` 카탈로그를 추가합니다. `s3tablescatalog` 카탈로그를 추가하면 모든 테이블 버킷, 네임스페이스 및 테이블이 Data Catalog에 채워집니다.

**참고**  
이러한 작업은 Amazon S3 콘솔을 통해 자동화됩니다. 프로그래밍 방식으로 이 통합을 수행하는 경우 이러한 모든 작업을 수동으로 수행해야 합니다.

테이블 버킷을 AWS 리전당 한 번 통합합니다. 통합이 완료되면 모든 현재 및 미래의 테이블 버킷, 네임스페이스 및 테이블이 해당 리전의 AWS Glue Data Catalog에 추가됩니다.

다음 그림은 `s3tablescatalog` 카탈로그가 현재 리전의 테이블 버킷, 네임스페이스 및 테이블을 Data Catalog에서 대응하는 객체로 자동으로 채우는 방법을 보여줍니다. 테이블 버킷은 하위 카탈로그로 채워집니다. 테이블 버킷 내의 네임스페이스는 해당 하위 카탈로그 내의 데이터베이스로 채워집니다. 테이블은 해당하는 데이터베이스의 테이블로 채워집니다.

![\[테이블 리소스가 AWS Glue Data Catalog에 표시되는 방법입니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/S3Tables-glue-catalog.png)


**권한이 작동하는 방법**  
AWS Glue Data Catalog를 메타데이터 스토어로 사용하는 서비스 전체에서 테이블 데이터를 사용할 수 있도록 테이블 버킷을 AWS 분석 서비스와 통합하는 것이 좋습니다. 통합을 사용하면 AWS Lake Formation을 통해 세분화된 액세스 제어를 사용할 수 있습니다. 이 보안 접근 방식은 AWS Identity and Access Management(IAM) 권한 외에도 IAM 위탁자에게 테이블에 대한 Lake Formation 권한을 부여해야 작업할 수 있습니다.

AWS Lake Formation에는 다음과 같은 두 가지 주요 권한 유형이 있습니다.
+ 메타데이터 액세스 권한은 Data Catalog에서 메타데이터 데이터베이스 및 테이블을 생성하고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 제어합니다.
+ 기본 데이터 액세스 권한은 Data Catalog 리소스가 가리키는 기본 Amazon S3 위치에 데이터를 읽고 쓰는 기능을 제어합니다.

Lake Formation은 자체 권한 모델과 IAM 권한 모델의 조합을 사용하여 Data Catalog 리소스 및 기본 데이터에 대한 액세스를 제어합니다.
+ Data Catalog 리소스 또는 기본 데이터에 대한 액세스 요청이 성공하려면 요청이 IAM과 Lake Formation의 권한 검사를 모두 통과해야 합니다.
+ IAM 권한은 Lake Formation 및 AWS Glue API 및 리소스에 대한 액세스를 제어하는 반면, Lake Formation 권한은 Data Catalog 리소스, Amazon S3 위치 및 기본 데이터에 대한 액세스를 제어합니다.

Lake Formation 권한은 권한이 부여된 리전에서만 적용되며, 위탁자는 Lake Formation 권한을 부여받으려면 필요한 권한이 있는 데이터 레이크 관리자 또는 다른 위탁자의 승인을 받아야 합니다.

자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [Lake Formation 권한 개요](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-overview.html)를 참조하십시오.

[AWS 분석 서비스와 S3 Tables 통합](s3-tables-integrating-aws.md)의 단계를 수행하여 AWS Glue Data Catalog 및 테이블 리소스에 액세스하고 AWS 분석 서비스를 사용할 수 있는 적절한 권한이 있는지 확인합니다.

## 다음 단계
<a name="next-steps-integration-overview"></a>
+ [AWS 분석 서비스와 S3 Tables 통합](s3-tables-integrating-aws.md)
+ [ 네임스페이스 생성](s3-tables-namespace-create.md)
+ [테이블 생성](s3-tables-create.md)

# AWS 분석 서비스와 Amazon S3 Tables 통합
<a name="s3-tables-integrating-aws"></a>

이 주제에서는 Amazon S3 Tables 버킷을 AWS 분석 서비스와 통합하는 데 필요한 사전 조건과 절차를 다룹니다. 통합 작동 방식에 대한 개요는 [S3 Tables 통합 개요](s3-tables-integration-overview.md) 섹션을 참조하세요.

**참고**  
이 통합은 AWS Glue 및 AWS Lake Formation 서비스를 사용하며 AWS Glue 요청 및 스토리지 비용이 발생할 수 있습니다. 자세한 내용은 [AWS Glue 요금](https://aws.amazon.com/glue/pricing/)을 참조하세요.  
S3 테이블에서 쿼리를 실행하는 경우 추가 요금이 적용됩니다. 자세한 내용은 사용 중인 쿼리 엔진의 요금 정보를 참조하세요.

## 통합 조건
<a name="table-integration-prerequisites"></a>

테이블 버킷을 AWS 분석 서비스와 통합하려면 다음 사전 조건을 충족해야 합니다.
+ [테이블 버킷을 생성합니다.](s3-tables-buckets-create.md)
+ [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLakeFormationDataAdmin.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLakeFormationDataAdmin.html) AWS 관리형 정책을 AWS Identity and Access Management(IAM) 위탁자에 연결하여 해당 사용자를 데이터 레이크 관리자로 생성합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [데이터 레이크 관리자 생성](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)을 참조하세요.
+ IAM 위탁자에 `glue:PassConnection` 작업에 대한 권한을 추가합니다.
+ IAM 위탁자에 `lakeformation:RegisterResource` 및 `lakeformation:RegisterResourceWithPrivilegedAccess` 작업에 대한 권한을 추가합니다.
+ [()의 최신 버전으로 업데이트합니다.AWS Command Line InterfaceAWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html#getting-started-install-instructions)

**중요**  
테이블을 만들 때 테이블 이름 및 테이블 정의에 모두 소문자를 사용해야 합니다. 예를 들어 열 이름이 모두 소문자인지 확인합니다. 테이블 이름 또는 테이블 정의에 대문자가 포함된 경우 테이블은 AWS Lake Formation 또는 AWS Glue Data Catalog에서 지원되지 않습니다. 이 경우 테이블 버킷이 AWS 분석 서비스와 통합되어 있더라도 Amazon Athena와 같은 AWS 분석 서비스에는 테이블이 표시되지 않습니다.  
테이블 정의에 대문자가 포함된 경우 Athena에서 `SELECT` 쿼리를 실행할 때 "GENERIC\$1INTERNAL\$1ERROR: Get table request failed: com.amazonaws.services.glue.model.ValidationException: Unsupported Federation Resource - Invalid table or column names."라는 오류 메시지가 표시됩니다.

## 테이블 버킷을 AWS 분석 서비스와 통합
<a name="table-integration-procedures"></a>

Amazon S3 Tables는 AWS Glue Data Catalog(데이터 카탈로그)와 통합되고 카탈로그를 Lake Formation 데이터 위치로 등록합니다. Lake Formation 콘솔 또는 서비스 API를 사용하여 이 등록을 설정할 수 있습니다. 위치를 등록할 때 Lake Formation에 등록된 역할이 해당 위치에 접근할 수 있도록 읽기/쓰기 권한을 부여하는 IAM 역할을 지정해야 합니다. Lake Formation은 통합 AWS 서비스에 임시 보안 인증을 제공할 때 해당 역할을 맡습니다.

보안 주체 태그를 기반으로 IAM 사용자 및 IAM 역할을 제한하는 IAM 또는 S3 Tables 리소스 기반 정책이 있는 경우, Lake Formation이 Amazon S3 데이터에 액세스하는 데 사용하는 것과 동일한 보안 주체 태그를 IAM 역할에 연결하고(예: LakeFormationDataAccessRole) 이 역할에 필요한 권한을 부여해야 합니다. 이는 태그 기반 액세스 제어 정책이 S3 Tables 분석 통합과 올바르게 작동하는 데 필요합니다.

이 통합은 AWS 리전당 한 번 구성해야 합니다.

**중요**  
이제 AWS 분석 서비스 통합은 `registerResource` Lake Formation API 작업의 `WithPrivilegedAccess` 옵션을 사용하여 S3 테이블 버킷을 등록합니다. 통합은 이제 `CreateCatalog` AWS Glue API 작업의 `AllowFullTableExternalDataAccess` 옵션을 사용하여 AWS Glue Data Catalog에 `s3tablescatalog` 카탈로그도 생성합니다.  
미리 보기 릴리스와의 통합을 설정한 경우 현재 통합을 계속 사용할 수 있습니다. 그러나 업데이트된 통합 프로세스는 성능 개선을 제공하므로 마이그레이션하는 것이 좋습니다. 업데이트된 통합으로 마이그레이션하려면 [업데이트된 통합 프로세스로 마이그레이션](#migrate-integrate-console) 섹션을 참조하세요.

### S3 콘솔 사용
<a name="integrate-console"></a>

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

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

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

   **테이블 버킷 생성** 페이지가 열립니다.

1. **테이블 버킷 이름**을 입력하고 **통합 활성화** 확인란이 선택되어 있는지 확인합니다.

1. **테이블 버킷 생성**을 선택합니다. Amazon S3는 해당 리전에서 테이블 버킷을 자동으로 통합하려고 시도합니다.

어떤 리전에서든 테이블 버킷을 처음 통합하면 Amazon S3가 사용자를 대신하여 새 IAM 서비스 역할을 생성합니다. 이 역할을 통해 Lake Formation은 계정의 모든 테이블 버킷에 액세스하고 AWS Glue Data Catalog의 테이블에 대한 액세스를 페더레이션할 수 있습니다.

### AWS CLI 사용
<a name="integrate-cli"></a>

**AWS CLI를 사용하여 테이블 버킷을 통합하는 방법**

다음 단계에서는 AWS CLI를 사용하여 테이블 버킷을 통합하는 방법을 보여줍니다. 이 단계를 사용하려면 `user input placeholders`를 실제 정보로 대체합니다.

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

   ```
   aws s3tables create-table-bucket \
   --region us-east-1 \
   --name amzn-s3-demo-table-bucket
   ```

1. Lake Formation이 테이블 리소스에 액세스할 수 있도록 허용하는 IAM 서비스 역할을 생성합니다.

   1. 다음 신뢰 정책을 포함하는 `Role-Trust-Policy.json`이라는 파일을 생성합니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "LakeFormationDataAccessPolicy",
              "Effect": "Allow",
              "Principal": {
                "Service": "lakeformation.amazonaws.com"
              },
              "Action": [
                  "sts:AssumeRole",
                  "sts:SetContext",
                  "sts:SetSourceIdentity"
              ],
              "Condition": {
                "StringEquals": {
                  "aws:SourceAccount": "111122223333"
                }
              }
            }
          ]
      }
      ```

------

      다음 명령을 사용하여 IAM 서비스 역할을 생성합니다.

      ```
      aws iam create-role \
      --role-name S3TablesRoleForLakeFormation \
      --assume-role-policy-document file://Role-Trust-Policy.json
      ```

   1. 다음 신뢰 정책을 포함하는 `LF-GluePolicy.json`이라는 파일을 생성합니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "LakeFormationPermissionsForS3ListTableBucket",
                  "Effect": "Allow",
                  "Action": [
                      "s3tables:ListTableBuckets"
                  ],
                  "Resource": [
                      "*"
                  ]
              },
              {
                  "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket",
                  "Effect": "Allow",
                  "Action": [
                      "s3tables:CreateTableBucket",
                      "s3tables:GetTableBucket",
                      "s3tables:CreateNamespace",
                      "s3tables:GetNamespace",
                      "s3tables:ListNamespaces",
                      "s3tables:DeleteNamespace",
                      "s3tables:DeleteTableBucket",
                      "s3tables:CreateTable",
                      "s3tables:DeleteTable",
                      "s3tables:GetTable",
                      "s3tables:ListTables",
                      "s3tables:RenameTable",
                      "s3tables:UpdateTableMetadataLocation",
                      "s3tables:GetTableMetadataLocation",
                      "s3tables:GetTableData",
                      "s3tables:PutTableData"
                  ],
                  "Resource": [
                      "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
                  ]
              }
          ]
      }
      ```

------

      다음 명령을 사용하여 정책을 역할에 연결합니다.

      ```
      aws iam put-role-policy \
      --role-name S3TablesRoleForLakeFormation  \
      --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \
      --policy-document file://LF-GluePolicy.json
      ```

1. 다음을 포함하는 `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
   ```

1. 다음 카탈로그를 포함하는 `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
   ```

1. 다음 명령을 사용하여 `s3tablescatalog` 카탈로그가 AWS Glue에 추가되었는지 확인합니다.

   ```
   aws glue get-catalog --catalog-id s3tablescatalog
   ```

### 업데이트된 통합 프로세스로 마이그레이션
<a name="migrate-integrate-console"></a>

AWS 분석 서비스 통합 프로세스가 업데이트되었습니다. 미리 보기 릴리스와의 통합을 설정한 경우 현재 통합을 계속 사용할 수 있습니다. 그러나 업데이트된 통합 프로세스는 성능을 개선하므로 다음 단계를 사용하여 마이그레이션하는 것이 좋습니다. 마이그레이션 또는 통합 프로세스에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [AWS Glue Data Catalog에서 Amazon S3 Tables 카탈로그 생성](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html)을 참조하세요.

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)에서 AWS Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [데이터 레이크 관리자 생성](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)을 참조하세요.

1. 다음을 수행하여 `s3tablescatalog` 카탈로그를 삭제합니다.
   + 왼쪽 탐색 창에서 **카탈로그**를 선택합니다.
   + **카탈로그** 목록의 `s3tablescatalog` 카탈로그 옆에 있는 옵션 버튼을 선택합니다. [**Actions**] 메뉴에서 [**Delete**]를 선택합니다.

1. 다음을 수행하여 `s3tablescatalog` 카탈로그의 데이터 위치를 등록 취소합니다.
   + 왼쪽 탐색 창에서 **관리** 섹션으로 이동하고 **데이터 레이크 위치**를 선택합니다.
   + `s3tablescatalog` 데이터 레이크 위치 옆의 옵션 버튼을 선택합니다. 예를 들어, `s3://tables:region:account-id:bucket/*`입니다.
   + **작업** 메뉴에서 **제거**를 선택합니다.
   + 나타나는 대화 상자에서 **제거**를 선택합니다.

1. 이제 `s3tablescatalog` 카탈로그 및 데이터 레이크 위치를 삭제했으므로 업데이트된 통합 프로세스를 사용하여 [테이블 버킷을 AWS 분석 서비스와 통합](#table-integration-procedures)하는 단계를 수행할 수 있습니다.

**참고**  
통합 AWS 분석 서비스에서 SSE-KMS로 암호화된 테이블에 대한 작업을 수행하려면 사용하는 역할이 암호화 작업에 AWS KMS 키를 사용할 수 있는 권한을 가져야 합니다. 자세한 내용은 [IAM 위탁자에게 통합 AWS 분석 서비스에서 암호화된 테이블에 대한 작업을 수행할 수 있는 권한 부여](s3-tables-kms-permissions.md#tables-kms-integration-permissions) 섹션을 참조하세요.

통합 후 테이블에 액세스하기 위한 Lake Formation 권한이 IAM 위탁자에 부여되면 다른 IAM 위탁자가 테이블에 액세스하도록 허용하려는 경우 테이블에 대한 Lake Formation 권한을 해당 위탁자에 부여해야 합니다. 자세한 내용은 [Lake Formation을 사용하여 테이블 또는 데이터베이스에 대한 액세스 관리](grant-permissions-tables.md) 섹션을 참조하세요.

**다음 단계**
+ [ 네임스페이스 생성](s3-tables-namespace-create.md).
+ [테이블 생성](s3-tables-create.md).