Получение 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
Аутентификация НЕ требуется, если вы настроили сегмент как общедоступный.
Как вы упомянули, можно использовать запросы с предварительной аутентификацией (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--