Получение URL-адреса для корзины или объекта с помощью oci-java-sdk

У меня уже есть код для извлечения объектов в ведре с помощью oci-java-sdk, и он работает должным образом. Я хотел бы получить URL-адрес файла, который был загружен в корзину в хранилище объектов, и когда я использую этот URL-адрес, он должен перенаправлять в фактическое местоположение без запроса каких-либо учетных данных. Я видел запросы с предварительной аутентификацией, но мне снова нужно создать еще один запрос. Я не хочу отправлять еще один запрос и хочу получить URL-адрес в существующем GetObjectResponse. Любые предложения> Спасибо, js

1 ответ

Решение

URL-адрес объекта не возвращается из API, но может быть построен с использованием известной вам информации (см. Обновление ниже!). Шаблон такой:

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

Для доступа к этому URL (как правило, см. Ниже) потребуется аутентификация. Наш механизм аутентификации описан по адресу:

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

Аутентификация НЕ требуется, если вы настроили сегмент как общедоступный.

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

Как вы упомянули, можно использовать запросы с предварительной аутентификацией (PAR). Они обычно используются в этой ситуации, и они хорошо работают.

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

Строго говоря, также можно использовать наш API, совместимый с Amazon S3...

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

... и предварительно подписанные URL-адреса S3 для создания (без использования API) URL-адреса, который будет работать без дополнительной аутентификации.

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

Обновление: товарищ по команде отметил, что OCI SDK для Java теперь включает метод getEndpoint, который можно использовать для получения имени хоста, необходимого при запросе API хранилища объектов. https://docs.cloud.oracle.com/en-us/iaas/tools/java/1.25.3/com/oracle/bmc/objectstorage/ObjectStorage.html#getEndpoint--