-
AWS :: API Gateway를 통해 S3에 데이터 저장하기 (2/2)AWS 2021. 7. 27. 13:20728x90
** 이전 글 참고
0. Work Flow
1. 실시간 데이터 생성 및 전송
- 데이터가 실시간으로 생성되고 전송되는 가상의 상황을 python 코드를 통해 자동화하였고, 해당 코드의 관리의 편리함을 위해 AWS의 서비스 중 Cloud9을 활용하였다.
- 이번 예제에서 Cloud9의 사용은 필수 조건이 아니다. 편리한 방법을 이용하면 된다.
- 작성한 Python 코드의 일부는 다음과 같다.
2. 실시간 데이터 수집
- API Gateway와 Kinesis Firehose를 통해 받은 데이터를 S3에 저장하는 과정에서 '권한' 문제가 발생할 수 있다.
- 다음과 같은 과정을 통해 해결할 수 있다.
- '버킷 정책 설정'은 다음과 같이 수행한다.
- 먼저 '버킷 ARN'을 복사한 뒤, '정책 생성기'를 클릭한다.
- 다음과 같은 설정을 하여 정책 코드를 생성한다.
- 'Actions'에는 'GetObject'와 'PutObject'를 추가하고, 'ARN'에 복사한 ARN과 뒤에 '/*'을 붙여 넣는다.
- 다음으로, 이 후 Athena에서 조회할 때 사용될 DB와 table을 생성한다.
- 이 때, 저장될 데이터의 스키마를 설정해야 한다.
- 다음은 Athena에서 table 생성 쿼리의 예시이다.
- 'PARTITIONED BY'의 경우, Kinesis Firehose를 통해 받은 데이터를 'prefix'를 통해 계층적으로 관리할 때 사용한 키워드를 적용한다.
- 일반적으로 다음과 같이 설정하여, 'date', 'hour', 'min' 등으로 실시간 데이터를 나누어 저장되게끔 한다.
- DB와 table의 생성을 마쳤다면, Kinesis Firehose 설정 페이지로 돌아가 다음과 같이 설정한다.
3. 저장된 실시간 데이터 조회 (near-realtime)
- Glue를 통해 다음과 같이 파티션 컬럼이 추가됨을 확인할 수 있다.
- API Gateway와 Kinesis Firehose를 통해 S3에 데이터를 저장한 후, Athena에서 다음 쿼리를 수행하여 실제 데이터와 테이블 간 연결을 수행한다.
- MSCK 쿼리 수행을 마친 후 SELECT 쿼리를 통해 데이터를 조회할 수 있다.
728x90'AWS' 카테고리의 다른 글
AWS :: Multi Lambda Control (0) 2021.08.06 AWS :: Rest API를 이용하는 Data Pipeline 생성 (0) 2021.07.19 AWS :: S3 데이터를 slack에 notify하기 (AWS Lambda) (0) 2021.07.08 AWS :: API Gateway를 통해 S3에 데이터 저장하기 (1/2) (1) 2021.07.07 AWS :: EC2에 접속하여 S3 조회하기 (SSH, WSL, AWS CLI) (0) 2021.07.06