AWS SDK for PHP で S3 アクセス
S3 からファイル取得まで出来たので function にまとめました。
復習
$ 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)
- stream wrapper があるので、そっち使った方が良いです。
- 続き > AWS SDK for PHP で S3 ファイル取得(2) - yoyaのメモ