2017-06-06 119 views
1

我有一个terraform计划,它由多个aws_sqs_queue资源组成,它们更少或更少共享相同的配置。在我删除任何重复的配置并使用变量之前,我想运行terraform plan以查看它是否有效。但我一直碰到 -Terraform - 资源重复多次

module root: 1 error(s) occurred: 

* data.template_file.ep_match_result_queues: resource repeated multiple times 

我试过Google搜索,但没有太多的信息可用。任何帮助都感激不尽。我的计划是这样的:(忽略多余的括号,错别字,因为这仅仅是一个框架给你一个总体思路的计划是如何sturctured):

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 
} 

回答

2

我认为错误意味着您已声明与资源相同的名称不止一次,这是在同一个tf文件或另一个tf文件中您正在运行terraform的同一目录中。

0

您可以使用变量来指定想要的数量,然后将其添加到队列的名称。

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