CloudFormationでAurora(MySQL5.6,5.7互換)で詳細ログ出力を有効にする

2019.02.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんばんわ、札幌のヨシエです。 クルマの内装掃除に使った洗剤が中々匂いがキツくて、氷点下の中を窓全開で走りました。

以前に弊社先輩のブログにて紹介しているAuroraの詳細ログをCloudwatchLogsへ出力する設定についてCloudFormationで実現することが出来たのでご紹介します。

記事の元ネタ

【アップデート】Amazon Auroraでスロークエリや一般ログがCloudWatch Logsへ出力可能に

今回は使用したAurora(MySQL5.6/5.7互換)でDBエンジンの変更についても以前に書きましたので合わせて紹介します。

CloudformationでAurora(MySQL5.7互換)を作ってみる

主なポイント

今回のポイントとしては以下のプロパティを追加しております。 以下の設定値をRDSクラスターへ追記することと、ParameterGroupにて出力ログ設定を変更することでCloudWatchLogsへログを出力できます。

EnableCloudwatchLogsExports:
- general
- error
- slowquery
- audit

検証前提

今回ご紹介するCloudFormationテンプレートは詳細ログ出力で監査ログ、エラーログ、一般ログ、 スロークエリログを有効にしております。

以下のようにログが出力されます。

Aurora(5.6互換) CloudFormationテンプレート公開

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
# 配置VPCサブネット選択
DBSubnetsInVPC:
Type: CommaDelimitedList
Description: The list of SubnetIds, one in each AZ in the region in your Virtual
Private Cloud (VPC)
# DBバックアップウィンドウ設定
DBBackupWindow:
Type: String
Description: Daily backup window
Default: 15:00-15:30
# バックアップ取得世代指定
DBBackupRetentionPeriod:
Type: Number
Description: Days to retend the backup
Default: "7"
# DBメンテナンスウィンドウ設定
DBMaintenanceWindow:
Type: String
Description: Weekly maintenance window
Default: Tue:15:31-Tue:16:01
# RDSインスタンスタイプ指定
DBInstanceClass:
Type: String
Description: Database InstanceType
Default: db.t2.small
# RDSセキュリティグループ指定
DBSecurityGroupId:
Type: String
Description: SecurityGroup Id to associate to the RDS
# RDSDB管理者ユーザー指定
DBMasterUser:
Type: String
Description: Database Master Username
Default: root
# RDSDB管理用パスワード指定
DBMasterPassword:
Type: String
Description: Database Master User's password
NoEcho: True
Resources:
TestAurora56dbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: Subnets available for the RDS DB Instance
SubnetIds:
Ref: DBSubnetsInVPC
TestAurora56dbClusterParameterGroup:
Type: AWS::RDS::DBClusterParameterGroup
Properties:
Family: "aurora5.6"
Description: "Test-Aurora-56ClusterParameterGroup"
Parameters:
time_zone: "Asia/Tokyo"
server_audit_logging: 1
server_audit_events : QUERY
TestAurora56dbOptionGroup:
Type: "AWS::RDS::OptionGroup"
Properties:
EngineName: "aurora"
MajorEngineVersion: "5.6"
OptionGroupDescription: "TestAurora56db_RDS_OptionGroup"
Tags:
- Key: Name
Value: Test-Aurora-56db-OptionGroup
TestAurora56dbInstanceParameterGroup:
Type: AWS::RDS::DBParameterGroup
Properties:
Family: "aurora5.6"
Description: "Test-Aurora-56InstanceParameterGroup"
Parameters:
log_output: FILE
general_log: 1
slow_query_log: 1
long_query_time: 0
TestAurora56dbCluster:
Type: AWS::RDS::DBCluster
Properties:
BackupRetentionPeriod:
Ref: DBBackupRetentionPeriod
DatabaseName: TestAurora56db
DBClusterIdentifier: Test-Aurora-56cluster
DBClusterParameterGroupName:
Ref: TestAurora56dbClusterParameterGroup
DBSubnetGroupName:
Ref: TestAurora56dbSubnetGroup
Engine: aurora
MasterUsername:
Ref: DBMasterUser
MasterUserPassword:
Ref: DBMasterPassword
Port: 3306
PreferredBackupWindow:
Ref: DBBackupWindow
PreferredMaintenanceWindow:
Ref: DBMaintenanceWindow
EnableCloudwatchLogsExports:
- general
- error
- slowquery
- audit
VpcSecurityGroupIds:
- Ref: DBSecurityGroupId
Tags:
- Key: Name
Value: Test-Aurora-56db-Cluster
TestAurora56dbInstance:
Type: "AWS::RDS::DBInstance"
Properties:
AutoMinorVersionUpgrade: False
AvailabilityZone: ap-northeast-1a
DBInstanceClass:
Ref: DBInstanceClass
DBInstanceIdentifier: Test-Aurora-56db
DBClusterIdentifier:
Ref: TestAurora56dbCluster
DBSubnetGroupName:
Ref: TestAurora56dbSubnetGroup
Engine: aurora
OptionGroupName:
Ref: TestAurora56dbOptionGroup
DBParameterGroupName:
Ref: TestAurora56dbInstanceParameterGroup
PubliclyAccessible: False
Tags:
- Key: Name
Value: TestAurora56dbInstance

Aurora(5.7互換) CloudFormationテンプレート公開

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
# 配置VPCサブネット選択
DBSubnetsInVPC:
Type: CommaDelimitedList
Description: The list of SubnetIds, one in each AZ in the region in your Virtual
Private Cloud (VPC)
# DBバックアップウィンドウ設定
DBBackupWindow:
Type: String
Description: Daily backup window
Default: 15:00-15:30
# バックアップ取得世代指定
DBBackupRetentionPeriod:
Type: Number
Description: Days to retend the backup
Default: "7"
# DBメンテナンスウィンドウ設定
DBMaintenanceWindow:
Type: String
Description: Weekly maintenance window
Default: Tue:15:31-Tue:16:01
# RDSインスタンスタイプ指定
DBInstanceClass:
Type: String
Description: Database InstanceType
Default: db.t2.small
# RDSセキュリティグループ指定
DBSecurityGroupId:
Type: String
Description: SecurityGroup Id to associate to the RDS
# RDSDB管理者ユーザー指定
DBMasterUser:
Type: String
Description: Database Master Username
Default: root
# RDSDB管理用パスワード指定
DBMasterPassword:
Type: String
Description: Database Master User's password
NoEcho: True
Resources:
TestAurora57dbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: Subnets available for the RDS DB Instance
SubnetIds:
Ref: DBSubnetsInVPC
TestAurora57dbClusterParameterGroup:
Type: AWS::RDS::DBClusterParameterGroup
Properties:
Family: "aurora-mysql5.7"
Description: "Test-Aurora-57ClusterParameterGroup"
Parameters:
time_zone: "Asia/Tokyo"
server_audit_logging: 1
server_audit_events : QUERY
TestAurora57dbOptionGroup:
Type: "AWS::RDS::OptionGroup"
Properties:
EngineName: "aurora-mysql"
MajorEngineVersion: "5.7"
OptionGroupDescription: "TestAurora57db_RDS_OptionGroup"
Tags:
- Key: Name
Value: Test-Aurora-57db-OptionGroup
TestAurora57dbInstanceParameterGroup:
Type: AWS::RDS::DBParameterGroup
Properties:
Family: "aurora-mysql5.7"
Description: "Test-Aurora-57InstanceParameterGroup"
Parameters:
log_output: FILE
general_log: 1
slow_query_log: 1
long_query_time: 0
TestAurora57dbCluster:
Type: AWS::RDS::DBCluster
Properties:
BackupRetentionPeriod:
Ref: DBBackupRetentionPeriod
DatabaseName: TestAurora57db
DBClusterIdentifier: Test-Aurora-57cluster
DBClusterParameterGroupName:
Ref: TestAurora57dbClusterParameterGroup
DBSubnetGroupName:
Ref: TestAurora57dbSubnetGroup
Engine: aurora-mysql
MasterUsername:
Ref: DBMasterUser
MasterUserPassword:
Ref: DBMasterPassword
Port: 3306
PreferredBackupWindow:
Ref: DBBackupWindow
PreferredMaintenanceWindow:
Ref: DBMaintenanceWindow
EnableCloudwatchLogsExports:
- general
- error
- slowquery
- audit
VpcSecurityGroupIds:
- Ref: DBSecurityGroupId
Tags:
- Key: Name
Value: Test-Aurora-57db-Cluster
TestAurora57dbInstance:
Type: "AWS::RDS::DBInstance"
Properties:
AutoMinorVersionUpgrade: False
AvailabilityZone: ap-northeast-1a
DBInstanceClass:
Ref: DBInstanceClass
DBInstanceIdentifier: Test-Aurora-57db
DBClusterIdentifier:
Ref: TestAurora57dbCluster
DBSubnetGroupName:
Ref: TestAurora57dbSubnetGroup
Engine: aurora-mysql
OptionGroupName:
Ref: TestAurora57dbOptionGroup
DBParameterGroupName:
Ref: TestAurora57dbInstanceParameterGroup
PubliclyAccessible: False
Tags:
- Key: Name
Value: TestAurora57dbInstance

終わりに

RDSの出力ログがCloudWatchLogsへの出力が発表された際は小躍りするぐらい嬉しいニュースだったのを覚えております。 しかし、発表当時はテンプレートに落とし込めませんでしたがアップデートが入ったことでCloudFormationに組み込むことが出来るようになりました。 CloudWatchLogsへのログ出力を目的としましたが、ログ保存料が増えることでコストも増えてしまいますので、 ログの保存期間はご注意ください。 ログは運用に欠かせない要素と考えておりますので、お役に立てば幸いです。