본문 바로가기
AWS/AWS Cloud School

[AWS] Lake Formation을 사용한 데이터 레이크 설정

by parkkingcar 2023. 12. 3.

 

Lake Formation을 사용하여 대규모 음악 데이터 집합을 위한 데이터 레이크를 설정합니다. 데이터 레이크를 생성한 후에 AWS Glue 크롤러를 설정해 AWS Glue 데이터 카탈로그에서 스키마를 확인하고 테이블을 생성합니다. 데이터를 크롤링한 후에는 테이블에 액세스 권한을 부여하고 Amazon Athena를 사용해 데이터를 쿼리합니다.

 

 

AWS Lake Formation은 안전한 데이터 레이크를 며칠 만에 설정할 수 있도록 도와주는 서비스입니다. 데이터 레이크는 큐레이팅된 안전한 중앙 집중식 리포지토리로, 오리지널 형식 및 분석에 필요한 형식으로 데이터를 저장합니다. 데이터 레이크는 데이터 사일로를 없애고 다양한 유형의 분석을 조합하여 인사이트를 얻어 이를 바탕으로 비즈니스 결정을 내리는 데 도움이 됩니다. 

 

AWS Glue는 고객이 분석에 사용할 데이터를 손쉽게 준비하고 로드하도록 도와주는 완전관리형 추출, 변환 및 로드(ETL) 서비스입니다. AWS 관리 콘솔에서 몇 단계만으로 ETL 작업을 생성하고 실행할 수 있습니다. 

 

Amazon Athena는 표준 SQL을 사용하여 Amazon S3에 있는 데이터를 분석하는 데 도움이 되는 대화형 쿼리 서비스입니다. Athena는 서버리스 서비스이므로, 관리할 인프라가 없으며 실행한 쿼리에 대해서만 비용을 지불하면 됩니다.

 

 

- 데이터 레이크 및 데이터베이스 생성 

- AWS Glue로 데이터를 크롤링하여 메타데이터 및 테이블 생성 

- Athena를 사용하여 데이터 쿼리 

- Lake Formation에서 사용자 권한 관리

 

 

 

아래 다이어그램은 이 실습을 위해 프로비저닝된 리소스 환경입니다.

 

 

현재 과정을 통해 다음 다이어그램과 같이 AWS 관리 콘솔을 사용하여 데이터 S3 경로를 등록하고, 데이터베이스를 생성하며, 사용자가 데이터 레이크에 액세스하는 데 필요한 권한을 제공합니다.

 

우선 S3 버킷을 생성하고 /review 폴더에 Music_Data.csv 파일을 업로드합니다.

 

 

콘솔 상단 검색창에서 AWS Lake Formation를 검색하고 선택합니다. 

 

 

아래 화면이 나오면 나 자신 추가를 선택하고 시작하기를 클릭합니다.

 

 

좌측 관리 역할 및 작업을 클릭하고 데이터 레이크 관리자에서 생성해놓은 IAM 그룹을 확인합니다. 데이터베이스 생성자에서 생성해놓은 IAM 역할을 확인합니다. 데이터베이스 생성 승인 권한을 가지고 있습니다.

 

 

Lake Formation은 Amazon S3 내의 지정된 스토리지 위치에 대한 액세스를 관리합니다. 데이터 레이크에 포함할 스토리지 위치를 등록합니다. 좌측에서 데이터 레이크 위치를 클릭하고 등록 위치를 클릭합니다.

 

 

생성한 S3의 경로를 입력하고 S3에 접근할 수 있는 권한을 가진 IAM 역할을 Data Lakeformation에 추가합니다.

 

 

Lake Formation은 유연한 데이터베이스, 테이블, 열 권한을 통해 IAM 사용자, 역할, Active Directory 사용자 및 그룹의 액세스를 관리합니다. 선택한 사용자에게 하나 이상의 리소스에 대한 사용 권한을 부여합니다. 좌측에서 데이터 위치를 클릭하고 승인하기를 클릭합니다.

 

 

권한을 가진 IAM역할을 선택하고 S3경로를 입력합니다.

 

좌측에 새로운 데이터 카탈로그 설정을 클릭하고 새 데이터베이스에는 IAM 액세스 제어만 사용, 새 데이터베이스의 새 테이블에는 IAM 액세스 제어만 사용을 모두 선택하고 하단의 저장을 클릭합니다.

 

 

좌측에 데이터베이스를 클릭하고 데이터베이스 생성을 클릭합니다.

 

 

이름을 입력하고 S3경로를 입력하고 데이터베이스 생성을 클릭합니다.

 

 

