2016-10-03 69 views
1

我們使用亞馬遜S3來管理圖像和視頻。我們能夠成功整合它,並在我們的網站上加載視頻和圖像。亞馬遜S3防止在瀏覽器中打開媒體網址

例如URL https://s3.ap-south-1.amazonaws.com/prod/image/20160810065109.png https://s3.ap-south-1.amazonaws.com/prod/video/43443.mp4

我們想直接取上面的鏈接在瀏覽器下載或播放限制用戶。我知道我們可以允許幾個IP訪問亞馬遜S3網站。我們有Andriod應用程序,獲取這些亞馬遜S3網址。所以IP限制將不起作用。亞馬遜s3是否提供了這個限制的任何其他機制,並允許?請指教。如果我們有一個實施例子,那將是非常好的。

回答

3

最合適的解決方案是使用Amazon S3 Pre-Signed URL

默認情況下,Amazon S3中的所有對象都是私有的。然後,您可以添加權限,以便人們可以訪問您的對象。這可以通過以下方式進行:

  • 對單個對象
  • 水桶策略的訪問控制列表的權限(即授權基於路徑,IP地址,引薦等範圍廣泛的訪問)
  • IAM用戶和組(即權限授予與AWS憑證用戶)
  • 前置簽名網址

Pre-Signed URL可用於授予訪問S3 OBJE cts作爲「覆蓋」訪問控制的一種方式。一個通常爲私人的對象可以通過追加到期時間和簽名通過URL訪問。這是在不需要Web服務器的情況下提供私人內容的好方法。

如果你的目標是服務內容只有在使用預簽名URL,然後:

  • 不分配通過上面列出的常規方法的任何權限(這讓他們的私人默認)
  • 使用預簽名URL來訪問對象

這種方式,訪問對象的唯一方法是使用預簽名URL(其中有一個簽名)。不需要存儲桶策略。

這將是負責您的應用程序的適當驗證用戶,以確定他們是否被允許訪問對象S3。如果他們被授予訪問權限,那麼你的應用程序應該將生成預先簽名的URL作爲對象的認證鏈接。這些網址僅適用於有限的時間段

這最好是通過讓後端應用程序(可能在Amazon EC2或AWS Lambda上運行)執行身份驗證並生成URL來實現。然後,您的Android應用可以使用這些網址訪問S3中的內容。

+0

嗨,John,謝謝你的詳細回覆。讓我看看。 – Abhilash

+1

我們可以使用Php生成預簽名的url嗎? – Abhilash

+0

我對預先簽名的網址有疑問。預先簽名的網址將在3分鐘後過期。假設我有視頻。用戶訪問視頻播放頁面,但未點擊播放按鈕。 5分鐘後(預先簽名的URL可能會過期),如果用戶點擊播放按鈕,視頻播放? – Abhilash