AWS SDK for PHP で S3 アクセス

S3 からファイル取得まで出来たので function にまとめました。

復習

  • PEAR を使った AWS SDK のインストール方法
$ sudo pear config-set auto_discover 1
$ sudo pear channel-discover pear.amazonwebservices.com
$ sudo pear install aws/sdk

S3_GetFile.php

環境変数から取る方式です。

export AWS_KEY="あなたのキー"
export AWS_SECRET="あなたの秘密キー"

等としておきます。

<?php

// ref) http://docs.aws.amazon.com/aws-sdk-php/guide/latest/service-s3.html
// ref) s3://bucket/file scheme > http://aws.amazon.com/jp/cli/

require_once('AWSSDKforPHP/aws.phar'); // PEAR

use Aws\S3\S3Client;

function S3_GetFile($url) {
    if (preg_match('/^s3:\/\/([^\/]+)\/(.+)/', $url, $matches) !== 1) {
        throw new Exception("Invalid S3 File URL:$url");
    }
    list($line, $bucket, $key) = $matches;

    $client = S3Client::factory(array('key'    => getenv('AWS_KEY'),
                                      'secret' => getenv('AWS_SECRET')));
    $result = $client->getObject(array('Bucket' => $bucket, 'Key' => $key));

    return (string) $result['Body'];
}

使い方

<?php

require_once('S3_GetFile.php');

$url = 's3://yoya/test/logo64.png';

try {
    $data = S3_GetFile($url);
    echo $data;
} catch (Exception $e) {
    fprintf(STDERR, $e->getMessage().PHP_EOL);
}

追記 (2014/02/01)