Как загрузить файл на S3 из GAE (страшилка)

Я пытаюсь загрузить файл на amazon S3 из GAE.

Я попробовал официальный amazon sdk (jetS3t, созданный поверх SDK более низкого уровня), просто чтобы узнать, что даже если вы можете заставить его работать локально, установив разрешения на локальная JVM не поддерживается по причинам, связанным с криптографией GAE, после ее развертывания.

Затем от отчаяния я обнаружил, что какая-то добрая душа разветвила официальный низкоуровневый amazon. sdk, чтобы он работал с GAE. Этот вид работает (хотя я вижу, что здесь и там возникают странные исключения NullPointer), и файл загружается ... но если размер файла превышает 5 МБ, я получаю сообщение об ошибке из API:

com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call urlfetch.Fetch() was too large

Я не совсем понимаю это, поскольку текущие ограничения GAE составляют 32 МБ при загрузке файла и 1 МБ при запросе/ответе, в то время как моя проблема возникает только тогда, когда размер файла составляет около 5 МБ или больше.

Я думаю, что у меня осталась единственная альтернатива jclouds, но у меня возникли проблемы с поиском примеров загрузки файлов на S3 с помощью BlobStore. библиотека.

Есть ли у кого-нибудь опыт/примеры загрузки файлов S3 с помощью jClouds? И могу ли я совершить ту же urlfetch.Fetch() was too large ошибку?

Любая помощь приветствуется.


person JohnIdol    schedule 13.12.2011    source источник


Ответы (2)


Запросы URLFetch ограничены 5 МБ, как описано здесь. Единственными решениями, которые будут работать, являются те, которые включают разбиение большой полезной нагрузки на более мелкие фрагменты. К счастью, S3 предоставляет API многокомпонентной загрузки.

person Nick Johnson    schedule 14.12.2011
comment
Спасибо, Ник. Посмотрим, смогу ли я заставить API многокомпонентной загрузки хорошо работать с движком приложения :) - person JohnIdol; 14.12.2011
comment
@JohnIdol Думали ли вы просто написать код самостоятельно? RESTful API довольно прост — единственная сложность заключается в вычислении подписи заголовка, и, возможно, есть библиотека, которая сделает это за вас. - person Nick Johnson; 14.12.2011
comment
Я сохраняю это для сценария «все остальные неудачи» :) Теперь я даю ему еще один шанс с «низкоуровневым» подходом aws API (подход «высокого уровня» терпит неудачу из-за всевозможных проблем с «отказом в доступе»). - person JohnIdol; 14.12.2011

В примечаниях к выпуску 1.5.0 я прочитал По многочисленным просьбам размеры HTTP-запросов и ответов были увеличены до 32 МБ. Таким образом, запрос и ответ, выборка URL не упоминаются.

Действительно, глядя на документацию по выборке URL, говорится, что это не более 5 Мб.

person stivlo    schedule 14.12.2011