Symfoware

Symfowareについての考察blog

PHP aws-sdkでPathStyleを指定し、fake-s3からデータを取得する

S3のダミーサーバー「fake-s3」をインストールして、Pythonから接続してみました。
S3のテストサーバー「fake-s3」をインストールし、Python(boto)から接続する

Pythonで登録したデータをPHP(CodeIgniter 3)で取り出してみます。


PathStyle



fake-s3からデータを登録・取得するには、calling_formatにOrdinaryCallingFormatを指定し、
http://hostname/[bucket]という形式でアクセスする必要があります。

Class S3Client
マニュアル読んでも見つけられない。


「enable_path_style」という形式はSDK 1系での指定のようです。
http://docs.aws.amazon.com/AWSSDKforPHP/latest/index.html#m=AmazonS3/enable_path_style

aws/aws-sdk-php/src/Aws/S3/BucketStyleListener.phpを見てみると、
どうも「PathStyle」というパラメーターを「True」に指定すれば良い模様。

でも、今度はどうやって指定するかわからない...


悩んだ挙句、リクエスト実行時の引数に毎回指定すれば良さそう。

もう一点、factoryメソッドでコネクションを作成するとき、
「endpoint」でサーバーのURLを指定します。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     public function index() {
  4.         
  5.         $s3 = Aws\S3\S3Client::factory(array(
  6.             'credentials' => array(
  7.                 'key' => 'dummy_key',
  8.                 'secret' => 'dummy_access_key'
  9.             ),
  10.             'endpoint' => 'http://192.168.1.104:4567'
  11.         ));
  12.         
  13.         $result = $s3->getObject(array(
  14.             'Bucket' => 'test',
  15.             'Key' => 'test_key',
  16.             'PathStyle' => True
  17.         ));
  18.         
  19.         echo $result['Body'];
  20.         
  21.     }
  22. }





動くまでが長かった。

609_01.png


ちゃんとPythonから登録した文字列が取得出来ました。

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/03/31(火) 00:38:49|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Amazon SQS互換メッセージキュー「ElasticMQ」にPython(boto)からキューの登録 | ホーム | S3のテストサーバー「fake-s3」をインストールし、Python(boto)から接続する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1708-a69bba21
この記事にトラックバックする(FC2ブログユーザー)