Tải lên thư mục Python

Phương thức upload_file chấp nhận tên tệp, tên bộ chứa và tên đối tượng. Phương pháp xử lý các tệp lớn bằng cách chia chúng thành các phần nhỏ hơn và tải lên từng phần song song

import logging
import boto3
from botocore.exceptions import ClientError
import os


def upload_file(file_name, bucket, object_name=None):
    """Upload a file to an S3 bucket

    :param file_name: File to upload
    :param bucket: Bucket to upload to
    :param object_name: S3 object name. If not specified then file_name is used
    :return: True if file was uploaded, else False
    """

    # If S3 object_name was not specified, use file_name
    if object_name is None:
        object_name = os.path.basename(file_name)

    # Upload the file
    s3_client = boto3.client('s3')
    try:
        response = s3_client.upload_file(file_name, bucket, object_name)
    except ClientError as e:
        logging.error(e)
        return False
    return True

Phương thức upload_fileobj chấp nhận một đối tượng giống như tệp có thể đọc được. Đố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", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")

Các phương thức upload_fileupload_fileobj được cung cấp bởi các lớp S3

s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
1,
s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
2 và
s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
3. Chức năng phương thức được cung cấp bởi mỗi lớp là giống hệt nhau. Không có lợi ích nào đạt được bằng cách gọi phương thức của một lớp so với phương thức của lớp khác. Sử dụng bất kỳ lớp nào thuận tiện nhất

Tham số ExtraArgs

Cả upload_fileupload_fileobj đều chấp nhận tham số

s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
6 tùy chọn có thể được sử dụng cho nhiều mục đích khác nhau. Danh sách cài đặt
s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
6 hợp lệ được chỉ định trong thuộc tính
s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
8 của đối tượng
s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
9 tại

Cài đặt

s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
6 sau đây chỉ định siêu dữ liệu để đính kèm vào đối tượng S3

s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'Metadata': {'mykey': 'myvalue'}}
)

Cài đặt

s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
6 sau đây gán giá trị ACL (danh sách kiểm soát truy cập) đóng hộp 'đọc công khai' cho đối tượng S3

s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'ACL': 'public-read'}
)

Tham số

s3 = boto3.client('s3')
with open("FILE_NAME", "rb") as f:
    s3.upload_fileobj(f, "BUCKET_NAME", "OBJECT_NAME")
6 cũng có thể được sử dụng để đặt tùy chỉnh hoặc nhiều ACL

s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={
        'GrantRead': 'uri="http://acs.amazonaws.com/groups/global/AllUsers"',
        'GrantFullControl': 'id="01234567890abcdefg"',
    }
)

Tham số gọi lại

Cả upload_fileupload_fileobj đều chấp nhận tham số

s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'Metadata': {'mykey': 'myvalue'}}
)
6 tùy chọn. Tham số tham chiếu đến một lớp mà SDK Python gọi không liên tục trong quá trình chuyển giao

Gọi một lớp Python thực thi phương thức

s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'Metadata': {'mykey': 'myvalue'}}
)
7 của lớp. Đối với mỗi lần gọi, lớp được truyền số byte được truyền cho đến thời điểm đó. Thông tin này có thể được sử dụng để thực hiện theo dõi tiến độ

Cài đặt

s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'Metadata': {'mykey': 'myvalue'}}
)
6 sau đây hướng dẫn SDK Python tạo một phiên bản của lớp
s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'Metadata': {'mykey': 'myvalue'}}
)
9. Trong quá trình tải lên, phương thức
s3.upload_file(
    'FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME',
    ExtraArgs={'Metadata': {'mykey': 'myvalue'}}
)
7 của đối tượng sẽ được gọi không liên tục