반응형
Notice
Recent Posts
Recent Comments

04-03 00:13
관리 메뉴

SaevOps

[네이버클라우드] Object Storage에서 파일 다운로드하기 본문

클라우드/NBP

[네이버클라우드] Object Storage에서 파일 다운로드하기

세브웁스 2025. 9. 18. 17:00
728x90
반응형

☁️ 네이버클라우드 Object Storage에서 파일 다운로드하기 (Python)

안녕하세요! 오늘은 Python boto3 라이브러리를 사용해 네이버클라우드 Object Storage에 있는 파일을 자동으로 다운로드하는 방법을 알아볼게요. 여러 파일을 한 번에 편리하게 내려받을 수 있어 아주 유용하답니다. 🚀

1. 준비물

먼저, 이 스크립트를 사용하기 위해 필요한 것들을 준비해야 해요.

  1. Python 설치: 파이썬이 없다면 공식 홈페이지에서 설치해 주세요.
  2. boto3 라이브러리 설치: 터미널이나 명령 프롬프트에서 아래 명령어를 입력하여 설치합니다.
    pip install boto3
    
  3. 네이버클라우드 Object Storage 정보:

2. Python 스크립트 작성하기

이제 본격적으로 코드를 작성해 볼까요? 아래 코드를 download_files.py와 같은 이름으로 저장하세요.

🔑 참고: 보안을 위해 Access Key와 Secret Key는 코드에 직접 입력하는 것보다 환경 변수로 관리하는 것을 권장해요. 스크립트에는 os.environ.get()을 사용해 환경 변수에서 가져오는 방식으로 작성되어 있답니다.

Python
import boto3
import os

# 네이버클라우드 인증 정보 및 버킷 이름
# os.environ.get()을 사용하여 환경 변수에서 가져오는 것을 권장합니다.
# 직접 입력 시: ACCESS_KEY = "YOUR_ACCESS_KEY"
ACCESS_KEY = "YOUR_ACCESS_KEY"  # <-- 여기에 실제 키 입력
SECRET_KEY = "YOUR_SECRET_KEY"  # <-- 여기에 실제 키 입력
BUCKET_NAME = "YOUR_BUCKET_NAME" # <-- 여기에 실제 버킷 이름 입력

# 네이버클라우드 Object Storage 클라이언트 생성
# 'endpoint_url'을 네이버클라우드 URL로 설정하는 것이 중요합니다.
s3 = boto3.client(
    's3',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    endpoint_url='https://kr.object.gov-ncloudstorage.com'
)

# 파일을 다운로드할 로컬 디렉토리 경로
DOWNLOAD_DIR = './downloaded_files'
if not os.path.exists(DOWNLOAD_DIR):
    os.makedirs(DOWNLOAD_DIR) # 디렉토리가 없으면 생성

print(f"'{BUCKET_NAME}' 버킷의 파일 목록을 가져오는 중...")

try:
    # 버킷 내 모든 객체(파일) 리스트 가져오기
    response = s3.list_objects_v2(Bucket=BUCKET_NAME)

    if 'Contents' in response:
        for obj in response['Contents']:
            file_key = obj['Key']
            # 다운로드 경로 설정 (기존 폴더 구조 유지)
            download_path = os.path.join(DOWNLOAD_DIR, file_key)

            # 만약 하위 폴더가 있다면 디렉토리를 미리 생성
            os.makedirs(os.path.dirname(download_path), exist_ok=True)
            
            print(f"'{file_key}' 파일을 다운로드 중...")

            # 실제로 파일 다운로드
            s3.download_file(BUCKET_NAME, file_key, download_path)
            
            print(f"✅ '{file_key}' 다운로드 완료 -> '{download_path}'")
    else:
        print("🤔 버킷에 파일이 없습니다.")

except Exception as e:
    print(f"❗ 오류가 발생했습니다: {e}")

3. 스크립트 실행하기

코드를 저장했다면, 이제 실행해 볼 시간입니다. 터미널이나 명령 프롬프트에서 아래 명령어를 입력하세요.

python download_files.py

 

스크립트가 실행되면 버킷에 있는 파일 목록을 불러와 downloaded_files라는 폴더에 하나씩 다운로드하기 시작할 거예요. 다운로드가 완료되면 성공 메시지가 출력됩니다.

4. 코드 분석 (자세히 알아보기)

  • boto3.client('s3', ...): S3와 호환되는 네이버클라우드 Object Storage에 연결하기 위한 클라이언트를 생성합니다. 이때 endpoint_url을 네이버클라우드의 URL로 정확하게 지정하는 것이 핵심이에요.
  • s3.list_objects_v2(Bucket=BUCKET_NAME): 지정된 버킷의 모든 파일(객체) 목록을 가져옵니다. response['Contents']에 파일 정보가 담겨 있어요.
  • s3.download_file(BUCKET_NAME, file_key, download_path): 각 파일을 지정된 로컬 경로로 다운로드하는 핵심 함수입니다. file_key는 Object Storage 내의 파일 경로를 의미하고, download_path는 로컬에 저장될 경로를 의미합니다.

이 스크립트를 활용하면 복잡한 웹 UI를 통하지 않고도 대량의 파일을 손쉽게 관리하고 다운로드할 수 있습니다

728x90
반응형
Comments