是否有可能在'Custom Authorizer' lambda函數中將請求的源IP地址獲取到API網關?API網關自定義授權者 - 獲取源IP地址
這與您的API Gateway to a lambda function的實際整合絕對是可能的。儘管似乎無法在自定義授權者功能中獲取請求者的IP地址。
我的目標是直接在APIG中進行基於速率的阻塞。 A similar solution is described here。但是,由於我只限制訪問一個或兩個APIG端點,所以我寧願在自定義授權者函數中執行此操作,該操作只是在達到速率限制時將源地址添加到APIG的拒絕策略中。
編輯:澄清一些潛在的困惑。我明白,我可以通過上述定期整合,並在this other post。但我試圖利用自定義授權者功能,這樣我就不必在所有的lambda函數中編寫相同的速率限制代碼。
*「一個自定義的授權者函數,當它達到速率限制時,它簡單地將源地址添加到APIG的拒絕策略。」*看起來有問題。策略沒有鎖定機制,因此,如果給定多個併發的過多用戶,則(執行策略,修改策略,保存策略)可能會使您處於這樣一種狀態,即您「添加」到策略的每個內容也會刪除同時添加的其他內容。在一個無國界的世界中,你如何重視確定限速的必要性? –
計數保存在帶有request_id,source_ip和TTL列的DDB表中。然後,Custom Authorizer檢查給定source_ip的條目數量和大於當前時間的TTL。 TTL類似於當前時間加上10秒。鎖定是我沒有考慮過哪一個問題。無論如何,我最終可能會使用CloudFront和WAF。 – unclemeat
我想我可以在DDB表中添加一個鎖定鍵來訪問策略。 – unclemeat