我正试图在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参数来执行此操作,将其设置为0
或1
。
您可以执行以下操作:
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作业设置