やりたいこと
- amazon s3 から大きめのファイルをダウンロードしたい
- いちどに取得しよとすると大変そうなので少しずつ取得したい。
- PHP で取得を行う
接続情報を準備する
define('S3', [
'KEY' => AWSのS3のKEYを設定する,
'PASS' => AWSのS3のパスワードを設定する,
'DIR' => AWSのS3のディレクトリを設定する(s3://<bucket>[/<key-or-prefix>]))
]);
接続を行う
-
AWS SDK for PHP
を使用して接続する -
Amazon S3 ストリームラッパー
を使用して接続操作を行う
require_once 'aws/vendor/autoload.php';
// S3 接続を行う
$s3 = S3Client::factory([
'credentials' => [
'key' => S3['KEY'],
'secret' => S3['PASS'],
],
'region' => 'ap-northeast-1',
'version' => 'latest',
]);
$s3->registerStreamWrapper();
- 関数は
registerStreamWrappe
を使用する -
registerStreamWrapper
を使用すると、ファイルの操作と同じく S3 にアップされているファイルを操作できる。
操作を行う
- たとえば、指定しファイルがあるか確認を行う
$readFileName = S3['DIR'].'/確認したいファイル名.XX';
if(file_exists($readFileName)) {
echo 'ファイルあり';
}
- たとえば、
fread
を使用して読み込みを行う
$readFileName = S3['DIR'].'/読み込みたいファイル名.XX';
$fp = fopen($readFileName, "r");
while(!feof($fp)) {
$file = fread($fp, 4096);
}
close($fp);
- 上記のことからわかるように、接続後一般的なファイル操作で S3 のファイルを操作できる。