'Custom Authorizer'ラムダ機能で、APIゲートウェイへの要求の送信元IPアドレスを取得することは可能ですか?APIゲートウェイカスタムオーソライザ - ソースIPアドレスを取得する
API Gateway to a lambda functionの実際の統合でこれは間違いなく可能です。カスタムオーサライザ機能でリクエスタのIPアドレスを取得することはできないようですが、
私の目標は、APIGでレートベースのブロックを直接行うことです。 A similar solution is described here。しかし、1つまたは2つのAPIGエンドポイントへのアクセスを制限するだけなので、私はむしろレート制限に達したときにAPIGの拒否ポリシーに送信元アドレスを追加するカスタムオーサライザ機能でこれを実行します。
編集:潜在的な混乱を明確にする。私は、上記のように定期的に統合し、this other postでこれを行うことができると理解しています。しかし、私はすべてのラムダ関数に同じレート制限コードを書く必要がないように、カスタムオーソライザ機能を利用しようとしています。
* "APIGの拒否ポリシーに送信元アドレスをレートリミットに達したときに送信元アドレスを単純に追加するカスタム許可機能" *問題があるようです。ポリシーにはロック機構がないため、同時に複数の過剰なユーザーがいる場合(ポリシーのフェッチ、ポリシーの変更、ポリシーの保存)、ポリシーに「追加」すると同時に他のものを削除する状態に簡単に移行できます。ステートレスな世界では、レート制限の必要性を判断するためにどのようにカウントしていますか? –
この数は、request_id、source_ip、およびTTLの列を持つDDBテーブルに保持されます。次に、カスタムオーサライザは、指定されたsource_ipと現在の時刻よりも長いTTLを持つエントリの数をチェックします。ここで、TTLは現在の時間に10秒を加えたもののようなものです。ロックは問題ではないと考えていたものです。とにかく私はCloudFrontとWAFを使ってしまうだろう。 – unclemeat
ポリシーにアクセスするためにDDBテーブルにロックキーを追加できるとします。 – unclemeat