Amazon CloudFrontでクライアントIPを確認する

Amazon CloudFront(以下CloudFront)を挟んだリクエストを行った場合は、
デフォルトの状態ではオリジンから見たクライアントの情報はCloudFrontの物になってしまいます。

オリジンが、クライアントの情報知るための方法としてCloudFrontはいくつか解決策を用意しています。

X-Forwarded-For(XFF)

XFFに関して詳しい説明は省きますが、基本的にはXFFヘッダに複数のIPアドレスが列挙されていて
そのうち先頭のIPアドレスがクライアントのものである可能性が高いです。

ただ、XFFはリクエストヘッダで任意の値を設定することが可能なので安易に信用することはできません。
信頼できるIPリストと照合するなどして精査を行わなければなりません。

CloudFront-Viewer-Address ヘッダ

CloudFrontのアップデートによって実装され、XFFヘッダの解析を行わなくてもクライアントIP及びポートがわかるようになりました。
IPアドレスとポートが連結した情報になるのでIPアドレスだけ利用する場合は前処理は必要になります。

CloudFront Functions

リクエストに True-Client-IP ヘッダーを追加する - Amazon CloudFront
CloudFront Functionsを使用することで独自ヘッダを追加し値としてクライアントIPをセットすることができます。