— это официальный SDK от Amazon для работы с S3 на языке PHP. Он позволяет выполнять базовые операции с объектами в S3: загрузку, скачивание, удаление, вывод списка объектов, а также формирование подписанных ссылок.
Установка
Установите библиотеку с помощью Composer:
composer require aws/aws-sdk-php
После установки библиотека будет расположена в директории vendor. Для ее использования подключите библиотеку:
require 'vendor/autoload.php';
Для корректной работы SDK требуется установленный PHP-модуль ext-xml.
Проверьте наличие модуля командой:
php -m | grep xml
Если модуль не установлен, установите его:
- Debian/Ubuntu:
sudo apt install php-xml - Alpine:
apk add php8-xml - RHEL/CentOS:
sudo yum install php-xml
Настройка доступа
Реквизиты доступа можно задать несколькими способами.
Через файлы ~/.aws/config и ~/.aws/credentials
При использовании в домашней директории пользователя автоматически создается папка .aws с файлами, содержащими данные для подключения к S3. При необходимости эту папку и файлы можно создать вручную — без использования AWS CLI. Файл ~/.aws/credentials должен содержать такие данные:
[default]
aws_access_key_id = <ACCESS_KEY>
aws_secret_access_key = <SECRET_KEY>
И ~/.aws/config:
[default]
output = json
endpoint_url = https://s3.twcstorage.ru
region = ru-1
Через переменные окружения
Можно задать переменные:
export AWS_ACCESS_KEY_ID=<ACCESS_KEY>
export AWS_SECRET_ACCESS_KEY=<SECRET_KEY>
И использовать SDK без дополнительной настройки:
$s3 = new Aws\S3\S3Client([
'region' => 'ru-1',
'version' => 'latest',
'endpoint' => 'https://s3.twcstorage.ru',
]);
Через код
Можно явно задать реквизиты при создании клиента:
use Aws\S3\S3Client;
$s3 = new S3Client([
'region' => 'ru-1',
'version' => 'latest',
'endpoint' => 'https://s3.twcstorage.ru',
'credentials' => [
'key' => '<ACCESS_KEY>',
'secret' => '<SECRET_KEY>',
],
]);
Использование другого профиля AWS CLI
Если в ~/.aws/credentials настроено несколько профилей, можно указать нужный:
$s3 = new S3Client([
'profile' => 'myprofile',
'region' => 'ru-1',
'version' => 'latest',
'endpoint' => 'https://s3.twcstorage.ru',
]);
Пример
Пример ниже демонстрирует базовые операции с объектами:
- загрузка файла в бакет;
- скачивание файла;
- удаление объекта.
Предварительно создайте файл с именем example.txt в той же директории, где находится скрипт.
Код скрипта:
<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\Exception\AwsException;
$bucket = 'имя_бакета';
$key = 'example.txt';
$localUpload = 'example.txt';
$localDownload = 'downloaded_example.txt';
$s3 = new S3Client([
'region' => 'ru-1',
'version' => 'latest',
'endpoint' => 'https://s3.twcstorage.ru',
'credentials' => [
'key' => '<ACCESS_KEY>',
'secret' => '<SECRET_KEY>',
],
]);
try {
// 1. Загрузка файла в бакет
if (file_exists($localUpload)) {
echo "Загрузка файла $localUpload...\n";
$s3->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $localUpload,
]);
echo "Загрузка завершена.\n";
} else {
echo "Файл $localUpload не найден. Пропуск загрузки.\n";
}
// 2. Получение списка объектов
echo "\nСодержимое бакета:\n";
$result = $s3->listObjectsV2([
'Bucket' => $bucket,
]);
if (!empty($result['Contents'])) {
foreach ($result['Contents'] as $object) {
echo "- {$object['Key']}\n";
}
} else {
echo "(Бакет пустой)\n";
}
// 3. Скачивание файла
echo "\nСкачивание $key в $localDownload...\n";
$s3->getObject([
'Bucket' => $bucket,
'Key' => $key,
'SaveAs' => $localDownload,
]);
echo "Скачивание завершено.\n";
// 4. Удаление файла
echo "\nУдаление $key из бакета...\n";
$s3->deleteObject([
'Bucket' => $bucket,
'Key' => $key,
]);
echo "Удаление завершено.\n";
} catch (AwsException $e) {
echo "Ошибка: {$e->getMessage()}\n";
}
Дополнительные примеры использования SDK вы можете найти в нашем репозитории GitHub.