PYTHON 140

[ 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

[ 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

[ Zabbix ] Zabbix Problem monitoring using Python API. (파이썬 API를 이용한 Zabbix Problem 모니터링)

1. Create Sample Trigger (트리거 생성) 2. Python API (ZabbixAPI_py) # API # pip install ZabbixAPI_py from ZabbixAPI_py import Zabbix from datetime import datetime from datetime import timedelta # Zabbix Auth zabbix = Zabbix('host') zabbix.login('id','password') # before 10 Min tenMin = datetime.today() - timedelta(minutes=10) # get problems for x in zabbix.problem(method='get'): eventTime = datetime...

Open Source 2020.06.02

Python Programming Basic - Append. Regular Expression (정규식 표현식) 기호

* : 바로 앞에 있는 문자가 0부터 무한대로 반복될 수 있다는 의미 import re stringtup = ('apple','appppple','aple','ale') p = re.compile('ap*le') for i in stringtup: if p.search(i): print('match :', i) else: print('no match :', i) -------------------------------------------------- match : apple match : appppple match : aple match : ale + : 바로 앞에 있는 문자가 최소 1부터 무한대로 반복될 수 있다는 의미 import re stringtup = ('apple','appppple','ap..

Python Programming Basic - Append. 리스트 축약 (List Comprehensions)

리스트 객체를 이용하여 조합, 필터링 등의 추가적인 연산을 통하여 새로운 리스트 객체를 생성하는 경우, 리스트 내장은 매우 효율적이다. for in (if ) - 시퀀스 타입 객체 : 리스트, 튜플, 셋 - 아이템 : 리스트 객체의 개별 아이템 - 표현식 : 개별 을 사용하여 사상함수 형태로 새로운 리스트 객체를 생성 - if 조건식 : 조건식에 맞는 원본 리스트의 아이템을 선별하는 경우. 생략가능 # [ 0, 1, 2, 3, 4 ] 요소 가진 리스트 만들기 (일반적인 문법) lst = [] for i in range(5): lst.append(i) print(lst) [0, 1, 2, 3, 4] # List Comprehensions을 이용한 방법 lst = [ i for i in range(5) ] ..

Python Programming Basic - 9. 파일읽고 / 쓰기

DOC : https://docs.python.org/3/library/functions.html?highlight=open#open open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None 파일을 오픈, 열지 못했을 때는 'OSError' 에러발생 모드(Mode) 모드 설명 'r' 읽기 모드 (기본) 'w' 쓰기 모드 'a' 추가 모드 (파일이 존재하면 끝에 추가) 'b' 바이너리 모드 't' 텍스트 모드 (기본) '+' 읽기와 쓰기으로 파일 열기 * 특별한 값을 지정하지 않으면 'r', 't'는 기본으로 설정 버퍼링(buffering) : 버퍼정책 설정 buffering 설명..

Python Programming Basic - 5. 문자열 메소드

str 클래스 메서드 목록 보기 dir(str) ---------------------------------------------------------------------------------------- ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__..

Python Programming Basic - 4. 연산자 (Operator)

파이썬 연산자의 종류 DOCS : https://docs.python.org/3/library/operator.html?highlight=operator 1. 사칙연산 ㅁ 연산 연산자 비 고 더하기 + 문자열 결합할 때도 쓰임. ( 'Python' + 'Is' + 'Beautiful') 빼기 - 곱하기 * 문자열을 반복할 때도 쓰임. ( 'Python' * 30) 나눗셈 몫 구하기 // 나눗셈 나머지 구하기 % 제곱 ** 나누기 / 2. 할당 연산자 연산자 설 명 = 왼쪽 변수에 오른값을 할당. ( a = 1 ) += 왼쪽 변수에 오른쪽 값을 더하고, 왼쪽 변수에 할당 ( a = a + 1 → a += 1 ) -= 왼쪽 변수에 오른쪽 값을 빼고, 왼쪽 변수에 할당 ( a = a - 1 → a -= 1 )..

[Python] numpy setdiff1d(차집합)을 이용한 2개의 텍스트 파일 비교

numpy.setdiff1d(array1, array2) : 2개의 array의 차집합 A_file.txt B_file.txt Tomatoes are red Bananas are yellow Strawberries are red Oranges are orange Blackberries are black Tomatoes are red Bananas are yellow Blackberries are black import pandas as pd import numpy as np df_A = pd.read_csv('A_file.txt', names=['data_A']) df_B = pd.read_csv('B_file.txt', names=['data_B']) list_A = np.array(df_A['data..