예: 웹 로그 구문 분석(W3C_LOG_PARSE 함수) - SQL애플리케이션용 Amazon Kinesis Data Analytics 개발자 가이드

새 프로젝트의 경우 애플리케이션용 Kinesis Data Analytics보다 Apache Flink Studio용 새로운 관리형 서비스를 사용하는 것이 좋습니다. SQL Managed Service for Apache Flink Studio는 사용 편의성과 고급 분석 기능을 결합하여 정교한 스트림 처리 애플리케이션을 몇 분 만에 구축할 수 있도록 합니다.

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

예: 웹 로그 구문 분석(W3C_LOG_PARSE 함수)

이 예는 W3C_LOG_PARSE 함수를 사용하여 Amazon Kinesis Data Analytics의 문자열을 변환합니다. W3C_LOG_PARSE를 사용하여 Apache 로그의 형식을 빠르게 지정할 수 있습니다. 자세한 설명은 Amazon Managed Service for Apache Flink SQL 참조에서 W3C_LOG_PARSE를 참조하십시오.

이 예에서는 로그 레코드를 Amazon Kinesis 데이터 스트림에 기록합니다. 다음은 로그의 예입니다:

{"Log":"192.168.254.30 - John [24/May/2004:22:01:02 -0700] "GET /icons/apache_pba.gif HTTP/1.1" 304 0"} {"Log":"192.168.254.30 - John [24/May/2004:22:01:03 -0700] "GET /icons/apache_pbb.gif HTTP/1.1" 304 0"} {"Log":"192.168.254.30 - John [24/May/2004:22:01:04 -0700] "GET /icons/apache_pbc.gif HTTP/1.1" 304 0"} ...

그런 다음 콘솔에서 Kinesis Data Analytics 애플리케이션을 생성하고 Kinesis 데이터 스트림을 스트리밍 소스로 취합니다. 검색 프로세스는 스트리밍 소스 상의 샘플 레코드를 읽고 다음과 같이 한 열(로그)로 애플리케이션 내 스키마를 유추합니다.

로그 열이 포함된 애플리케이션 내 스키마가 포함된 형식이 있는 스트림 샘플 탭을 보여주는 콘솔 스크린샷

그런 다음 W3C_LOG_PARSE 함수를 지닌 애플리케이션 코드를 사용하여 로그 구문 분석을 수행하고, 다음과 같이 별도의 열에 다양한 로그 필드로 또 다른 애플리케이션 내 스트림을 생성합니다.

애플리케이션 내 스트림이 포함된 실시간 분석 탭을 보여주는 콘솔 스크린샷

1단계: Kinesis 데이터 스트림 생성

Amazon Kinesis 데이터 스트림을 생성하고 다음과 같이 로그 레코드를 채웁니다:

  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/kinesis에서 Kinesis 콘솔을 엽니다.

  2. 탐색 창에서 Data Streams(데이터 스트림)를 선택합니다.

  3. Kinesis 스트림 생성을 선택한 다음 샤드가 하나인 스트림을 생성합니다. 자세한 설명은 Amazon Kinesis Data Streams 개발자 가이드스트림 생성 참조하세요.

  4. 다음의 Python 코드를 실행하여 샘플 로그 레코드를 채웁니다. 이 단순한 코드는 동일한 로그 레코드를 스트림에 연속적으로 씁니다.

    import json import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "log": "192.168.254.30 - John [24/May/2004:22:01:02 -0700] " '"GET /icons/apache_pb.gif HTTP/1.1" 304 0' } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))

2단계: Kinesis Data Analytics 애플리케이션 생성

다음과 같이 Kinesis Data Analytics 애플리케이션을 생성합니다:

  1. https://console.aws.amazon.com/kinesisanalytics에서 Managed Service for Apache Flink 콘솔을 엽니다.

  2. 애플리케이션 생성을 선택하고 애플리케이션 명칭을 입력한 다음 애플리케이션 생성을 선택합니다.

  3. 애플리케이션 세부 정보 페이지에서 스트리밍 데이터 연결을 선택합니다.

  4. Connect to source(소스에 연결) 페이지에서 다음을 수행합니다.

    1. 이전 섹션에서 생성한 스트림을 선택합니다.

    2. IAM 역할 생성 옵션을 선택합니다.

    3. Discover schema(스키마 발견)를 선택합니다. 유추된 스키마와, 생성된 애플리케이션 내 스트림에 대한 스키마를 유추하는 데 사용된 샘플 레코드를 콘솔이 표시할 때까지 기다립니다. 유추된 스키마는 한 열만 지닙니다.

    4. [Save and continue]를 선택합니다.

  5. 애플리케이션 세부 정보 페이지에서 Go to SQL editor(SQL 편집기로 이동)를 선택합니다. 애플리케이션을 시작하려면 나타나는 대화 상자에서 Yes, start application(예, 애플리케이션 시작)을 선택합니다.

  6. SQL 편집기에서 애플리케이션 코드를 작성하고 다음과 같이 결과를 확인합니다.

    1. 다음 애플리케이션 코드를 복사하여 편집기에 붙여넣습니다.

      CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( column1 VARCHAR(16), column2 VARCHAR(16), column3 VARCHAR(16), column4 VARCHAR(16), column5 VARCHAR(16), column6 VARCHAR(16), column7 VARCHAR(16)); CREATE OR REPLACE PUMP "myPUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM l.r.COLUMN1, l.r.COLUMN2, l.r.COLUMN3, l.r.COLUMN4, l.r.COLUMN5, l.r.COLUMN6, l.r.COLUMN7 FROM (SELECT STREAM W3C_LOG_PARSE("log", 'COMMON') FROM "SOURCE_SQL_STREAM_001") AS l(r);
    2. [Save and run SQL]을 선택합니다. Real-time analytics(실시간 분석) 탭에서 애플리케이션이 생성한 모든 애플리케이션 내 스트림을 확인하고 데이터를 검증할 수 있습니다.