Hướng dẫn get file from s3 bucket python - lấy tệp từ s3 bucket python

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

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 Client,

import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
0 và
import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
1 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ố

import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
2 và
import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
3 tùy chọn.

Danh sách các cài đặt

import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
2 hợp lệ cho các phương thức tải xuống được chỉ định trong thuộc tính
import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
5 của đối tượng
import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
6 tại
import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
7.

Tham số

import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
3 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
import boto3

s3 = boto3.client('s3')
s3.download_file('BUCKET_NAME', 'OBJECT_NAME', 'FILE_NAME')
3.

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')
with open('FILE_NAME', 'wb') as f:
    s3.download_fileobj('BUCKET_NAME', 'OBJECT_NAME', f)
0, 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')

Chúng ta có thể đọc tệp từ S3 mà không cần tải xuống không?

Đọc các đối tượng mà không tải chúng xuống tương tự, nếu bạn muốn tải lên và đọc các đoạn dữ liệu văn bản nhỏ như trích dẫn, tweet hoặc bài báo, bạn có thể làm điều đó bằng cách sử dụng phương thức tài nguyên S3 ()).you can do that using the S3 resource method put(), as demonstrated in the example below (Gist).

Làm cách nào để xem các tệp trong thùng S3?

Trong bảng điều khiển Amazon S3, chọn Xô S3 của bạn, chọn tệp bạn muốn mở hoặc tải xuống, chọn hành động, sau đó chọn mở hoặc tải xuống.Nếu bạn đang tải xuống một đối tượng, chỉ định nơi bạn muốn lưu nó.Quy trình lưu đối tượng phụ thuộc vào trình duyệt và hệ điều hành mà bạn đang sử dụng.. If you are downloading an object, specify where you want to save it. The procedure for saving the object depends on the browser and operating system that you are using.

Làm cách nào để tải xuống từ thùng s3 với boto3?

Tải xuống một tập tin từ một thùng S3..
Đị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 ..