メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS PHP SDK を使用したマルチパートアップロード (高レベル API)

Amazon S3 を使用すると、大きなファイルを複数のパートに分けてアップロードできます。5 GB より大きいファイルに対しては、マルチパートアップロードを使用する必要があります。AWS SDK for PHP では、マルチパートアップロードを簡素化する高レベルの Aws\S3\Model\MultipartUpload\UploadBuilder クラスを公開しています。

Aws\S3\Model\MultipartUpload\UploadBuilder クラスは単純なマルチパートアップロードでの使用に最も適しています。マルチパートアップロードを一時停止して再開する必要がある場合、アップロード中にパートサイズを変更する場合、またはデータのサイズが事前にわからない場合は、低レベルの PHP API を使用する必要があります。詳細については、「AWS PHP SDK を使用したマルチパートアップロード (低レベル API)」を参照してください。

マルチパートアップロードの詳細については、「Multipart Upload API を使用したオブジェクトのアップロード」を参照してください。サイズが 5 GB 未満のファイルのアップロードについては、「AWS SDK for PHP を使用したオブジェクトのアップロード」を参照してください。

高レベルのマルチパートアップロードを使用したファイルのアップロード

このトピックでは、AWS SDK for PHP の高レベルの Aws\S3\Model\MultipartUpload\UploadBuilder クラスを使用してマルチパートファイルアップロードを行う手順を示します。

注記

このトピックでは、既に AWS SDK for PHP の使用と PHP サンプルの実行 の説明が実行されていて、AWS SDK for PHP が正しくインストールされていることを前提としています。

高レベルのマルチパートファイルアップロード

1

Amazon S3 クライアントのインスタンスを Aws\S3\S3Client クラスの factory() メソッドを使用して作成します。

2

Amazon S3 Aws\S3\Model\MultipartUpload\UploadBuilder クラスの newInstance() メソッドを使用して、UploadBuilder のインスタンスを作成します。このメソッドは Aws\Common\Model\MultipartUpload\AbstractUploadBuilder クラスから継承されたものです。UploadBuilder オブジェクトに対して、setClient()setBucket()setKey() メソッドを使用して、クライアント、バケット名、キー名を設定します。setSource() メソッドを使用して、アップロードするファイルのパスと名前を設定します。

3

UploadBuilder オブジェクトの build() メソッドを実行することで、設定した UploadBuilder オプションに基づいて適切なアップローダー転送オブジェクトを作成します。(転送オブジェクトは Aws\S3\Model\MultipartUpload\AbstractTransfer クラスのサブクラスに属するようになります。)

4

作成された転送オブジェクトの upload() メソッドを実行することで、アップロードを実行します。

以下の PHP コード例は、高レベルの UploadBuilder オブジェクトを使用してファイルをアップロードする方法を示しています。

Copy
use Aws\Common\Exception\MultipartUploadException; use Aws\S3\Model\MultipartUpload\UploadBuilder; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Prepare the upload parameters. $uploader = UploadBuilder::newInstance() ->setClient($s3) ->setSource('/path/to/large/file.mov') ->setBucket($bucket) ->setKey($keyname) ->build(); // Perform the upload. Abort the upload if something goes wrong. try { $uploader->upload(); echo "Upload complete.\n"; } catch (MultipartUploadException $e) { $uploader->abort(); echo "Upload failed.\n"; echo $e->getMessage() . "\n"; }

例 (高レベルの UploadBuilder を使用した、ファイルの Amazon S3 バケットへのマルチパートアップロード)

以下の PHP 例では、ファイルを Amazon S3 バケットにアップロードしています。この例は、UploadBuilder オブジェクトに詳細なオプションを設定する方法を示しています。具体的には、setMinPartSize() メソッドを使用して、マルチパートアップロードに使用するパートのサイズを設定すると共に、setOption() メソッドを使用して、オプションのファイルメタデータやアクセスコントロールリスト(ACL)を設定しています。

このほかに、この例では、UploadBuilder オブジェクトの setConcurrency() メソッドを使用して並行処理オプションを設定することで、ファイルのパートを並行してアップロードする方法も示しています。この例で作成する転送オブジェクトは、3 つのパートを並列にアップロードすることで、最終的にファイル全体をアップロードします。PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\Common\Exception\MultipartUploadException; use Aws\S3\Model\MultipartUpload\UploadBuilder; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // Prepare the upload parameters. $uploader = UploadBuilder::newInstance() ->setClient($s3) ->setSource('/path/to/large/file.mov') ->setBucket($bucket) ->setKey($keyname) ->setMinPartSize(25 * 1024 * 1024) ->setOption('Metadata', array( 'param1' => 'value1', 'param2' => 'value2' )) ->setOption('ACL', 'public-read') ->setConcurrency(3) ->build(); // Perform the upload. Abort the upload if something goes wrong. try { $uploader->upload(); echo "Upload complete.\n"; } catch (MultipartUploadException $e) { $uploader->abort(); echo "Upload failed.\n"; echo $e->getMessage() . "\n"; }

関連リソース

このページの内容: