是否可以在地形资源中使用条件参数



我正试图在AWS中使用时间表设置数据同步,但我只需要在两个环境中使用时间表,有没有一种方法可以使用条件参数,以便只在dev和test中设置时间表。

resource "aws_datasync_task" "data-load" {
destination_location_arn = aws_datasync_location_s3.destination.arn
name                     = "data-load"
source_location_arn      = aws_datasync_location_nfs.source.arn
schedule {
schedule_expression = "cron(0 12 ? * SUN,WED *)"
}
}

我试过

schedule {
schedule_expression = var.data_sync_schedule
}

variables.tf:
variable "data_sync_schedule" {
default = null
}
dev and test tfvars:
data_sync_schedule = "cron(0 8 * * ? *)"

但是对于除dev-test之外的所有其他env,我得到以下错误:

╷
│ Error: Missing required argument
│ 
│   with aws_datasync_task.data-load[0],
│   on data-sync.tf line 19, in resource "aws_datasync_task" "data-load":
│   19:     schedule_expression = var.data_sync_schedule
│ 
│ The argument "schedule.0.schedule_expression" is required, but no
│ definition was found.

如有任何建议,我们将不胜感激。

您需要使整个aws_datasync_task资源成为有条件的,而不是试图将调度表达式置空。您可以使用资源上的count参数来执行此操作,将其设置为01

您可以执行以下操作:

resource "aws_datasync_task" "data-load" {
destination_location_arn = aws_datasync_location_s3.destination.arn
name                     = "data-load"
source_location_arn      = aws_datasync_location_nfs.source.arn
schedule {
schedule_expression = var.env == 'dev' ? "cron(0 12 ? * SUN,WED *)" : null
}
}

Var.env将通过您的CI/CD作业设置

相关内容

  • 没有找到相关文章