ALB + EC2 にてアクセスするユーザーの IPアドレスを知りたい

AWS 環境

  • ALB
  • EC2
  • S3

アクセスログを S3 に保存する

ALB を使うと AWS 内のサービスを色々使えるので便利。
今回は S3 にアクセスログを保存するようにした。

さらに保存したアクセスログを Amazon Athena 使って簡単に解析できる。
らしい。

S3 側でやること

  • 「S3」→「汎用バケット」→「バケットを作成」クリック

    • 一般的な設定
      • バケットタイプ: 汎用
      • バケット名前空間: 適当(今回は「アカウントのリージョナル名前空間 (推奨)」を選択)
      • バケット名の接頭辞: 適当
    • オブジェクト所有者
      • オブジェクト所有者: ACL 無効
    • このバケットのブロックパブリックアクセス設定
      • パブリックアクセスをすべて ブロック: チェック
    • バケットのバージョニング
      • バケットのバージョニング: 適当(今回は「無効にする」を選択)
    • デフォルトの暗号化
      • 暗号化タイプ: Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3)
    • 「バケットを作成」クリック
  • 先ほど作成した S3バケットを選択 →「アクセス許可」→「バケットポリシー」→「編集」クリック

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::xxxxxxxxxx/*"
        }
    ]
}

EC2 側でやること

  • 「EC2」→「ロードバランサー」→ ログを残したいロードバランサーを選択 →「属性」→「編集」クリック
    • ログ記録中
      • アクセスログ: チェック
      • S3 URI: 先程作成した s3バケットを選択。パスを細かく指定したい場合はパスも指定する。
    • 「変更内容の保存」クリック

ログ内容