Terraform S3 remote state và locking
Làm việc theo nhóm cần một nguồn state có thể bảo vệ và phối hợp.
Nắm bản chất
S3 backend lưu Terraform state từ xa. use_lockfile = true hỗ trợ
state locking dựa trên S3; DynamoDB-based locking cũ đã deprecated. State bucket
nên bật encryption, versioning, Block Public Access và IAM least privilege.
Bootstrap bucket phải tồn tại trước khi dùng làm backend. Thường dùng stack bootstrap riêng, giữ state/bootstrap credentials an toàn. Tách state theo account/environment và có recovery runbook khi state bị xóa hoặc corruption.
Luồng hoạt động
Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?
Lệnh & cấu hình mẫu
terraform {
backend "s3" {
bucket = "YOUR-STATE-BUCKET"
key = "prod/platform.tfstate"
region = "ap-southeast-1"
encrypt = true
use_lockfile = true
}
}
Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.
Bài tập 10–20 phút
Lab Buổi 14 có bootstrap folder và backend examples. Chạy offline checks và
terraform init -backend=false trước nếu chưa muốn tạo AWS
resources.
Lỗi dễ mắc
Không dùng local state trên laptop như single source of truth của team production; không commit backend credentials hoặc state vào Git.
Tự kiểm tra
`use_lockfile=true` nhằm mục đích gì?Xem đáp án ↗
Giúp tránh các Terraform operations đồng thời gây xung đột khi cập nhật cùng một S3 state.
Học thêm qua lab
Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.
↓ Tải mã nguồn thực hành chương 14Đối chiếu tài liệu gốc
Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.
Mở tài liệu chính thức ↗