Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 386
JSAT Avatar asked Nov 29 '25 08:11

JSAT


1 Answers

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--

like image 81
Tim Avatar answered Dec 02 '25 04:12

Tim



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!