

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Quickstart: Query data in Amazon S3
<a name="studio-sqlexplorer-athena-s3-quickstart"></a>

사용자는 SQL 확장을 사용하여 JupyterLab 노트북에서 SQL 쿼리를 실행하여 Amazon S3에 저장된 데이터를 분석할 수 있습니다. 확장은 Athena와 통합되어 몇 가지 추가 단계를 통해 Amazon S3의 데이터에 대한 기능을 활성화합니다.

이 섹션에서는 Amazon S3에서 Athena로 데이터를 로드한 다음 SQL 확장을 사용하여 JupyterLab에서 해당 데이터를 쿼리하는 단계를 안내합니다. Athena 데이터 소스와 AWS Glue 크롤러를 생성하여 Amazon S3 데이터를 인덱싱하고, JupyterLab이 Athena에 액세스할 수 있도록 적절한 IAM 권한을 구성하고, JupyterLab을 Athena에 연결하여 데이터를 쿼리합니다. 이러한 몇 가지 단계에 따라 JupyterLab 노트북의 SQL 확장을 사용하여 Amazon S3 데이터를 분석할 수 있습니다.

**사전 조건**  
관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자 계정을 사용하여 AWS Management Console에 로그인합니다. AWS 계정에 가입하고 관리 액세스 권한이 있는 사용자를 만드는 방법에 대한 자세한 내용은 [Amazon SageMaker AI 사전 조건 충족](gs-set-up.md) 섹션을 참조하세요.
SageMaker Studio에 액세스할 수 있는 SageMaker AI 도메인 및 사용자 프로필이 있어야 합니다. SageMaker AI 환경을 설정하는 방법에 대한 자세한 내용은 [Amazon SageMaker AI에 빠른 설정 사용](onboard-quick-start.md) 섹션을 참조하세요.
SageMaker AI 환경과 동일한 AWS 리전 및 계정을 사용하여 Athena 쿼리 결과를 저장할 Amazon S3 버킷 및 폴더가 있어야 합니다. Amazon S3에 버킷을 만드는 방법에 대한 자세한 내용은 Amazon S3 사용 설명서에서 [버킷 만들기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)를 참조하세요. 이 버킷과 폴더를 쿼리 출력 위치로 구성합니다.

