簡體   English   中英

使用API​​ Gateway,Lambda,Cognito,S3,Dynamodb部署AWS Global基礎架構

[英]Deploying AWS Global infrastructure with API Gateway, Lambda, Cognito, S3, Dynamodb

假設我需要一個運行Lambdas的API網關,並且我希望創建最佳的全球分布式執行基礎架構。 此外,我將使用Cognito進行身份驗證,Dynamodb和S3用於用戶數據和前端靜態。

我的應用程序位於myapp.com

首先,用戶從最近的位置獲取靜態前端:

user ===> CloudFront的邊緣位置<---任何地區的S3(帶靜態前端)

之后我們需要與API Gateway通信。

user ===> API Gateway ---> Lambda ---> S3 || Cognito || Dynamodb

API網關可以位於多個區域,即使與CloudFront一起分發,每個端點也指向位於給定區域的Lambda:假設我在eu-west-1部署API。 如果從美國發送請求,即使我的API在CloudFront上,它運行的Lambda也位於eu-west-1,因此延遲也會很高。

為了避免這種情況,我需要在us-east-1和我所有的Lambdas上部署另一個API。 該API將指向那些Lambdas

如果我為每個區域部署一個API,我需要為每個區域配置一個端點,並且前端應該決定請求哪個端點。 但我們怎么知道哪一個是最近的位置?

理想情況是api.myapp.com的單個全局端點, api.myapp.com轉到最近的API網關,該網關也運行位於該區域的api.myapp.com 我可以使用路由53延遲路由配置多個A記錄指向每個api網關嗎?

如果這不是正確的方法,你能指出我正確的方向嗎?

AWS最近宣布支持區域API端點,您可以使用它來實現此目的。

下面是一個AWS博客,解釋了如何實現這一目標:

使用Amazon API Gateway和AWS Lambda構建多區域無服務器應用程序

摘自博客:

API Gateway中的默認API端點類型是邊緣優化的API端點,它使客戶端能夠通過Amazon CloudFront分配訪問API。 這通常可以改善地理位置不同的客戶端的連接時間。 默認情況下,自定義域名是全局唯一的,邊緣優化的API端點在Lambda集成的情況下將在單個區域中調用Lambda函數。 您不能將此類型的端點與Route 53主動 - 主動設置和故障轉移一起使用。

API網關中的新區域API端點將API端點移動到該區域,並且每個區域的自定義域名是唯一的。 這使得可以在每個區域中運行API的完整副本,然后使用Route 53來使用主動 - 主動設置和故障轉移。

不幸的是,這目前還不可行 這里的主要阻止者是CloudFront。 MikeD @ AWS在其論壇上提供信息:

創建自定義域名時,它會為域名創建關聯的CloudFront分配,CloudFront會對域名強制實施全局唯一性。

如果已存在具有域名的CloudFront分配,則CreateCloudFrontDistribution將失敗,並且API Gateway將返回錯誤,而不保存域名或允許您定義其關聯的API。

因此,目前(2016年6月29日)無法在多個區域中獲取API網關來處理相同的域名。

自2016年7月4日確認存在開放功能請求以來,AWS沒有提供必要的更新.AWS 表格更新線程

Checkout Lambda @ Edge

問:什么是Lambda @ Edge? Lambda @ Edge允許您在全球范圍內跨AWS位置運行代碼,無需配置或管理服務器,以最低的網絡延遲響應最終用戶。 您只需將Node.js代碼上傳到AWS Lambda,並將您的功能配置為響應Amazon CloudFront請求而觸發(即,當查看者請求登陸時,請求被轉發或從原點接收,並且在響應之前回到最終用戶)。 然后,當收到內容請求時,代碼就可以在全球范圍內的AWS位置執行,並隨全局范圍內的CloudFront請求量進行擴展。 在我們的文檔中了解更多

用例,最大限度地減少全球分布用戶的延遲

問:我什么時候應該使用Lambda @ Edge? Lambda @ Edge針對終端查看器全局分布的延遲敏感用例進行了優化。 理想情況下,您可以在CloudFront邊緣,功能和請求中獲得做出決策所需的所有信息。 這意味着您現在可以從Node.js-6.10中的邊緣執行和提供有關如何根據用戶特征(例如,位置,客戶端設備等)來決定如何提供內容的用例,而無需被路由回中央服務器。

暫無
暫無

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

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