무향향수

[AWS] S3 코랩 연동 본문

인턴일기/공부내용

[AWS] S3 코랩 연동

튼튼한장 2024. 9. 19. 15:19
더보기

인턴 업무 중에서 2만개의 이미지 파일명을 바꾼 후 파일의 정보를 json에 저장하고 json과 jpg파일을 제출 사이트에 업로드해야했다. 파일을 압축, 다운, 압축 해제, 업로드 순으로 과정을 진행해야 했는데 시간이 약 5시간 정도 걸렸고 코드를 실행시키고 파일을 전처리 하는 시간까지 합치면 10시간 넘게 시간이 소요되었다.

매번 코드를 최대한 효율적으로 수정하였지만, 큰 변화가 없었다.

단순한 파일 업로드로 인해 퇴근시간이 늦어져 시간이 매우 아깝다는 생각이 들었고, 로컬 환경이 아닌 가상환경에서 코드를 실행하고 파일을 처리하고자 정보를 찾아본 결과 AWS S3에 대해 알게되었다. 

이제 Spark와 AWS S3를 함께 사용하면 퇴근시간이 빨라질 것만 같다..! 행복하다

AWS S3

Amazon Simple Storage Service(Amazon S3)는 객체 스토리지 서비스이다.

Amazon S3를 사용하여 데이터 레이크, 웹 사이트, 모바일 어플, 백업 및 복원, 빅데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있다.

스토리지 관리, 액세스 관리 및 보안, 데이터 처리, 스토리지 로깅 및 모니터링, 분석 및 인사이트 기능을 제공한다.

 

버킷에 객체를 업로드하거나 다운로드가 가능하다. 

 

AWS S3 - Google Colab 연동 절차

AWS S3 버킷 생성 → 엑세스 변경 →  엑세스 키 생성 → 코드 작성 및 실행 

 

AWS S3 - Google Colab 연동 코드

# 우선 필요한 라이브러리를 다운받아 준다.
!pip install boto3
!apt-get install awscli

# 환경 변수를 설정해준다.
import boto3
import os

# 환경 변수 설정 (직접 입력)
os.environ['AWS_ACCESS_KEY_ID'] = '엑세스 키'
os.environ['AWS_SECRET_ACCESS_KEY'] = '비밀 엑세스 키'
os.environ['AWS_DEFAULT_REGION'] = '지역명'  # 예: 'us-east-1'

s3 = boto3.client('s3')

# 업로드할 파일 경로
file_name = 'local_file.txt'  # 로컬 파일명
bucket_name = 'your_bucket_name'
s3.upload_file(file_name, bucket_name, 'uploaded_file.txt')  # S3에 저장될 이름

# 파일 다운로드
bucket_name = 'your_bucket_name'
s3.download_file(bucket_name, 'gifts.png', 'test.png')  # 다운할 로컬 파일명, 다운 위치

# S3 버킷의 파일 목록 확인
response = s3.list_objects_v2(Bucket=bucket_name)
for obj in response.get('Contents', []):
    print(obj['Key'])
    
# 작업 완료 후 AWS 자격 증명 삭제
del os.environ['AWS_ACCESS_KEY_ID']
del os.environ['AWS_SECRET_ACCESS_KEY']