簡體   English   中英

如何顯示不公開的s3存儲桶中的對象

[英]How to show objects from an s3 bucket that is not public

我試圖顯示來自非公開的S3存儲桶中的對象。 為此,我必須提供對AWS的訪問和密鑰。

我有這個小提琴(沒有按鍵),但是當我輸入正確的按鍵時它不起作用: http : //jsfiddle.net/jsp3wzbu/

<section ng-app data-ng-controller="myCtrl">
    <img  ng-src="{{s3url}}" id="myimg">
</section>

另外,如何處理安全性? 我不想將訪問/秘密密鑰存儲在我的客戶端代碼中,因為用戶會看到它。 我的服務器代碼將這些鍵保存在環境變量中,我擔心如果與客戶端JS代碼共享這些鍵,那么它們將被公開。 我還有其他方法可以在瀏覽器中顯示S3對象嗎? ....服務器是否可以將圖像提供為base64 json並由客戶端代碼進行渲染?

您可以遵循多種方法來實現此目的。

  • 使用S3簽名的網址。
  • 使用AWS STS從后端生成臨時訪問憑證。
  • 使用AWS Cognito聯合身份生成臨時訪問憑證。
  • 使用CloudFront簽名的網址或Cookies。

注意:不建議將永久IAM憑據存儲或發送到客戶端。

這是我提供訪問私有S3存儲桶內容的方式。

  1. 我為我的EC2實例使用IAM角色。 我沒有在EC2實例上存儲AWS憑證。
  2. 我要求用戶登錄。 您可以使用家庭釀造登錄設置(數據庫),Cognito或其他IDP,例如Google或Facebook。
  3. 根據我的后端代碼,我生成了預簽名的URL,這些URL將在15分鍾后失效。 如果URL用於大型文件,則假定Internet連接緩慢,我會根據文件的大小將超時調整為更長。
  4. 在HTML頁面的JavaScript中,我會在15分鍾到期之前刷新URL(通常每5分鍾通過AJAX刷新一次)。 這可以通過一個簡單的刷新頁面來完成,也可以(最好)使用AJAX來刷新URL。 這可以處理長時間使頁面保持打開狀態的用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM