Сегодня коллеги попросили показать, как использовать AWS S3 PHP client в Облаке КРОК. В этой статье приведены примеры подключения к нашему объектному хранилищу, отображение бакетов, загрузка и листинг файлов в бакете. Все очень и очень просто.
Установка AWS S3 PHP client
Создайте директорию проекта и в ней composer.json следующего содержания:
mkdir my_project touch composer.json
Содержание composer.json
{ "name": "avm/croc_s3_test", "description": "CROC S3 Test", "repositories":[ { "type":"composer", "url":"https://wpackagist.org" } ], "require": { "aws/aws-sdk-php": "2.*" } }
Выполните установку библиотеки командой
composer install
В результате выполнения команды в директории проекта появится каталог vendor
, содержащий все необходимые для работы библиотеки.
Подключение к S3 Облака КРОК
Для того, чтобы подключиться к S3 Облака КРОК из вашего PHP приложения, создайте файл index.php
следующего содержания:
require './vendor/autoload.php'; use Aws\S3\S3Client; $client = S3Client::factory(array( 'credentials' => array( 'key' => 'amaksimov:amaksimov@cloud.croc.ru', 'secret' => 'your_secret' ), 'endpoint' => 'https://storage.cloud.croc.ru' ));
После этого вы можете использовать официальную документацию на AWS S3 PHP Client, используя доступные вам примеры. Тем не менее, базовые операции будет рассмотрены ниже.
Получение списка бакетов
Для получение списка бакетов, используйте следующий код:
print("\n\nList Buckets\n\n"); $result = $client->listBuckets(); foreach ($result['Buckets'] as $bucket) { // Each Bucket value will contain a Name and CreationDate echo "{$bucket['Name']} - {$bucket['CreationDate']}\n"; }
Загрузка файла в S3 бакет
Для загрузки файла в S3 хранилище используйте следующий пример:
print("\n\nUpload File\n\n"); // Upload an object by streaming the contents of a file // $pathToFile should be absolute path to a file on disk $bucket = 'avmaksimov'; $pathToFile = 'data_from_stream.txt'; $client->putObject(array( 'Bucket' => $bucket, 'Key' => $pathToFile, 'Body' => fopen($pathToFile, 'r+') ));
Поменяйте значение переменной $bucket
на название вашего бакета. В переменной $pathToFile
хранится полный или относительный путь до файла, который необходимо загрузить в S3. Загрузка потоковая.
Просмотр содержимого S3 бакета
Для просмотра содержимого бакета объектного хранилища, используйте пример ниже:
print("\n\nList objects\n\n"); $iterator = $client->getIterator('ListObjects', array( 'Bucket' => $bucket )); foreach ($iterator as $object) { echo $object['Key'] . "\n"; }
Полный пример index.php
:
Зпуск примера делается как обычно:
php index.php