@cryptotaxi247 / infra / commits / 9fbc0e9b

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 -