

# 자습서: AWS Glue Studio를 사용하여 첫 번째 스트리밍 워크로드 구축
<a name="streaming-tutorial-studio"></a>

이 자습서에서는 AWS Glue Studio를 사용하여 스트리밍 작업을 생성하는 방법을 알아봅니다. AWS Glue Studio는 AWS Glue 작업을 생성하는 시각적 인터페이스입니다.

지속적으로 실행되고 Amazon Kinesis Data Streams, Apache Kafka 및 Amazon Managed Streaming for Apache Kafka(Amazon MSK)에서 스트리밍 소스의 데이터를 소비하는 스트리밍 추출, 전환, 적재(ETL) 작업을 생성할 수 있습니다.

## 사전 조건
<a name="streaming-tutorial-studio-prereqs"></a>

이 자습서를 따르려면 AWS Glue, Amazon Kinesis, Amazon S3, Amazon Athena, AWS CloudFormation, AWS Lambda 및 Amazon Cognito를 사용할 수 있는 AWS 콘솔 권한이 있는 사용자가 필요합니다.

## Amazon Kinesis의 스트리밍 데이터 소비
<a name="streaming-tutorial-studio-kinesis"></a>

**Topics**
+ [Kinesis 데이터 생성기로 모의 데이터 생성](#streaming-tutorial-studio-kinesis-generate-data)
+ [AWS Glue Studio로 AWS Glue 스트리밍 작업 생성](#streaming-tutorial-studio-kinesis-create-job)
+ [변환 수행 및 Amazon S3에 변환된 결과 저장](#streaming-tutorial-studio-kinesis-transformation)

### Kinesis 데이터 생성기로 모의 데이터 생성
<a name="streaming-tutorial-studio-kinesis-generate-data"></a>

Kinesis 데이터 생성기(KDG)를 사용하여 JSON 형식의 샘플 데이터를 종합적으로 생성할 수 있습니다. [도구 설명서](https://awslabs.github.io/amazon-kinesis-data-generator/web/help.html)에서 전체 지침과 세부 정보를 찾아볼 수 있습니다.

1. 시작하려면 [https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?templateURL=https%3A%2F%2Faws-data-analytics-workshops.s3.amazonaws.com/aws_glue/aws_glue_streaming/docs/glue-stream.yaml&stackName=glue-stream](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?templateURL=https%3A%2F%2Faws-data-analytics-workshops.s3.amazonaws.com/aws_glue/aws_glue_streaming/docs/glue-stream.yaml&stackName=glue-stream)을 클릭하여 AWS 환경에서 AWS CloudFormation 템플릿을 실행합니다.
**참고**  
Kinesis 데이터 생성기용 Amazon Cognito 사용자와 같은 일부 리소스가 AWS 계정에 이미 존재하기 때문에 CloudFormation 템플릿 오류가 발생할 수 있습니다. 다른 자습서나 블로그에서 이미 설정했기 때문일 수 있습니다. 이 문제를 해결하려면 새 AWS 계정에서 템플릿을 사용해 새로 시작하거나 다른 AWS 리전을 탐색해 봅니다. 이러한 옵션을 사용하면 기존 리소스와 충돌하지 않고 자습서를 실행할 수 있습니다.

   템플릿은 Kinesis 데이터 스트림과 Kinesis Data Generator 계정을 프로비저닝합니다. 또한 데이터를 보관할 Amazon S3 버킷과 이 자습서에 필요한 권한이 있는 Glue 서비스 역할을 생성합니다.

1. KDG가 인증에 사용할 **사용자 이름**과 **암호**를 입력합니다. 나중에 사용할 수 있도록 사용자 이름과 암호를 기록해 둡니다.

1. 마지막 단계까지 **다음**을 선택합니다. IAM 리소스 생성을 확인합니다. 화면 상단에 최소 요구 사항을 충족하지 않는 암호와 같은 오류가 있는지 확인하고 템플릿을 배포합니다.

1. 스택의 **출력** 탭으로 이동합니다. 템플릿이 배포되면 생성된 속성 **KinesisDataGeneratorUrl**이 표시됩니다. 해당 URL을 클릭합니다.

1. 기록해 둔 **사용자 이름**과 **암호**를 입력합니다.

1. 사용 중인 리전을 선택하고 Kinesis 스트림 `GlueStreamTest-{AWS::AccountId}`를 선택합니다.

1. 다음 템플릿을 입력합니다.

   ```
   {
       "ventilatorid": {{random.number(100)}},
       "eventtime": "{{date.now("YYYY-MM-DD HH:mm:ss")}}",
       "serialnumber": "{{random.uuid}}",
       "pressurecontrol": {{random.number(
           {
               "min":5,
               "max":30
           }
       )}},
       "o2stats": {{random.number(
           {
               "min":92,
               "max":98
           }
       )}},
       "minutevolume": {{random.number(
           {
               "min":5,
               "max":8
           }
       )}},
       "manufacturer": "{{random.arrayElement(
           ["3M", "GE","Vyaire", "Getinge"]
       )}}"
   }
   ```

   이제 **테스트 템플릿**을 사용하여 모의 데이터를 보고 **데이터 전송**을 사용하여 모의 데이터를 Kinesis로 모을 수 있습니다.

1. **데이터 전송**을 클릭하고 Kinesis에 5\~10,000개의 레코드를 생성합니다.

### AWS Glue Studio로 AWS Glue 스트리밍 작업 생성
<a name="streaming-tutorial-studio-kinesis-create-job"></a>

1. 동일한 리전의 콘솔에서 AWS Glue로 이동합니다.

1. **데이터 통합 및 ETL** 아래의 왼쪽 탐색 표시줄에서 **ETL 작업**을 선택합니다.

1. **빈 캔버스가 있는 시각적 객체**를 통해 AWS Glue 작업을 생성합니다.  
![스크린샷은 작업 생성 대화 상자를 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1a.png)

1. **작업 세부 정보** 탭으로 이동합니다.

1. AWS Glue 작업 이름으로 `DemoStreamingJob`을 입력합니다.

1. **IAM 역할**로 CloudFormation 템플릿에서 프로비저닝한 역할인 `glue-tutorial-role-${AWS::AccountId}`를 선택합니다.

1. **Glue 버전**으로 **Glue 3.0**을 선택합니다. 다른 모든 옵션은 기본값으로 둡니다.  
![스크린샷은 작업 세부 정보 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1b.png)

1. **시각적 객체** 탭으로 이동합니다.

1. 더하기 아이콘을 클릭합니다. 검색 창에 **Kinesis**를 입력합니다. **Amazon Kinesis** 데이터 소스를 선택합니다.  
![스크린샷은 노드 추가 대화 상자를 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1c.png)

1. **데이터 소스 속성 - Kinesis Stream** 탭에서 **Amazon Kinesis 소스**에 대한 **스트림 세부 정보**를 선택합니다.

1. **데이터 스트림의 위치**에서 **스트림이 내 계정에 있음**을 선택합니다.

1. 사용 중인 리전을 선택합니다.

1. `GlueStreamTest-{AWS::AccountId}` 스트림을 선택합니다.

1. 다른 모든 설정은 기본값으로 유지합니다.  
![스크린샷은 데이터 소스 속성 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1d.png)

1. **데이터 미리 보기** 탭으로 이동합니다.

1. KDG에서 생성된 모의 데이터를 미리 보는 **데이터 미리 보기 세션 시작**을 클릭합니다. AWS Glue 스트리밍 작업에 대해 이전에 생성한 Glue 서비스 역할을 선택합니다.

   미리 보기 데이터가 표시되는 데 30\~60초 걸립니다. **표시할 데이터 없음**이 표시되면 기어 아이콘을 클릭하고 **샘플링할 행 수**를 `100`으로 변경합니다.

   다음과 같이 샘플 데이터를 확인할 수 있습니다.  
![스크린샷은 데이터 미리보기 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1e.png)

   **출력 스키마** 탭에서 추론된 스키마를 확인할 수도 있습니다.  
![스크린샷은 출력 스키마 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1f.png)

### 변환 수행 및 Amazon S3에 변환된 결과 저장
<a name="streaming-tutorial-studio-kinesis-transformation"></a>

1. 소스 노드를 선택한 상태에서 왼쪽 상단의 더하기 아이콘을 클릭하여 **변환** 단계를 추가합니다.

1. **스키마 변경** 단계를 선택합니다.  
![스크린샷은 노드 추가 대화 상자를 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1g.png)

1. 이 단계에서 필드 이름을 바꾸고 필드의 데이터 형식을 변환할 수 있습니다. `o2stats` 열의 이름을 `OxygenSaturation`으로 바꾸고 모든 `long` 데이터 형식을 `int`로 변환합니다.  
![스크린샷은 변환 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1h.png)

1. 더하기 아이콘을 클릭하여 **Amazon S3** 대상을 추가합니다. 검색 상자에 S3를 입력하고 **Amazon S3 - 대상** 변환 단계를 선택합니다.  
![스크린샷은 노드 추가 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1i.png)

1. 대상 파일 형식으로 **Parquet**을 선택합니다.

1. 압축 유형으로 **Snappy**를 선택합니다.

1. CloudFormation 템플릿 `streaming-tutorial-s3-target-{AWS::AccountId}`로 생성된 **S3 대상 위치**를 입력합니다.

1. **데이터 카탈로그에 테이블 생성, 후속 실행 시 기존 스키마 유지 및 새 파티션 추가**를 선택합니다.

1. Amazon S3 대상 테이블의 스키마를 저장할 대상 **데이터베이스**와 **테이블** 이름을 입력합니다.  
![스크린샷은 Amazon S3 대상의 구성 페이지를 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1j.png)

1. **스크립트** 탭을 클릭하여 생성된 코드를 봅니다.

1. 오른쪽 상단의 **저장**을 클릭하여 ETL 코드를 저장한 다음, **실행**을 클릭하여 AWS Glue 스트리밍 작업을 시작합니다.

   **실행** 탭에서 **실행 상태**를 확인할 수 있습니다. 작업을 3\~5분간 실행한 후 중지합니다.  
![스크린샷은 실행 탭을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1k.png)

1. Amazon Athena에서 생성된 새 테이블을 확인합니다.  
![스크린샷은 Amazon Athena의 테이블을 보여줍니다.](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/streaming-tutorial-1l.png)