Trong bài đăng này, chúng tôi đưa ra các ví dụ về cách tải xuống tệp và hình ảnh từ bộ chứa aws S3 bằng cách sử dụng thư viện Python và Boto 3.
Boto là một AWS SDK cho Python. Nó cung cấp các chức năng dễ sử dụng có thể tương tác với các dịch vụ AWS như nhóm EC2 và S3.
Tải xuống đối tượng S3 bằng Python và Boto 3
Trong ví dụ sau, chúng tôi tải xuống một tệp từ một nhóm S3 đã chỉ định.
Đầu tiên, chúng ta phải tạo một ứng dụng khách S3 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)
download_file
phương thức nhận ba tham số:
Tham số đầu tiên là tên thùng trong S3. Tham số thứ hai là tệp (tên và phần mở rộng) mà chúng ta muốn tải xuống và tham số thứ ba là tên của tệp chúng ta muốn lưu dưới dạng.
Tải xuống tất cả các đối tượng S3 trong một nhóm được chỉ định
Trong ví dụ sau, chúng tôi tải xuống tất cả các đối tượng trong một nhóm S3 đã chỉ định.
Đoạn mã giả định rằng các tệp nằm ngay trong thư mục gốc của nhóm và không nằm trong thư mục con.
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)
Tải xuống tất cả các đối tượng trong một nhóm phụ S3
Đoạn mã sau cho biết cách tải xuống các tệp nằm trong thư mục con trong nhóm S3.
Giả sử các tệp nằm trong nhóm và vị trí sau:
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)
Tài liệu tham khảo
Tài liệu Boto 3