2014-01-27 6 views
0

Итак, вот сценарий. У меня есть сайт, который позволяет выполнять определенные операции с файлами, , которые занимают порядка секунд. Я не хочу, чтобы клиент должен ждать, что задолго до того, как сервер возвращает ответ, чтобы они, как мы имеем сейчас, чтоВозможно ли получить файл S3-файла перед его загрузкой?

  1. Пользователь выполняет операцию в браузере (клиент)
  2. Клиент посылает запрос POST на сервер с параметрами
  3. сервер добавляет операцию очереди заданий и отправляет обратно ожидаемый URL результата
  4. Client пингует сервер, пока файл не доступен, то служит ему

В настоящее время эти файлы хранятся на моем сервере ec2, но я хочу переместить это на S3. Мне было интересно, возможен ли этот тип потока.

Сервер знает, какой файл будет сохранен и где он находится, прежде чем он на самом деле находится, так же, как и в случае с S3? Есть ли способ узнать URL-адрес файла, если я заранее знаю всю информацию (ведро, имя файла и т. Д.)?

ответ

0

Все URL-адреса объектов S3 следуют шаблонам, поэтому легко узнать, что URL будет быть впереди времени.

Если имя Ковша DNS-совместимый (требуется для всех регионов по стандарту США, за исключением), то она будет выглядеть следующим образом:

<bucket>.s3.amazonaws.com/<object-path> 

Стандарт США регион является немного более слабым в этом ведре имя правила (они не требуется быть DNS-совместимый), так что некоторые из них могут выглядеть следующим образом:

s3.amazonaws.com/<bucket>/<object-path> 

таким образом, если ваше имя ведро что-то DNS-совместимый (например, example), и ваш файл abc/123/file.txt, th ан ваш объект URL будет:

example.s3.amazonaws.com/abc/123/file.txt 

Таким образом, если ваше имя ведро НЕ DNS-совместимый (например, EXAMPLE_123), и ваш файл abc/123/file.txt, то ваш объект URL будет:

s3.amazonaws.com/EXAMPLE_123/abc/123/file.txt 

Вот пример совместимой с DNS логики из официального PHP SDK.

https://github.com/aws/aws-sdk-php/blob/master/src/Aws/S3/S3Client.php#L293-L317

+0

Спасибо! Это именно то, что мне нужно было знать! –

Смежные вопросы