我在所有AWS區域都有一個lambda函數。我有遍及全球的客戶,他們會對我的基地域example.com
進行POST調用。我的(各種)負載均衡器負責確保將請求路由到最接近客戶端的區域的API網關,以便將延遲降至最低。使用AWS Route 53到API網關的路由
所以,到目前爲止,我有以下配置:部署在每個區域
- lambda函數。例如,N.California地區配置了自定義域名
us-west-1.example.com
並調用了我的lambda的路徑映射。此API網關的CloudFront URL爲d12345123.cloudfront.net
- 路由53託管區域中的
A
類型的記錄集,其中us-west-1.example.com
是d12345123.cloufront.net
的別名。如果我打電話給us-west-1.example.com/1.0/localdb
,它會返回正確的輸出。 - Route53中的一個流量策略和一個策略記錄0123'的
default.example.com
類型,它具有分配給它的地理鄰近規則,它將流量重定向到CloudFront實例(與添加自定義域後公開的同一實例相同該地區的名稱)。這爲default.example.com
式的託管區A
類型的Route53託管區爲example.com
條目A
- 的記錄是一個別名
default.example.com
,讓裏面說到example.com
流量可以發送到default.example.com
這些配置後,當我做出example.com
打電話,我收到的Cloudfront一個403
迴應,稱這是一個Bad Request
感謝
[在Amazon Route53中設置基於DNS的URL轉發]的可能重複(https://stackoverflow.com/questions/10115799/set-up-dns-based-url-forwarding-in-amazon-route53) – vascop
到目前爲止,你會發現你認爲自己已經完成的成就和實際完成的成就之間存在差距。你的'default.example.com'不會達到你所期望的,所以回答你所問的內容將無濟於事。調用Lambda函數通常意味着使用API網關,並且將不同的CNAME記錄指向不同區域中的不同API網關部署是不夠的 - 對於給定的主機名,您只能將API網關配置爲期望* one *區域中的主機名。請提供更多關於您實際嘗試完成的任務和您的特定配置的詳細信息。 –
當瀏覽器發出HTTP請求時,它會將「主機」標頭設置爲地址欄中URL中的主機名。無論中間DNS解析步驟如何,* original *主機名都是目標所見。這是你遇到的根本問題。目前還沒有一個適用於此的AWS本地,託管,無服務器解決方案。它需要區域代理服務器來重寫這些主機頭,或者重定向到區域主機名,或者......如果您的API總是需要<3秒來處理請求,那麼Lambda @ Edge中就有一個潛在的解決方案。 –