728x90
반응형
# 작업 구성도
# 람다 코드
#---------------------------------------------------------------------------------
# 특정 S3 버킷의 폴더를 삭제 후 특정 폴더를 생성과 동시에 파일을 업로드 하는 방법
# 해당 버킷의 Prefix에 1개의 파일만 존재하도록 유지하기 위함
# → 아테나나 퀵사이트에서 1개의 파일을 읽어야만 하는 경우가 생기는 경우
# → → S3 버킷에 1개의 파일만 존재해야 하는 경우...!!
#---------------------------------------------------------------------------------
import time
import boto3
# query = 'SELECT * FROM zzanggu.zzanggu'
DATABASE = 'zzanggu'
output ='s3://zzanggu/01'
def lambda_handler(event, context):
s3 = boto3.resource('s3')
bucket= s3.Bucket('zzanggu')
bucket.objects.filter(Prefix="01/").delete()
# client = boto3.client('s3')
# client.delete_object(Bucket='mybucketname', Key='myfile.whatever')
query = "SELECT * FROM zzanggu.zzanggu"
client = boto3.client('athena')
# Execution
response = client.start_query_execution(
QueryString=query,
QueryExecutionContext={
'Database': DATABASE
},
ResultConfiguration={
'OutputLocation': output,
}
)
return response
return
# 정리된 람다 코드
#---------------------------------------------------------------------------------
# 특정 S3 버킷의 폴더를 삭제 후 특정 폴더를 생성과 동시에 파일을 업로드 하는 방법
# 해당 버킷의 Prefix에 1개의 파일만 존재하도록 유지하기 위함
# → 아테나나 퀵사이트에서 1개의 파일을 읽어야만 하는 경우가 생기는 경우
# → → S3 버킷에 1개의 파일만 존재해야 하는 경우...!!
#---------------------------------------------------------------------------------
import time
import boto3
DATABASE = 'apache_log_db'
output ='s3://zzanggu/01'
def lambda_handler(event, context):
s3 = boto3.resource('s3')
bucket= s3.Bucket('zzanggu-delete')
# 해당 버킷의 폴더?를 삭제
bucket.objects.filter(Prefix="01/").delete()
# 아테나의 논리적 테이블에 등록된 데이터를 쿼리하여 CSV 파일로 저장
# 쿼리에 where절을 입력하여 특정 데이터만 추출하여 저장 가능
query = "SELECT * FROM apache_log_db.zzanggu_db"
client = boto3.client('athena')
# Execution
response = client.start_query_execution(
QueryString=query,
QueryExecutionContext={
'Database': DATABASE
},
ResultConfiguration={
'OutputLocation': output,
}
)
return response
return
- 작업을 하다보면 특정 S3버킷에 1개의 파일만 쌓아여할 때가 있다. 그럴때 위에 코드를 활용하면 된다.
- 더욱 심플하고 합리적인 다른 여러가지 방법이 있겠지만 내 수준은 여기까지...
728x90
반응형
'AWS Lambda ƛ > Lambda & Python' 카테고리의 다른 글
Lambda Layers 를 활용해 공통 라이브러리 관리하기 (0) | 2022.04.25 |
---|---|
AWS Lambda를 활용하여 크롤링 봇 만들기 (0) | 2022.04.25 |