2012-02-12 12 views
30

Statik dosyaları barındırmak için bir S3 grubu kurdum.S3 Statik Web Sitesindeki Dizin Listeleme

Web sitesi bitiş noktasını kullanırken (http: //.s3-website-us-east-1.amazonaws.com/): beni bir dizin dosyası oluşturmaya zorlar. Dosya bulunamadığı zaman, dizin içeriklerini listelemek yerine bir hata atar.

s3 uç noktasını kullanırken (.s3.amazonaws.com): Dosyaların bir XML listesini alıyorum, ancak kullanıcıların dosyanın bağlantısını tıklatabilecekleri bir HTML listesine ihtiyacım var.

AWS Konsolu'ndaki "Everyone" için tüm dosyaların ve paketin kendisini "Listele" olarak ayarlamayı denedim, ancak yine de şans yok.

Ayrıca javascript alternatiflerinden bazılarını denedim, ancak ya web sitesinin URL'si altında çalışmıyorlar (dizin dosyasına yönlendiriyorlar) ya da hiç çalışmıyorlar. Son çare olarak, daraltılabilir bir javascript listesi hiçbir şeyden daha iyi olamazdı, ama iyi bir tane bulamadım.

Bu mümkün mü? Öyleyse, izinleri, ACL'yi veya başka bir şeyi mi değiştirmem gerekiyor?

cevap

3

bana s3 kepçenin tarama izin ana web sitesinde bir dizin kurmak için izin hangi s3browser bulundu. Çok iyi çalıştı ve kurulması çok kolaydı.

+0

Bunu nasıl yapılacağının belgelerine işaret edebilir misiniz? şerefe – gollumullog

+1

Yani tahmin ediyorum ki, bu "doğru" cevap olduğu için, hiç kimse S3 üzerinde% 100 bunu yapmak için bir yol anladım. Bu çözüm, mini uygulamayı barındırmak için başka bir sunucuya sahip olmayı gerektirir. –

4

Bu, sorununuzu çözebilir. Everyone grubu için güvenlik ayarları: (bunun için bucketexplorer.com yazılımına ihtiyacınız var)

HTTP dosyalarını paylaşıyorsanız, kişilerin bir grubun içeriğini listeleyebilmelerini isteyebilirsiniz veya istemeyebilirsiniz (klasör.) Birisi kova adı (http://s3.amazonaws.com/bucket_name/) girdiğinde kepçe içeriklerini listelemek istiyorsanız, Erişim Kontrol Listesi'ni düzenleyin ve Everyone grubuna Okuma erişim düzeyini verin (ve yapın). Kepçe içeriğiyle aynı şekilde.) Kepçe içeriğinin listelenmesini istemiyorsanız, ancak dosyayı kendi içinde paylaşmak istiyorsanız, grubun kendisi için Okuma erişimi'ni devre dışı bırakın ve ardından Okuma erişimi'ni etkinleştirin. Kovadaki bireysel dosyalar.

+0

http://s3.amazonaws.com/bucket_name/ yöntemini denedim ve bir HTML listesi yerine bir XML listesi sunuyor. – iJeep

4

Benzer bir sorun yaşadım ve S3 web sitesi dosyalarındaki dizinleri listelemek için oldukça iyi çalışan bir JavaScript ve iframe çözümü oluşturdum. Listelemek istediğiniz dizine birkaç .html dosyası bırakmanız yeterlidir. Burada bulabilirsiniz: https://github.com/adam-p/s3-file-list-page

+0

iFrame iyi bir fikir. İhtiyacım olanı yapmak için bir program bulmayı bitirdim. Bir cevap yazacağım. Web sitesinden – iJeep

+0

: Bu iframe kesmek, S3'teki CORS desteğinin tanıtımıyla (2012-09-01) muhtemelen ortadan kaldırılabilir. Bu nedenle, demo sitenin çalışmaya devam edeceğini garanti etmiyorum. –

26

ben aradığınız HTML tarzında bir dizin dizin oluşturur JS basit bit oluşturduk: https://github.com/rgrp/s3-bucket-listing#website-buckets

: https://github.com/rgrp/s3-bucket-listing

README Amazon S3 "web sitesi" gruplar işlemek için özel talimatlar vardır

Bu s3 kabında (web sitesi modunda) komut dosyasının canlı bir örneğini görebilirsiniz: http://data.openspending.org/

+0

Bunun nasıl bir görünüm oluşturduğuna dair canlı bir demo düzenleyebileceğinizi düşünüyor musunuz? Aksi takdirde, belki bazı ekran görüntüleri? –

+0

@MerynStol cevaba canlı bir örneğe bir link ekledim. Css fu biraz daha güzel görünmesini sağlayabilirsiniz (amacım klasik apache stili dizini taklit etmek oldu ...) –

+0

Teşekkür ederim! Onu seviyorum :) –

4

Salt JavaScript ve AWS SDK JavaScript API'sinde başka bir yaklaşım tabanı kullanın. PHP veya başka bir motora gerek yok sadece saf web sitesi (Apache ve hatta IIS).

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

Kendi kova üzerine dağıtmak için niyet (benim için hiçbir anlam ifade) değil.

AWS'den yeni IAM Kullanıcılarını kullanarak, kovalarınıza daha spesifik ve güvenli erişim sağlayabilirsiniz. Kovanınızı web sitesine yayınlamanıza ve herkese açık hale getirmenize gerek yok.

Erişimi güvenli hale getirmek istiyorsanız, geçerli web siteniz için kullanıcıların kimliğini doğrulamak için geleneksel yöntemleri kullanabilirsiniz.

Bu yardımı da umarım!

+0

Bunu beğendim. Belki de HTML/JS/CSS dosyasını statik bir web sitesi olarak sunulan S3 paketine yükleyebiliriz. Bunu deneyeceğim. –

İlgili konular