2012-09-29 51 views
11

Si subo un archivo a S3 con el nombre de archivo idéntico a un nombre de archivo de un objeto en el depósito, lo sobreescribe. ¿Qué opciones existen para evitar sobrescribir archivos con nombres de archivo idénticos? He habilitado el control de versiones en mi cubo, pensando que resolverá el problema, pero los objetos aún se sobrescriben.Amazon S3 evita sobrescribir objetos con el mismo nombre

+0

No estoy seguro, pero ¿no puede establecer la ACL como de solo lectura para este objeto? Quiero decir, por cada objeto que cargas. – Prinzhorn

+0

Estoy configurando ACL en público porque los archivos pueden ser vistos por cualquier persona. – CyberJunkie

Respuesta

6

Mi comentario anterior no funciona. Pensé que la ACL WRITE se aplicaría a los objetos también, pero solo funciona en cubos.

Dado que habilitó el control de versiones, sus objetos no se sobrescriben. Pero si no especifica la versión en su solicitud GET o URL, se tomará la última versión. Esto significa que cuando pones y objetas en S3 necesitas guardar el ID de versión que te dice la respuesta para recuperar el primer objeto.

Ver Amazon S3 ACL for read-only and write-once access para más.

+0

¡Gracias! Probaré eso. – CyberJunkie

2

También puede configurar un usuario de IAM con permisos limitados. Las escrituras aún se escriben (es decir, las actualizaciones), pero usar un usuario de IAM es una buena práctica de todos modos.

El propietario (es decir, su "clave de acceso y clave secreta a largo plazo") siempre tiene control total a menos que se desvie de todo para deshabilitarlo.

+0

Gracias, no lo he pensado. Un usuario que no puede actualizar/sobrescribir sería ideal si puedo configurarlo en AWS. – CyberJunkie

+1

Tendrá que volver a verificar la documentación. No sé si S3 comprende la diferencia entre _write_ y _update_. Sé que de forma predeterminada (es decir, permisos completos), las escrituras y las actualizaciones se tratan como lo mismo. –

1

Aquí está mi sugerencia si está utilizando un DB para almacenar la clave de cada archivo en su cubo s3.

Generar una clave aleatoria. Intente insertar/actualizar la clave de su base de datos, en un campo con una restricción ÚNICA que permite una entrada nula. Si falla la clave se ha utilizado, repita hasta que obtenga una clave única.

Luego ponga su archivo en s3 con su llave que sepa que es única.