2012-02-12 22 views
30

He configurado un depósito S3 para alojar archivos estáticos.Lista de directorios en el sitio web estático S3

Al usar el punto final del sitio web (http: //.s3-website-us-east-1.amazonaws.com/): me obliga a establecer un archivo de índice. Cuando no se encuentra el archivo, arroja un error en lugar de enumerar los contenidos del directorio.

Al usar el punto final s3 (.s3.amazonaws.com): Obtengo una lista XML de los archivos, pero necesito una lista HTML para que los usuarios puedan hacer clic en el enlace al archivo.

He intentado establecer los permisos de todos los archivos y el depósito en "Lista" para "Todos" en la consola de AWS, pero todavía no hay suerte.

También he intentado algunas de las alternativas de javascript, pero o bien no funcionan bajo la URL del sitio web (que redirige al archivo de índice) o simplemente no funcionan en absoluto. Como último recurso, una lista desplegable de JavaScript sería mejor que nada, pero no he encontrado una buena.

¿Esto es posible? De ser así, ¿necesito cambiar los permisos, la ACL o alguna otra cosa?

Respuesta

3

He encontrado s3browser, lo que me permitió configurar un directorio en el sitio web principal que permitió la navegación del depósito de S3. Funcionó muy bien y fue muy fácil de configurar.

+0

¿Puede indicarme la documentación de cómo hacer esto? cheers – gollumullog

+1

Así que estoy adivinando que debido a que esta fue la respuesta "correcta", nadie ha descubierto una manera de hacer esto al 100% en S3. Esta solución requiere tener otro servidor para alojar la mini aplicación. –

4

Esto podría resolver su problema. Grupo de configuración de seguridad para Todos: (necesita el software bucketexplorer.com para esto)

Si está compartiendo archivos de HTTP, puede o no querer que las personas puedan enumerar los contenidos de un contenedor (carpeta.) Si desea que el contenido del cubo se enumere cuando alguien ingrese el nombre del depósito (http://s3.amazonaws.com/bucket_name/), edite la Lista de control de acceso y otorgue al grupo Todos el nivel de acceso de Lectura (y haga del mismo modo que con el contenido del depósito). Si no desea que el contenido del paquete se pueda mostrar pero desea compartir el archivo dentro de él, desactive el acceso de Lectura para el grupo Todos para el depósito en sí, y luego habilite el acceso de Lectura para el archivos individuales dentro del cubo.

+0

He intentado el método http://s3.amazonaws.com/bucket_name/ y presenta una lista XML en lugar de una lista HTML. – iJeep

4

Tuve un problema similar y creé una solución JavaScript-and-iframe que funciona bastante bien para listar directorios en archivos de sitios web S3. Solo tiene que colocar un par de archivos .html en el directorio que desea enumerar. Lo puedes encontrar aquí: https://github.com/adam-p/s3-file-list-page

+0

iFrame es una buena idea. Terminé encontrando un programa para hacer lo que necesitaba. Voy a publicar una respuesta. – iJeep

+0

desde el sitio web: Este pirateo iframe probablemente se obvió con la introducción (2012-09-01) del soporte CORS en S3. Como tal, no garantizo que el sitio de demostración se mantendrá funcionando. –

26

He creado un poco simple de JS que crea un índice de directorio en el estilo de HTML que buscas: https://github.com/rgrp/s3-bucket-listing

El README tiene instrucciones específicas para el manejo de Amazon S3 "Sitio Web" cubos: https://github.com/rgrp/s3-bucket-listing#website-buckets

Puede ver un ejemplo en vivo de la secuencia de comandos en acción en este depósito s3 (en modo sitio web): http://data.openspending.org/

+0

¿Crees que podrías poner una demostración en vivo de qué tipo de vista genera esto? De lo contrario, tal vez algunas capturas de pantalla? –

+0

@MerynStol he agregado un enlace a un ejemplo en vivo en la respuesta. Tenga en cuenta que con un poco de css fu podría hacer que se vea mejor (mi objetivo era imitar el listado clásico de directorios de estilo apache ...) –

+0

¡Gracias! Me encanta :) –

4

Utilizando otra base de enfoque en JavaScript puro y AWS SDK JavaScript API. No necesita PHP u otro motor solo sitio web puro (Apache o incluso IIS).

https://github.com/juvs/s3-bucket-browser

No es la intención de implementar en su propia cuchara (para mí, no tiene sentido).

Al utilizar los nuevos usuarios de IAM de AWS, puede proporcionar un acceso más específico y seguro a sus depósitos. No es necesario publicar su depósito en el sitio web y hacer todo público.

Si desea asegurar el acceso, puede utilizar los métodos convencionales para autenticar a los usuarios de su sitio web actual.

Espero que esta ayuda también!

+0

Me gusta este. Tal vez solo podamos subir el archivo HTML/JS/CSS al contenedor S3 que se sirve como un sitio web estático. Voy a intentar esto. –

Cuestiones relacionadas