Get s3 metadata without getting object

11,256

Solution 1

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!

Solution 2

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']);
Share:
11,256
Michael
Author by

Michael

Updated on July 02, 2022

Comments

  • Michael
    Michael almost 2 years

    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.

  • Michael
    Michael almost 11 years
    Looking for a solution with the AWS SDK PHP 2. Seems strange they would remove this from the latest SDK.
  • EFeit
    EFeit almost 11 years
    Yea I'm sorry! I'm trying to come up with something, but it looks like the docs for PHP 2 are a lot more convoluted than the previous version. I've edited my answer to add something that may help, however I don't know how to implement it.
  • Michael
    Michael almost 11 years
    So I'm not the only one the sees the PHP 2 docs are pretty bad :). Glad I'm not the only one. Really strange they would remove, or appear to remove that call. Really ideally we would like to be able to receive our custom meta data with the list, but I don't think that is possible with any SDK.
  • David
    David over 10 years
    This is the correct answer, if you hit the "this" link he provided and scroll down, it's explained that metadata is returned as an array: Metadata - (hash[string => string])
  • Michael
    Michael over 10 years
    Thanks David for pointing that out. Correct answer to link to doc :).
  • frostymarvelous
    frostymarvelous over 8 years
    Also confirming it is the valid answer.