もふもふ技術部

AWS SDK for PHPを使ってS3にファイルをアップロードする


以前にrubyからちょろっといじったことがあったのですが、phpからやったことがなかったのでやってみます。

本当はCakePHPから使う予定なんですが、実験的に動かしてみる場合、なるべく原始的な使い方から入る方が理解が深まる気がしてる。

事前準備

ではやっていきますね。

まずはAWSコンソールからテスト用のbucketを作っておきます。ここは難しいことはないので説明は省略。s3phpって名称で作りました。
s3php_01

次にAPIアクセス用にAccess KeyとSecret Access Keyを取得します。
s3php_02

「Create New Access Key」を選択すると新しいKeyが生成されてキー文字列が表示されるのでどこかにコピペしておきましょう。ん?あとからSecret Access Keyを確認しようとしたら見当たらない。

一度しか見れないということだろうか。まあ一度deleteすればまた新しいのが発行できるので問題はないのかな。

あと、Note: You can have a maximum of two access keys (active or inactive) at a time.と出ている。どうやらぼくの場合、Access Keyは2つまでしか発行できない模様。

続いて、AWS SDK for PHP(aws.phar)を落としてきます。
http://aws.amazon.com/jp/sdkforphp2/

コードはこんな感じで

apacheにのせて動かします。 非常に簡素なもので、ファイルアップロードフォームがあるだけです。

下記のエントリを参考にしました。
http://www.lancork.net/2013/09/aws-sdk-for-php-2-sample/

index.php

upload.php

index.php, upload.phpと同ディレクトリに先程ダウンロードしたaws.pharを配置します。

http://localhost/index.phpにアクセスして確認。

アップロードしてみるとsdkを使用している部分でpermission deniedが発生

どうやらパーミッションが600になってる。644に変更しましょう。

気を取り直して、再度アップロードしたらうまくいった。
こんな感じでちゃんとS3に指定したファイル名で保存されてました!
s3php_03

The following two tabs change content below.
原田 敦

原田 敦

日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。