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

AWS Batch作业定义模块resource_requirements配置问题求助

AWS Batch作业定义动态生成resource_requirements列表的问题解决

错误原因

你碰到的Expected a comma to mark the beginning of the next item错误,本质是Terraform语法使用错误:dynamic块仅用于资源、数据源等内部的嵌套块生成,不能直接在列表字面量中使用。你原本试图在列表里插入dynamic块来动态添加GPU资源条目,这不符合Terraform的语法规则。

错误代码示例

locals {
  resource_requirements = [
    {
      "Type": "VCPU",
      "Value": tostring(var.vcpus)
    },
    {
      "Type": "MEMORY",
      "Value": tostring(var.memory)
    },
    dynamic "gpu_map" {
      for_each = var.gpu != 0 ? [1] : []
      content {
        Type  = "GPU",
        Value = tostring(var.gpu)
      }
    }
  ]
}

解决方案

正确的做法是将CPU、MEMORY、GPU的资源需求拆分为独立的列表,再通过flatten函数合并成最终的resource_requirements列表。当var.gpu为0时,GPU对应的列表为空,合并后自动跳过该条目:

locals {
  cpu_map = [{
    "Type": "VCPU",
    "Value": tostring(var.vcpus)
  }]

  memory_map = [{
    "Type": "MEMORY",
    "Value": tostring(var.memory)
  }]

  # 当var.gpu不为0时生成GPU资源条目,否则返回空列表
  gpu_map = var.gpu != 0 ? [{
      "Type": "GPU",
      "Value": tostring(var.gpu)
  }] : []

  # 合并所有资源需求列表并展平为一维数组
  resource_requirements = flatten([local.cpu_map, local.memory_map, local.gpu_map])
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:51:19