fix: lifecycle_rule is deprecated. Use the aws_s3_bucket_lifecycle_configuration resource instead.
Arian van Putten committed
Jun 9, 2025 at 14:19 UTC
9fbc0e9b6eeced7bcdd1a6492329b6012ec5573e
8 files changed
+111
-20
terraform/cache-bucket/main.tf
+11
-3
@@ -5,11 +5,19 @@ variable "bucket_name" {
5
resource "aws_s3_bucket" "cache" {
6
provider = aws
7
bucket = var.bucket_name
8
+}
9
9
- lifecycle_rule {
10
- enabled = true
10
+resource "aws_s3_bucket_lifecycle_configuration" "cache" {
11
+ provider = aws
12
+ bucket = aws_s3_bucket.cache.id
13
12
- prefix = ""
14
+ rule {
15
+ id = "Infrequent Access"
16
+ status = "Enabled"
17
+
18
+ filter {
19
+ prefix = ""
20
+ }
21
22
transition {
23
days = 365
terraform/cache-staging.tf
+10
@@ -11,6 +11,11 @@ module "cache-staging-202010" {
11
}
12
}
13
14
+import {
15
+ to = module.cache-staging-202010.aws_s3_bucket_lifecycle_configuration.cache
16
+ id = "nix-cache-staging"
17
+}
18
+
19
import {
20
to = module.cache-staging-202010.aws_s3_bucket_cors_configuration.cache
21
id = "nix-cache-staging"
@@ -27,6 +32,11 @@ module "cache-staging-202410" {
32
}
33
}
34
35
+import {
36
+ to = module.cache-staging-202410.aws_s3_bucket_lifecycle_configuration.cache
37
+ id = "nix-cache-staging-202410"
38
+}
39
+
40
import {
41
to = module.cache-staging-202410.aws_s3_bucket_cors_configuration.cache
42
id = "nix-cache-staging-202410"
terraform/cache.tf
+19
-4
@@ -5,11 +5,21 @@ locals {
5
resource "aws_s3_bucket" "cache" {
6
provider = aws.us
7
bucket = "nix-cache"
8
+}
9
9
- lifecycle_rule {
10
- enabled = true
10
+resource "aws_s3_bucket_lifecycle_configuration" "cache" {
11
+ provider = aws.us
12
+ bucket = aws_s3_bucket.cache.id
13
12
- prefix = ""
14
+ transition_default_minimum_object_size = "varies_by_storage_class"
15
+
16
+ rule {
17
+ id = "Infrequent Access"
18
+ status = "Enabled"
19
+
20
+ filter {
21
+ prefix = ""
22
+ }
23
24
transition {
25
days = 365
@@ -18,6 +28,11 @@ resource "aws_s3_bucket" "cache" {
28
}
29
}
30
31
+import {
32
+ to = aws_s3_bucket_lifecycle_configuration.cache
33
+ id = aws_s3_bucket.cache.id
34
+}
35
+
36
resource "aws_s3_bucket_cors_configuration" "cache" {
37
provider = aws.us
38
bucket = aws_s3_bucket.cache.id
@@ -31,7 +46,7 @@ resource "aws_s3_bucket_cors_configuration" "cache" {
46
47
import {
48
to = aws_s3_bucket_cors_configuration.cache
34
- id = aws_s3_bucket.cache.bucket
49
+ id = aws_s3_bucket.cache.id
50
}
51
52
resource "aws_s3_bucket_object" "cache-nix-cache-info" {
terraform/cache_inventory.tf
+19
-3
@@ -2,9 +2,21 @@
2
resource "aws_s3_bucket" "cache_inventory" {
3
provider = aws.us
4
bucket = "nix-cache-inventory"
5
+}
6
+
7
+resource "aws_s3_bucket_lifecycle_configuration" "cache_inventory" {
8
+ provider = aws.us
9
+ bucket = aws_s3_bucket.cache_inventory.id
10
6
- lifecycle_rule {
7
- enabled = true
11
+ transition_default_minimum_object_size = "varies_by_storage_class"
12
+
13
+ rule {
14
+ id = "tf-s3-lifecycle-20231017200421961900000001"
15
+ status = "Enabled"
16
+
17
+ filter {
18
+ prefix = ""
19
+ }
20
21
# Only keep the last 30 days
22
expiration {
@@ -13,6 +25,11 @@ resource "aws_s3_bucket" "cache_inventory" {
25
}
26
}
27
28
+import {
29
+ to = aws_s3_bucket_lifecycle_configuration.cache_inventory
30
+ id = aws_s3_bucket.cache_inventory.id
31
+}
32
+
33
resource "aws_s3_bucket_inventory" "cache_inventory" {
34
provider = aws.us
35
@@ -40,4 +57,3 @@ resource "aws_s3_bucket_inventory" "cache_inventory" {
57
}
58
}
59
}
43
-
terraform/cache_log.tf
-4
@@ -22,10 +22,6 @@ resource "aws_s3_bucket_lifecycle_configuration" "cache_log" {
22
id = "rule-1"
23
status = "Enabled"
24
25
- filter {
26
- prefix = ""
27
- }
28
-
25
expiration {
26
days = "30"
27
}
terraform/channels.tf
+11
@@ -20,6 +20,11 @@ resource "aws_s3_bucket" "channels" {
20
website {
21
index_document = "index.html"
22
}
23
+}
24
+
25
+resource "aws_s3_bucket_cors_configuration" "channels" {
26
+ provider = aws.us
27
+ bucket = aws_s3_bucket.channels.id
28
29
cors_rule {
30
allowed_headers = ["*"]
@@ -30,6 +35,12 @@ resource "aws_s3_bucket" "channels" {
35
}
36
}
37
38
+import {
39
+ to = aws_s3_bucket_cors_configuration.channels
40
+ id = aws_s3_bucket.channels.id
41
+
42
+}
43
+
44
resource "aws_s3_bucket_object" "channels-index-html" {
45
provider = aws.us
46
terraform/releases.tf
+27
-2
@@ -12,15 +12,35 @@ locals {
12
13
resource "aws_s3_bucket" "releases" {
14
bucket = "nix-releases"
15
+}
16
+
17
+resource "aws_s3_bucket_lifecycle_configuration" "releases" {
18
+ bucket = aws_s3_bucket.releases.id
19
+
20
16
- lifecycle_rule {
17
- enabled = true
21
+ transition_default_minimum_object_size = "varies_by_storage_class"
22
+ rule {
23
+ id = "tf-s3-lifecycle-20230907091915137900000001"
24
+ status = "Enabled"
25
+
26
+ filter {
27
+ prefix = ""
28
+ }
29
30
transition {
31
days = 365
32
storage_class = "STANDARD_IA"
33
}
34
}
35
+}
36
+
37
+import {
38
+ id = aws_s3_bucket.releases.id
39
+ to = aws_s3_bucket_lifecycle_configuration.releases
40
+}
41
+
42
+resource "aws_s3_bucket_cors_configuration" "releases" {
43
+ bucket = aws_s3_bucket.releases.id
44
45
cors_rule {
46
allowed_headers = ["*"]
@@ -31,6 +51,11 @@ resource "aws_s3_bucket" "releases" {
51
}
52
}
53
54
+import {
55
+ to = aws_s3_bucket_cors_configuration.releases
56
+ id = aws_s3_bucket.releases.id
57
+}
58
+
59
resource "aws_s3_bucket_object" "releases-index-html" {
60
acl = "public-read"
61
bucket = aws_s3_bucket.releases.bucket
terraform/releases_inventory.tf
+14
-4
@@ -1,17 +1,28 @@
1
# Get the list of files from the releases
2
resource "aws_s3_bucket" "releases_inventory" {
3
bucket_prefix = "nix-releases-inventory2"
4
+}
5
+
6
+resource "aws_s3_bucket_lifecycle_configuration" "releases_inventory" {
7
+ bucket = aws_s3_bucket.releases_inventory.id
8
+
9
+ transition_default_minimum_object_size = "varies_by_storage_class"
10
5
- lifecycle_rule {
6
- enabled = true
11
+ rule {
12
+ id = "tf-s3-lifecycle-20231029182032300100000002"
13
+ status = "Enabled"
14
8
- # Only keep the last 30 days
15
expiration {
16
days = 30
17
}
18
}
19
}
20
21
+import {
22
+ to = aws_s3_bucket_lifecycle_configuration.releases_inventory
23
+ id = aws_s3_bucket.releases_inventory.id
24
+}
25
+
26
resource "aws_s3_bucket_inventory" "releases_inventory" {
27
bucket = aws_s3_bucket.releases.id
28
name = "nix-releases-inventory"
@@ -37,4 +48,3 @@ resource "aws_s3_bucket_inventory" "releases_inventory" {
48
}
49
}
50
}
40
-