LoginSignup
1
1

More than 3 years have passed since last update.

PHPでAWS S3 の大きいファイルの読込

Posted at

やりたいこと

  • 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 のファイルを操作できる。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1