S3 5

[ AWS ] Python boto3를 이용한 S3에 저장된 CSV 파일 읽기 / 쓰기

CSV파일 S3에 다이렉트 저장하기 Sample : Pandas DataFrame ( 24 X 5 ) from io import StringIO import boto3 s3 = boto3.client('s3') bucket = 'string' # Put Bucket Name csv_buffer = StringIO() df.to_csv(csv_buffer) s3.put_object(Bucket=bucket, Body=csv_buffer.getvalue(), Key='df.csv') S3에 저장되어 있는 CSV파일 다이렉트 읽기 import boto3 import pandas as pd import io s3 = boto3.client('s3') bucket = 'string' obj = s3.get_obj..

AWS Infra 2023.05.23

[ 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 ] 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