Domain-Name-System
AWS Route53 和 Lambda:為無伺服器應用程序將 Naked HTTP 請求重定向到 HTTPS WWW
問題
我有一個在“無伺服器”AWS Lambda 函式上執行的站點。Route53 將請求路由到連接到 Lambda 函式的 API 網關。
這樣做的問題是您無法設置傳統的伺服器重定向。
例子
例如,我按照這個問題/答案路由
http://<my_domain>.com
到https://www.<my_domain>.com
,我正在使用 S3 儲存桶的 A 記錄別名,該儲存桶設置為靜態站點重定向到https://www.<my_domain>.com
。問題
如何在 Lambda 等無伺服器環境
https://<my_domain>.com
中重定向到?https://www.<my_domain>.com
您必須在 lambda 函式中執行重定向。
我確定 URL 中使用的實際主機名已傳遞給 Lambda,可能是
event.headers.Host
. 因此,在您的 Lambda 中,您必須執行類似 python 的程式碼:def lambda_handler(event, context): if not event['headers']['Host'].startswith('www'): return PermanentRedirect('www.'+event['headers']['Host']+event['path'])
但是,如果我是你,我會將非 www 主機名指向不同的 API 網關,其中有一個 Lambda 專用於執行到 www 的重定向。然後在您的實際工作人員lambda 中,您不必擔心重定向。
希望有幫助:)