My Photo

« [CentOS 6.6]PHPのインストール | Main | certutilでBASE64エンコード/デコード »

February 02, 2015

AWS SDK for PHP を使ってObject Storageにアクセスする

Object Storage はAmazon S3互換のストレージサービスで、REST APIを使ってファイルをやり取りする。
NTTコミュニケーションズ、IDCフロンティアなどがサービスを提供している。Niftyもやってるっけ?
S3互換ということでAmazonが提供する AWS SDK も使えるんじゃないかと思ってやってみたら、すんなりできた。
以下、動くものではないけど、こんな感じというサンプルコード。
実際に試したのは去年の夏だか秋だかで、バージョンは2.6.16を使っていた。現在の2.7.xが出ているようだが、それは試していない。

ファイルのダウンロード

// SDKの読み込み
require_once <AWS SDK for PHPのパス>;

// 名前空間のインポート
use Aws\S3\S3Client;

$s3 = S3Client::factory(
	array(
		'key'     => <Object StorageのアクセスキーID>
		'secret'  => <Object Storageの秘密鍵>,
		'base_url'=> <Object StorageのエンドポイントのURL>
	)
);
	
try {
	$result = $s3->getObject(
		array(
			'Bucket' => $bucket,
			'Key' => $key
		)
	);
	
	// 適当なファイル名を付けてクライアントで保存してもらうようにする
	header('Content-Type: application/octet-stream');
	$filename = strftime('%Y%m%d%H%M%S') . '.dat';
	header("Content-Disposition: attachment; filename={$filename}");
	print($result['Body']);
	
} catch (Exception $e) {
	echo $e->getMessage();
}

ファイルのアップロード

// SDKの読み込み
require_once <AWS SDK for PHPのパス>;

// 名前空間のインポート
use Aws\S3\S3Client;

// S3オブジェクトの作成
$s3 = S3Client::factory(
	array(
		'key' => <Object StorageのアクセスキーID>
		'secret' => <Object Storageの秘密鍵>,
		'base_url'=> <Object StorageのエンドポイントのURL>
	)
);

try {
	// ファイルのアップロード
	$result = $s3->putObject(
		array(
			'Bucket'       => <バケット名>,
			'Key'          => <ファイル名>,
			'SourceFile'   => <アップロードするファイルのパス>,
			'ContentType'  => <アップロードするファイルのMIMEタイプ>
		)
	);
	
} catch (Exception $e) {
	echo $e->getMessage();
}

ファイルの削除

// SDKの読み込み
require_once <AWS SDK for PHPのパス>;

// 名前空間のインポート
use Aws\S3\S3Client;

// S3オブジェクトの作成
$s3 = S3Client::factory(
	array(
		'key' => <Object StorageのアクセスキーID>
		'secret' => <Object Storageの秘密鍵>,
		'base_url'=> <Object StorageのエンドポイントのURL>
	)
);

try {
	// ファイルの削除
	$result = $s3->deleteObject(
		array(
			'Bucket'       => <バケット名>,
			'Key'          => <ファイル名>
		)
	);
	
} catch (Exception $e) {
	echo $e->getMessage();
}

« [CentOS 6.6]PHPのインストール | Main | certutilでBASE64エンコード/デコード »

PHP」カテゴリの記事

プログラミング、技術情報」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/61076511

Listed below are links to weblogs that reference AWS SDK for PHP を使ってObject Storageにアクセスする:

« [CentOS 6.6]PHPのインストール | Main | certutilでBASE64エンコード/デコード »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof