2015-05-13 120 views
2

我正在研究如何使用AWS Cloudfront開發第三方可用於訪問存儲在S3存儲桶中的數據的API。AWS REST API設計

我環顧四周,找不到任何好的例子,如果這是可能的方式,我想實現它。

基本上我需要做的就是通過使用簽名URL 的HTTP請求來提供對S3存儲桶中的JSON數據的訪問,這些簽名使用爲Amazon身份和訪問管理控制檯中的每個用戶生成的訪問密鑰簽名。我然後 爲每個用戶分配用戶特定的策略,以定義他們可以訪問哪些存儲桶,文件夾和對象。

第三方是否有可能以這種方式訪問​​數據,而無需使用cloudfront API創建簽名url或成爲AWS賬戶持有人?

可我只是爲他們提供的URL對象和我產生這樣的要求會是這樣,他們可以通過瀏覽器訪問他們的特定訪問鍵:

https://www.example.com/examplebucket/examplefolder/exampleobject?key-pair-id=1111-1111-1111-1111 

我已經試過這我自己但只能得到一個拒絕訪問錯誤 - 需要簽名,但我可以看到得到這個簽名的唯一方法是使用cloudfront API創建簽名網址的 。

任何人有任何想法,如果這種方法是可能的或更好的方法?

感謝

回答

0

的另一個選擇的Cloudfront私人內容將建立自己的服務器。對於其他AWS服務,如數據庫,這樣可以。但由於資源是一個S3對象,因此除非您是服務請求的服務器,否則很難屏蔽該url。所以不幸的是,Cloudfront仍然是訪問限制的可行方式。請注意,您仍然需要設置服務器來驗證將獲得簽名url的用戶。

+0

感謝Inmyth爲您的答案。將對象設置爲公共工程很好,但我需要限制對不同用戶的訪問,這就是爲什麼我想知道是否可以分配用戶和訪問權限,以允許用戶不使用Amazon API訪問數據。 – d199224

+0

我修改了我的答案,並表示歉意。起初,我將你的問題解釋爲在沒有IAM的情況下提供公共訪問。但從您的評論和原始問題來看,Cloudfront API仍然是這種情況下最可行的方法。 – inmyth

+0

謝謝inmyth,我現在對我的解決方案有更好的想法 – d199224

0

如果您打算構建REST API使用API​​ Gateway。這是完全爲API設計的服務,將解決諸如版本控制,緩存&等問題。它在內部使用Cloudfront,因此您將從中獲得類似的好處。