Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Truy xuất đối tượng S3 dễ dàng với Python & Boto3: Hướng dẫn từng bước

Bài viết minh họa cách tải file và hình ảnh từ AWS S3 bucket dùng Python và thư viện Boto3.

Boto là AWS SDK cho Python. Cung cấp hàm dễ dùng tương tác với dịch vụ AWS như EC2 và S3.

Tải file S3 với Python và Boto3

Ví dụ tải một file từ bucket S3 chỉ định.

Trước tiên tạo S3 client bằng boto3.client('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)

Method download_file nhận 3 tham số:

  1. Bucket name trong S3
  2. Tên file (kèm extension) muốn tải
  3. Tên file muốn lưu cục bộ

Tải tất cả đối tượng trong bucket chỉ định

Ví dụ tải tất cả object trong bucket S3. Giả định file nằm ở root bucket (không phải sub-folder).

import boto3

def download_all_files():
    # Khởi tạo S3 resource
    s3 = boto3.resource('s3')
    # Chọn bucket
    my_bucket = s3.Bucket('bucket_name')
    # Tải file vào thư mục hiện tại
    for s3_object in my_bucket.objects.all():
        filename = s3_object.key
        my_bucket.download_file(s3_object.key, filename)

Tải tất cả đối tượng trong sub-folder S3 bucket

Code tải file nằm trong sub-folder của S3 bucket.

Giả sử file ở bucket và path:

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)

Tham khảo

Boto 3 Documentation