CloudWatch Logsにログ出力するAurora MySQL 5.7のCFnテンプレート

Auroraの検証環境がほしく、CFnテンプレートを作成しました。構成、利用方法など簡単に説明します。
2020.04.23

構成

01

EC2

Auroraに接続するためのEC2です。UserDataよりSQLクライアントをインストールしています。

Aurora

検証環境ということで料金を考慮し、デフォルトではシングルAZ構成にしました。後ほど説明しますが、スタック作成の際にパラメータ指定することで、レプリカインスタンスを追加することが可能です。

CloudWatch

監査ログ、スローログなど、各種ログをCloudWatch Logsに出力する設定としました。

テンプレート

テンプレートは以下にあります。かいつまんで説明します。

パラメータ

  • ProjectName
  • 任意の値を指定します。作成するAWSリソースのプレフィックスとして扱われます。
  • EC2KeyPair
  • EC2のログインに使用するキーペア名を指定します。事前にキーペアを作成しておく必要があります。
  • EC2ImageId
  • EC2のAMIを指定します。デフォルトでは最新のAmazon Linux 2を指定しています。
  • SecurityGroupInboudRule
  • EC2ログイン用のSSH接続元を指定します。
  • MasterUsername
  • RDSのマスターユーザー名を指定します。
  • MasterPassword
  • RDSマスターユーザーのパスワードを指定します。
  • EnableReplica
  • リードレプリカインスタンス作成有無を指定します。デフォルトはfalseで、レプリカは作成されません。

DBクラスターパラメーターグループ

監査ログの出力をDBクラスターのパラメーターグループで指定しています。 ここでは全てのイベントを対象にしています。

auroraDBClusterParameterGroup:
  Type: AWS::RDS::DBClusterParameterGroup
  Properties:
    Family: "aurora-mysql5.7"
    Description: "Aurora(MySQL 5.7) DBCluster ParameterGroup"
    Parameters:
      time_zone: "Asia/Tokyo"
      general_log: 1
      server_audit_logging: 1
      server_audit_events: "Connect,Query,Query_DCL,Query_DDL,Query_DML,Table"
      slow_query_log: 1

DBクラスター

DBクラスターにてCloudWatch Logs にエクスポートするログを指定しています。

auroraDBCluster:
  Type: AWS::RDS::DBCluster
  Properties:
    BackupRetentionPeriod: 1
    DatabaseName: test_database
    (省略)
    EnableCloudwatchLogsExports:
      - general
      - error
      - slowquery
      - audit

DBインスタンス

レプリカインスタンスの作成有無はConditionsを利用しています。 以下は、Conditionsセクションと関連付けしている箇所です。

Conditions:
  EnableReplica:
    !Equals [true, !Ref EnableReplica]
  auroraReplicaInstance:
    Type: "AWS::RDS::DBInstance"
    Condition: EnableReplica

接続確認

スタックにて構築されたEC2は、SQLクライアントインストール済みです。EC2にログイン後、RDSへの接続を確認しました。

[ec2-user@ip-10-0-1-137 ~]$ mysql -h test-aurora-cluster.cluster-cio9itnhm7vz.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 5.7.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test_database      |
+--------------------+
5 rows in set (0.01 sec)

MySQL [(none)]>

CloudWatch Logsを確認すると、監査ログ、エラーログ、一般ログ、スロークエリログの出力が確認できました。

さいごに

CFnにて検証用のAuroraを作成してみました。Aurora検証時など、お役に立てれば幸いです。

参考