はじめに
AWSのRelational Database Service(RDS)は、スケーラブルなリレーショナルデータベースをクラウド上で簡単にセットアップ、操作、スケーリングできるサービスです。この記事では、Terraformを使用してRDSを管理する方法を記載します。
環境
- Terraform v1.0.0以上
- AWSアカウント
- AWS CLI設定済み(認証情報)
RDSとは
RDSは、MySQL, PostgreSQL, MariaDB, Oracle Database, SQL Serverなど複数のデータベースエンジンをサポートしています。AWSがハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップといった作業を自動化してくれるため、開発者はアプリケーションの構築とスケーリングに専念できます。
TerraformでのRDSの管理
VPCに関しては下記に記載しています。
セキュリティグループに関しては下記に記載しています。
# パラメータグループ
resource "aws_db_parameter_group" "mysql_parametergroup" {
name = "mysql-parametergroup"
family = "mysql8.0"
parameter {
name = "character_set_database"
value = "utf8mb4"
}
parameter {
name = "character_set_server"
value = "utf8mb4"
}
}
# オプショングループ
resource "aws_db_option_group" "mysql_optiongroup" {
name = "mysql-optiongroup"
engine_name = "mysql"
major_engine_version = "8.0"
}
resource "aws_db_subnet_group" "mysql_subnetgroup" {
name = "mysql-subnetgroup"
subnet_ids = [
aws_subnet.private-subnet-db-1a.id,
aws_subnet.private-subnet-db-1c.id,
]
tags = {
Name = "mysql-subnetgroup"
}
}
resource "random_string" "mysql_password" {
length = 16
special = true
}
resource "aws_db_instance" "mysql_db" {
engine = "mysql"
engine_version = "8.0.32"
identifier = "mysql-db-identifier"
username = "admin"
password = random_string.mysql_password.result
instance_class = "db.t2.micro"
allocated_storage = 20
max_allocated_storage = 50
storage_type = "gp2"
storage_encrypted = false
multi_az = false
availability_zone = "ap-northeast-1a"
db_subnet_group_name = aws_db_subnet_group.mysql_subnetgroup.name
vpc_security_group_ids = [
aws_security_group.db_sg.id
]
publicly_accessible = false
port = 3306
name = "mysql_db_name"
parameter_group_name = aws_db_parameter_group.mysql_parametergroup.name
option_group_name = aws_db_option_group.mysql_optiongroup.name
backup_window = "04:00-05:00"
backup_retention_period = 7
maintenance_window = "Mon:05:00-Mon:06:00"
auto_minor_version_upgrade = true
deletion_protection = false
skip_final_snapshot = true
apply_immediately = true
tags = {
Name = "db-sg-tag"
}
}
RDSの適用
terraform apply