Terraform
HashiCorp の IaC ツールで、マルチクラウドのインフラをコードで宣言的に管理する
Terraform とは
Terraform は、HashiCorp が開発した IaC (Infrastructure as Code) ツールで、AWS、Azure、GCP などマルチクラウドのインフラを HCL (HashiCorp Configuration Language) で宣言的に管理する。
SAM / CloudFormation との比較
SAM / CloudFormation との主な違いを以下に比較する。
| 観点 | Terraform | SAM / CloudFormation |
|---|---|---|
| 対象 | マルチクラウド | AWS のみ |
| 言語 | HCL | YAML / JSON |
| 状態管理 | tfstate ファイル | CloudFormation が管理 |
| サーバーレス | 汎用 | Lambda に特化 |
| ドリフト検出 | terraform plan | CloudFormation ドリフト検出 |
基本的な使い方
基本的な使い方の例を示す。
# main.tf
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_s3_bucket" "data" {
bucket = "my-data-bucket"
}
resource "aws_dynamodb_table" "users" {
name = "users"
billing_mode = "PAY_PER_REQUEST"
hash_key = "id"
attribute {
name = "id"
type = "S"
}
}
コマンド
コマンドの例を示す。
terraform init # プロバイダーのダウンロード
terraform plan # 変更内容のプレビュー
terraform apply # インフラの作成・更新
terraform destroy # インフラの削除
State (状態管理)
Terraform は terraform.tfstate ファイルで現在のインフラの状態を管理する。チーム開発では S3 + DynamoDB でリモートステートを共有する。
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "ap-northeast-1"
dynamodb_table = "terraform-locks"
encrypt = true
}
}
モジュール
モジュールの例を示す。
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
name = "my-vpc"
cidr = "10.0.0.0/16"
azs = ["ap-northeast-1a", "ap-northeast-1c"]
}
AWS での使い分け
AWS での使い分けを以下にまとめる。
| ケース | 推奨 |
|---|---|
| Lambda + API Gateway | SAM (サーバーレスに特化) |
| VPC + RDS + ECS | Terraform (汎用) |
| マルチクラウド | Terraform |
| AWS のみ、シンプル | CloudFormation / SAM |
Terraform の関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
Terraform State
Terraform がインフラの現在の状態を管理するファイルとリモートバックエンド
AWS SAM
AWS のサーバーレスアプリケーションを定義 / デプロイするためのフレームワーク
イミュータブルインフラストラクチャ
サーバーを変更せず、新しいイメージで丸ごと置き換えるインフラ運用手法
CDK
TypeScript や Python などのプログラミング言語で AWS インフラを定義する IaC フレームワーク
CloudFormation
AWS のインフラをテンプレート (YAML/JSON) で宣言的に定義および管理する IaC サービス
Infrastructure as Code
インフラの構成をコードで定義し、バージョン管理 / 自動化 / 再現性を実現する手法
関連する記事
Git / GitHub 本ガイド - マンガ / GUI / 仕組み理解の 3 つの入口で選ぶ
Git と GitHub を学ぶ本の選び方を「入口の違い」で整理。マンガで概念を掴む本、GUI から入る本、仕組みを腹落ちさせる本、チーム開発の作法を学ぶ本、手元に置くリファレンスまで、2026 年 8 月時点の定番書で独学ルートを解説します。
Linux 本ガイド - コマンドライン / しくみ / 性能の 3 層で選ぶ技術書
Linux を学ぶ技術書の選び方を 3 層 (コマンドラインの操作 → カーネルのしくみ → 性能と運用) で整理。新しい Linux の教科書や [試して理解] Linux のしくみなどの定番書の使い分けと、学ぶ順番を解説します。
インフラ / クラウド本ガイド - AWS や Docker を本で学ぶ
クラウドインフラ、コンテナ、IaC を学べる技術書の選び方と学習順序を紹介。インフラ本の賞味期限問題と公式ドキュメントとの使い分けも解説します。