as I knew, we can use terraform count as if-else condiation, but that's for value.
Use sample of Data Source: aws_secretsmanager_secret
It has two keys: name
or arn
My condiation is,
- if I got variable
secret_name
, it will use keyname
- if I got variable
secret_arn
, it will use keyarn
- they can't bevused at same time (I can't control this by myself)
how to do that, something like this
data "aws_secretsmanager_secret" "by-arn" {
if count = length(var.secret_arn)
arn = var.secret_arn
else if count = length(var.secret_name)
name = var.secret_name
fi
}
CodePudding user response:
You can alternate between arn
and name
as follows:
data "aws_secretsmanager_secret" "by-arn" {
arn = length(var.secret_arn) > 0 ? var.secret_arn : null
name = length(var.secret_name) > 0 ? var.secret_name : null
}
CodePudding user response:
For aws_secretsmanager_secret
you can specify only arn
or name
, so you would need two data objects using count
.
data "aws_secretsmanager_secret" "by_arn" {
count = length(var.secret_arn) > 0 ? 1 : 0
arn = var.secret_arn
}
data "aws_secretsmanager_secret" "by_name" {
count = length(var.secret_name) > 0 ? 1 : 0
name = var.secret_name
}
If you want to ensure only one of both variable is used, you'll need some workaround using locals
, see Terraform - ensure value is set depending on if another value is also set