0
votes

Définition du bucket s3 avec réplication à l'aide de Terraform

J'essaie de configurer le seau s3 avec la réplication à l'aide de Terraform. J'obtiens l'erreur suivante.

resource "aws_s3_bucket" "ps-db-backups" {
  bucket = "ps-db-backups-b3bd1643-8cbf-4927-a64a-f0cf9b58dfab"
  acl    = "private"
  region = "eu-west-1"

  versioning {
    enabled = true
  }

  lifecycle_rule {
    id      = "transition"
    enabled = true

    transition {
      days          = 30
      storage_class = "STANDARD_IA"
    }

    expiration {
      days = 180
    }
  }

replication_configuration {
    role = "${aws_iam_role.ps-db-backups-replication.arn}"

    rules {
      id     = "ps-db-backups-replication"
      status = "Enabled"

      destination {
        bucket        = "${aws_s3_bucket.ps-db-backups-replica.arn}"
        storage_class = "STANDARD_IA"
      }
    }
  }

server_side_encryption_configuration {
    rule {
      apply_server_side_encryption_by_default {
        sse_algorithm     = "AES256"
      }
    }
  }

}

Je ne comprends pas ce message d'erreur. Tout d'abord, dans la section réplication , j'ai défini la destination . Deuxièmement, le message d'erreur mentionne lifecycle_rule qui n'a pas Attribut destination . La définition du bucket est ci-dessous.

Error: insufficient items for attribute "destination"; must have at least 1

      on main.tf line 114, in resource "aws_s3_bucket" "ps-db-backups":
     114:   lifecycle_rule {


2 commentaires

avec quelle version de terraform utilisez-vous?


J'ai mis à niveau vers la dernière version 0.12.2 mais la même erreur.


3 Réponses :


0
votes

Parcourez attentivement les documents de terraform.

Vous devez créer une ressource terraform distincte pour destination comme celle-ci:

destination {
  bucket        = "${aws_s3_bucket.destination.arn}"
  storage_class = "STANDARD"
}

Et puis la référencer dans votre replication_configuration code > as

resource "aws_s3_bucket" "destination" {
  bucket = "tf-test-bucket-destination-12345"
  region = "eu-west-1"

  versioning {
    enabled = true
  }
}

J'espère que cela vous aidera. Essayez de me le faire savoir.


1 commentaires

J'ai cette configuration évidemment. N'incluait pas tout le fichier de configuration terraform pour brewity.



0
votes

Cela semble être un bogue dans Terraform 0.12. Consultez ce numéro https://github.com/terraform-providers/terraform -provider-aws / issues / 9048


0 commentaires

0
votes

En remarque, si vous devez également activer la surveillance de la réplication S3, vous ne pourrez pas le faire. Terraform n'a pas cela implémenté.

Mais il y a un PR ouvert pour cela, veuillez voter avec un pouce vers le haut, https://github.com/terraform-providers/terraform-provider-aws/pull/11337


0 commentaires