2017-03-17 49 views
0

我目前在AWS S3上託管一個靜態網站。我只有AWS Cognito認證用戶才能訪問網站的某些部分。 S3存儲桶的這些部分僅限於某些角色。據我瞭解,一旦Cognito用戶收到他們的臨時AWS憑證,我需要使用S3 sdk從S3加載受限制對象(index.html)並將其顯示在網頁中。這是否是正確的方法,一旦我從S3中取回對象,我該如何將它加載到網頁中?謝謝!顯示來自AWS S3的私人HTML文件

+0

你是什麼意思的「網站的部分」?你的意思是像圖片這樣的元素,還是你的意思是HTML網頁?例如,「從S3加載受限對象(index.html)並將其顯示在網頁中」是什麼意思?您打算使用任何Amazon EC2實例還是使用任何AWS Lambda函數來處理您的應用程序和安全邏輯? –

+0

因此,我所有不同的index.html文件都託管在AWS S3上。我想在用戶點擊我網站上的某個鏈接時將頁面更改爲不同的index.html。然而,當點擊這個鏈接時,他們的憑證已經過驗證,然後我需要確保他們具有訪問該網頁的適當權限。一旦權限被驗證,我想加載新的index.html作爲當前頁面。我希望清除它! –

回答

0

您將需要在後端運行的應用程序邏輯來控制您的安全性並存儲/檢索數據。儘管其中的大部分工作都可以通過瀏覽器完成,但它可以被黑客利用。因此,您需要後端的訪問控制邏輯。

選項1:API網關和Lambda功能

你可以有一個靜態頁面擔任了亞馬遜S3,這使得API調用通過API網關LAMBDA功能。這就是所謂的無服務器型號

下面是來自Serverless Code website樣品圖:

Serverless architecture

基本上,lambda函數接收請求,確定該用戶是否被授權,確定什麼,他們會收回(例如預簽名URL來一個不同的頁面)並將其發送回網頁。這種設計的好處是它不需要任何服務器。

選項2:亞馬遜EC2服務器

或者,您可以通過運行一個彈性負載均衡門前亞馬遜EC2實例。這是傳統的應用程序設計,允許您使用許多不同的框架。但是,即使沒有人正在使用您的應用程序,服務器仍有持續的成本。