无法组合“count”和“for_each”

bha*_*chi 7 terraform terraform-provider-aws

这是我的代码源

\n
resource "aws_s3_bucket_object" "object" {\n  count               = var.s3_create[1] ? 1 : 0 \n  depends_on          = [aws_s3_bucket.bucket_backup]\n  for_each            = local.buckets_and_folders \n    bucket            = each.value.bucket_backup\n    key               = format("%s/", each.value.folder)\n  force_destroy       = true\n} \n
Run Code Online (Sandbox Code Playgroud)\n

换句话说,我正在尝试创建aws_s3_bucket_object依赖于变量的对象s3_create对象...如果为真则创建,否则不创建。

\n

问题:我无法在创建 terraform 资源时使用以下语法的组合,我正在了解:

\n
Error: Invalid combination of "count" and "for_each"\n\xe2\x94\x82\n\xe2\x94\x82   on ..\\s3\\resources.tf line 51, in resource "aws_s3_bucket_object" "object":\n\xe2\x94\x82   51:   for_each            = local.buckets_and_folders\n\xe2\x94\x82\n\xe2\x94\x82 The "count" and "for_each" meta-arguments are mutually-exclusive, only one should be used to be explicit about the number of resources to be created.\n
Run Code Online (Sandbox Code Playgroud)\n

Dan*_*ego 19

count 和 for_each 都适用于整个块。在 for_each 下面缩进行不会影响任何内容,只会影响人类可读性。

尝试使用三元运算符与 for_each 而不是计数。如果值为 false,则返回空集。

resource "aws_s3_bucket_object" "object" {
  for_each       = var.s3_create[1] ? tomap({local.buckets_and_folders}) : {}
  bucket         = each.value.bucket_backup
  key            = format("%s/", each.value.folder)
  depends_on     = [aws_s3_bucket.bucket_backup]
  force_destroy  = true
} 
Run Code Online (Sandbox Code Playgroud)