이번 'phase 3-2'는 S3 Bucket이라는 AWS의 저장소(repository) 개념을 접하게 되고,
단순 웹 UI에서 파일 업로드/다운로드 뿐만이 아닌,
boto3라는 라이브러리를 활용하여 파이썬 코드로 파일 업로드/다운로드를 하는 과정을 담았습니다.(핵심)
그리고 기타 부분에는 이런 작업을 할 예정입니다.
AWS에 대해 친숙해지는 시간을 가지는 것이라고 이해하시면 편할 거 같습니다.
※AWS란?
즉, 'AWS'는 거대한 IT 인프라 대여 서비스, 데이터 센터를 통채로 빌린다. 라고 이해하면 된다.

->AWS에서 'S3'를 검색하면 이렇게 화면이 나온다.
->'버킷 만들기' 주황색 버튼을 누르고


->위 사진대로 세팅을 완료하면 된다.

->이렇게 결과가 나오면 잘 된 것이다.
'폴더 만들기' 버튼을 누르면 이렇게 뜨는데,

-> 난 그냥 '폴더 이름'만 'raw'로 짓고 폴더를 만들었다.(암호화는 따로 x)

->이렇게 생성되면 잘 된 것이다.
업로드하는 것은 다른 사이트에서 파일 업로드하는 방식과 같다.

->업로드 버튼을 누르면 이렇게 뜨는데, '파일 추가'나 '폴더 추가' 버튼을 눌러서 내가 원하는 것들을 업로드하면 된다.

->이렇게 나오면 잘 업로드 된 것이다.

->지금까지의 최종 상황.
다운로드 역시, 다운로드하고 싶은 해당 파일 선택 후 다운로드하면 된다.

->파일을 선택 안하면 다운로드 버튼이 비활성화되어 있다.(반드시 선택해야한다.)

->다운로드가 잘 된 것을 볼 수 있다.
사실 여기까지는 설명을 하는 것이 좀 민망할 정도로 누구나 다 알고 있는 프로세스라고 생각한다.
하지만, 그럼에도 익숙치 않거나 나를 위해서 이 글을 남기고자 한다.

->먼저 이렇게 폴더 구조를 만듭니다.

->boto3 라이브러리를 다운로드 받습니다.


->위 첨부한 사진대로 AWS의 'IAM(Identity and Access Management, 신원과 접근 관리)'에 들어가서 위 과정을 순차적으로 진행합니다.
->생성된 Access Key 및 Secret Access Key는 해당 화면에서 나가면 다시 볼 수 있는 방법이 없으므로 따로 로컬에 저장해야합니다.
->저는 excel 파일로 다운로드 받아서 로컬에만 저장하도록 했습니다.(github에 업로드 x. .gitignore 파일에 excel 파일 넣음.)


https://github.com/pilmalion114/data_engineer_portfolio/tree/main/phase%203/s3_practice
->마찬가지로 제 깃허브 링크를 공유하겠습니다. 해당 깃허브에 2개의 파이썬 파일이 들어있습니다.
※업로드 코드 과정
1.CSV 파일에서 AWS 자격증명 읽기(보안상 노출이 되면 절대 안 됨!)
2.클라이언트 생성(S3에 접근할 클라이언트)
3.버킷 이름 변수로 저장하기
4.로컬 파일 경로(로컬 파일에서 S3로 올려야하므로, 로컬 파일 경로 적기)
5.S3에 저장될 경로 작성
6.업로드 실행
※다운로드 코드 과정
1.CSV에서 자격증명 읽기!(upload와 동일함.)
2.S3 클라이언트 생성(upload와 동일함.)
3.Bucket_Name, s3_file, local_file 설정.
4.다운로드 실행(upload와 구조 동일함.)
이렇게 업로드/다운로드 코드 관련한 과정들에 대한 설명을 간략히 적어봤습니다.
자연스럽게 과정을 이해하실 거라 생각합니다.
여기서 어떻게 보면 가장 중요한 부분은,
업로드에서 1번 과정인 AWS 자격증명 읽기입니다.
자격증명(Secret Key)를 그냥 하드코딩해서 불러오는 것이 아니라(보안상 노출)
변수로 담아와서 안전하게 불러와야합니다.
일종의 마스킹(masking) 개념이지요.
※마스킹(masking)
민감한 개인정보들을 원본 그대로(raw) 노출시키지 않고,
별표(*)나 위와 같은 변수로 담아와서 노출시키지 않게 만들어 보안상 위험 노출에 걸리지 않게 하는 방법.

이렇게 위 첨부한 사진처럼 총 4개의 파이썬 코드를 작성할 것이다.
->해당 깃허브를 참고하시오.
똑같이 업로드하는 것인데, 단지 '날짜별로 폴더를 생성하기'만 추가된 것이다.
->해당 깃허브를 참고하시오.
업로드할 여러 파일들을 리스트 안에 담아서 각 파일마다 날짜별 폴더에 업로드하는 코드이다.
->해당 깃허브를 참고하시오.
S3 버킷 안에 있는 모든 파일 목록을 조회하는 코드이다.
->해당 깃허브를 참고하시오.
삭제하고 싶은 파일(객체)을 삭제하는 코드이다.
이렇게 해서 'phase 3-2'에 대해서 전부 알아보았습니다.
처음 접하는 개념인 'S3 Bucket'부터 S3를 활용한 파이썬 코드들까지..
코드로 간편하게 파일들/폴더들을 관리하는 시간이 되었습니다.
다음에 'phase 3-3'으로 다시 돌아오도록 하겠습니다.
오늘도 제 긴 글을 읽어주셔서 감사합니다. :) bb