All checks were successful
Update Automation Tests / Integration Tests (pull_request) Successful in 37s
- Create restore.sh for automated S3 backup recovery - Fetches backups, stops services, restores database/data/config, restarts & validates - Successfully tested on production system - Document procedures in backup-strategy.md - Add Test 6: Full backup/restore cycle with disaster simulation - Rename test-update.sh → test-integration.sh
53 lines
950 B
HCL
53 lines
950 B
HCL
# S3 Bucket for Backups
|
|
resource "aws_s3_bucket" "backups" {
|
|
bucket = "${var.project_name}-backups"
|
|
force_destroy = true
|
|
tags = {
|
|
Name = "${var.project_name}-backups"
|
|
}
|
|
}
|
|
|
|
resource "aws_s3_bucket_versioning" "backups" {
|
|
bucket = aws_s3_bucket.backups.id
|
|
|
|
versioning_configuration {
|
|
status = "Enabled"
|
|
}
|
|
}
|
|
|
|
resource "aws_s3_bucket_server_side_encryption_configuration" "backups" {
|
|
bucket = aws_s3_bucket.backups.id
|
|
|
|
rule {
|
|
apply_server_side_encryption_by_default {
|
|
sse_algorithm = "AES256"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "aws_s3_bucket_lifecycle_configuration" "backups" {
|
|
bucket = aws_s3_bucket.backups.id
|
|
|
|
rule {
|
|
id = "backup-retention"
|
|
status = "Enabled"
|
|
|
|
filter {
|
|
prefix = "backups/"
|
|
}
|
|
|
|
transition {
|
|
days = 30
|
|
storage_class = "GLACIER"
|
|
}
|
|
|
|
expiration {
|
|
days = 90
|
|
}
|
|
|
|
noncurrent_version_expiration {
|
|
noncurrent_days = 30
|
|
}
|
|
}
|
|
}
|