Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 및 Boto 3로 S3 객체 다운로드

이 게시물에서는 Python 및 Boto 3 라이브러리를 사용하여 aws S3 버킷에서 파일과 이미지를 다운로드하는 방법의 예를 보여줍니다.

Boto는 Python용 AWS SDK입니다. EC2 및 S3 버킷과 같은 AWS 서비스와 상호 작용할 수 있는 사용하기 쉬운 기능을 제공합니다.

Python 및 Boto 3로 S3 객체 다운로드

다음 예에서는 지정된 S3 버킷에서 하나의 파일을 다운로드합니다.

먼저 boto3.client(s3)를 사용하여 S3 클라이언트를 생성해야 합니다. .

import boto3

BUCKET_NAME = 'my_s3_bucket'
BUCKET_FILE_NAME = 'my_file.json'
LOCAL_FILE_NAME = 'downloaded.json'

def download_s3_file():
    s3 = boto3.client('s3')
    s3.download_file(BUCKET_NAME, BUCKET_FILE_NAME, LOCAL_FILE_NAME)

download_file 메소드는 세 개의 매개변수를 사용합니다:

첫 번째 매개변수는 S3의 버킷 이름입니다. 두 번째 매개변수는 다운로드하려는 파일(이름 및 확장자)이고 세 번째 매개변수는 저장하려는 파일의 이름입니다.

지정된 버킷의 모든 S3 객체 다운로드

다음 예에서는 지정된 S3 버킷의 모든 객체를 다운로드합니다.

코드 조각은 파일이 하위 폴더가 아니라 버킷의 루트에 직접 있다고 가정합니다.

import boto3

def download_all_files():
    #initiate s3 resource
    s3 = boto3.resource('s3')
    # select bucket
    my_bucket = s3.Bucket('bucket_name')
    # download file into current directory
    for s3_object in my_bucket.objects.all():
        filename = s3_object.key
        my_bucket.download_file(s3_object.key, filename)

하위 폴더 S3 버킷의 모든 개체 다운로드

다음 코드는 S3 버킷의 하위 폴더에 있는 파일을 다운로드하는 방법을 보여줍니다.

파일이 다음 버킷 및 위치에 있다고 가정합니다.

BUCKET_NAME = 'images'

PATH = pets/cats/

import boto3
import os

def download_all_objects_in_folder():
    s3_resource = boto3.resource('s3')
    my_bucket = s3_resource.Bucket('images')
    objects = my_bucket.objects.filter(Prefix='pets/cats/')
    for obj in objects:
        path, filename = os.path.split(obj.key)
        my_bucket.download_file(obj.key, filename)

참조

Boto 3 문서