Можно ли сгенерировать общедоступный URL-адрес для файла в облачной системе хранения EMC Atmos?

У меня есть приложение, которое позволяет пользователям настраивать веб-сайт с помощью CSS и других элементов. После создания эти файлы сохраняются на Amazon S3 как общедоступные для чтения. Поэтому я всегда мог ссылаться на них со статическим URL-адресом, который не требовал от меня первого подключения к S3 для создания URL-адреса.

Мы переместили все файлы в систему EMC Atmos, расположенную в центре обработки данных нашей хостинговой компании. Я знаю, как создавать общие URL-адреса из Atmos, но только предварительно установив соединение. Есть ли способ в Atmos установить системные метаданные для объекта, чтобы на него можно было ссылаться со статическим URL-адресом?


emc
person AKWF    schedule 16.08.2012    source источник


Ответы (2)


Вам не нужно подключаться к Atmos, чтобы создать общий URL-адрес. Генерация общего URL-адреса всегда происходит на стороне клиента; это не происходит через HTTP.

Метаданные системы Atmos всегда неизменяемы. Вы можете сгенерировать «статический URL-адрес», используя общий URL-адрес со сроком действия, установленным на что-то в отдаленном будущем.

person Raj    schedule 16.08.2012
comment
К сожалению, в интерфейсе Ruby get_shareable_url является методом экземпляра. - person AKWF; 16.08.2012
comment
Можете ли вы уточнить, как это вызывает проблему? get_shareable_url() — это метод экземпляра, но он фактически не подключается к Atmos для создания общего URL-адреса. Общий URL предварительно подписан; Все это происходит внутри самой оболочки. - person Raj; 17.08.2012
comment
Может быть, это не проблема. Просто создание экземпляра объекта EsusRestApi вызывает эту строку: @session = Net::HTTP.new( host, port ).start, которая выглядит так, как будто устанавливается какая-то сессия. - person AKWF; 17.08.2012
comment
Он должен создать URI для возврата предварительно подписанного URL-адреса, но, если вы заметили, он на самом деле не вызывает build_request() или @session.request(), как это делается для других методов, которые фактически отправляют запросы по HTTP. - person Raj; 17.08.2012
comment
Но это первая строка в методе get_shareable_url: uri = URI::HTTP.build( {:host =› \@host, :port =› \@port, :path =› build_resource(id) }) - person AKWF; 20.08.2012
comment
Поверьте мне: это не отправка HTTP-запроса в Atmos для создания общего URL-адреса. Запустите Wireshark/Fiddler/Charles, чтобы убедиться в этом. Он должен использовать хост, порт и т. д., чтобы вернуть вам общий URL-адрес с этими компонентами, но он не взаимодействует через HTTP для создания URL-адреса. - person Raj; 28.08.2012

EMC Atmos не требуется подключение HTTP/HTTPS для создания общего URL-адреса. Он устанавливает соединение HTTP для создания файла, но это может сделать конечный пользователь файла, хранящегося в облаке.

Чтобы создать URL-адрес, подпись создается на стороне клиента приложения (подключение HTTP не требуется). Причина в том, что генерируется уникальная подпись.

Чтобы отправить подпись, вы либо помещаете подпись в URL-адрес:

$url = "http://$server$resource?uid=$uid&expires=$expires&signature=$signature";

Или вместо добавления подписи в URL вы отправляете ее через REST API, отправляя HTTP-заголовок x-emc-signature.

Таким образом, как только вы сгенерируете этот URL-адрес, вы можете отправить его кому-то другому по электронной почте или тексту, который они могут щелкнуть позже, и он будет действительным, пока срок действия URL-адреса не истек.

После проверки подписи EMC Atmos отправляет загрузку клиенту. Обратите внимание, что на сервере с отставанием системных часов более чем на пять минут возникнут проблемы с созданием общих URL-адресов, поэтому синхронизируйте время в приложении, генерирующем общие URL-адреса, с помощью демона NTP.

Итак, чтобы уточнить, EMC Atmos не требует HTTP-подключения к вашему поставщику облачных хранилищ. HTTP-соединение выполняется при первом запросе файла. В этот момент файл становится общедоступным.

person Community    schedule 22.09.2012