2017-05-10 7 views
0

symfonyアプリケーションでAmazonのPHP-SDKを使用して、バージョニングが有効になっているバケットにファイル(別名「オブジェクト」s3)をアップロードします。したがって、同じ名前(別名「キー」)のファイルを複数回アップロードすると、バケットは複数のバージョンのファイルの1つのオブジェクトを保持します。PHP SDKを使用してAWS S3に保存されたオブジェクトの特定のバージョンをダウンロードします。

これは、バケットを使用してアプリケーションのバージョニングされたバックアップを保存するときの動作です。

ここで、バックアップをもう一度ダウンロードしたいときは、Amazonが私にデフォルトのオブジェクトをダウンロードさせてくれるようです(明らかに最新のバージョンを使用しています)。私は、特定のバージョンをダウンロードできるようにする正式なドキュメント(またはそれ以外のところはどこでも)のメソッドや例を見つけることができません(先週のバックアップを私に渡してください)。

これは予想された動作か、ここで何か不足していますか?その制限がs3に内在する場合、バージョニングバケットの全体的な点はばかげている。

事前にヒントをお寄せいただきありがとうございます。

答えて

0

これは2段階のプロセスです。このAPIコールを使用すると、すべてのバージョンのリストを取得する必要があります。 GetObject API呼び出し

$result = $client->getObject([ 
    'Bucket' => '<string>', // REQUIRED 
    'VersionId' => '<string>', 
]);` 

http://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject

にVERSIONIDパラメータを設定すると

[ 
    'CommonPrefixes' => [ 
     [ 
      'Prefix' => '<string>', 
     ], 
     // ... 
    ], 
    'DeleteMarkers' => [ 
     [ 
      'IsLatest' => true || false, 
      'Key' => '<string>', 
      'LastModified' => <DateTime>, 
      'Owner' => [ 
       'DisplayName' => '<string>', 
       'ID' => '<string>', 
      ], 
      'VersionId' => '<string>', 
     ], 
     // ... 
    ], 
    'Delimiter' => '<string>', 
    'EncodingType' => 'url', 
    'IsTruncated' => true || false, 
    'KeyMarker' => '<string>', 
    'MaxKeys' => <integer>, 
    'Name' => '<string>', 
    'NextKeyMarker' => '<string>', 
    'NextVersionIdMarker' => '<string>', 
    'Prefix' => '<string>', 
    'VersionIdMarker' => '<string>', 
    'Versions' => [ 
     [ 
      'ETag' => '<string>', 
      'IsLatest' => true || false, 
      'Key' => '<string>', 
      'LastModified' => <DateTime>, 
      'Owner' => [ 
       'DisplayName' => '<string>', 
       'ID' => '<string>', 
      ], 
      'Size' => <integer>, 
      'StorageClass' => 'STANDARD', 
      'VersionId' => '<string>', 
     ], 
     // ... 
    ], 
] 

を返し

http://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listobjectversions

$result = $client->listObjectVersions([ 
    'Bucket' => '<string>', // REQUIRED 
]); 

関連する問題