概要
- ELBのアクセスログを有効にする設定を行ったので、その方法を備忘を兼ねて残します。ネットで多くの方が記事にしてくれていますが、AWSの仕様が微妙に変わっているのもあり、ちょっと画面の操作も違ったので、それも兼ねて。
①S3でバケットポリシーを付与する
- S3→バケットの作成→今回は名前を「sample-alb-log」とします。
- 作成後、アクセス許可のタブから「バケットポリシー」→「編集」をクリックしたら、以下のように必要な許可を付与します。
- ポリシーにおけるポイントは以下の二つだけです。
- 「582318560864」のところはサービス側でELBを管理しているアカウントが入りますので、使用しているリージョンによって変わります。下記の場合はアジアパシフィック (東京)です。そのほかを使用の場合は、上記のAWS公式リンクにリストがあるので参照してください。
- 「sample-alb-log/elb-logs」のところは「bucket name/prefix」となります。bucket nameは今回作成したバケットの名前、prefixはそのバケット内の下のディレクトリみたいなものです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::582318560864:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::sample-alb-log/elb-logs/AWSLogs/*"
}
]
}
②ELBからアクセスログをオンに、S3を選択する
- EC2→ELB→対象のELBを選択→Attributesタブ→Edit→Monitoringの「Access logs」をオンにします。その下にあるS3 URIの右にある「Browse S3」ボタンから作成したS3である「sample-alb-log」を選択します。
- 上記で、設定は完了です。
③S3のオブジェクトからアクセスログをダウンロードする
- sample-alb-logのオブジェクトタブから、elb-logs/AWSLogsの順番で見ていきましょう。
- まずはELBAccessLogTestFileができていることを確認します。
- elasticloadbalancing/の下に日付ごとにアクセスログが生成されていることがわかります。
- ダウンロードして中身を見ると、ターゲットからのステータスコードやリクエストタイプ、クライアントのIPアドレスなどが分かります。
テストファイルだけで、アクセスログが出てこないときは?
- AWSリソースのどこかで問題が起きている可能性があります。
- 例えば、ALBにアクセスが到達していない場合が考えられます。その場合、アクセスログはもちろん生成されません。ALBがPublic Subnetにあるか、インバウンドルールは正しいか、などを確認しましょう。