Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Unknown command: cask
- Algorithm
- cask
- permutations
- Split
- python3
- Boto3
- list.sorted()
- COUNT
- set to list
- 피보나치 수
- list to set
- Python 나머지
- List to String
- 알고리즘 풀이
- List
- 프로그래머스
- List 초기화
- zip()
- index
- sting position
- 알고리즘
- Python
- list.pop(0)
- Modified Date
- Python 몫
- sort()
- homebrew-core is a shallow clone.
- RecursionError
- string
Archives
- Today
- Total
데이터와 코드로 세상을 바라봅니다.
[AWS] S3 / Lambda / Python / File Name Check / Modified Date : 특정 일자, 파일 명칭 정상 여부 체크 로직 본문
Code/Python
[AWS] S3 / Lambda / Python / File Name Check / Modified Date : 특정 일자, 파일 명칭 정상 여부 체크 로직
코드우드 2021. 1. 5. 14:16import json
import boto3
from datetime import datetime, timedelta
src_bucket = '{버킷 명}'
file_upload_date = str(datetime(2020, 12, 14).strftime("%Y%m%d"))
def check_data_form_yyyymm(yyyymm) :
result = False
if len(yyyymm) == 6 and yyyymm.isdigit():
result = True
return result
def get_s3_file_name_list(file_upload_date) :
s3 = boto3.client('s3', region_name='ap-southeast-2')
response = s3.list_objects_v2(Bucket=src_bucket)
s3_file_name_list = []
for object in response['Contents'] :
if str(object['LastModified'].strftime("%Y%m%d")) == file_upload_date :
s3_file_name_list.append(object['Key'])
splited_file_name_list = []
for name_check_object in s3_file_name_list :
splited_s3_file_name = []
splited_s3_file_name = name_check_object.split("/")
splited_file_name_list.append(splited_s3_file_name[-1])
return splited_file_name_list
def check_fine_name_extension(file_name_list) :
result = True
for extension_check_object in file_name_list :
splited_file_name = []
splited_file_name = extension_check_object.split(".")
file_name_extension = splited_file_name[-1]
if (file_name_extension != "chk") and (file_name_extension != "csv") :
result = False
return result
def check_file_telegram(file_name_list) :
result_file_name = True
result_yyyymm = True
result = True
for telegram_check_object in file_name_list :
splited_file_name = []
splited_file_name = telegram_check_object.split(".")
file_name_telegram = splited_file_name[0]
splited_file_name_telegram = []
splited_file_name_telegram = file_name_telegram.split("_")
if len(splited_file_name_telegram) == 2 :
if (splited_file_name_telegram[0] == "A") :
result_file_name = True
elif (splited_file_name_telegram[0] == "B") :
result_file_name = True
else :
result_file_name = False
else :
result_file_name = False
## 날짜 YYYYMM 여부 확인
result_yyyymm = (result_yyyymm and check_data_form_yyyymm(splited_file_name_telegram[-1]))
## 작업 대상 목록 전체 점검 중 한개라도 False면 False 처리
if result_file_name == False :
result = False
elif result_yyyymm == False :
result = False
return result
def lambda_handler(event, context):
# TODO implement
print(check_fine_name_extension(get_s3_file_name_list(file_upload_date)))
print(check_file_telegram(get_s3_file_name_list(file_upload_date)))
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
[전역 변수]
src_bucket : 버킷 명
file_upload_date : 업로드 발생 일
[사용 함수]
get_s3_file_name_list(file_upload_date) : 특정 S3에 있는 파일 전체 중 업로드 발생 일에 해당하는 파일 리스트 일체
check_fine_name_extension(file_name_list) : 파일 확장자 검수
check_file_telegram(file_name_list) : 파일 명 검수
check_data_form_yyyymm(yyyymm) : YYYYMM 형식이 일치하는지 확인하는 함수
[Reference]
www.python2.net/questions-21830.htm
stackoverrun.com/ko/q/12228439
www.tutorialspoint.com/datetime-compare-method-in-chash
qastack.kr/programming/21388541/how-do-you-check-in-python-whether-a-string-contains-only-numbers
boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
'Code > Python' 카테고리의 다른 글
[Python3] 2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도 (0) | 2021.01.08 |
---|---|
[Python3] - List, Remove (0) | 2021.01.07 |
[Python3] - 2019 KAKAO BLIND RECRUITMENT, 실패율, Max, Index, Len (0) | 2020.12.07 |
[Python3] - K번째수 (0) | 2020.11.30 |
[Python3] LRU(algorithm) - 2018 KAKAO BLIND RECRUITMENT[1차] 캐시 (0) | 2020.11.26 |