2026/06/22
Terraform + AWSでLaravel環境を構築する④ - RDS編
環境構築LaravelTerraformAWS CLI

広告準備中
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をデプロイしていこうと思います。