2011-06-07 84 views
20

我正在考慮使用Amazon S3來提供我的靜態網站。我創建了一個存儲桶並上傳了我的文件;在AWS管理控制檯的「網站」選項卡下,我已選中「啓用」並在「索引文檔」字段中輸入index.html。我有以下存儲桶政策:爲什麼當我要求/ foo或/ foo /時,Amazon S3不會自動爲/foo/index.html提供服務?

{ 
    "Version": "2008-10-17", 
    "Id": "924a2348-de0e-43aa-bb06-83adbcd1db22", 
    "Statement": [ 
     { 
      "Sid": "PublicReadForGetBucketObjects", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::my-bucket/*" 
     } 
    ] 

} 

其中我有我的存儲桶的名稱而不是my-bucket。在「權限」標籤下,我還授予了「每個人」的列表功能。

如果我嘗試訪問my-bucket.s3.amazonaws.com/index.html我的頁面(及其圖像,CSS等)按預期顯示。但是,只需要my-bucket.s3.amazonaws.commy-bucket.s3.amazonaws.com/即可提供目錄列表XML文件,而不是顯示頁面。如果我嘗試去my-bucket.s3.amazonaws.com/subdirectory,我收到一個錯誤(用XML表示)「指定的密鑰不存在」。最奇怪的是,如果我嘗試去my-bucket.s3.amazonaws.com/subdirectory/(帶有斜線),則不會加載頁面,但我的瀏覽器將下載一個空文件名爲download。 (再一次,去my-bucket.s3.amazonaws.com/subdirectory/index.html按預期顯示頁面。)

我在這裏做錯了什麼?當請求目錄名稱時,如何讓S3顯示index.html文件?

回答

12
+24

我發現這個問題。我已經在某個時候閱讀過你的第二個鏈接,但我剛回去重新閱讀並意識到我使用了錯誤的域名。我應該一直使用'my-bucket.s3-website-us-east-1.amazonaws',而不是期待我的網站託管在'my-bucket.s3.amazonaws.com'上。 com'。 (您也可以根據需要更改該區域。)現在我知道要查找它,但這個區別很明顯,但是男孩,這個子域的東西是否已被掩蓋!無論如何,我希望現在其他人能夠從我的不注意中獲益:-) – bdesham 2011-06-07 22:09:12

+0

瞭解您的真實網址,轉到'console.aws.amazon.com'並點擊頂部的「屬性」標籤,選擇您的存儲桶在那裏你可以看到你的「端點」網址 – vsync 2013-03-30 22:40:28

+0

也值得注意的是,如果你最初使用錯誤的CNAME(例如my-bucket.s3.amazon.com),不要忘記(像我一樣)DNS會緩存這個一會兒。 :) – 2013-09-30 18:38:10

相關問題