Estoy tratando de crear una carpeta en aws s3 . Logré crear una carpeta pero no estaba vacía .
const Obj = new AWS.S3().putObject({ Key: `/`, //the file you should put inside the folder Bucket: `${bucketName}/${req.body.modpack}`, // main bucket/folder I want to create });
No puedo quitar la " clave " si hago eso recibo y erro que me obligan a agregarla
En Amazon S3, los depósitos y los objetos son los recursos principales y los objetos se almacenan en depósitos. Amazon S3 tiene una estructura plana en lugar de una jerarquía como la que vería en un sistema de archivos. Sin embargo, en aras de la simplicidad organizativa, la consola de Amazon S3 admite el concepto de carpeta como medio para agrupar objetos. Amazon S3 hace esto mediante el uso de un prefijo de nombre compartido para los objetos (es decir, los objetos tienen nombres que comienzan con una cadena común). Los nombres de objetos también se denominan nombres de clave.
También. S3 no es su sistema de archivos típico. Es una tienda de objetos. Tiene cubos y objetos. Los cubos se utilizan para almacenar objetos, y los objetos comprenden datos (básicamente un archivo) y metadatos (información sobre el archivo). En comparación con un sistema de archivos tradicional, es más natural pensar en un depósito S3 como una unidad en lugar de una carpeta.
Entonces, para crear un objeto o, como lo llamamos, una carpeta, debe proporcionar un nombre de carpeta con un "/" al final como este:
const Obj = new AWS.S3().putObject({ Key: `EmptyFolder/`, // This should create an empty object in which we can store files Bucket: `${bucketName}`, });
Ref: https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html
Las carpetas no existen en Amazon S3.
Sin embargo, la consola de administración de Amazon S3 le permite 'crear' una carpeta. Lo hace creando un objeto de longitud cero con una clave (nombre de archivo) igual al nombre de la 'carpeta'. Esto hace que la carpeta aparezca al usar la consola o al recuperar CommonPrefixes
a través de la API de S3.
En general, no debería tener la necesidad de crear carpetas. Simplemente copie los archivos a su destino deseado y mágicamente funcionará, por ejemplo:
aws s3 cp foo.txt s3://my-bucket/invoices/january/foo.txt
Esto hará que las invoices
y las carpetas de january
'aparezcan'. Si se eliminan todos los objetos de ese directorio, las carpetas "desaparecerán" (porque nunca existieron).
La única opción para vaciar en s3 es un depósito, por lo que una vez que se crea un depósito, puede agregar cualquier dato dentro de él en cualquier estructura de carpeta dinámica. La estructura de carpetas se crea según la ruta que haya establecido para que exista el archivo.