• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar

Dev-Ops-Notes.RU

Python, Docker, Kubernetes, Jenkins, GCP и AWS

  • Учебник Kubernetes
  • Учебник Docker
  • Скидка на курсы Udemy
  • Релокация в США
  • Для авторов

Использование AWS S3 PHP client в Облаке КРОК

Сегодня коллеги попросили показать, как использовать 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

 

Related

Primary Sidebar

Найти статью

Лучшее DevOps обучение

Новые статьи

Основные команды Docker

Шпаргалка по командам Docker

Об авторе

Expert in virtualization and cloud computing
Facebook | LinkedIn | Twitter | GitHub

Мы в соц сетях

Tags

angular ansible aws azure backup big data bigdata bot cdn chef comandwire continuous integration coreos croc dcos deep learning development devops digitalocean dns docker ecs etcd flask github google cloud javascript jenkins kubernetes linux machine learning networks nginx packer php python security serverless storage tensorflow terraform windows server wordpress крок релокация в США

sponsored