<자동 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_
트리거까지 추가한 이후 정상적으로 해당 Lambda 함수가 실행되는지 확인하는 방법은 테스트를 통하여 확인 가능합니다. 만일 함수에 문제 있다면 테스트 결과가 성공이 아닌 실파로 나오며 실패된 로그에 대해서 확인 할 수 있습니다.
또한 해당 함수가 정상적으로 매일 아침 9시에 실행이 되는지 확인하는 방법은 CloudWatch 규칙에서도 확인 가능합니다.
위와 같이 구성하면 S3에 저장하는 VPC Flow Log에 대해서 파티셔닝된 결과를 분석할 수 있으며, 일자별로 좀 더 빠르게 결과를 확인할 수 있습니다.
'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 |
댓글