PHPでS3のデータ取得
IAMの設定とかS3のバケットの設定とかはが終わっている前提で、aws-sdk-phpを突っ込んで開発準備を行う。
公開ディレクトリトップにて実行
$ composer require aws/aws-sdk-php $ curl -sS https://getcomposer.org/intaller | php $ php -d memory_limit=1 composer.phar require aws/aws-sdk-php
上記でaws-sdkを利用できるようにする。
このコンポーネント一覧を利用してS3と通信する。後述するuseするだけなのでそんなに難しい事はない。
一覧を取得する
require '../vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $key = "S3に設定したIAMのキー"; $secret = "上記のキーのsecret"; # リージョンは利用しているリージョン名を記述。自分は東京なので以下 $region = "ap-northeast-1"; $bucket = "S3バケット名"; # prefixは閲覧したいディレクトリ(概念)のデータ一覧を取得する。 # なければ上から全部取得してくる # サンプルは /hoge/fuga/ 以下のファイル全てを取得してくるようになる。 $prefix = "hoge/fuga/"; $S3 = S3Client::factory([ 'credentials' => [ 'key' => $key, 'secret' => $secret ], 'region' => $region, 'version' => 'latest' ]); $list = $S3->listObjects([ 'Bucket' => $bucket, 'Prefix' => $prefix, 'Delimiter' => "/" ]); foreach ($list['Contents'] as $img) { if($i > 0){ echo "画像:<img width=\"300\" src=\"https://s3-ap-northeast-1.amazonaws.com/".$bucket."/".$img['key']."\" /><br />"; } $i++; }
単純にデータを取得する場合はこんな感じで取れる。
概念の違いでディレクトリと言う物はコンソールからは確認できるが、いわばタグのような物なので厳密にはディレクトリ分けにはなっていない。
第一弾として取る事に関してはコレでいけたので、次回はアップロードを作ってみる。