2022.06.17.
AWS에서 분석 플랫폼 구축 실습 Part 1
(S3 생성, Kinesis Firehose 생성, Dummy Data 생성)
Part 1 실습 목표
- 실습 목표
- Kinesis data 생성기 utility를 사용하여 거의 실시간으로 dummy data를 생성
- 생성한 data를 Kinesis Firehose delivery stream을 사용하여 Amazon S3로 전송
- 일부 참조 data를 Amazon S3 bucket에 직접 복사
Create S3 Bucket
- Create S3 Bucket
- 검색창에 'S3' 검색 후 선택 => '버킷 만들기' 선택
- '일반 구성'에서 '버킷 이름'에 'minjoooo-analytics-workshop-bucket' 입력, 'AWS 리전'에 'us-east-1' 선택
- '태그'에서 '키'에 'workshop' 입력, '값'에 'AnalyticsOnAWS' 입력
- 참조 Data 추가
- 'S3' Console에서 방금 만든 bucket에 들어가기
- '폴더 만들기' 선택
- '폴더'에서 '폴더 이름'에 'data' 입력 => '폴더 만들기 '선택
- 'data' 폴더 안에 'reference_data' 폴더를 하나 더 생성
- 다음 'tracks_list.json' file을 local에 다운로드 (file url: https://static.us-east-1.prod.workshops.aws/public/b4ab4ec2-9ab1-4c41-bf19-964db5dcc495/static/data/tracks_list.json)
- 'reference_data' 폴더 안에 '업로드' 선택 => 'tracks_list.json' file을 upload
Create Kinesis Firehose
- 목표
- Kinesis Firehose delivery stream을 생성 => S3에 data를 수집하고 저장
- Create Kinesis Firehose
- 검색창에 'Kinesis' 검색 후 선택 => 오른쪽 '시작하기'에서 'Kinesis Data Firehose' 선택 후 '전송 스트림 생성' 선택
- 'Choose source and destination'에서 'Source'에 'Direct PUT' 선택, 'Destination'에 'Amazon S3' 선택 => 'Delivery stream name'에 'analytics-workshop-stream' 입력
- 'Destination settings'에서 'S3 bucket'에 'Browse' 선택 후 'minjoooo-analytics-workshop-bucket' 선택 => 'S3 bucket prefix'에 'data/raw/' 입력 (raw 뒤에 꼭 '/'를 넣어줘야 함)
- 'Buffer hints, compression and encryption'에서 'Buffer size'에 '1' 입력, 'Buffer interval'에 '60' 입력
- 'Advanced settings'에서 'Tags'에 'Key'에 'workshop' 입력, 'Value'에 'AnalyticsOnAWS' 입력
- 'Create delivery stream' 선택
Create Dummy Data
- 목표
- fake data 생성 => Kinesis Firehose로 수집하도록 Kinesis Data Generator를 구성
- Kinesis Data Generator용 Amazon Cognito 구성
- 목표: Cognito를 구성할 Cloudformation 스택을 실행함. CloudFormation 스크립트는 N.Virginia region에서 실행됨.
- url을 통해 console로 이동 (url: https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=Kinesis-Data-Generator-Cognito-User&templateURL=https://aws-kdg-tools-us-east-1.s3.amazonaws.com/cognito-setup.json)
- '다음' 선택
- '파라미터'에서 'Username'에 'admin' 입력, 'Password'에 비밀번호 입력 (비밀번호는 특수문자 없이 영문+숫자로 구성하여 6자 이상이어야 함. 특수문자 넣으니 마지막 '스택 생성' 눌렀을 때 오류가 났음) => '다음' 선택
- '스택 옵션 구성'에서 '태그'에 'workshop'과 'AnalyticsOnAWS' 입력
- '기능'에서 'The following resource(s) require capabilities: [AWS::IAM::Role]'에 체크 => '스택 생성' 선택
- 'CloudFormation' console 들어가기 => '스택' 선택 후 방금 만든 스택 선택 => 스택 상태가 'CREATE_COMPLETE'가 되면 '출력' 선택 => 'KinesisDataGeneratorUrl'의 url로 들어가면 Kinesis Data Generator 툴이 열림.
- 방금 만든 'Username'과 'Password' 입력 ('Username'은 'admin')
- 'Region'에 'us-east-1' 선택,'Stream/delivery stream'에 S'analytics-workshop-stream' 선택, 'Records per second'에 '2000' 입력 => 'Record template (Template 1)' 다음의 json template를 입력 => 'Send data' 선택
{
"uuid": "{{random.uuid}}",
"device_ts": "{{date.utc("YYYY-MM-DD HH:mm:ss.SSS")}}",
"device_id": {{random.number(50)}},
"device_temp": {{random.weightedArrayElement(
{"weights":[0.30, 0.30, 0.20, 0.20],"data":[32, 34, 28, 40]}
)}},
"track_id": {{random.number(30)}},
"activity_type": {{random.weightedArrayElement(
{
"weights": [0.1, 0.2, 0.2, 0.3, 0.2],
"data": ["\"Running\"", "\"Working\"", "\"Walking\"", "\"Traveling\"", "\"Sitting\""]
}
)}}
}
- 10000개 정도의 data가 생성되면 'Stop Sending Data to Kinesis' 선택
Data가 S3에 저장되었는지 확인
- S3 확인
- 'S3' console로 이동 => 'minjoooo-analytics-workshop-bucket' 선택 => 'data/raw/' 폴더에서 오늘 날짜로 dummy data가 생성된 것을 확인
참고: AWS Analytics on AWS (https://catalog.us-east-1.prod.workshops.aws/workshops/44c91c21-a6a4-4b56-bd95-56bd443aa449/ko-KR)
이 워크샵을 추천해주시고 항상 많은 도움을 주시는 정도현 선배님께 감사합니다.