Amazon-Web-Services

我在 AWS 上的網關 API 不斷收到奇怪的請求

  • October 3, 2021

我有一個使用 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.144EC2 實例,所以它是us-east-1AWS 區域(我的是 eu-central-1)。還有那個代理python-requests/2.26.0。它看起來像 AWS 服務。特別是我已經嘗試過更改子域,這不會改變最終結果,因為在使用不同的子域再次設置我的服務後請求立即開始出現。量約為每 1 小時 3000 個請求。

我已經花了幾個小時在Google上搜尋和檢查我想到的任何東西,但即使很艱難,我也經常使用基礎設施工作,我真的很無助。

這些請求到底是什麼責任?!

各種想法和建議高度讚賞。

編輯:

我使用全新的根域進行了測試,以確保它來自 AWS。查詢在中斷期間停止(顯然),但在服務再次可訪問後立即返回(如幾秒鐘)。terraform apply9點52分開始,9點59分結束。新域在 9:59 之前附加了一點(一些不相關的修改等待了幾分鐘),因此請求開始出現。據我所知,沒有任何東西可以這麼快地檢測到新的根域,所以它一定與 AWS 本身有關。 在此處輸入圖像描述

好的,事實證明這是與 Route 53 路由或證書管理器相關的問題。

當我應用我的 terraform 定義的資源時,一定已經發生了某種競爭條件,並導致某種初始化探測永遠持續,而不是在資源創建後立即停止。所以我的結論是,當同時創建 API 網關、DNS 路由和證書時,Route53 或 CM 往往會處於某種奇怪的狀態。使用 terraform 創建所有服務,然後刪除路由,然後重新創建解決了該問題。

引用自:https://serverfault.com/questions/1079389