Retrieve object user metadata in S3 - aws sdk v3 php
Asked Answered
S

1

4

I'm looking to retrieve user-defined meta-data from objects in my S3 bucket, from the php sdk.

As per Editing Object Meta Data, User metadata is stored with the object and returned with it, and begin with "x-amz-meta-"

I have defined user metadata on objects through the console like "x-amz-meta-test", at both upload time, and adding it after the upload (through web console, not the upload API).

The test metadata is never returned. I always get the same system metadata. That is, I get only the following keys in @metadata:

Folder

statuscode
effectiveUri
headers
   x-amz-id-2
   x-amz-request-id
   date
   x-amz-bucket-region
   content-type
   transfer-encoding
   server

Objects

Key
LastModified
   date
   timezone_type
   timezone
ETag
Size
StorageClass

However, to achieve this in other languages, a simple method call is involved.

Get User Metadata in Android SDK

Get User Metadata in Java SDK

How do I go about accomplishing the same task in the PHP SDK?

Any help would be greatly appreciated :)

Squint answered 24/8, 2015 at 21:22 Comment(0)
U
3

I had the same issue with v3 AWS SDK for PHP. After some research and testing, I determined I could use headObject:

<?php
    $headers = $s3->headObject(array(
      "Bucket" => $bucket,
      "Key" => $key
    ));

    print_r($headers->toArray());
?>

Example output with System-Defined Metadata and other identifying information REMOVED:

Array
(
/* REMOVED */
    [Metadata] => Array
        (
            [orderdate] => Mon, 31 Aug 2015 19:03:52 +0000
            [color] => green
            [fruit] => apple
            [price] => 99.95
        )
/* REMOVED */
    [@metadata] => Array
        (
            [statusCode] => 200
            [effectiveUri] => https://s3.amazonaws.com/REMOVED/REMOVED
            [headers] => Array
                (
                    [x-amz-id-2] => REMOVED
                    [x-amz-request-id] => REMOVED
                    [date] => Wed, 02 Sep 2015 04:43:02 GMT
                    [x-amz-meta-orderdate] => Mon, 31 Aug 2015 19:03:52 +0000
                    [x-amz-meta-color] => green
                    [x-amz-meta-fruit] => apple
                    [x-amz-meta-price] => 99.95
                    [last-modified] => Wed, 02 Sep 2015 04:11:13 GMT
                    [etag] => "REMOVED"
                    [x-amz-storage-class] => REDUCED_REDUNDANCY
                    [accept-ranges] => bytes
                    [content-type] => application/octet-stream
                    [content-length] => 80771
                    [server] => AmazonS3
                )
        )
)
Underbid answered 2/9, 2015 at 4:54 Comment(1)
Thanks a bunch! This works perfectly. Thank you for the detailed exampleSquint

© 2022 - 2024 — McMap. All rights reserved.