You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform创建aws_s3_bucket_object时count与for_each同时使用报错如何解决

错误原因

Terraform 中count和for_each属于互斥的元参数,同一资源块内只能使用其中一个来声明资源的创建数量,同时声明两个就会触发上述报错。

解决方案

你不需要用count做开关,直接把创建判断逻辑合并到for_each的取值中即可,修改后的代码如下:

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

逻辑说明

  • 当var.s3_create[1]值为true时,for_each会读取原始的local.buckets_and_folders集合,按预期创建对应的S3对象实例
  • 当var.s3_create[1]值为false时,for_each会接收一个空的映射集合,Terraform不会创建任何该资源的实例,完全匹配你的开关需求

注意事项

如果你的local.buckets_and_folders是Set类型而非Map类型,空值需要对应改为toset([]),保证类型一致即可。

内容的提问来源于stack exchange,提问作者bhamichi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:30:01