Немного предыстории: я создаю приложение для iPhone с дополнительным серверным бэкэндом (написанным на Rails или, возможно, на Sinatra, но, вероятно, не относящимся к этому обсуждению). Часть функций включает в себя загрузку изображений с iPhone на сервер. В конечном итоге они сохраняются на S3, поэтому, чтобы упростить приложение и сохранить пропускную способность, я бы хотел загрузить изображения непосредственно с iPhone на S3, пропустив мой сервер.
Использование S3 REST API (в этом случае я бы, вероятно, использовал ASIHTTPRequest ) означало бы сохранение ключа и секрета AWS в приложении iPhone, что я не хочу делать из соображений безопасности.
По тем же причинам я не хочу, чтобы моя корзина S3 была общедоступной для записи.
Теперь похоже, что S3 также поддерживает загрузку через браузер с использованием POST . Если я правильно понимаю, это работает путем генерации подписанного документа политики на сервере, который затем позволяет клиентскому приложению напрямую отправлять файл в S3. Кажется, что в принципе это должно работать не только для браузеров, но и для приложений iPhone.
Тем не менее, мне трудно понять, как именно это работает (не часть, касающаяся iPhone, просто загрузка S3 POST в общем). Какую информацию необходимо отправить на сервер для вычисления подписи (например, нужен ли ему размер файла или какая-либо другая информация о файле)? Я еще немного покопаюсь в официальных документах и начну экспериментировать с этим, но если кто-нибудь подскажет мне какие-то учебные пособия или примеры кода, это будет очень признательно.