2013-07-18 5 views
6

Ist es möglich, nur die benutzerdefinierten Metadaten der Objekte aus S3 zu erhalten, ohne das gesamte Objekt abrufen zu müssen? Ich habe durch das AWS SDK PHP 2 geschaut und google und SO ohne klare Antwort gesucht, oder vielleicht gerade nicht die Antwort, die ich hoffe.Erhalte s3-Metadaten, ohne ein Objekt zu erhalten

Danke.

+0

irgendeine spezifische Sprache für Sie suchen? Ich könnte eine Probe zusammenwerfen, wenn ich wüsste, wie du es machen willst. 'GetObjectMetaData' würde genau das tun. – EFeit

+0

Nun, das würde Sinn machen. Ich habe es auf dieser Seite http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/service-s3.html nicht für PHP aufgelistet. Wir verwenden normalerweise Java, aber aufgrund der Umgebung, in der wir uns befinden, verwenden wir PHP. – Michael

Antwort

5

Vielleicht this würde für PHP 2 helfen? Es benutzt das Guzzle-Framework, mit dem ich nicht vertraut bin.

Führt einen HeadObject-Befehl aus: Die HEAD-Operation ruft Metadaten von einem Objekt ab, ohne das Objekt selbst zurückzugeben. Diese Operation ist nützlich, wenn Sie nur an den Metadaten eines Objekts interessiert sind. Um HEAD zu verwenden, müssen Sie Lesezugriff auf das Objekt haben.

letzten Versuch mit Guzzle Rahmen (ungetestet Code):

use Guzzle\Service\Resource\Model 
use Aws\Common\Enum\Region; 
use Aws\S3\S3Client; 

$client = S3Client::factory(array(
    "key" => "YOUR ACCESS KEY ID", 
    "secret" => "YOUR SECRET ACCESS KEY", 
    "region" => Region::US_EAST_1, 
    "scheme" => "http", 
)); 

// HEAD object 
$headers = $client->headObject(array(
    "Bucket" => "your-bucket", 
    "Key" => "your-key" 
)); 
print_r($headers->toArray()); 

PHP 1.6.2 Lösung

// Instantiate the class 
$s3 = new AmazonS3(); 
$bucket = 'my-bucket' . strtolower($s3->key); 

$response = $s3->get_object_metadata($bucket, 'üpløåd/î\'vé nøw béén üpløådéd.txt'); 

// Success? 
var_dump($response['ContentType']); 
var_dump($response['Headers']['content-language']); 
var_dump($response['Headers']['x-amz-meta-ice-ice-baby']); 

Credit: http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_metadata

Hoffnung, die hilft !

+0

Auf der Suche nach einer Lösung mit dem AWS SDK PHP 2. Es scheint seltsam, sie würde dies aus dem neuesten SDK entfernen. – Michael

+1

Ja, tut mir leid! Ich versuche, etwas zu finden, aber es sieht so aus, als wären die Dokumente für PHP 2 viel komplizierter als die vorherige Version. Ich habe meine Antwort bearbeitet, um etwas hinzuzufügen, das helfen kann, aber ich weiß nicht, wie ich es umsetzen soll. – EFeit

+1

Also ich bin nicht der Einzige der sieht die PHP 2 Docs sind ziemlich schlecht :). Ich bin froh, dass ich nicht der Einzige bin. Wirklich seltsam, sie würden entfernen oder scheinen, diesen Anruf zu entfernen. Im Idealfall würden wir gerne unsere benutzerdefinierten Metadaten mit der Liste erhalten, aber ich denke nicht, dass dies mit jedem SDK möglich ist. – Michael

1

AWS HEAD Objekt http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html

use Aws\S3\S3Client; 
use Guzzle\Common\Collection; 

$client = S3Client::factory(array(
'key' => 'YOUR-AWS-KEY', 
'secret' => 'YOUR-SECRET-KEY' 
)); 

// Use Guzzle's toArray() method. 

$result = $client->headObject(['Bucket' => 'YOUR-BUCKET-NAME', 'Key' => 'YOUR-FILE-NAME'])->toArray(); 

print_r($result['Metadata']); 
Verwandte Themen