AWS Glue를 사용하여 리뷰 데이터 크롤링하겠습니다. AWS Glue 크롤러를 사용하여 이전에 생성한 데이터베이스의 review 테이블을 생성합니다.

 

 

먼저 콘솔 상단 검색창에서 AWS Glue를 검색하고 선택합니다. 

 

 

좌측에 데이터 카탈로그에서 테이블을 클릭하고 크롤러를 사용하여 테이블 추가를 클릭합니다.

 

 

크롤러 이름을 입력하고 다음을 클릭합니다.

 

 

데이터 소스 추가를 클릭합니다. 그리고 S3를 소스로 선택하고 데이터의 위치를 이 계정에서로 선택합니다. S3경로를 추가하고 S3 데이터 소스 추가를 클릭합니다.

 

 

Glue에 권한을 가진 IAM 역할을 선택하고 다음을 클릭합니다.

 

 

위에서 생성한 데이터베이스를 선택하고 크롤러일정을 온디맨드(주문형)으로 선택하고 다음을 클릭합니다. 마지막 화면에서 검토 후 크롤러 생성을 클릭합니다.

 

 

생성 후 크롤러 실행을 클릭합니다. 새로고침을 클릭하고 크롤러 상태가 완로 바뀔때까지 기다립니다.

 

 

 

이제 Athena 쿼리 편집기를 사용하여 테이블의 데이터를 확인합니다. 콘솔 상단 검색창에서 Athena를 검색하고 선택합니다. 

 

 

좌측에 작업 그룹을 클릭하고 primary 그룹을 선택하여 편집을 클릭합니다.

 

 

쿼리 결과 구성 섹션에 S3 경로가 있다면 모두 삭제합니다. 이후 하단의 변경 사항 저장을 클릭합니다.

 

 

좌측에 쿼리 편집기를 클릭하고 설정탭에서 관리를 클릭합니다.

 

 

쿼리 결과의 위치에 쿼리 결과를 저장 할 S3경로를 입력하고 저장을 클릭합니다.

 

 

SELECT * FROM review LIMIT 10;

다시 쿼리편집기에서 쿼리를 입력하고 실행합니다. 그러면 해당 쿼리에 대한 결과를 반환합니다.

 

 

이제 AWS Lake Formation 정책을 사용하여 사용자를 관리합니다. 우선 실습을 위해 부여한 권한을 모두 해제합니다. AWS Lake Formation을 콘솔 상단에 입력하고 선택합니다.

 

 

좌측에 새로운 데이터 카탈로그 설정에서 모두 선택을 해제하고 저장합니다.

 

 

좌측에 관리 역할 및 작업을 클릭하고 데이터베이스 생성 권한을 가진 IAM 그룹을 revoke 합니다.

 

 

좌측의 데이터 레이크 권한을 클릭하고 IAM 그룹 권한들을 선택한 후 취소를 클릭합니다.

 

 

이제 데이터베이스에 사용자 또는 역할이 review 테이블에서 select 작업을 수행하도록 허용하는 권한만 부여합니다. 권한을 가진 IAM 역할을 선택합니다. 명명된 data catalog 리소스를 선택하고 생성한 DB이름, 테이블이름을 입력합니다. 테이블권한에 SELECT 명령만 선택하고 Grant를 클릭합니다.

 

 

이제 데이터에 액세스할 수 있는 제한적 권한을 가진 사용자를 추가합니다. testuser에 권한을 추가하여 노래 및 아티스트 열로 사용자의 액세스를 제한합니다. 좌측에 데이터 레이크 권한을 클릭하고 Grant를 클릭합니다.

 

 

testuser 사용자를 선택합니다. 명명된 data catalog 리소스를 선택하고 생성한 DB이름, 테이블이름을 입력합니다. 테이블권한에 SELECT 명령만 선택하고 열 기반 엑세스에서 노래, 아티스트 열만 선택합니다. 이후 하단의 Grant를 클릭합니다.

 

 

이제 testuser 사용자로 로그인합니다. 

 

 

콘솔 상단 검색창에서 Athena를 검색하고 선택합니다. 

 

 

좌측에 쿼리 편집기를 클릭하고 설정탭에서 관리를 클릭합니다.

 

 

S3 버킷 경로를 입력하고 저장을 클릭합니다.

 

 

 

SELECT * FROM review LIMIT 10;

쿼리편집기에서 쿼리를 입력하고 실행합니다. 그러면 해당 쿼리에 대한 결과를 반환합니다.

 

 

 

댓글