diff --git a/aws/backup/README.md b/aws/backup/README.md
index 19644de..72cd6c8 100644
--- a/aws/backup/README.md
+++ b/aws/backup/README.md
@@ -155,5 +155,6 @@ You may then use the created IAM role as a provider for the `backup-organization
| Name | Version |
|------|---------|
+| [terraform](#requirement\_terraform) | >= 0.14.0 |
| [aws](#requirement\_aws) | ~> 5.0 |
\ No newline at end of file
diff --git a/aws/backup/makefile b/aws/backup/makefile
new file mode 100644
index 0000000..364a9e2
--- /dev/null
+++ b/aws/backup/makefile
@@ -0,0 +1,67 @@
+MODULEFILES := $(wildcard *.tf)
+TFLINTRC ?= ../../.tflint.hcl
+TFDOCSRC ?= ../../.terraform-docs.yml
+
+.PHONY: default
+default: checkfmt validate docs lint
+
+.PHONY: checkfmt
+checkfmt: .fmt
+
+.PHONY: fmt
+fmt: $(MODULEFILES)
+ terraform fmt
+ @touch .fmt
+
+.PHONY: validate
+validate: .validate
+
+.PHONY: docs
+docs: README.md
+
+.PHONY: lint
+lint: .lint
+
+.lint: $(MODULEFILES) .lintinit
+ tflint --config=$(TFLINTRC)
+ @touch .lint
+
+.lintinit: $(TFLINTRC)
+ tflint --init --config=$(TFLINTRC) --module
+ @touch .lintinit
+
+README.md: $(MODULEFILES)
+ terraform-docs --config "$(TFDOCSRC)" markdown table . --output-file README.md
+
+.fmt: $(MODULEFILES)
+ terraform fmt -check
+ @touch .fmt
+
+.PHONY: init
+init: .init
+
+.init: versions.tf .dependencies
+ terraform init -backend=false
+ @touch .init
+
+.validate: .init $(MODULEFILES) $(wildcard *.tf.example)
+ echo | cat - $(wildcard *.tf.example) > test.tf
+ if AWS_DEFAULT_REGION=us-east-1 terraform validate; then \
+ rm test.tf; \
+ touch .validate; \
+ else \
+ rm test.tf; \
+ false; \
+ fi
+
+.dependencies: *.tf
+ @grep -ohE \
+ "\b(backend|provider|resource|module) ['\"][[:alpha:]][[:alnum:]]*|\bsource *=.*" *.tf | \
+ sed "s/['\"]//" | sort | uniq | \
+ tee /tmp/initdeps | \
+ diff -q .dependencies - >/dev/null 2>&1 || \
+ mv /tmp/initdeps .dependencies
+
+.PHONY: clean
+clean:
+ rm -rf .dependencies .fmt .init .lint .lintinit .terraform* .validate