본문 바로가기
IT/하려고 하는 클라우드

[AWS] 자동 Partitioning 구성

by Work_Asalia 2021. 8. 21.

<자동 Partitioning 구성>

다음은 앞서 기술한 Athena에서 수집한 vpcflow log를 Lambda 함수를 이용하여 자동으로 일일 파티셔닝 시키는 방법입니다. 

우선 Lambda 서비스로 이동을 합니다.

함수 생성 화면에서 이름 및 개발언어를 선택하면 다음과 같은 기본 화면을 볼 수 있습니다.

저는 여기서 파이썬을 선택하였습니다.

 

함수 코드 부분에 다음과 같이 작성하여 자동으로 파티셔닝하도록 코드를 입력합니다.

s3 = boto3.client('s3','ap-northeast-2')

bucket="vpcflowlogcollector"
athena_workgroup = "VpcFLowLog"
catalog_database = "vpcflowlog_db"
flowlog_bucket="vpcflowlogcollector"
account_id = "계정 ID 입력"
flowlog_table = "vpclog"


def lambda_handler(event, context):
    
    today = datetime.date.today()
    year = today.strftime("%Y")
    month = today.strftime("%m")
    day  = today.strftime("%d")
    
   
    ############################################################################
    #  VPC Flow Log Catalog 테이블 파티션 갱신
    ############################################################################
    query = """
                ALTER TABLE {}
                ADD PARTITION (yyyymmdd='{}-{}-{}')
                location 's3://{}/AWSLogs/{}/vpcflowlogs/ap-northeast-2/{}/{}/{}'
            """.format(flowlog_table, year, month, day, flowlog_bucket, account_id, year, month, day)
    
    response = athena.start_query_execution( QueryString=query,
                                             QueryExecutionContext={ 'Database': catalog_database },
                                             WorkGroup=athena_workgroup)
    query_execution_id = response['QueryExecutionId']
    print('CodeIssue PRD Execution ID: {}'.format(query_execution_id))

위 내용에서 아래 내용을 파티셔닝하려는 정보에 맞춰서 입력합니다.

bucket="vpcflowlogcollector"
athena_workgroup = "VpcFLowLog"
catalog_database = "vpcflowlog_db"
flowlog_bucket="vpcflowlogcollector"
account_id = "계정 ID 입력"
flowlog_table = "vpclog"

CloudWatch Events를 추가하여 일 배 치 형식으로 파티셔닝이 실행될 수 있도록 설정할 수 있습니다.

CloudWatch Events 트리거 추가


다음과 같이 규칙을 추가하면 매일 아침 9시에 파티셔닝이 실행될 수 있도록 설정할 수 있습니다.
(예약 표현식에 대해서는 다음 링크에서 자세히 확인할 수 있습니다. docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/events/ScheduledEvents.html_

오전 9시 실행

 

트리거까지 추가한 이후 정상적으로 해당 Lambda 함수가 실행되는지 확인하는 방법은 테스트를 통하여 확인 가능합니다. 만일 함수에 문제 있다면 테스트 결과가 성공이 아닌 실파로 나오며 실패된 로그에 대해서 확인 할 수 있습니다.

또한 해당 함수가 정상적으로 매일 아침 9시에 실행이 되는지 확인하는 방법은  CloudWatch 규칙에서도 확인 가능합니다.

 

위와 같이 구성하면 S3에 저장하는 VPC Flow Log에 대해서 파티셔닝된 결과를 분석할 수 있으며, 일자별로 좀 더 빠르게  결과를 확인할 수 있습니다.

 

728x90

'IT > 하려고 하는 클라우드' 카테고리의 다른 글

[AWS] EC2 서버 Root Volume 확장  (0) 2021.08.21
Docker 기초 명령어  (0) 2021.08.21
[AWSA] Athena를 이용한 VPC Flow Log 조회  (0) 2021.08.21
[AWS ] AWS Root 사용자  (0) 2021.08.21
[AWS ] AWS 보안_IAM 사용  (0) 2021.08.21

댓글