Загрузка Amazon S3 POST (с iPhone)

Немного предыстории: я создаю приложение для iPhone с дополнительной серверной частью (написано на Rails или, возможно, на Sinatra, но, вероятно, не имеет отношения к этому обсуждению). Часть функциональности включает загрузку изображений с iPhone на сервер. В конечном итоге они сохраняются на S3, поэтому, чтобы упростить приложение и сохранить пропускную способность, я хотел бы загружать изображения прямо с iPhone на S3, пропуская свой внутренний сервер.

Использование S3 REST API (в этом случае я бы, вероятно, использовал ASIHTTPRequest) означало бы сохранение ключа AWS и секрет в приложении для iPhone, чего я не хочу делать по соображениям безопасности.

По тем же причинам я не хочу делать свою корзину S3 общедоступной.

Теперь похоже, что S3 также поддерживает загрузку через браузер с использованием POST. Если я правильно понимаю, это работает путем создания подписанного документа политики на сервере, который затем позволяет клиентскому приложению напрямую отправлять файл POST на S3. Похоже, что в принципе это должно работать не только для браузеров, но и для приложений для iPhone.

Однако мне сложно понять, как это работает (не для iPhone, а просто для загрузки S3 POST в целом). Какую информацию необходимо отправить на сервер для вычисления подписи (например, нужен ли размер файла или какая-либо другая информация о файле)? Я еще немного покопаюсь в официальной документации и начну экспериментировать с этим, но если бы кто-нибудь мог указать мне на какие-то учебные пособия или образец кода, я был бы очень признателен.


person Mirko Froehlich    schedule 18.11.2009    source источник


Ответы (1)


При создании политики вы можете ограничить то, что загружается различными способами (имя ключа, тип MIME, размер файла и т. Д.), Создав строку JSON. Эти ограничения (включая срок действия) затем подписываются с использованием вашего секретного ключа AWS. Затем вы публикуете подписанную политику и получаете доступ к ключу в качестве параметров формы в AWS вместе с ключом для нового ресурса, его содержимым и любыми другими метаданными, которые вам нравятся.

Официальный документ - единственное известное мне упоминание (но я тоже не искал его в Google ...)

http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/HTTPPOSTForms.html#HTTPPOSTConstructPolicy

это страница, которая вас, вероятно, интересует больше всего.

person leebutts    schedule 18.11.2009
comment
Спасибо за объяснение. Я надеялся, что там может быть что-то более похожее на учебник, но, оглядываясь назад, кажется, что в документе Amazon есть вся необходимая информация, поэтому я должен просто начать с ним экспериментировать. - person Mirko Froehlich; 19.11.2009