TOPTerraform + AWSでLaravel環境を構築する④ - RDS編

2026/06/22

Terraform + AWSでLaravel環境を構築する④ - RDS編

環境構築LaravelTerraformAWS CLI
Terraform + AWSでLaravel環境を構築する④ - RDS編
広告準備中

Terraformを使用してRDSを追加してみます。

前回までの記事はこちら

Terraform + AWSでLaravel環境を構築する① - 初期設定・ネットワーク編

Terraform + AWSでLaravel環境を構築する② - セキュリティグループ編

Terraform + AWSでLaravel環境を構築する③ - EC2編

変数用のファイルを作成する

変数を記載する用のvariables.tfを作成します。

DBのパスワードはterraform.tfvarsに記載してgit管理外にしておきます。

# DBのユーザー名
variable "db_username" {
  type    = string
  default = "laravel"
}
 
# DBのパスワード(機密情報のためsensitive指定)
variable "db_password" {
  type      = string
  sensitive = true
}
 
# DB名
variable "db_name" {
  type    = string
  default = "laravel"
}
db_password = "<your_db_password>"

RDSの設定を追記する

RDSの設定をmain.tfに追記します。

 
# ---------------------------------------------------
# RDS用プライベートサブネット(DBサブネットグループに2AZ必要)
# ---------------------------------------------------
 
# プライベートサブネット(1a)
resource "aws_subnet" "private_1a" {
  vpc_id            = aws_vpc.example.id
  cidr_block        = "10.0.10.0/24"
  availability_zone = "ap-northeast-1a"
  tags = {
    Name = "practice-private-subnet-1a"
  }
}
 
# プライベートサブネット(1c)
resource "aws_subnet" "private_1c" {
  vpc_id            = aws_vpc.example.id
  cidr_block        = "10.0.11.0/24"
  availability_zone = "ap-northeast-1c"
  tags = {
    Name = "practice-private-subnet-1c"
  }
}
 
# ---------------------------------------------------
# DBサブネットグループ(RDSに割り当てるサブネットをまとめる)
# ---------------------------------------------------
resource "aws_db_subnet_group" "main" {
  name       = "practice-db-subnet-group"
  subnet_ids = [aws_subnet.private_1a.id, aws_subnet.private_1c.id]
 
  tags = {
    Name = "practice-db-subnet-group"
  }
}
 
# ---------------------------------------------------
# RDSインスタンス(MySQL 8.0 / Laravel用)
# ---------------------------------------------------
resource "aws_db_instance" "main" {
  identifier        = "practice-db"
  engine            = "mysql"
  engine_version    = "8.0"
  instance_class    = "db.t3.micro"
  allocated_storage = 20
 
  db_name  = var.db_name
  username = var.db_username
  password = var.db_password
 
  db_subnet_group_name   = aws_db_subnet_group.main.name
  vpc_security_group_ids = [aws_security_group.db.id]
 
  # スナップショットなしで削除可能にする(開発用途向け)
  skip_final_snapshot = true
 
  # シングルAZ構成
  multi_az = false
 
  # パブリックアクセス無効(プライベートサブネット内のみ)
  publicly_accessible = false
 
  # ストレージ暗号化を有効化
  storage_encrypted = true
 
  tags = {
    Name = "practice-db"
  }
}
 
# RDSエンドポイントの出力
output "db_endpoint" {
  value = aws_db_instance.main.endpoint
}

実行する

main.tfファイルに追記できたらいままで通り実行していきます。

# フォーマット
terraform fmt
 
# 実行計画の確認
terraform plan
 
# 実行
terraform apply

ここまでで以下のような構成になりました。

まとめ

ここまででAWSの構成は完了です。

次回からは実際にLaravelをデプロイしていこうと思います。