AWS SDK dành cho PHP (GitHub: aws/aws-sdk-php/) bao gồm ứng dụng 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 PHP.
Trước khi bạn bắt đầu
Đảm bảo PHP 5.5.0 trở lên được cài đặt trên máy bạn định sử dụng.
Đảm bảo Composer được cài đặt trên toàn cầu. Xem Cài đặt trình soạn thảo > Toàn cầu.
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 PHP 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 AWS SDK cho PHP
Bước đầu tiên là cài đặt AWS SDK cho PHP thông qua Composer, một trình quản lý phụ thuộc phổ biến cho PHP. Chạy lệnh sau trong thư mục dự án của bạn
composer require aws/aws-sdk-php
Xem AWS SDK dành cho Tài liệu PHP > Cài đặt SDK để biết thêm hướng dẫn và phương pháp thay thế.
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 PHP 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).
require ‘vendor/autoload.php’;
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
$config =
[
‘version’ => ‘latest’,
‘region’ => ”,
‘endpoint’ => ‘[cluster-url]’,
‘credentials’ =>
[
‘key’ => ‘[access-key]’,
‘secret’ => ‘[secret-key]’,
],
];
$client = new \Aws\S3\S3Client($config);
Xem AWS SDK dành cho Tài liệu PHP > Tùy chọn cấu hình để biết thêm chi tiết về cách định cấu hình máy khách. 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.
Liệt kê các nhóm
Liệt kê tất cả các nhóm trong một cụm. Xem listBuckets() để biết thêm chi tiết, cú pháp và ví dụ.
Cú pháp
$client->listBuckets();
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 đó:
$result = $client->listBuckets();
foreach ($result['Buckets'] as $bucket) {
echo $bucket['Name'] . "\n";
}
Tạo bucket
Tạo một nhóm mới để bạn có thể lưu trữ các đối tượng trong đó. Để có nhãn vùng lưu trữ được chấp nhận, hãy xem lại hướng dẫn Tạo và quản lý vùng lưu trữ. Xem createBucket() để biết thêm chi tiết, cú pháp và ví dụ.
cú pháp:
$client->createBucket([
‘Bucket’ => ‘bucket-label’
]);
bucket: Nhãn của nhóm bạn muốn tạo.
Ví dụ
Xóa nhóm có nhãn “example-bucket”:
$client->deleteBucket(['Bucket' => 'example-bucket']);
Liệt kê bucket
cú pháp:
$client->listObjects([
'Bucket' => 'bucket-label',
'Prefix' => 'object-prefix'
]);
Nhóm [bắt buộc]: Nhãn của nhóm bạn muốn sử dụng.
Tiền tố: 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”:
$result = $client->listObjects(['Bucket' => 'example-bucket']);
foreach ($result['Contents'] as $object) {
echo $object['Key'] . "\n";
}
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”:
$result = $client->listObjects(['Bucket' => 'example-bucket']);
foreach ($result['Contents'] as $object) {
echo $object['Key'] . "\n";
}
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.
$result = $client->listObjects(['Bucket' => 'example-bucket','Prefix' => 'assets/']);
foreach ($result['Contents'] as $object) {
echo $object['Key'] . "\n";
}
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 putObject() để biết thêm chi tiết, cú pháp và ví dụ.
Cú pháp:
$client->putObject([
'Bucket' => 'bucket-label',
'Key' => 'object-name',
'SourceFile' => '/path/to/file.ext'
]);
- 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.
- SourceFile [bắt buộc]: Tên tệp và đường dẫn của tệp cần tải lên.
Tải tệp “file.txt” nằm trong cùng thư mục với tập lệnh PHP 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->putObject(['Bucket'=>'example-bucket','Key'=>'file.txt','SourceFile'=>'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->putObject(['Bucket'=>'example-bucket','Key'=>'images/logo.jpg','SourceFile'=>'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 getObject() để biết thêm chi tiết, cú pháp và ví dụ.
cú pháp:
$client->getObject([
'Bucket' => 'bucket-label',
'Key' => 'object-name',
'SaveAs' => '/path/to/new/file.ext'
]);
- Nhóm [bắt buộc]: Nhãn của nhóm chứa đối tượng được lưu trữ bên trong.
- Khóa [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.
- SaveAs [bắt buộc]: Tên file và đường dẫn file cần tạo.
Ví dụ
Tải đối tượng “file.txt”, được lưu trữ trong nhóm có tên “example-bucket”, xuống một tệp mới có tên “file.txt” trong cùng thư mục với tập lệnh PHP của bạn.
$client->getObject(['Bucket' => 'example-bucket','Key' => 'file.txt', 'SaveAs' => '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 deleteObject() để biết thêm chi tiết, cú pháp và ví dụ.
Cú pháp:
$client->deleteObject([ 'Bucket' => 'bucket-label', 'Key' => 'object-name' ]);
- Nhóm [bắt buộc]: Nhãn của nhóm chứa đối tượng được lưu trữ bên trong.
- Khóa [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->deleteObject(['Bucket' => 'example-bucket','Key' => 'file.txt']);
Đọc thêm
Bạn có thể tìm thấy tài liệu mở rộng về Máy khách S3 dành cho AWS SDK cho PHP (bao gồm nhiều phương thức, tham số và ví dụ khác) trong AWS SDK cho PHP (API 3.x) > Máy khách S3.
nguồn: https://techdocs.akamai.com/cloud-computing/docs/using-the-aws-sdk-for-php-with-object-storage#example-3