Как применить правило жизненного цикла к СУЩЕСТВУЮЩЕМУ сегменту s3 в Terraform?

#amazon-web-services #amazon-s3 #terraform #terraform-provider-aws

#amazon-web-services #amazon-s3 #terraform #terraform-provider-aws

Вопрос:

Новое в Terraform. Попытка применить правило жизненного цикла к существующему сегменту s3, объявленному как источник данных, но, полагаю, я не могу этого сделать с источником данных — выдает ошибку. Вот суть того, чего я пытаюсь достичь:

 data "aws_s3_bucket" "test-bucket" {
  bucket = "bucket_name"
  lifecycle_rule {
    id = "Expiration Rule"
    enabled = true
    prefix = "reports/"
    expiration {
      days = 30
    }
  }
}
  

… и если бы это был ресурс, а не источник данных, тогда это сработало бы. Как я могу применить правило жизненного цикла к сегменту s3, объявленному в качестве источника данных? Google Fu мало что дал в плане результатов. Спасибо!

Ответ №1:

Лучший способ решить эту проблему — импортировать ваш сегмент в состояние terraform, а не использовать его как data .

Для этого попробуйте поместить это в свой код terraform:

 resource "aws_s3_bucket" "test-bucket" {
  bucket = "bucket_name"
  lifecycle_rule {
    id = "Expiration Rule"
    enabled = true
    prefix = "reports/"
    expiration {
      days = 30
    }
  }
}
  

А затем запустить на терминале:

terraform import aws_s3_bucket.test-bucket bucket_name

Это импортирует сегмент в ваше состояние, и теперь вы можете вносить изменения или добавлять новые элементы в свой сегмент с помощью terraform.

Просто запустите последний шаг terraform apply , и правило жизненного цикла будет добавлено.

Комментарии:

1. Спасибо! Именно то, что мне было нужно.

2. Отлично ! Нет проблем!