Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get s3 metadata without getting object

Is it possible to get just the objects custom metadata from S3 without having to get the whole object? I've looked through the AWS SDK PHP 2 and searched google and SO with no clear answer, or maybe just not the answer I'm hoping for.

Thanks.

like image 529
Michael Avatar asked Jul 18 '13 17:07

Michael


2 Answers

Maybe this would help for PHP 2? It uses the Guzzle framework which I'm not familiar with.

Executes a HeadObject command: The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're only interested in an object's metadata. To use HEAD, you must have READ access to the object.

Final attempt using Guzzle framework (untested 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 Solution

// 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 to: http://docs.aws.amazon.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_metadata

Hope that helps!

like image 66
EFeit Avatar answered Oct 21 '22 02:10

EFeit


AWS HEAD Object 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']);
like image 28
Jon Kiddy Avatar answered Oct 21 '22 01:10

Jon Kiddy