Get s3 metadata without getting object
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']);
Michael
Updated on July 02, 2022Comments
-
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 almost 11 yearsLooking for a solution with the AWS SDK PHP 2. Seems strange they would remove this from the latest SDK.
-
EFeit almost 11 yearsYea 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 almost 11 yearsSo 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 over 10 yearsThis 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 over 10 yearsThanks David for pointing that out. Correct answer to link to doc :).
-
frostymarvelous over 8 yearsAlso confirming it is the valid answer.