如何有选择地阻止基于变量传递Terraform配置?

问题描述 投票:0回答:1

背景:

我有一个用例,需要使用

aws_sqs_queue
资源创建大量 AWS SQS 队列。

其中一些 SQS 队列需要指定为使用 DLQ,并且某些正在创建的队列是 DLQ。

为了指定目标 DLQ,需要提供以下形式的 redrive_policy:

redrive_policy = jsonencode({
    deadLetterTargetArn = var.dlq_arn
    maxReceiveCount = var.max_receive_count
})

问题:

如果正在创建的队列本身就是 DLQ,则不应包含

redrive_policy
,因为 DLQ 本身不需要另一个 DLQ。

在我的

variables.tf
中,我将
deadLetterTargetArn
的类型指定为字符串,默认值为
null

我担心这会导致 DLQ 无法创建,因为没有传入

deadLetterTargetArn
,但仍需要
maxReceiveCount
,并且
redrive_policy
将变为无效 JSON。

我应该在这里使用条件吗?有选择地启用配置的某些部分的正确方法是什么?

terraform amazon-sqs terraform-provider-aws
1个回答
0
投票

我应该在这里使用条件吗?

是的。这正是你应该做的:

redrive_policy = dlq_arn == null ? jsonencode({
    deadLetterTargetArn = var.dlq_arn
    maxReceiveCount = var.max_receive_count
}) : null

© www.soinside.com 2019 - 2024. All rights reserved.