전체 글 445

[ AWS ] Python boto3를 이용하여 s3 log 압축파일(gz) DataFrame 만들기 - CloudFront Logs

AWS CloudFront, WAF 등 S3에 저장된 log들은 최종 gz 압축 형태로 보관 된다. ​ 주기적이고, 빠르게 모니터링하고 분석하기 위해서 Python SDK를 이용하여 자동화 할 수 있는 방법을 알아본다. S3 버킷에 저장된 object 다운로드 Python boto3를 이용하여 S3에서 파일을 다운로드 한다. 일반적으로 날짜 Prefix가 들어가기 때문에 datetime 모듈을 이용하여 일괄 다운로드 받을 수 있으며, 아래에서는 단일 파일만 대상으로 테스트 해본다. ​ CloudFront 로그가 S3에 저장되어 있고, xxxx.2023-03-15-01.xxxx.gz 라는 압축파일을 다운로드 import boto3 client = boto3.client('s3') saveFile = 'xx..

AWS Infra 2023.03.16

[ Python ] Python을 이용한 ElastiCache Redis Hash Data Export & Import

ElasiCache Redis를 운영하면서 "noeviction" 데이터 보관용으로 운영하면서 주기적으로 데이터를 Export 해야할 필요가 생겼다. 데이터에 접근할 있어, 분석이나 재처리 업무시 사용할 수 있고, 2차 백업용으로도 사용할 수 있겠다. Sample Hash Data Export to Json File import redis import json # 접속옵션으로 decode_responses=True 사용할 경우, decode를 않해도 된다. rd = redis.StrictRedis(host='localhost', port=6379, db=0) allhash = [ x.decode() for x in rd.scan_iter('*') ] redisdct = {} for h in allhash..

AWS Infra 2023.02.28

[ Python ] matplotlib plot Shading Area (특정구간 강조)

그래프를 추출할 때, 쉐딩(강조)을 적용하기. 엔지니어의 보고서에 그래프 넣기 기본 x, y 막대 그래프 x = [ x + 1 for x in range(30) ] y = [ randint(1,5) for x in range(30) ] 단일 구간 강조 import matplotlib.pyplot as plt from random import randint a = 3 b = 8 plt.axvspan(a, b, color='blue', alpha=0.1) plt.plot(x, y) plt.show() 여러구간 강조 하기 (구간 지정) import matplotlib.pyplot as plt from random import randint z = {3:4,15:20,25:29} # 구간 Dictionary f..

[ AWS ] Python boto3를 이용하여 값 CPUCreditBalance 구하기

Python boto3를 이용한 CPUCreditBalance 값 모니터링 모니터링 대상 인스턴스는 t3a.medium이며, CPUCreditBalance 테이블은 아래와 같다. T3a 시간당 지급되는 CPU 크레딧 누적 가능한 최대 지급된 크레딧* vCPU*** vCPU당 기준 사용률 t3a.nano 6 144 2 5%** t3a.micro 12 288 2 10%** t3a.small 24 576 2 20%** t3a.medium 24 576 2 20%** https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html#CPU-credit-accrual-limit 버스트 가능 성능 인스턴스에..

AWS Infra 2023.02.02

[ AWS ] Python boto3를 이용하여 EC2 CPU 사용율 구하기

Python boto3를 이용하여 EC2 인스턴스의 CPU 사용율 구하기 import boto3 from datetime import datetime from datetime import timedelta client = boto3.client('cloudwatch') def CPUUtilization_Ec2(isinstance_id): response = client.get_metric_statistics( Namespace='AWS/EC2', MetricName='CPUUtilization', Dimensions=[ { 'Name': 'InstanceId', 'Value': isinstance_id }, ], StartTime=datetime.today() - timedelta(days=1) , En..

AWS Infra 2023.02.02

[ AWS ] Python Boto3를 이용한 CloudFront Invalidation (무효화)

CloudFront 콘텐츠들의 캐시 히트율을 높히기 위해 TTL을 길게 변경하고, 변경되는 컨텐츠들은 Python을 이용하여 Invalidation (무효화) 무효화 처리하는 방법을 알아본다. 아래는 테스트용인 단일 파일이지만, APIGate와 같이 활용하기 위해서는 'Items' 배열로 받아서 'Quantity' 수량을 len() 을 이용해서 처리하면 되겠다. import boto3 from time import time s3 = boto3.client('cloudfront') response = s3.create_invalidation( DistributionId='', InvalidationBatch={ 'Paths': { 'Quantity': 1, 'Items': [ '/test.jpg', ] }..

AWS Infra 2023.01.13

[ AWS ] S3 특정 확장자 파일만 업로드 하는 버킷정책

CloudFront 서비스를 구축하기 위해 S3 저장소를 원본을 이용하기로 하였다. 압축파일, 이미지과 같은 컨텐츠용만 서비스 하기 때문에, 버킷정책을 이용하여 필요한 확장자만 업로드할 수 있도록 세팅한다. 보안적으로는 화이트리스트 기반의 업로드 제약조건 세팅이며, 어플리케이션 (Java, Python, .Net ) 에서 사용자에게 오픈 되어있는 확장자를 제약할 수 있다. S3 버킷 정책 세팅 특정 확장자만 접근할 수 있도록 허용한다. ( 물론 CloudFront 등 다른 정책도 포함되어 있지만 같이 기술하지 않는다 ) { "Version": "2012-10-17", "Statement": [ { "Sid": "PutObjectDenyPolicy", "Effect": "Deny", "Principal":..

AWS Infra 2023.01.13

[ AWS ] Python boto3를 이용한 S3 파일 업로드 / 다운로드

파일 업로드 import boto3 s3 = boto3.client('s3') bucket = '버킷명' s3.upload_file('original_object', bucket, 'upload_object', ExtraArgs={'ContentType':'image/jpeg'}) # Mime Type 매뉴얼하게 지정하려면, ExtraArgs를 사용 # 디렉토리 경로(test) 지정 : Ex) 'test/' + upload_object 파일 다운로드 import boto3 s3 = boto3.client('s3') bucket = '버킷명' s3.downfile_file(bucket, 'original_object', 'download_object')

AWS Infra 2022.12.28