Estoy tratando de entender exactamente cómo configurar un depósito que generalmente es privado pero permite cargas anónimas con restricciones. Los criterios específicos son:S3 - Carga anónima - Prefijo de clave
- El depósito es en su mayoría privado y requiere mi clave/secreto para agregar/eliminar/actualizar/enumerar archivos.
- Existe un "directorio" (es decir, prefijo de clave) llamado "entrante" que permitirá a los usuarios anónimos cargar contenido pero no hacer una lista.
- El depósito tiene un día de vencimiento en todo el contenido. Como extra, me gustaría que el directorio "entrante" tenga una caducidad de 30 minutos, aunque si eso no es posible, un vencimiento de un día para toda la cubeta servirá.
- Los archivos con el prefijo "entrante" tendrían un tamaño limitado por objeto.
- También me gustaría limitar los objetos con el prefijo "entrante" solo a ciertos tipos de contenido.
preguntas que tengo son:
- sería mejor simplemente crear dos cubos. Una para mis archivos entrantes y otra para mi propio procesamiento y almacenamiento personal.
- ¿Cómo se vería el código para que un archivo se cargue en el directorio entrante? Idealmente, me gustaría evitar una dependencia en una biblioteca S3 y simplemente usar llamadas HTTP. Puntos de bonificación si me puedes mostrar la dirección correcta en Ruby. :)
El vencimiento parece configurable a través de la consola de administración S3, pero solo se limita a 1 día como la fecha de caducidad más pequeña. ¿Puedo poner un decimal en ese campo? Los permisos parecen aplicarse a un segmento completo en lugar de solo un prefijo. Esto me hace pensar que solo necesito dos cubos. Si sigo con un paquete, creo que necesito crear una política de IAM y aplicar eso al paquete, pero va más allá de mi conocimiento limitado de S3 y quiero asegurarme de no dejar un agujero en los permisos que permiten a las personas hacer más de lo que quiero que lo hagan.
He encontrado mucha documentación sobre cómo hacer cargas anónimas en S3 a través de una publicación de formulario HTTP. Podría adaptar eso al código, pero me pregunto que, dado que estoy en el código de la aplicación (y no en una publicación de formulario HTTP), ¿hay alguna manera más fácil?
para 2, ¿ha considerado configurar s3 con clip de carrierwave? – rb512
Gracias por la sugerencia. Sí, los he usado antes, aunque creo que, en general, todos funcionan de forma autenticada (no anónima). Puede haber algunos complementos para hacer el anonimato, pero realmente solo espero que S3 sea una interfaz REST y que estoy permitiendo cargas anónimas que una simple solicitud HTTP sin una biblioteca de terceros podría hacer el truco. Pero tratar de analizar la documentación de Amazon ha sido más laborioso de lo que esperaba, así que me encantaría que alguien me señale la dirección correcta. –
No lo entendí del todo. Por anónimo, ¿quiere decir que quiere poder cargar archivos sin proporcionar sus credenciales s3? No creo que eso sea posible. – rb512