前提のBeanstalk環境
PHP 7.4 running on 64bit Amazon Linux 2/3.1.3
やること
- lavavel.logのパーミッション設定
- EC2にCloudwatch Logsのロググループ作成のためのサービスロールを追加
- 設定ファイル(.ebextensions)の作成
1. lavavel.logのパーミッション設定
$ chmod 0664 /var/www/html/storage/logs/laravel.log
2. lavavel.logのパーミッション設定
- Beanstalk環境のIAM インスタンスプロフィールに設定されているIAMロールに、CloudWatchLogsFullAccessのポリシーを追加
(Codepipelineでデプロイしている場合は、そのロールにも同様にCloudWatchLogsFullAccessのポリシーを追加)
3. 設定ファイル(.ebextensions)の作成
- PHP Platformでデフォルトで追加されるログの設定
参考: https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html
.ebextensions/4-eblog.config
option_settings:
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: StreamLogs
value: true
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: DeleteOnTerminate
value: false
- namespace: aws:elasticbeanstalk:cloudwatch:logs
option_name: RetentionInDays
value: 7
- カスタムログでlaravel.logを設定する
.ebextensions/5-laravellog.config
packages:
yum:
awslogs: []
files:
"/etc/awslogs/awscli.conf" :
mode: "000600"
owner: root
group: root
content: |
[plugins]
cwlogs = cwlogs
[default]
region = `{"Ref":"AWS::Region"}`
"/etc/awslogs/awslogs.conf" :
mode: "000600"
owner: root
group: root
content: |
[general]
state_file = /var/lib/awslogs/agent-state
"/etc/awslogs/config/logs.conf" :
mode: "000600"
owner: root
group: root
content: |
[/var/www/html/storage/logs/laravel_log]
log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/www/html/storage/logs/laravel_log"]]}`
log_stream_name = {instance_id}
file = /var/www/html/storage/logs/laravel*
commands:
"01":
command: systemctl enable awslogsd.service
"02":
command: systemctl restart awslogsd