-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbackup_quarterly.tf
61 lines (49 loc) · 1.64 KB
/
backup_quarterly.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
## Quarterly Plan
# - Run every quarter on SUN 12:00:00 AM UTC (SAT 07:00:00 PM EST)
# - Run every quarter on the LAST day of MARCH, JUNE, SEPTEMBER, DECEMBER @ 12:00 AM UTC
resource "aws_backup_vault" "quarterly" {
count = local.quarterly_backup_count
name = "quarterly"
tags = merge(var.tags, var.tags_vault)
}
resource "aws_backup_vault" "quarterly_cross_region" {
count = var.cross_region_backup_enabled ? local.quarterly_backup_count : 0
name = "quarterly_cross_region"
tags = merge(var.tags, var.tags_vault)
provider = aws.cross-region
}
resource "aws_backup_plan" "quarterly" {
count = local.quarterly_backup_count
name = "quarterly"
tags = merge(var.tags, var.tags_plan)
rule {
rule_name = "quarterly"
target_vault_name = aws_backup_vault.quarterly[0].name
schedule = "cron(0 0 L 3,6,9,12 ? *)"
start_window = var.start_window_minutes
completion_window = var.completion_window_minutes
lifecycle {
cold_storage_after = 365
}
dynamic "copy_action" {
for_each = var.cross_region_backup_enabled ? ["copy backups to the new region"] : []
content {
destination_vault_arn = aws_backup_vault.quarterly_cross_region[0].arn
lifecycle {
cold_storage_after = 365
}
}
}
}
}
resource "aws_backup_selection" "quarterly" {
count = local.quarterly_backup_count
iam_role_arn = aws_iam_role.service_role[0].arn
name = "quarterly"
plan_id = aws_backup_plan.quarterly[0].id
selection_tag {
type = "STRINGEQUALS"
key = var.quarterly_backup_tag_key
value = var.quarterly_backup_tag_value
}
}