728x90
반응형
aws s3 버킷 만드는 방법은 아래의 글을 참고해주세요
2022.09.03 - [aws/s3] - [ aws S3 ] S3 (Simple Storage Service) bucket 만들기
aws s3 버킷에 파일 업로드 방법은 아래의 글을 참고해주세요
2022.09.03 - [aws/s3] - [ aws s3 ] python으로 s3 연결해서 파일 업로드 하기
오늘은 버킷에 올린 파일을 읽어보겠습니다
파일 읽기
우선 필요한 모듈을 다운로드하겠습니다
pip install pandas
# s3.py
import boto3
import os
import io
import pandas as pd
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_BUCKET_NAME = os.environ['AWS_BUCKET_NAME']
file_name_list = ["a.text", "b.csv"]
def connection_s3():
"""
connection aws s3 user
Returns:
s3_client: aws s3 user
"""
try:
print("connection_s3 start")
s3_client = boto3.client(service_name="s3",
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
return s3_client
except Exception as e:
print(e)
raise
finally:
print("connection_s3 end")
def upload_file_def(s3_client):
"""
s3 upload file -- txt, csv etc
Args:
s3_client (aws user): aws s3 user
"""
try:
for file_name in file_name_list:
# 올릴 파일이름, 버킷 이름, 버킷에 저장될 파일 이름
s3_client.upload_file(f"./{file_name}", AWS_BUCKET_NAME, f"{file_name}")
print(f"{file_name} upload success")
except Exception as e:
print(e)
finally:
print("upload_file_def end")
def read_file_def(s3_client):
"""
s3 file read
Args:
s3_client (aws user): aws s3 user
"""
try:
for file_name in file_name_list:
file_n, file_type = file_name.split(".")
obj = s3_client.get_object(Bucket=AWS_BUCKET_NAME, Key=file_name)
body = obj["Body"].read()
if file_type == "csv":
df = pd.read_csv(io.BytesIO(body))
print(df)
elif file_type == "text":
print(body)
print(f"{file_name} read success")
except Exception as e:
print(e)
raise
finally:
print("read_file_def end")
if __name__ == "__main__":
try:
s3_client = connection_s3()
upload_file_def(s3_client)
read_file_def(s3_client)
except Exception as e:
print(e)
finally:
print("bucket finish")
read_file_def라는 함수를 새로 추가했습니다
csv일 경우에는 안의 내용물을 보여주기 위해 pandas로 출력하고
text의 경우에는 그냥 출력하는 형태로 사용했습니다
이제 코드를 실행해봅시다
text, csv 파일의 내용이 모두 나오는 걸 확인할 수 있습니다
파일 지우기
이제 파일을 지워보겠습니다
# s3.py
import boto3
import os
import io
import pandas as pd
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_BUCKET_NAME = os.environ['AWS_BUCKET_NAME']
file_name_list = ["a.text", "b.csv"]
def connection_s3():
"""
connection aws s3 user
Returns:
s3_client: aws s3 user
"""
try:
print("connection_s3 start")
s3_client = boto3.client(service_name="s3",
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
return s3_client
except Exception as e:
print(e)
raise
finally:
print("connection_s3 end")
def upload_file_def(s3_client):
"""
s3 upload file -- txt, csv etc
Args:
s3_client (aws user): aws s3 user
"""
try:
for file_name in file_name_list:
# 올릴 파일이름, 버킷 이름, 버킷에 저장될 파일 이름
s3_client.upload_file(f"./{file_name}", AWS_BUCKET_NAME, f"{file_name}")
print(f"{file_name} upload success")
except Exception as e:
print(e)
finally:
print("upload_file_def end")
def read_file_def(s3_client):
"""
s3 file read
Args:
s3_client (aws user): aws s3 user
"""
try:
for file_name in file_name_list:
file_n, file_type = file_name.split(".")
obj = s3_client.get_object(Bucket=AWS_BUCKET_NAME, Key=file_name)
body = obj["Body"].read()
if file_type == "csv":
df = pd.read_csv(io.BytesIO(body))
print(df)
elif file_type == "text":
print(body)
print(f"{file_name} read success")
except Exception as e:
print(e)
raise
finally:
print("read_file_def end")
def delete_file_def(s3_client):
"""
s3 file delete
Args:
s3_client (aws user): aws s3 user
"""
try:
for file_name in file_name_list:
s3_client.delete_object(Bucket=AWS_BUCKET_NAME, Key=file_name)
print(f"{file_name} delete success")
except Exception as e:
print(e)
raise
finally:
print("delete_file_def end")
if __name__ == "__main__":
try:
s3_client = connection_s3()
upload_file_def(s3_client)
read_file_def(s3_client)
delete_file_def(s3_client)
except Exception as e:
print(e)
finally:
print("bucket finish")
delete_file_def라는 함수를 하나 생성했습니다
말 그대로 버킷 안에 있는 파일을 지우는 역할을 하는 함수입니다
이제 파일을 실행해보겠습니다
실행 결과가 이렇게 나오면 성공입니다
aws에서 확인해보면 객체가 전부 지워진 것을 확인할 수 있습니다
728x90
반응형
'programing > aws' 카테고리의 다른 글
[ aws RDS ] postgresql 데이터베이스 생성 및 연결, 삭제해보기 (0) | 2023.01.12 |
---|---|
[ aws IAM ] 유저 그룹, 유저 생성 (0) | 2023.01.12 |
[ aws ecr ] ecr 만들기 (0) | 2022.09.17 |
[ aws s3 ] python으로 s3 연결해서 파일 업로드 하기 (0) | 2022.09.03 |
[ aws S3 ] S3 (Simple Storage Service) bucket 만들기 (0) | 2022.09.03 |
댓글