S3 Stream Wrapperがすごく便利
みんな大好きAWSですが、S3 Stream Wrapperがすごく便利だったので紹介します。
S3 Stream Wrapperって?
PHP: サポートするプロトコル/ラッパー - Manual
PHPではStreamWraperという仕組みがあって、ファイルへのアクセスをいい感じにラップしてくれたりします。file_get_contentsなんかではおなじみですが、HTTPとかローカルファイルシステムとか気軽にアクセスすることができますね。
S3 Steram Wrapperを使うと、他のファイルシステムと同様にS3へアクセスすることができます。
利用方法
AWS SDK for PHP | AWS
まずは上記からSDKをダウンロードしましょう。ダウンロードしたら、展開して適当なファイル名に変更してください。あとは下記のパスにあるドキュメントに書いてあるので、すぐわかると思います。
/path/to/sdk/_docs/STREAMWRAPPER_README.html
実際に試してみました。まずは、認証まわりの設定をします。AWSの認証情報が必要なのでコンソールから引っ張ってきてください。
<?php if (!class_exists('CFRuntime')) die('No direct access allowed.'); CFCredentials::set(array( 'development' => array( 'key' => 'development-key', 'secret' => 'development-secret', 'default_cache_config' => '', 'certificate_authority' => false ), // Specify a default credential set to use if there are more than one. '@default' => 'development' ));
あとはアップロードするためのコードです。これだけでOK!
<?php require_once 'aws/sdk.class.php'; $s3 = new AmazonS3(); $s3->register_stream_wrapper(); $file = 's3://your_bucket_name/foobar.' . time() . 'txt'; if (file_put_contents($file, time())){ echo "ok"; } var_dump(file_get_contents($file)); ?>
すごく簡単ですね!あとは実行するだけです。
株式会社nanapiではエンジニアを募集しています!
http://nanapi.co.jp/recruit
一緒にがんばりましょう!