背景:
我有一个用例,需要使用
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。
我应该在这里使用条件吗?有选择地启用配置的某些部分的正确方法是什么?
我应该在这里使用条件吗?
是的。这正是你应该做的:
redrive_policy = dlq_arn == null ? jsonencode({
deadLetterTargetArn = var.dlq_arn
maxReceiveCount = var.max_receive_count
}) : null