我在 AWS 上的網關 API 不斷收到奇怪的請求
我有一個使用 AWS lambda 和 API 網關建構的簡單 HTTP 服務。指向網關的域由 Route53 託管,網關使用來自證書管理器的證書。索引頁面上唯一的“服務正在執行”文本絕對是新鮮的。相當標準的設置。所有這些都使用 Terraform 巧妙地連接起來,就像一個魅力……除了每隔幾秒 (!) 就會向 API 發出奇怪的請求。我檢查了 AWS 上所有可能的探測和健康檢查——一切都被禁用了,但請求不斷出現。
轉儲來自 lambda 的請求:
{ ... "headers": { "accept": "*/*", "accept-encoding": "gzip, deflate", "content-length": "0", "host": "sub-b.sub-a.my-domain.com", "user-agent": "python-requests/2.26.0", "x-amzn-trace-id": "Root=1-6158e0d5-0d266e5d0a84add227005a79", "x-forwarded-for": "3.85.226.144", "x-forwarded-port": "443", "x-forwarded-proto": "https" }, ... "http": { "method": "GET", "path": "/", "protocol": "HTTP/1.1", "sourceIp": "3.85.226.144", "userAgent": "python-requests/2.26.0" }, "requestId": "GmgRbgATFiAEMtQ=", "routeKey": "$default", "stage": "$default", "time": "02/Oct/2021:22:44:37 +0000" ... }
IP 是北弗吉尼亞州的
3.85.226.144
EC2 實例,所以它是us-east-1
AWS 區域(我的是 eu-central-1)。還有那個代理python-requests/2.26.0
。它看起來像 AWS 服務。特別是我已經嘗試過更改子域,這不會改變最終結果,因為在使用不同的子域再次設置我的服務後請求立即開始出現。量約為每 1 小時 3000 個請求。我已經花了幾個小時在Google上搜尋和檢查我想到的任何東西,但即使很艱難,我也經常使用基礎設施工作,我真的很無助。
這些請求到底是什麼責任?!
各種想法和建議高度讚賞。
編輯:
我使用全新的根域進行了測試,以確保它來自 AWS。查詢在中斷期間停止(顯然),但在服務再次可訪問後立即返回(如幾秒鐘)。
terraform apply
9點52分開始,9點59分結束。新域在 9:59 之前附加了一點(一些不相關的修改等待了幾分鐘),因此請求開始出現。據我所知,沒有任何東西可以這麼快地檢測到新的根域,所以它一定與 AWS 本身有關。
好的,事實證明這是與 Route 53 路由或證書管理器相關的問題。
當我應用我的 terraform 定義的資源時,一定已經發生了某種競爭條件,並導致某種初始化探測永遠持續,而不是在資源創建後立即停止。所以我的結論是,當同時創建 API 網關、DNS 路由和證書時,Route53 或 CM 往往會處於某種奇怪的狀態。使用 terraform 創建所有服務,然後刪除路由,然後重新創建解決了該問題。