**Topics**
+ [1단계: Amazon S3 데이터에 대한 Athena 데이터 소스 및 AWS Glue 크롤러 설정](#studio-sqlexplorer-athena-s3-quickstart-setup)
+ [2단계: Studio에 Athena에 액세스할 수 있는 권한 부여](#studio-sqlexplorer-athena-s3-quickstart-permissions)
+ [3단계: JupyterLab에서 Athena 기본 연결 활성화](#studio-sqlexplorer-athena-s3-quickstart-connect)
+ [4단계: SQL 확장을 사용하여 JupyterLab 노트북에서 Amazon S3의 데이터 쿼리](#studio-sqlexplorer-athena-s3-quickstart-query)

## 1단계: Amazon S3 데이터에 대한 Athena 데이터 소스 및 AWS Glue 크롤러 설정
<a name="studio-sqlexplorer-athena-s3-quickstart-setup"></a>

다음 단계에 따라 Amazon S3에서 데이터를 인덱싱하고 Athena에서 테이블을 만드세요.

**참고**  
서로 다른 Amazon S3 위치의 테이블 이름 간에 충돌을 방지하려면 각 위치에 대해 별도의 데이터 소스와 크롤러를 만듭니다. 각 데이터 소스는 접두사가 붙지 않는 한 데이터 소스를 포함하는 폴더의 이름을 따 테이블을 만듭니다.

1. 쿼리 결과 위치 구성

   1. Athena 콘솔([https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home))로 이동합니다.

   1. 왼쪽 메뉴에서 **작업 그룹**을 선택합니다.

   1. `primary` 작업 그룹의 링크를 따라가서 **편집**을 선택합니다.

   1. **쿼리 결과 구성** 섹션에서 출력 디렉터리의 Amazon S3 경로를 입력한 다음 **변경 사항 저장**을 선택합니다.

1. Amazon S3 데이터에 대한 Athena 데이터 소스 만들기

   1. Athena 콘솔의 왼쪽 메뉴에서 **데이터 소스**를 선택한 다음 **데이터 소스 만들기**를 선택합니다.

   1. **S3 - AWS Glue Data Catalog**를 선택한 **후 다음을** 선택합니다.

   1. 기본값인 **이 계정의AWS Glue Data Catalog**를 그대로 두고 ** AWS Glue에서 크롤러 만들기**를 선택한 다음 ** AWS Glue에서 만들기**를 선택합니다. 그러면 AWS Glue 콘솔이 열립니다.

1.  AWS Glue 를 사용하여 데이터 소스 크롤링

   1. 새 크롤러의 이름과 설명을 입력하고 **다음**을 선택합니다.

   1. **데이터 소스**에서 **데이터 소스 추가**를 선택합니다.

      1. 데이터가 포함된 Amazon S3 버킷이 SageMaker AI 환경과 다른 AWS 계정에 있는 경우 ** S3 데이터의 위치에** 대해 **다른 계정에서**를 선택합니다.

      1. Amazon S3에서 데이터세트의 경로를 입력합니다. 예제:

         ```
         s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/
         ```

      1. 다른 기본값은 모두 그대로 두고 **Amazon S3 데이터 소스 추가**를 선택합니다. 데이터 소스 테이블에 새 Amazon S3 데이터 소스가 표시됩니다.

      1. **다음**을 선택합니다.

       

   1. 크롤러가 데이터에 액세스할 수 있도록 IAM 역할을 구성합니다.
**참고**  
각 역할은 지정한 데이터 소스까지 범위가 지정됩니다. 역할을 재사용할 때 JSON 정책을 편집하여 액세스 권한을 부여할 새 리소스를 추가하거나 이 데이터 소스에 대한 새 역할을 만듭니다.

      1. **새 IAM 역할 만들기**를 선택합니다.

      1. 역할의 이름을 입력하고 **다음**을 선택합니다.

1. 테이블에 대한 데이터베이스 만들기 또는 선택

   1. Athena에 기존 데이터베이스가 없는 경우 **데이터베이스 추가**를 선택한 다음 **새 데이터베이스 만들기**를 선택합니다.

   1. 이전 크롤러 만들기 탭으로 돌아가 **출력 구성**에서 **새로 고침** 버튼을 선택합니다. 이제 새로 만든 데이터베이스가 목록에 표시됩니다.

   1. 데이터베이스를 선택하고 **테이블 이름 접두사**에 선택적으로 접두사를 추가한 후, **다음**을 선택합니다.
**참고**  
데이터가 `s3://dsoaws/nyc-taxi-orig-cleaned-split-parquet-per-year-multiple-files/ride-info/year=2019/`에 있는 이전 예시의 경우 `taxi-ride-` 접두사를 추가하면 `taxi-ride-year_2019`라는 테이블이 만들어집니다. 접두사를 추가하면 여러 데이터 위치에 동일한 이름의 폴더가 있을 때 테이블 이름 충돌을 방지하는 데 도움이 됩니다.

1. **크롤러 만들기**를 선택합니다.

1. 크롤러를 실행하여 데이터를 인덱싱합니다. 크롤러 실행이 `Completed` 상태에 도달할 때까지 기다리세요. 몇 분 정도 걸릴 수 있습니다.

새 테이블이 생성되었는지 확인하려면의 왼쪽 메뉴로 이동하여 **데이터베이스를** 선택한 다음 **테이블을** AWS Glue 선택합니다. 이제 데이터가 포함된 새 테이블이 표시됩니다.

## 2단계: Studio에 Athena에 액세스할 수 있는 권한 부여
<a name="studio-sqlexplorer-athena-s3-quickstart-permissions"></a>

다음 단계에서는 사용자 프로필의 실행 역할에 Athena에 액세스할 수 있는 권한을 부여합니다.

1. 사용자 프로필과 연결된 실행 역할의 ARN을 검색합니다.

   1. SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))로 이동한 후 왼쪽 메뉴에서 **도메인**을 선택합니다.

   1. 도메인 이름을 따라갑니다.

   1. **사용자 프로필** 목록에서 사용자 프로필의 이름을 따라갑니다.

   1. **사용자 세부 정보** 페이지에서 실행 역할의 ARN을 복사합니다.

1. 실행 역할의 정책 업데이트

   1. SageMaker AI 콘솔의 오른쪽 상단에서 AWS 리전 및 계정 ID를 찾습니다. 이러한 값과 데이터베이스 이름을 사용하여 텍스트 편집기의 다음 JSON 정책에서 자리 표시자를 업데이트합니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "GetS3AndDataSourcesMetadata",
                  "Effect": "Allow",
                  "Action": [
                      "glue:GetDatabases",
                      "glue:GetSchema",
                      "glue:GetTables",
                      "s3:ListBucket",
                      "s3:GetObject",
                      "s3:GetBucketLocation",
                      "glue:GetDatabase",
                      "glue:GetTable",
                      "glue:ListSchemas",
                      "glue:GetPartitions"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*",
                      "arn:aws:glue:us-east-1:111122223333:catalog",
                      "arn:aws:glue:us-east-1:111122223333:database/db-name"
                  ]
              },
              {
                  "Sid": "ExecuteAthenaQueries",
                  "Effect": "Allow",
                  "Action": [
                      "athena:ListDataCatalogs",
                      "athena:ListDatabases",
                      "athena:ListTableMetadata",
                      "athena:StartQueryExecution",
                      "athena:GetQueryExecution",
                      "athena:RunQuery",
                      "athena:StartSession",
                      "athena:GetQueryResults",
                      "athena:ListWorkGroups",
                      "s3:ListMultipartUploadParts",
                      "s3:ListBucket",
                      "s3:GetBucketLocation",
                      "athena:GetDataCatalog",
                      "s3:AbortMultipartUpload",
                      "s3:GetObject",
                      "s3:PutObject",
                      "athena:GetWorkGroup"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*"
                  ]
              },
              {
                  "Sid": "GetGlueConnectionsAndSecrets",
                  "Effect": "Allow",
                  "Action": [
                      "glue:GetConnections",
                      "glue:GetConnection"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```

------

   1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))로 이동하여 왼쪽 메뉴에서 **역할**을 선택합니다.

   1. 역할 이름으로 역할을 검색합니다.
**참고**  
`'/'`에서 ARN을 분할하고 마지막 요소를 사용해 Amazon 리소스 이름(ARN)에서 실행 역할 이름을 찾을 수 있습니다. 예를 들어 예시 ARN인 `arn:aws:iam::112233445566:role/SageMakerStudio-SQLExtension-ExecutionRole`에서 실행 역할의 이름은 `SageMakerStudio-SQLExtension-ExecutionRole`입니다.

   1. 역할의 링크를 따라갑니다.

   1. **권한** 탭에서 **권한 추가**를 선택하고 **인라인 정책 만들기**를 선택합니다.

   1. **정책 편집기** 섹션에서 `JSON` 형식을 선택합니다.

   1. 위의 정책을 복사한 다음 **다음**을 선택합니다. 모든 `account-id`, `region-name` 및 `db-name`을 해당 값으로 바꾸었는지 확인합니다.

   1. 정책 이름을 입력하고 **정책 만들기**를 선택합니다.

## 3단계: JupyterLab에서 Athena 기본 연결 활성화
<a name="studio-sqlexplorer-athena-s3-quickstart-connect"></a>

다음 단계에서는 JupyterLab 애플리케이션에서 `default-athena-connection`을 활성화합니다. 기본 Athena 연결을 사용하면 연결을 수동으로 만들 필요 없이 JupyterLab에서 직접 Athena의 SQL 쿼리를 실행할 수 있습니다.

기본 Athena 연결을 활성화하는 방법

1. SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))로 이동한 후 왼쪽 메뉴에서 **Studio**를 선택합니다. 도메인 및 사용자 프로필을 사용하여 Studio를 시작합니다.

1. JupyterLab 애플리케이션을 선택합니다.

1. JupyterLab 애플리케이션을 위한 공간을 만들지 않은 경우 **JupyterLab 공간 만들기**를 선택합니다. 공간의 이름을 입력하고 공백을 **프라이빗**으로 유지한 다음 **공간 만들기**를 선택합니다. 최신 버전의 SageMaker AI 배포 이미지를 사용하여 스페이스를 실행합니다.

   아니면 공간에서 **공간 실행**을 선택하여 JupyterLab 애플리케이션을 시작합니다.

1. Athena 기본 연결 활성화:

   1. JupyterLab 애플리케이션에서 상단 탐색 모음의 **설정** 메뉴로 이동하여 **설정 편집기** 메뉴를 엽니다.

   1. **데이터 검색**을 선택합니다.

   1. **기본 Athena 연결 활성화** 확인란을 선택합니다.

   1. JupyterLab 애플리케이션에서 왼쪽 탐색 창의 SQL 확장 아이콘(![\[Purple circular icon with a clock symbol representing time or scheduling.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-icon.png))을 선택하여 SQL 확장을 엽니다.

   1.  데이터 검색 패널 하단의 **새로 고침** 버튼을 선택합니다. 연결 목록에 `default-athena-connection`이 표시됩니다.

## 4단계: SQL 확장을 사용하여 JupyterLab 노트북에서 Amazon S3의 데이터 쿼리
<a name="studio-sqlexplorer-athena-s3-quickstart-query"></a>

JupyterLab 노트북에서 SQL을 사용하여 데이터를 쿼리할 준비가 되었습니다.

1. `default-athena-connection` 연결을 연 다음 **AWS DataCatalog**를 엽니다.

1. 데이터베이스로 이동하여 오른쪽에 있는 점 3개 아이콘(![\[SQL extension three dots icon.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/sqlexplorer/sqlexplorer-3dots-icon.png))을 선택합니다. **노트북에서 쿼리**를 선택합니다.

   이렇게 하면 JupyterLab의 노트북 셀에 데이터 소스에 연결하기 위한 관련 `%%sm_sql` 매직 명령이 자동으로 채워집니다. 또한 즉시 쿼리를 시작하는 데 도움이 되는 샘플 SQL 문이 추가됩니다.
**참고**  
SQL 쿼리를 실행하기 전에 최상위 셀에 확장을 로드해야 합니다.

   확장의 자동 완성 및 강조 표시 기능을 사용하여 SQL 쿼리를 추가로 세분화할 수 있습니다. SQL 확장 SQL 편집기 사용에 대한 자세한 내용은 [JupyterLab SQL 확장의 SQL 편집기 기능](sagemaker-sql-extension-features-editor.md) 섹션을 참조하세요.