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

Terraform动态填充Bedrock知识库RDS配置的field_mapping块求助

基于多团队JSON配置动态生成Bedrock知识库RDS字段映射

核心实现思路

通过Terraform的dynamic块结合外部JSON配置文件,批量生成不同团队对应的aws_bedrockagent_knowledge_base资源及RDS字段映射规则。

步骤1:定义多团队JSON配置

创建team_kb_configs.json文件,按团队划分字段映射规则:

{
  "teams": [
    {
      "team_name": "team_a",
      "field_mappings": [
        {
          "field": "TITLE",
          "column": "document_title"
        },
        {
          "field": "CONTENT",
          "column": "document_content"
        }
      ],
      "db_name": "team_a_docs_db"
    },
    {
      "team_name": "team_b",
      "field_mappings": [
        {
          "field": "TITLE",
          "column": "doc_title"
        },
        {
          "field": "CONTENT",
          "column": "doc_body"
        },
        {
          "field": "SOURCE_URI",
          "column": "doc_source_url"
        }
      ],
      "db_name": "team_b_docs_db"
    }
  ]
}

步骤2:Terraform代码实现

加载JSON配置,通过for_each和dynamic块动态生成资源及字段映射:

# 加载团队配置文件
locals {
  team_configs = jsondecode(file("${path.module}/team_kb_configs.json"))
}

# 为每个团队创建独立的Bedrock知识库
resource "aws_bedrockagent_knowledge_base" "team_kbs" {
  for_each = { for team in local.team_configs.teams : team.team_name => team }

  name        = "${each.value.team_name}_kb"
  description = "Knowledge base for ${each.value.team_name} documentation"
  role_arn    = aws_iam_role.bedrock_kb_exec_role.arn

  knowledge_base_configuration {
    type = "RDS"

    rds_configuration {
      database_name   = each.value.db_name
      db_instance_arn = aws_db_instance.team_dbs[each.key].arn
      table_name      = "docs_table"
      schema          = "public"

      # 动态生成RDS字段映射
      dynamic "field_mapping" {
        for_each = each.value.field_mappings
        content {
          field  = field_mapping.value.field
          column = field_mapping.value.column
        }
      }
    }
  }

  storage_configuration {
    type = "RDS"
  }
}

关键说明

  • dynamic "field_mapping":遍历每个团队的字段映射数组,自动生成对应Terraform块,无需手动重复编写
  • for_each:实现每个团队对应一个独立的知识库资源,便于团队间资源隔离
  • 字段约束:field值必须为AWS Bedrock支持的枚举值(如TITLE、CONTENT、SOURCE_URI、METADATA),column需匹配RDS表中实际存在的列名

注意事项

  • 确保关联的IAM角色具备访问目标RDS实例、表的权限
  • RDS实例和对应表需提前创建完成,或通过Terraform一同管理
  • 若无需按团队隔离知识库,可调整逻辑为单个知识库加载多团队映射(需结合业务场景)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:30:02