WORKING WITH S3 USING AWS SDK CLIENT IN PHP

 0. Install php

1. INSTALL composer

Go to the directory from which we will work with php..
Load composer.phar

2. INSTALL aws/aws-sdk-php PACKAGE

php composer.phar require aws/aws-sdk-php


3. GET PROFILE DATA

Log in to the service administration panel at: https://cmc.objstor.cloud4u.com:8443/ using your credentials received from Cloud4Y technical support after purchasing the service or from your S3 administrator.


S3 AWS

 

In the administration panel, in the profile properties, find out and remember (write down) ACCESS KEY ID, SECRET KEY

S3 AWS


4. CREATE PHP FILE, SPECIFY KEY AND SECRET, INITIATE S3CLIENT OBJECT

<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\ObjectUploader;
use Aws\S3\MultipartUploader;
use Aws\Exception\MultipartUploadException;

#Создадим экземпляр s3
$s3 = new S3Client([
    'version' 	=> 'latest',
    'region'  	=> 'msk',
    'use_path_style_endpoint' => true,
    'credentials' => [
        'key'	=> 'KEY',
        'secret' => 'SECRET',
    ],
    'endpoint' => 'https://s3.objstor.cloud4u.com'
]);


5. CREATE bucket

<?php

#Создим bucket через api
$s3->createBucket(['Bucket' => 'my-new-bucket']);


#Проверим появился ли новый бакет в общем списке
$listBuckets = $s3->listBuckets();
echo '<pre>';
var_export($listBuckets->toArray()['Buckets']);
echo '</pre>';


THE bucket IS SUCCESSFULLY CREATED

S3 AWS


ALL OF THE ABOVE ACTIONS, WE CAN ALSO CHECK IN THE CONTROL PANEL

S3 AWS


6. ADD AN OBJECT TO THE bucket

<?php

#Загрузим объект из строки
$s3->putObject([
    'Bucket' => 'my-new-bucket',
    'Key' => 'MyNewObjectForDelete',
    'Body' => 'MyObjectBody1',
]);

#Получим объект
$result = $s3->getObject([
    'Bucket' => 'my-new-bucket',
    'Key' => 'MyNewObjectForDelete'
]);

echo '<pre>';
var_export($result->toArray());
echo '</pre>';

After running the php script we see that the object has been created

S3 AWS


7. DELETE AN OBJECT 

<?php

echo '<h2>До</h2>';
#Получим список объектов
$result = $s3->listObjects([
    'Bucket' => 'my-new-bucket'
]);
echo '<pre>';
var_export($result->toArray()['Contents']);
echo '</pre>';


#Удалим объект
$s3->deleteObject([
    'Bucket' => 'my-new-bucket',
    'Key' => 'MyNewObjectForDelete'
]);


echo '<h2>После</h2>';
#Получим список объектов
$result = $s3->listObjects([
    'Bucket' => 'my-new-bucket'
]);
echo '<pre>';
var_export($result->toArray()['Contents']);
echo '</pre>';

out of two objects, there is one left

S3 AWS

S3 AWS


8. OBJECT UPLOAD WITH MULTIPARTUPLOADER, SUITABLE FOR FILES FROM 5MB TO 5TB

<?php

#Using stream instead of file path
    $source = './bff-107mb.zip';
    $uploader = new MultipartUploader($s3, $source, [
        'bucket' => $bucketName,
        'key' => 'my-file.zip',
    ]);
#Восстановление после ошибок
    do {
        try {
            $result = $uploader->upload();
        } catch (MultipartUploadException $e) {
            $uploader = new MultipartUploader($s3, $source, [
                'state' => $e->getState(),
            ]);
        }
    } while (!isset($result));

# Прервать загрузку, если она не удалась
    try {
        $result = $uploader->upload();
    } catch (MultipartUploadException $e) {
#State содержит "Bucket", "Key", и "UploadId"
        $params = $e->getState()->getId();
        $result = $s3->abortMultipartUpload($params);
    }

    echo '<pre>';
    var_export($result->toArray());
    echo '</pre>';
}


9. IF YOU ARE NOT SURE WHETHER TO CHOOSE PUTOBJECT OR MULTIPARTUPLOADER TO LOAD AN OBJECT, USE OBJECTUPLOADER. OBJECTUPLOADER WILL UPLOAD A LARGE FILE TO S3 USING PUTOBJECT OR MULTIPARTUPLOADER UNDER THE BONNET, MAKING ITS OWN CHOICE BASED ON THE SIZE OF THE OBJECT.

<?php

$source = fopen('./bff-107mb.zip', 'rb');

$uploader = new ObjectUploader(
    $s3,
    'my-new-bucket',
    'file.zip',
    $source
);

do {
    try {
        $result = $uploader->upload();
        if ($result["@metadata"]["statusCode"] == '200') {
            print('<p>File successfully uploaded to ' . $result["ObjectURL"] . '.</p>');
        }
        print($result);
    } catch (MultipartUploadException $e) {
        rewind($source);
        $uploader = new MultipartUploader($s3, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));

fclose($source);


10. ThE File IS successfully uploaded.

Find more information about aws-sdk-php at github

 

Have you tried Virtual cloud servers by Cloud4Y? Not yet?

Leave a request and get 10 days free trial access..

  • 28 Users Found This Useful
Was this answer helpful?

Related Articles

How to start working with the object storage

CLOUD4Y OBJECTIVE STORAGE Our object storage is built on Cloudian platform and supports Amazon...

How to get started with S3 Cloud4y using AWS Command Line Interface (CLI)

1) Install AWS CLI - On Windows, load AWSCLI-64 or AWSCLI-32 bit installer for Windows and set...

7. Billing in S3 Object Storage

  Billing in S3 includes the following parameters The amount of space used Number of...

4.Способы работы с объектным хранилищем через различное программное обеспечение

Подготовка идентификационных данных 1. Авторизуйтесь в объектном хранилище Cloud4Y:...

Access to S3 from the VCD cloud dashboard

The VMware vCloud Director® Object Storage Extension™ plug-in enables Cloud4y users to access...