Từ một ví dụ trong tài liệu chính thức, định dạng chính xác là:
import boto3
s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
s3.download_file['BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME']
Bạn cũng có thể sử dụng một đối tượng giống như tệp được mở ở chế độ nhị phân.
s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
Mã trong câu hỏi sử dụng s3 = boto3.client ['s3']
, không cung cấp bất kỳ thông tin đăng nhập nào.
Định dạng để xác thực một máy khách được hiển thị ở đây:
import boto3
client = boto3.client[
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
]
# Or via the Session
session = boto3.Session[
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
]
Và cuối cùng, bạn cũng có thể sử dụng lại phiên được xác thực mà bạn đã tạo để lấy xô, sau đó tải xuống sau đó tệp từ thùng.
from boto3.session import Session
import boto3
ACCESS_KEY = 'ABC'
SECRET_KEY = 'XYZ'
session = Session[aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY]
# session is authenticated and can access the resource in question
session.resource['s3']
.Bucket['bucket_name']
.download_file['k.png','/Users/username/Desktop/k.png']
Các phương thức được cung cấp bởi AWS SDK cho Python để tải xuống các tệp tương tự như các phương thức được cung cấp để tải lên các tệp.
Phương thức download_file
chấp nhận tên của xô và đối tượng để tải xuống và tên tệp để lưu tệp vào.
import boto3 s3 = boto3.client['s3'] s3.download_file['BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME']
Phương thức download_fileobj
chấp nhận một đối tượng giống như tệp có thể ghi. Đối tượng tệp phải được mở ở chế độ nhị phân, không phải chế độ văn bản.
s3 = boto3.client['s3'] with open['FILE_NAME', 'wb'] as f: s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
Giống như anh em họ tải lên của họ, các phương thức tải xuống được cung cấp bởi các lớp S3
s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
0, s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
1 và s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
2 và mỗi lớp cung cấp chức năng giống hệt nhau. Sử dụng bất kỳ lớp nào là thuận tiện.Cũng giống như các phương thức tải lên, các phương thức tải xuống hỗ trợ các tham số
s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
3 và s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
4 tùy chọn.Danh sách các cài đặt
s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
3 hợp lệ cho các phương thức tải xuống được chỉ định trong thuộc tính s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
6 của đối tượng s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
7 tại s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
8.Tham số
s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
4 của phương thức tải xuống được sử dụng cho cùng mục đích với phương thức tải lên. Các phương thức tải lên và tải xuống đều có thể gọi cùng một lớp s3 = boto3.client['s3', aws_access_key_id=... , aws_secret_access_key=...]
with open['FILE_NAME', 'wb'] as f:
s3.download_fileobj['BUCKET_NAME', 'OBJECT_NAME', f]
f.seek[0]
4. Ví dụ này cho thấy cách tải xuống một tệp từ xô S3, sử dụng s3.bucket.doad_file [].S3.Bucket.download_file[].
Điều kiện tiên quyết
Để thiết lập và chạy ví dụ này, trước tiên bạn phải:
- Định cấu hình thông tin đăng nhập AWS của bạn, như được mô tả trong QuickStart.
- Tạo một thùng S3 và tải một tệp lên thùng.
- Thay thế các giá trị khóa và các giá trị khóa trong đoạn mã bằng tên của nhóm của bạn và khóa cho tệp đã tải lên.BUCKET_NAME and KEY values in the code snippet with the name of your bucket and the key for the uploaded file.
Tải xuống một tập tin
Ví dụ dưới đây cố gắng tải xuống một đối tượng S3 vào một tệp. Nếu dịch vụ trả về lỗi 404, nó sẽ in một thông báo lỗi cho biết rằng đối tượng không tồn tại.
import boto3 import botocore BUCKET_NAME = 'my-bucket' # replace with your bucket name KEY = 'my_image_in_s3.jpg' # replace with your object key s3 = boto3.resource['s3'] try: s3.Bucket[BUCKET_NAME].download_file[KEY, 'my_local_image.jpg'] except botocore.exceptions.ClientError as e: if e.response['Error']['Code'] == "404": print["The object does not exist."] else: raise