S3小筆記

語言: CN / TW / HK

1、不論文件夾還是文件,在S3都是一個對象。

比如,S3桶裏沒有文件夾Test。直接向桶上傳文件,文件名為Test/2020.txt

那用户在控制枱中能看到Test文件夾,在CLI中也能看到Test/前綴

但它不是以單獨的文件夾Test/存在的,而是以文件名的前綴存在的

如果將文件刪除,就會看到所謂的“Test文件夾”就隨之消失了

如果需要文件夾始終存在,建議單獨在控制枱做創建操作,其本質為創建一個名為"Test/"的對象

創建文件夾,其實就是單獨創建一個名為"Test/“對象

2、S3開啟 "服務器訪問日誌記錄"

在為特定S3桶開啟 "服務器訪問日誌"的時候,如果日誌文件的目標存儲桶選擇的是本桶,那麼將會產生額外的訪問日誌(訪問桶就會產生日誌,產生日誌文件又相當於訪問桶,這樣循環就會產生額外的日誌文件,不便於篩查)

為了方便後期篩查,可以定義日誌文件的目標前綴:

① 如果定義的前綴末尾帶有 ' / ' 符號,如 ' log/ ' 那麼就會產生一個文件夾,並將日誌文件存放到文件夾log中( 其實就是文件夾就是一個以特定前綴存在的對象 )
② 如果定義的前綴末尾沒有' / ' 符號,那麼所有的訪問日誌文件都會以用户設定的前綴存在桶的根目錄下

S3訪問日誌不是開啟之後立即就會產生日誌文件,需要登上一段時間才會開始產生日誌文件。

3、使用S3託管靜態網站

步驟:

創建S3存儲桶,命名與域名一致

控制枱操作:

a、權限->關閉 阻止全部公有訪問權限,即先設置為公有可訪問

b、屬性->靜態網站託管->使用此存儲桶託管網站->索引文件設置為index.html->保存

c、上傳代碼文檔到存儲桶,其中設置的索引文檔必須要存在於桶的根目錄下。

重定向是可用於根據規則更改目標頁面的屬性。如果有重定向的需求 可以在 屬性 -> 靜態網站託管 處將頁面重定向用於以下幾種用例:

1、Setting up the error pages based on http error code 
    根據http錯誤代碼設置錯誤頁面
2、Send certain types of request to a page
    將某些類型的請求發送到頁面
3、Send to a page for all unknown urls
    發送到所有未知網址的頁面
4、Open other pages
    打開其他頁面

輸入桶的終端節點測試訪問

實際項目生產環境中,比較注重安全問題,需要一些策略去限制訪問權限:

1、桶設為公開,設置權限為只可讀

2、桶設為公開,結合CloudFront 設置自定義標頭來限制對桶的訪問

這種方法有瑕疵,因為現實問題就是標頭可以進行偽造,而且S3支持的標頭也有限,所以不推薦

3、桶設置為私有,結合CloudFront,通過對桶做策略,限制只有CloudFront的IP段才能訪問此S3桶

附上CloudFront回源使用的IP段供您參考:

52.82.128.0/19

36.103.232.0/25

36.103.232.128/26

58.254.138.0/25

58.254.138.128/26

111.51.66.0/24

116.129.226.0/25

116.129.226.128/26

118.193.97.64/26

118.193.97.128/25

119.147.182.0/25

119.147.182.128/26

120.52.12.64/26

120.52.22.96/27

120.52.39.128/27

120.52.153.192/26

120.232.236.0/25

120.232.236.128/26

120.253.240.192/26

120.253.241.160/27

120.253.245.128/26

120.253.245.192/27

180.163.57.0/25

180.163.57.128/26

210.51.40.0/24

223.71.11.0/27

223.71.71.96/27

223.71.71.128/25

可以考慮自己的實際情況進行選用

4、

另外有一個不可行的方案是,桶設置為私有,使用CloudFront的OAI源訪問身份這個特殊用户,對S3坐訪問限制。但是這種方案僅適用於S3桶的對象訪問,像靜態網站託管這種自定義規則不適用

官方解釋:

如果您使用配置為網站終端節點的 Amazon S3 存儲桶,則必須使用 CloudFront 將其設置為自定義源。您無法使用本主題中描述的源訪問身份功能。但是,您*可以* 通過設置自定義標頭和配置源來要求提供標頭,限制對自定義源上內容的訪問。有關更多信息,請參閲 [在自定義源上限制對文件的訪問](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/private-content-overview.html#forward-custom-headers-restrict-access)。

參考鏈接:

https://blog.csdn.net/cumian8165/article/details/108156036