この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
構成
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検証時など、お役に立てれば幸いです。