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

AWS SDK for PHP を使用したオブジェクトのコピー

このトピックでは、AWS SDK for PHP のクラスを使用して、Amazon S3 内の 1 つまたは複数のオブジェクトを、特定のバケットから別のバケットへ、または同じバケット内にコピーする手順を示します。

注記

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

以下のタスクは、PHP SDK のクラスを使用して、Amazon S3 に既に保存されているオブジェクトをコピーする手順を示しています。

オブジェクトのコピー

1

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

2

オブジェクトをコピーするため、Aws\S3\S3Client::copyObject() メソッドを実行します。コピー元のバケット、コピー元のキー名、コピー先のバケット、コピー先のキー名などの情報を提供する必要があります。

以下の PHP コード例は、copyObject() メソッドを使用して、Amazon S3 に既に保存されているオブジェクトをコピーする手順を示しています。

Copy
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Key Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object. $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => $targetKeyname, 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", ));

以下のタスクは、PHP のクラスを使用して、Amazon S3 内の 1 つのオブジェクトの複数のコピーを作成する手順を示しています。

オブジェクトのコピー

1

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

2

オブジェクトの複数のコピーを作成するため、Guzzle\Service\Client クラスから継承された、Amazon S3 クライアントの getCommand() メソッドの呼び出しを連続的に実行します。最初の引数として CopyObject コマンドを指定し、2 番目の引数としてコピー元のバケット、コピー元のキー名、コピー先のバケット、コピー先のキー名を含む array を指定します。

以下の PHP コード例は、Amazon S3 に保存されているオブジェクトの複数のコピーを作成する手順を示しています。

Copy
use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; $targetKeyname = '*** Your Target Key Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Perform a batch of CopyObject operations. $batch = array(); for ($i = 1; $i <= 3; $i++) { $batch[] = $s3->getCommand('CopyObject', array( 'Bucket' => $targetBucket, 'Key' => "{targetKeyname}-{$i}", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", )); } try { $successful = $s3->execute($batch); $failed = array(); } catch (\Guzzle\Service\Exception\CommandTransferException $e) { $successful = $e->getSuccessfulCommands(); $failed = $e->getFailedCommands(); }

例 (Amazon S3 内でのオブジェクトのコピー)

以下の PHP コードは、copyObject() メソッドを使用して Amazon S3 内の 1 つのオブジェクトをコピーすると共に、 getcommand() メソッドにより CopyObject を連続的に呼び出してオブジェクトの複数コピーを作成する例を示しています。

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; $sourceBucket = '*** Your Source Bucket Name ***'; $sourceKeyname = '*** Your Source Object Key ***'; $targetBucket = '*** Your Target Bucket Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Copy an object. $s3->copyObject(array( 'Bucket' => $targetBucket, 'Key' => "{$sourceKeyname}-copy", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", )); // Perform a batch of CopyObject operations. $batch = array(); for ($i = 1; $i <= 3; $i++) { $batch[] = $s3->getCommand('CopyObject', array( 'Bucket' => $targetBucket, 'Key' => "{$sourceKeyname}-copy-{$i}", 'CopySource' => "{$sourceBucket}/{$sourceKeyname}", )); } try { $successful = $s3->execute($batch); $failed = array(); } catch (\Guzzle\Service\Exception\CommandTransferException $e) { $successful = $e->getSuccessfulCommands(); $failed = $e->getFailedCommands(); }

関連リソース

このページの内容: