開源CMS Drupal 如何將本地文件存儲到亞馬遜S3上✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴?
對于網站而已❻❼❽❾❿⓫⓬⓭⓮⓯⓰,文件和資源是用戶訪問的重要內容♦☜☞☝✍☚☛☟✌✽✾✿❁❃,如果將文件和資源存儲到云平臺上☈⊙☉℃℉❅,便開源提高用戶訪問的體驗性☧☬☸✡♁✙♆。,、':∶;,以及更加高效友好的管理資源文件㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。此外⑰⑱⑲⑳⓪⓿❶❷❸❹❺,云平臺還有安全控制⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、流量控制ⓣⓤⓥⓦⓧⓨⓩ、與CDN更好集成♀☿☼☀☁☂☄、跨國跨區域等一般WEB服務器不具備的功能⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,因此存儲到云平臺將是最優管理解決方案ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。
亞馬遜云平臺簡稱AWS(Amazon Web Services)ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,提供了對云存儲的支持웃유ღ♋♂,簡稱S3 (Simple Storage Service)ⓣⓤⓥⓦⓧⓨⓩ,是一個高效☾☽❄☃、持久化⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓、安全性高以及可擴展的存儲云平臺⑰⑱⑲⑳⓪⓿❶❷❸❹❺,對于我們做外貿網站以及英文網站❣❦❧♡۵,亞馬遜是一個很好的解決方案❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。
本文就Drupal如何與亞馬遜S3平臺集成✵✶✷✸✹✺✻✼❄❅,做一個簡單的介紹①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。關于英文網站的介紹웃유ღ♋♂,可以參考我們之前的文章:

為什么要選擇亞馬遜S3⑰⑱⑲⑳⓪⓿❶❷❸❹❺?
亞馬遜S3是亞馬遜的一個服務ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,提供了對文件和資源的存儲管理☾☽❄☃,用亞馬遜存儲代替本機存儲ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,有以下優點:
- 高可用♦☜☞☝✍☚☛☟✌✽✾✿❁❃。亞馬遜提供99.99999%的高可用性ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,并且亞馬遜會將內容復制❻❼❽❾❿⓫⓬⓭⓮⓯⓰,防止單點損壞✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,因此亞馬遜對高可用ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,防止文件損壞☾☽❄☃、丟失方面做了大量工作⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,是安全的保障❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。
- 信息安全及合規⒜⒝⒞⒟⒠⒡⒢⒣⒤。亞馬遜集成了文件智能識別等技術☧☬☸✡♁✙♆。,、':∶;,可以幫助識別敏感信息✺ϟ☇♤♧♡♢♠♣♥,支持文件加密ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,防止內容泄露⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。因此在信息安全方面✺ϟ☇♤♧♡♢♠♣♥,亞馬遜非常強大㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
- 方便管理✵✶✷✸✹✺✻✼❄❅。亞馬遜提供了WEB工具以及客戶端工具⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,可以方便的管理✺ϟ☇♤♧♡♢♠♣♥、復制ⓣⓤⓥⓦⓧⓨⓩ、下載存儲的文件資源웃유ღ♋♂。
- 可擴展ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。亞馬遜提供了完整ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、豐富的API集成說明和案例❻❼❽❾❿⓫⓬⓭⓮⓯⓰,API訪問方式等⒜⒝⒞⒟⒠⒡⒢⒣⒤。并且可以很方便的集成CDN✵✶✷✸✹✺✻✼❄❅、流媒體播放等功能㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,因此擴展性極強⒜⒝⒞⒟⒠⒡⒢⒣⒤。
- 低成本①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。相比較而言✵✶✷✸✹✺✻✼❄❅,亞馬遜的S3是按量使用收費⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,對于云平臺的使用來講㈠㈡㈢㈣㈤㈥㈦,成本還是比較低的ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
Drupal與亞馬遜S3的集成
首先✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,Drupal已經有S3的集成模塊⒜⒝⒞⒟⒠⒡⒢⒣⒤,我們先下載如下兩個模塊⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,
- S3 file system - 集成Drupal的文件存儲到 Amazon S3✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,這個可以代替Drupal默認的文件操作☈⊙☉℃℉❅,因此Drupal本機可以不用做文件管理❻❼❽❾❿⓫⓬⓭⓮⓯⓰。
- S3 filesystem CORS upload -可以實現瀏覽器到S3的直傳功能⒜⒝⒞⒟⒠⒡⒢⒣⒤,因此不用再走web服務器⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,性能大大提高✺ϟ☇♤♧♡♢♠♣♥。
(1) 創建亞馬遜賬號
首先ⓣⓤⓥⓦⓧⓨⓩ,是創建亞馬遜賬號ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,這個比較簡單⑰⑱⑲⑳⓪⓿❶❷❸❹❺,按照流程一步一步創建一個亞馬遜賬號即可ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
創建好之后❻❼❽❾❿⓫⓬⓭⓮⓯⓰,登錄進去⑰⑱⑲⑳⓪⓿❶❷❸❹❺,我們需要一個客戶端訪問的credentials✺ϟ☇♤♧♡♢♠♣♥, 點擊Security Credentials, 進去后然后點擊 Access keys 去創建一個Access keys❻❼❽❾❿⓫⓬⓭⓮⓯⓰,創建完成之后下載保存㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,后面會用到ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
(2)配置亞馬遜S3 Bucket
Bucket類似一個容器✺ϟ☇♤♧♡♢♠♣♥,可以存儲各種文件ⓣⓤⓥⓦⓧⓨⓩ,我們到亞馬遜的后臺♀☿☼☀☁☂☄,創建一個Bucket⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,到后臺按指引①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,創建一個Bucket即可❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,并且打開公共訪問選項㈠㈡㈢㈣㈤㈥㈦。


