さくらのオブジェクトストレージをAWS SDK for PHP 2で

PHPからさくらのオブジェクトストレージを利用したくなり、AWS SDKを使えるか試したときのメモ。 AWS SDK for PHP v2 を使った。

list objects

composer.json

{
    "require": {
        "aws/aws-sdk-php": "2.*"
    }
}

list_objects.php

<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;

$client = S3Client::factory([
    'key'    => '<<アクセスキー>>',
    'secret' => '<<シークレットキー>>',
    'base_url'=> 'https://b.sakurastorage.jp/', //コンパネに表示されるURLからバケット名を除いたもの
]);

$iterator = $client->getIterator('ListObjects', [
    'Bucket' => '<<バケット名>>',
]);

foreach ($iterator as $object) {
    echo $object['Key'] . "\n";
}

put object

put_object.php

<?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;

$client = S3Client::factory([
    'key'    => '<<アクセスキー>>',
    'secret' => '<<シークレットキー>>',
    'base_url'=> 'https://b.sakurastorage.jp/', //コンパネに表示されるURLからバケット名を除いたもの
]);

$iterator = $client->getIterator('ListObjects', [
    'Bucket' => '<<バケット名>>',
]);

foreach ($iterator as $object) {
    echo $object['Key'] . "\n";
}
</pre>

get object

get_object.php

<?php
require 'vendor/autoload.php';

use Aws\S3\S3Client;

$client = S3Client::factory([
    'key'    => '<<アクセスキー>>',
    'secret' => '<<シークレットキー>>',
    'base_url'=> 'https://b.sakurastorage.jp/', //コンパネに表示されるURLからバケット名を除いたもの
]);

$result = $client->getObject([
    'Bucket' => '<<バケット名>>',
    'Key'    => 'data.txt'
]);

echo get_class($result['Body']) . "\n";
echo $result['Body'] . "\n";

delete object

delete_object.php

<?php
require 'vendor/autoload.php';

use Aws\S3\S3Client;

$client = S3Client::factory([
    'key'    => '<<アクセスキー>>',
    'secret' => '<<シークレットキー>>',
    'base_url'=> 'https://b.sakurastorage.jp/', //コンパネに表示されるURLからバケット名を除いたもの
]);

$result = $client->deleteObject([
    'Bucket' => '<<バケット名>>',
    'Key'    => 'data.txt',
]);

var_dump($result);

参考

http://aws.amazon.com/jp/developers/getting-started/php/ http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.S3.S3Client.html http://cloud-news.sakura.ad.jp/wp-content/uploads/2015/01/ObjectStorage_API.pdf