SDK Python AWS của Amazon, được gọi là boto3, bao gồm máy khách S3 cho phép truy cập vào Bộ lưu trữ đối tượng tương thích với S3 của Linode trong ứng dụng hoặc tập lệnh Python.
Trước khi bạn bắt đầu
Đảm bảo Python 3.6 trở lên được cài đặt trên máy bạn định sử dụng. Đối với các hệ thống dựa trên Linux, hãy xem hướng dẫn Cách cài đặt Python 3 để biết hướng dẫn cài đặt.
Hướng dẫn này giả định rằng bạn có hiểu biết cơ bản về phát triển Python và cảm thấy thoải mái khi tích hợp các mẫu mã vào ứng dụng của mình.
Người ta cũng giả định rằng bạn có hiểu biết cơ bản về các khái niệm Lưu trữ đối tượng, bao gồm cả các tệp được lưu trữ trong một hệ thống phẳng (không phân cấp) cùng với siêu dữ liệu phong phú.
Cài đặt boto3
Bước đầu tiên là cài đặt AWS SDK cho Python (boto3) thông qua pip, trình quản lý gói của python được cài đặt theo mặc định trên các phiên bản Python gần đây.
pip3 install boto3
Khởi tạo ứng dụng khách
Để truy cập các bộ chứa và đối tượng Lưu trữ đối tượng, trước tiên bạn cần định cấu hình thông tin xác thực của mình và khởi tạo phiên máy khách S3.
- Tạo khóa truy cập và khóa bí mật cho Lưu trữ đối tượng thông qua Trình quản lý đám mây bằng cách làm theo hướng dẫn Quản lý khóa truy cập.
- Thêm mã sau vào tập lệnh python của bạn, thay thế [khóa truy cập] và [khóa bí mật] bằng các giá trị được tạo ở bước trước. Đồng thời thay thế [url cụm] bằng URL cụm tương ứng với trung tâm dữ liệu mà nhóm của bạn nằm trong đó (được liệt kê trên trang Truy cập nhóm và tệp thông qua URL).
import boto3
linode_obj_config = {
"aws_access_key_id": "[access-key]",
"aws_secret_access_key": "[secret-key]",
"endpoint_url": "[cluster-url]",
}
client = boto3.client("s3", **linode_obj_config)
Nếu bạn có ý định chia sẻ mã này với người khác, bạn nên tóm tắt cả khóa truy cập và khóa bí mật. Có một số phương pháp để thực hiện việc này, bao gồm sử dụng tệp cấu hình AWS, biến môi trường thông qua shell hoặc tệp cấu hình tùy chỉnh dành riêng cho môi trường. Xem Tài liệu Boto3 > Cấu hình.
Liệt kê các nhóm
Liệt kê tất cả các nhóm trong một cụm. Xem list_buckets() để biết thêm chi tiết, cú pháp và ví dụ.
cú pháp
client.list_buckets()
Ví dụ
Liệt kê tất cả các nhóm trên tài khoản trong cụm được chỉ định trước đó:
client.create_bucket(Bucket='example-bucket')
Liệt kê các đối tượng
Xuất ra tất cả các đối tượng trong một nhóm (và với một tiền tố nhất định, nếu được chỉ định). Xem list_objects() để biết thêm chi tiết, cú pháp và ví dụ.
Cú pháp
client.list_objects(
Bucket='bucket-label',
Prefix='object-prefix')
- Bucket [bắt buộc]: Nhãn của nhóm bạn muốn sử dụng.
- Prefix: Tiền tố tùy chọn (hoặc đường dẫn giả) của các đối tượng bạn liệt kê để xem trong nhóm. Để xem tất cả các đối tượng, hãy bỏ qua tham số Tiền tố.
Ví dụ
Liệt kê tất cả các đối tượng: Liệt kê tất cả các đối tượng trong nhóm có tên là “example-bucket”:
response = client.list_objects(Bucket='example-bucket')
for object in response['Contents']:
print(object['Key'])
Liệt kê tất cả các đối tượng trong một “thư mục” cụ thể: Liệt kê tất cả các đối tượng được lưu trữ trong thư mục “assets/” trong nhóm có tên là “example-bucket”. Hãy nhớ rằng các đối tượng không thực sự được lưu trữ trong các thư mục nhưng giá trị tiền tố cho phép chúng xuất hiện trong một cấu trúc.
response = client.list_objects(Bucket='example-bucket', Prefix='assets/')
for object in response['Contents']:
print(object['Key'])
Tải tệp lên làm đối tượng
Tải tệp lên dưới dạng đối tượng được lưu trữ trong nhóm được chỉ định. Xem upload_file() để biết thêm chi tiết, cú pháp và ví dụ.
client.upload_file(
Filename='/path/to/file.ext',
Bucket='bucket-label',
Key='object-name')
- Filename [bắt buộc]: Tên file và đường dẫn file cần upload.
- Nhóm [bắt buộc]: Nhãn của nhóm bạn muốn lưu trữ tệp bên trong.
- Khóa [bắt buộc]: Tên của đối tượng bạn muốn tạo, bao gồm mọi tiền tố/đường dẫn.
Ví dụ
Tải tệp “file.txt”, nằm trong cùng thư mục với tập lệnh python của bạn, lên nhóm có tên là “example-bucket”. Đặt tên đối tượng mới này là “file.txt”, giống với tên tệp.
client.upload_file(Filename='file.txt', Bucket='example-bucket', Key='file.txt')
Tải tệp “logo.jpg”, nằm trong thư mục chính, lên nhóm có tên là “example-bucket”. Đặt tên đối tượng mới này là “images/logo.jpg”, cho phép nó được cấu trúc trong một thư mục giả.
client.upload_file(Filename='/Users/user/logo.jpg', Bucket='example-bucket', Key='images/logo.jpg')
Tải một đối tượng xuống một tập tin
Tải đối tượng được chỉ định xuống một tệp mới trên hệ thống của bạn. Xem download_file() để biết thêm chi tiết, cú pháp và ví dụ.
Cú pháp
client.download_file(
Bucket='bucket-label',
Key='object-name',
Filename='/path/to/file.ext')
bucket[bắt buộc]: Nhãn của nhóm chứa đối tượng được lưu trữ bên trong.
key[bắt buộc]: Tên của đối tượng bạn muốn tải xuống, bao gồm mọi tiền tố/đường dẫn.
Filename [bắt buộc]: Tên file và đường dẫn file cần tạo.
Ví dụ
Tải xuống đối tượng “file.txt”, được lưu trữ trong nhóm có tên là “example-bucket”, xuống một tệp mới có tên là “file.txt” trong cùng thư mục với tập lệnh python của bạn.
client.download_file(Bucket='example-bucket', Key='file.txt', Filename='file.txt')
Xóa một đối tượng hoặc thư mục
Xóa một đối tượng khỏi một thùng. Xem delete_object() để biết thêm chi tiết, cú pháp và ví dụ.
client.delete_object(
Bucket='bucket-label',
Key='object-name')
- Bucket [bắt buộc]: Nhãn của nhóm chứa đối tượng được lưu trữ bên trong.
- Key [bắt buộc]: Tên của đối tượng bạn muốn xóa, bao gồm mọi tiền tố/đường dẫn.
Ví dụ
Xóa đối tượng “file.txt”, được lưu trữ trong nhóm có tên là “example-bucket”:
client.delete_object(Bucket='example-bucket', Key='file.txt')
nguồn: https://techdocs.akamai.com/cloud-computing/docs/using-the-aws-sdk-for-python-boto3-with-object-storage