PHPでZendFrameworkを使ってAmazonS3にアクセスする

AWS SDKを使った事例はググれば結構出てくるのですが、
ZendFrameworkのZend_Service_Amazon_S3での利用は
あんまり見つからなかったので
ざっくり使い方メモ。

<?php
require_once "Zend/Service/Amazon/S3.php";

class amazonS3 {
  private $_s3;
  private $_key = "APIキー";
  private $_secret = "APIシークレットキー";
  private $_bucket = "バケット名";

  public function __construct() {
    $this->_s3 = new Zend_Service_Amazon_S3($this->_key, $this->_secret);
  }

  /**
   * ファイル一覧取得
   * $path 取得したいS3上のディレクトリ ex:images/
   */
  public fucntion getFileList($path) {
    $ret = array();
    // prefixにディレクトリ名を指定してそれ下のファイルを取得
    $files = $this->_s3->getObjectsByBucket(
      $this->_bucket, 
      array("prefix" => $path)
    );
    // 取得したファイルにディレクトリも含まれるためファイル名だけにして抽出
    foreach($files as $file) {
      $file_name = str_replace($path, "", $file);
      if (strlen($file_name)) {
        $ret[] = $file_name;
      }
    }
    return $ret;
  }

  /**
   * ファイルアップロード
   * $path アップロードしたいS3上のディレクトリ ex:images/
   * $file アップロードしたいファイル ex:/home/user/logo.png
   */
  public fucntion uploadFile($path, $file) {
    $this->_s3->putObject(
      $path, 
      file_get_contents($file), 
      array(Zend_Service_Amazon_S3::S3_ACL_HEADER => Zend_Service_Amazon_S3::S3_ACL_PUBLIC_READ)
    );
  }

  /**
   * ファイル削除
   * $file 削除したいS3上のファイル ex:images/logo.png
   */
  public fucntion removeFile($file) {
    $this->_s3->removeObject($file);
  }

}


これだけだった。簡単。