2017-02-23 8 views
9

Amazon AWS PHP SDK v3を使用して、2つの異なる地域にある2つのバケット間でAmazon AWS S3オブジェクトをコピーしようとしています。これは1回限りの処理なので、cross-region replicationは必要ありません。 copyObject()を使用しようとしましたが、地域を指定する方法がありません。Amazon AWS PHP SDKを使用してリージョン間でS3オブジェクトをコピーする方法は?

$s3->copyObject(array(
    'Bucket'  => $targetBucket, 
    'Key'  => $targetKeyname, 
    'CopySource' => "{$sourceBucket}/{$sourceKeyname}", 
)); 

出典: http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingPHP.html

答えて

6

あなたはその操作のための領域を指定する必要はありません。ターゲットバケットの領域を見つけてコピーします。

しかし、AWS CLIではPHPのSDKには存在しないソース領域とターゲット領域の属性があるため、正しいかもしれません。したがって、次のようなタスクを実行できます。

  1. ソース領域に暫定バケットを作成します。
  2. ターゲット領域にバケットを作成します。
  3. 暫定バケットからターゲットバケットに複製を設定します。
  4. 中間バケットset expiration ruleのため、中間バケットから短時間でファイルが自動的に削除されます。
  5. PHP SDKを使用してソースバケットから中間バケットにオブジェクトをコピーします。
  6. すべてのオブジェクトも別の領域にコピーされます。
  7. 暫定バケットは1日後に削除できます。

それとも、CLIを使用し、この単一のコマンドを使用します。

aws s3 cp s3://my-source-bucket-in-us-west-2/ s3://my-target-bucket-in-us-east-1/ --recursive --source-region us-west-2 --region us-east-1 
2

異なる領域バケットはまた、別のアカウントである可能性があります。他の人が行っていたことは、1つのバケットからコピーしてローカルに一時的にデータを保存し、別の資格情報で別のバケットにアップロードすることでした。 (資格の異なる2つの地域バケットがある場合)。

CLIツールからの最新の更新では、同じアカウントの下にあるバケットからバケットにコピーすることができます。 Çağatay Gürtürkのようなものを使用しています。

関連する問題