Un poco de historia: estoy construyendo una aplicación para iPhone con un backend de servidor complementario (escrito en Rails o posiblemente Sinatra, pero probablemente no relevante para esta discusión). Parte de la funcionalidad consiste en cargar imágenes desde el iPhone al servidor. Estos finalmente se almacenan en S3, por lo que para simplificar la aplicación y conservar el ancho de banda, me gustaría subir las imágenes directamente desde el iPhone a S3, saltándome el servidor backend.Subida POST de Amazon S3 (desde iPhone)
Usar la API REST S3 (en cuyo caso probablemente usaría ASIHTTPRequest) significaría almacenar la clave y el secreto AWS en la aplicación iPhone, lo que no quiero hacer por razones de seguridad.
Por razones similares, no quiero hacer que mi cubo S3 se pueda escribir públicamente.
Ahora parece que S3 también tiene soporte para browser-based uploads using POST. Si lo entiendo correctamente, esto funciona al generar un documento de política firmado en el servidor, que luego permite que la aplicación del cliente directamente POST el archivo a S3. Parece que, en principio, esto debería funcionar no solo para los navegadores, sino también para las aplicaciones de iPhone.
Sin embargo, me es difícil descifrar la forma exacta de hacerlo funcionar (no la parte específica del iPhone, solo cargas S3 POST en general). ¿Qué información se debe enviar al servidor para calcular la firma (por ejemplo, si necesita el tamaño del archivo o cualquier otra información del archivo)? Investigaré un poco más los documentos oficiales y comenzaré a experimentar con esto, pero si alguien pudiera indicarme algunos tutoriales o códigos de muestra, sería muy apreciado.
Gracias por la explicación. Esperaba que hubiera algo más parecido a un tutorial, pero en retrospectiva, parece que el documento de Amazon tiene toda la información necesaria, así que debería comenzar a experimentar con ella. –
esta URL ya no funciona – Deepak