2017-06-06 3 views
1

Ich habe einen Terraform-Plan, der aus mehreren aws_sqs_queue Ressourcen besteht, die mehr von weniger teilen die gleiche Konfiguration. Bevor ich irgendwelche sich wiederholenden Konfigurationen entferne und Variablen verwende, wollte ich terraform plan ausführen, um zu sehen, ob es funktioniert. Allerdings halte ich laufen in -Terraform - Ressource mehrmals wiederholt

module root: 1 error(s) occurred: 

* data.template_file.ep_match_result_queues: resource repeated multiple times 

Ive versucht, googeln, aber es gibt nicht viele Informationen zur Verfügung. Jede Hilfe wird sehr geschätzt. Mein Plan sieht wie folgt aus: (ignorieren zusätzliche Klammern, Tippfehler, da dies nur ein Skelett ist, Ihnen eine allgemeine Vorstellung davon, wie der Plan sturctured ist):

data "template_file" "ep_match_result_queues" { 
    template = "${var.namespace}-sm-ep" 
} 

resource "aws_sns_topic" "sns_topic_name" { 
    name   = "ep_sm_match_result_topic${var.environment}" 
    display_name = "" 
    policy   = <<POLICY 
{ 
#policy 
} 


resource "aws_sqs_queue" "queue1" { 
#config 
} 

resource "aws_sqs_queue" "queue2" { 
#config 

    redrive_policy    = <<POLICY 
{ 
#policy 
} 
POLICY 
} 

resource "aws_sqs_queue" "queue3" { 
#config 
} 

resource "aws_sqs_queue" "queue4" { 
#config 

    redrive_policy    = <<POLICY 
{ 
#policy 
} 
POLICY 
} 

resource "aws_sqs_queue" "queue5" { 
#config 
} 

resource "aws_sqs_queue" "queue6" { 
    #config 

    redrive_policy    = <<POLICY 
{ 
#policy 
} 
POLICY 
} 

resource "aws_sqs_queue" "queue7" { 
#config 
} 

resource "aws_sqs_queue" "queue8" { 
    #config 

    redrive_policy    = <<POLICY 
{ 
#policy 
} 
POLICY 
} 

resource "aws_sqs_queue_policy" "queue_policy" { 
    queue_url = [ ... ] 
    policy = "${data.aws_iam_policy_document.match_result_queues_policy.json}" 
} 

data "aws_iam_policy_document" "match_result_queues_policy" { 
#policy 
} 

Antwort

2

Ich denke, dass Fehler bedeutet, dass Sie die Ressource erklärt haben, mit der Derselbe Name mehr als einmal, das ist in der gleichen TF-Datei oder in einer anderen TF-Datei in demselben Verzeichnis, in dem Sie Terraform ausführen.

0

Sie können eine Variable verwenden, um anzugeben, wie viele Sie möchten, und sie dann dem Namen der Warteschlange hinzufügen.

resource "aws_sqs_queue" "terraform_queue" { 
    count = "${var.queue_count}" 
    name      = "terraform-example-queue-${count.index}" 
    delay_seconds    = 90 
    max_message_size   = 2048 
    message_retention_seconds = 86400 
    receive_wait_time_seconds = 10 
    redrive_policy   = "{\"deadLetterTargetArn\":\"${aws_sqs_queue.terraform_queue_deadletter.arn}\",\"maxReceiveCount\":4}" 
} 

https://www.terraform.io/intro/examples/count.html

Verwandte Themen