(3)Durpal后臺的設置
在Drupal里面安裝我們之前所說☧☬☸✡♁✙♆。,、':∶;,安裝S3模塊♦☜☞☝✍☚☛☟✌✽✾✿❁❃,安裝成功之后✺ϟ☇♤♧♡♢♠♣♥,到模塊的配置界面❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,如下圖所示⒜⒝⒞⒟⒠⒡⒢⒣⒤,進行配置♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
需要填上我們之前保存的credentials的文件路徑①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。

此外①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,也可以把亞馬遜的訪問路徑⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,保存到Drupal的settings.php文件里面❣❦❧♡۵,這樣可以通過代碼方便管理㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
$settings['s3fs.access_key'] = '*************************';
$settings['s3fs.secret_key'] = '*************************';
$config['s3fs.settings']['bucket'] = 'techxbucket';
$config['s3fs.settings']['region'] = 'ap-south-1';
$settings['s3fs.use_s3_for_public'] = FALSE;
$settings['s3fs.upload_as_private'] = TRUE;
(4)配置存儲位置
可以給Drupal的Field設置存儲位置❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,一般我們新建一個文件字段☈⊙☉℃℉❅,可以配置其存儲位置☈⊙☉℃℉❅,這個時候就可以選擇S3作為存儲位置✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴。

另外⒜⒝⒞⒟⒠⒡⒢⒣⒤,也可以安裝Drupal的flysystem模塊ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,然后選擇使用S3作為Drupal的文件系統⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,這樣就將整個網站用戶上傳的文件就會自動到亞馬遜的S3里面♀☿☼☀☁☂☄,無需做其他額外的開發操作❣❦❧♡۵。
如果要更高級的使用方式♀☿☼☀☁☂☄,比如流媒體⒜⒝⒞⒟⒠⒡⒢⒣⒤、加密展示☈⊙☉℃℉❅、防盜鏈等ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,則需要S3的API進行操作⒜⒝⒞⒟⒠⒡⒢⒣⒤,需要進一步的開發ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。
最后ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,關于新聞網站的建設①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,可以參考我們其他相關文章⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,