はじめに
アプリケーションの運用において、ログの収集・分析は不可欠です。
特にAWSのApplication Load Balancer(ALB)を使用している場合、アクセスログを有効にすることで、トラフィックパターンの分析、パフォーマンスの監視、セキュリティの強化などが可能になります。
この記事では、AWS CloudFormationを使用して、ALBのアクセスログを効率的に収集・保存するための設定を自動化する方法を紹介します。
前提条件
この手順を実施する前に、次の条件が満たされている必要があります。
- ALB(Application Load Balancer)が設定され、動作している
- AWS CLIがインストールされ、適切に設定されている(AWS CLIの場合)
作成リソース
- S3バケット: ALBのアクセスログを保存します
- S3バケットポリシー: ALBからのログファイルの書き込みを許可します
CloudFormationテンプレート
AWSTemplateFormatVersion: '2010-09-09'
Description: Template to create S3 bucket for ALB Access Logs and enable logging
Resources:
AccessLogsBucket:
Type: 'AWS::S3::Bucket'
Properties:
AccessControl: LogDeliveryWrite
BucketName: !Join [ "-", [ "alblog", !Ref "AWS::AccountId" ] ]
BucketPolicy:
Type: 'AWS::S3::BucketPolicy'
Properties:
Bucket: !Ref AccessLogsBucket
PolicyDocument:
Statement:
- Action: 's3:PutObject'
Effect: Allow
Resource: !Sub 'arn:aws:s3:::${AccessLogsBucket}/*'
Principal:
Service: 'elasticloadbalancing.amazonaws.com'
- Action: 's3:GetBucketAcl'
Effect: Allow
Resource: !GetAtt AccessLogsBucket.Arn
Principal:
Service: 'elasticloadbalancing.amazonaws.com'
デプロイ方法(AWSマネージメントコンソールの場合)
- CloudFormationで、保存した
alb-access-logs.yml
ファイルをアップロードします - 待つ
デプロイ方法(AWS CLIの場合)
- 上記のテンプレートを
alb-access-logs.yml
として保存します - AWS CLIを使用して、以下のコマンドでCloudFormationスタックをデプロイします
aws cloudformation create-stack --stack-name alb-access-logs-stack --template-body file://alb-access-logs.yml --capabilities CAPABILITY_IAM
アクセスログ有効化
参考文献
https://dev.classmethod.jp/articles/alb_accesslog_enable/
デプロイ後の確認
- S3バケットが正しく作成されたことを確認します
- S3バケットポリシーが適用され、ALBからのログがバケットに保存されていることを確認します
まとめ
CloudFormationを使用することで、ALBのアクセスログ収集・保存設定を効率的に自動化できます。
この方法により、アプリケーションの監視とセキュリティが強化され、運用の効率性が向上します。