web-dev-qa-db-fra.com

Liste des répertoires sur le site Web statique S3

J'ai configuré un compartiment S3 pour héberger des fichiers statiques.

Lors de l'utilisation du point de terminaison du site Web (http: //.s3-website-us-east-1.amazonaws.com/): cela m'oblige à définir un fichier d'index. Lorsque le fichier n'est pas trouvé, il génère une erreur au lieu de répertorier le contenu du répertoire.

Lors de l'utilisation du point de terminaison s3 (.s3.amazonaws.com): J'obtiens une liste XML des fichiers, mais j'ai besoin d'une liste HTML que les utilisateurs peuvent cliquer sur le lien vers le fichier.

J'ai essayé de définir les autorisations de tous les fichiers et du compartiment lui-même sur "Liste" pour "Tout le monde" dans la console AWS, mais toujours pas de chance.

J'ai également essayé certaines des alternatives javascript, mais elles ne fonctionnent pas sous l'URL du site Web (qui redirige vers le fichier d'index) ou ne fonctionnent tout simplement pas. En dernier recours, une liste javascript pliable serait mieux que rien, mais je n'en ai pas trouvé une bonne.

Est-ce possible? Si oui, dois-je changer les autorisations, l'ACL ou autre chose?

37
iJeep

J'ai trouvé s3browser , ce qui m'a permis de créer un répertoire sur le site Web principal qui permettait de parcourir le compartiment s3. Cela a très bien fonctionné et a été très facile à installer.

4
iJeep

J'ai créé un simple morceau de JS qui crée un index de répertoire dans le style HTML que vous recherchez: https://github.com/rgrp/s3-bucket-listing

Le README contient des instructions spécifiques pour la gestion des compartiments "site Web" Amazon S3: https://github.com/rgrp/s3-bucket-listing#website-buckets

Vous pouvez voir un exemple en direct du script en action sur ce compartiment s3 (en mode site Web): http://data.openspending.org/

32
Rufus Pollock

Il y a aussi cette solution: https://github.com/caussourd/aws-s3-bucket-listing

Similaire à https://github.com/rgrp/s3-bucket-listing mais je n'ai pas pu le faire fonctionner avec Internet Explorer. Donc https://github.com/caussourd/aws-s3-bucket-listing fonctionne avec IE et ajoute également la possibilité de classer les fichiers par noms, taille et la date. En revanche, il ne suit pas les dossiers: seuls les fichiers à un niveau sont affichés.

8
Céline Aussourd

Cela pourrait résoudre votre problème. Paramètres de sécurité pour le groupe Tout le monde: (vous avez besoin du logiciel bucketexplorer.com pour cela)

Si vous partagez des fichiers HTTP, vous souhaiterez peut-être que les utilisateurs puissent répertorier le contenu d'un compartiment (dossier). Si vous souhaitez que le contenu du compartiment soit répertorié lorsque quelqu'un entre le nom du compartiment (http: // s3 .amazonaws.com/bucket_name /), puis modifiez la liste de contrôle d'accès et donnez au groupe Tout le monde le niveau d'accès de lecture (et faites de même avec le contenu du bucket.) Si vous ne voulez pas que le contenu du bucket soit listable mais ne souhaitez pas partager le fichier qu'il contient, désactivez l'accès en lecture pour le groupe Tout le monde pour le compartiment lui-même, puis activez l'accès en lecture pour les fichiers individuels au sein du compartiment.

5
Tony

J'ai eu un problème similaire et j'ai créé une solution JavaScript et iframe qui fonctionne assez bien pour répertorier les répertoires dans les fichiers du site Web S3. Il vous suffit de déposer quelques fichiers .html dans le répertoire que vous souhaitez répertorier. Vous pouvez le trouver ici: https://github.com/adam-p/s3-file-list-page

4
adam-p

Utilisation d'une autre base d'approche en JavaScript pur et en API JavaScript AWS SDK. Pas besoin de PHP ou autre moteur juste un site Web pur (Apache ou même IIS).

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

Pas l'intention de déployer sur votre propre compartiment (pour moi, cela n'a aucun sens).

En utilisant les nouveaux utilisateurs IAM d'AWS, vous pouvez fournir un accès plus spécifique et sécurisé à vos compartiments. Pas besoin de publier votre bucket sur le site Web et de le rendre public.

Si vous souhaitez sécuriser l'accès, vous pouvez utiliser les méthodes classiques pour authentifier les utilisateurs de votre site Web actuel.

J'espère que cette aide aussi!

4
Juvs

J'ai créé une solution beaucoup plus simple. Placez simplement le fichier index.html à la racine de votre dossier et il fera le travail. Aucune configuration requise. https://github.com/prabhatsharma/s3-directorylisting

4
Prabhat