1

Je suis en train d'implémenter un gestionnaire de fichiers sur S3 et j'essaie actuellement d'implémenter l'archivage sans faille des glaciers via LifeCycles. Le côté S3 des choses avec les LifeCycles est assez simple. Cependant je ne peux pas trouver une méthode qui retournera la classe de stockage réelle de la clé. Il est évidemment disponible depuis le panneau de contrôle S3 le montre.Interrogation de la classe de stockage avec AWS SDK

Dans la documentation pour les classes de stockage, ils mentionnent cet objet Metadata doit être présent (S3 Using Metadata):

x-amz-classe de stockage Classe de stockage utilisée pour stocker l'objet.

La documentation de headObject mentionne qu'elle devrait renvoyer des métadonnées mais lorsque je l'exécute, aucun bloc de métadonnées n'est renvoyé.

Delete-Marker: "", 
Accept-Ranges: "bytes", 
Expiration: "", 
Restore: "", 
Last-Modified: "Mon, 08 Sep 2014 20:27:39 GMT", 
Content-Length: "3976807", 
ETag: "0359f81b950a395d3f4ee0bf****", 
Missing-Meta: "", 
Version-Id: "Mb96ZF0dm506eXP***", 
Cache-Control: "", 
Content-Disposition: "", 
Content-Encoding: "", 
Content-Language: "", 
Content-Type: "video/x-ms-wmv", 
Expires: "", 
Website-Redirect-Location: "", 
Server-Side-Encryption: "", 
SSECustomerAlgorithm: "", 
SSECustomerKeyMD5: "", 
Request-Id: "43AD99D48F****E" 

Pendant ce temps la documentation affirme que les métadonnées doivent être l'un des champs retournés:

Metadata => (associative-array<string>) 
Associative array of <string> keys mapping to (string) values. Each array key should be changed to an appropriate <string>. 

A map of metadata to store with the object in S3. 
<string> => (string) 
The metadata value. 

Pour votre information, je suis en utilisant cette documentation AWS SDK for PHP

Tout conseil est apprécié comme actuellement le seul La solution que j'ai trouvée est soit d'exécuter un getObject (ce qui n'est pas faisable car il va télécharger l'objet entier) ou d'exécuter un restoreObject à chaque appel et de vérifier son code d'exception. Mais cela signifie qu'il est impossible de vérifier l'état d'une clé sans la restaurer (si elle est archivée)

Merci.

Répondre

2

J'ai été en mesure de l'obtenir. Quand je courais le code suivant:

$s3 = \Aws\S3\S3Client::factory($config); 
$result = $s3->listObjects(array(
    'Bucket' => 'somebucket' 
)); 
echo $result; 

je suis arrivé cette sortie et il contient Classe de stockage:

[Name] => soembucket 
[Prefix] => Array 
    (
    ) 

[Marker] => Array 
    (
    ) 

[MaxKeys] => 1000 
[IsTruncated] => 
[Contents] => Array 
    (
     [0] => Array 
      (
       [Key] => e2014090520140911a.jpg 
       [LastModified] => 2014-09-04T21:06:49.000Z 
       [ETag] => "7ae0adc21a443ab8d4499cabaa54157b" 
       [Size] => 101961 
       [Owner] => Array 
        (
         [ID] => 8c1a9525cee6d6caa294e524b4bb1d28481e53473cc48a26e714e89665cb7afc 
         [DisplayName] => amazon_aws 
        ) 

       [StorageClass] => STANDARD 
      ) 

     [1] => Array 
      (
       [Key] => e2014091220141002a.jpg 
       [LastModified] => 2014-09-11T21:19:33.000Z 
       [ETag] => "96882d755e7864bd01d75cb24673fb00" 
       [Size] => 219311 
       [Owner] => Array 
        (
         [ID] => 8c1a9525cee6d6caa294e524b4bb1d28481e53473cc48a26e714e89665cb7afc 
         [DisplayName] => amazon_aws 
        ) 

       [StorageClass] => STANDARD 
      ) 

    ) 

[EncodingType] => 
[RequestId] => 30BB77F212066343 
+0

Je suppose que je pouvais listBucket avec ma clé et obtenir à partir de là la Classe de stockage. Merci, je vais regarder dans – maddios

+0

Excellent, ça marche. Semble un peu bizarre que la tête n'obtienne pas cette information mais je peux vivre avec ceci :) – maddios

Questions connexes