amazonica icon indicating copy to clipboard operation
amazonica copied to clipboard

how to get an object's storage class ?

Open jdkealy opened this issue 7 years ago • 6 comments

I see in the Java SDK you'd get an object's storage class using the following, how would I do it using amazonica?

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/StorageClass.html

jdkealy avatar Dec 12 '17 18:12 jdkealy

maybe (:storage-class (s3/get-object-metadata "bucket" "key"))

mcohen01 avatar Dec 12 '17 18:12 mcohen01

that returns nil

jdkealy avatar Dec 12 '17 18:12 jdkealy


    getStorageClass

    public String getStorageClass()

    Returns:
        The storage class of the object. Returns null if the object is in STANDARD storage. See StorageClass for possible values

mcohen01 avatar Dec 12 '17 19:12 mcohen01

The key I'm looking at though is in Glacier.

This is what get-object-metadata returns

{:content-disposition nil, :expiration-time-rule-id nil, :user-metadata nil, :instance-length 1855830, :version-id nil, :server-side-encryption nil, :server-side-encryption-aws-kms-key-id nil, :etag "49a370b2166390078800941d9ccb39c3", :last-modified #object[org.joda.time.DateTime 0x78b85044 "2017-12-11T16:40:39.000-05:00"], :cache-control nil, :http-expires-date nil, :content-length 1855830, :content-type "image/gif", :restore-expiration-time nil, :content-encoding nil, :expiration-time nil, :content-md5 nil, :ongoing-restore nil}

get-object returns this error indicating it is not the standard storage class

   The operation is not valid for the object's storage class (Service:
   Amazon S3; Status Code: 403; Error Code: InvalidObjectState; Request
   ID: 6C4A2F86F24BE092)

jdkealy avatar Dec 12 '17 19:12 jdkealy

i'm guessing maybe the storage class comes in as a header that we're not parsing

mcohen01 avatar Dec 12 '17 19:12 mcohen01

dumping the headers shows it's in the response headers. not sure why it isn't being populated in the ObjectMetadata. you may want to try asking on the sdk project.

user=> (s3/get-object-metadata "amazonica" "foobar")
{"x-amz-content-sha256" "UNSIGNED-PAYLOAD",
 "Authorization"
 "AWS4-HMAC-SHA256 Credential=AKIAIMMME3975ZTWIOIW/20171010/us-east-1/s3/aws4_request, SignedHeaders=amz-sdk-invocation-id;amz-sdk-retry;content-type;host;user-agent;x-amz-content-sha256;x-amz-date, Signature=3574b7b10d2335441f18c9272b94d102f6d65dba07b9a73976328b3e86fc8c9d2",
 "X-Amz-Date" "20171212T230401Z",
 "User-Agent"
 "aws-sdk-java/1.11.237 Mac_OS_X/10.11.6 Java_HotSpot(TM)_64-Bit_Server_VM/25.151-b12 java/1.8.0_151 clojure/1.8.0",
 "amz-sdk-invocation-id" "981bb771-e73d-df83-1643-0244b5675f96",
 "Host" "amazonica.s3.amazonaws.com",
 "amz-sdk-retry" "0/0/500",
 "Content-Type" "application/octet-stream"}
{"Last-Modified" "Tue, 12 Dec 2017 19:43:44 GMT",
 "Date" "Tue, 12 Dec 2017 23:04:03 GMT",
 "ETag" "\"258622b1688250cb619f3c9ccaefb7eb\"",
 "Accept-Ranges" "bytes",
 "Content-Length" "4",
 "Server" "AmazonS3",
 "Content-Type" "application/octet-stream",
 "x-amz-request-id" "D84EC7F676B6C09A",
 "x-amz-id-2"
 "wMlCOWRF+WzTh9g22W3EVrDKq62Bt2aZHSzfmBO+ZFnUASWfkW7Lq/DEOAWM/xR5nQhWFM3OcYY=",
 "x-amz-storage-class" "REDUCED_REDUNDANCY"}
{:content-disposition nil, :expiration-time-rule-id nil, :user-metadata nil, :instance-length 4, :version-id nil, :server-side-encryption nil, :server-side-encryption-aws-kms-key-id nil, :etag "258622b1688250cb619f3c9ccaefb7eb", :last-modified #object[org.joda.time.DateTime 0x5949500c "2017-12-12T11:43:44.000-08:00"], :cache-control nil, :http-expires-date nil, :content-length 4, :content-type "application/octet-stream", :restore-expiration-time nil, :content-encoding nil, :expiration-time nil, :content-md5 nil, :ongoing-restore nil}

mcohen01 avatar Dec 12 '17 23:12 mcohen01