JSAT
JSAT

Reputation: 33

Getting the URL for a bucket or an object using oci-java-sdk

I have already a code to retrieve the objects in the bucket using oci-java-sdk and this is working as expected. I would like to retrieve the URL of the file which was uploaded to the bucket in object storage and when I use this URL, this should redirect to the actual location without asking any credentials. I saw preauthenticated requests but again i need to create one more request. I dont want to send one more request and want to get URL in the existing GetObjectResponse. Any suggestions> Thanks, js

Upvotes: 3

Views: 4971

Answers (1)

Tim
Tim

Reputation: 151

The URL of an object is not returned from the API but can be built using information you know (See Update Below!). The pattern is:

https://{api_endpoint}/n/{namespace_name}/b/{bucket_name}/o/{object_name}

Accessing that URL will (generally, see below) require authentication. Our authentication mechanism is described at:

https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/signingrequests.htm

Authentication is NOT required if you configure the bucket as a Public Bucket.

https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/managingbuckets.htm?TocPath=Services%7CObject%20Storage%7C_____2#publicbuckets

As you mentioned, Pre-authenticated Requests (PARs) are an option. They are generally used in this situation, and they work well.

https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/usingpreauthenticatedrequests.htm

Strictly speaking, it is also possible to use our Amazon S3 Compatible API...

https://docs.cloud.oracle.com/en-us/iaas/Content/Object/Tasks/s3compatibleapi.htm

...and S3's presigned URLs to generate (without involving the API) a URL that will work without additional authentication.

https://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html

Update: A teammate pointed out that the OCI SDK for Java now includes a getEndpoint method that can be used to get the hostname needed when querying the Object Storage API. https://docs.cloud.oracle.com/en-us/iaas/tools/java/1.25.3/com/oracle/bmc/objectstorage/ObjectStorage.html#getEndpoint--

Upvotes: 7

Related Questions