프로그래밍/Data process

파이썬으로 AWS S3에 있는 파일 GET, PUT하기

Dibrary 2022. 9. 16. 09:50
반응형

안녕하세요 Dibrary입니다.

저번에 만든 AWS S3에 파이썬을 사용해서 파일을 넣고, 꺼내보겠습니다.

이번에 할 파일은 CSV파일로 간단히 해 볼건데, 주의할 점은 각 행마다 column갯수가 같아야 합니다. 즉, 각 행마다 콤마 갯수가 같아야 하는 것이죠. 다르면 어떻게 되냐구요?

이런 tokenizing data 에러를 마주할 수 있습니다.

 


파이썬으로 AWS를 연동하고 싶으면 boto3 모듈을 설치해야 합니다. 찾아보니 boto3는 AWS를 사용하게 해 주는 SDK라고 합니다.

그리고 aws_access_key_id와 aws_secret_access_key를 가지고 있어야 하는데, 이는 보안이 굉장히 중요하므로 별도로 저는 만들어서 사용했습니다.

위 코드에서 제것의 값은 가렸습니다. 해당 함수를 불러서 반환값만 이용하면 편하겠죠?

 

그럼, S3를 쓸 때 aws_access_key_id와 aws_secret_access_key는 어디서 확인하냐~ 가 문제네요. 

우선 AWS 대시보드에서 '보안 자격 증명'으로 갑니다.

 

그러면 아래와 같은 화면이 나오는데 여기서 '액세스 키'를 들어갑니다.

 

저는 이미 만들어서 아래와 같이 나옵니다. 만들지 않은 분들은 '새 액세스 키 만들기'를 누르시면 키가 생성됨과 동시에 csv파일 하나가 다운로드 됩니다. 

이 csv파일에 있는 정보를 아까 파이썬 코드의 aws_access_key_id와 aws_secret_access_key에 입력하시면 됩니다.

 


먼저 버킷의 해당 '폴더'에 무엇무엇이 있는지 확인해보겠습니다.

위 코드는 s3라는 이름으로 client객체를 생성하고, 해당 객체를 이용해서 logs/폴더 내의 objects들을 가져옵니다.

print로 확인해보면 저는 아래와 같이 나옵니다. 만일 에러가 난다면 정상적으로 읽지 못한 것입니다.

 


그럼 그 중에 파일 하나의 '데이터'를 직접 보겠습니다.

s3 객체는 기존코드와 같고, Bucket 부분만 가려놓았습니다. Key에는 logs폴더 내의 status_data.csv파일을 읽어오겠다는 것입니다. (Key는 반드시 대문자로 시작해주셔야 합니다. key로 하면 실행이 안됩니다.)

 

결과는 아래와 같습니다.

네 실제 데이터와 같습니다. 

 


그럼 파일데이터를 S3에 올려보겠습니다.

아까와 같이 s3객체는 그대로 같고, upload_file이라는 메서드를 사용하면 됩니다. (이번에도 버킷 이름은 가렸습니다.)

올린 후에 AWS 대시보드를 통해 확인할 수 있습니다. (아니면 아까 list_objects를 사용해서 확인할 수도 있습니다.)

728x90
반응형