Terraform AWS Provider 数据源 aws_kendra_thesaurus 完全指南:读取 Amazon Kendra 词库详情

发布时间:2026/9/18 21:53:05

Terraform AWS Provider 数据源 aws_kendra_thesaurus 完全指南:读取 Amazon Kendra 词库详情 Terraform AWS Provider 数据源 aws_kendra_thesaurus 完全指南读取 Amazon Kendra 词库详情【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws导读aws_kendra_thesaurus是 Terraform AWS Provider本项目 terraform-provider-aws为 Amazon Kendra 智能检索服务提供的只读数据源用于按index_id索引标识符与thesaurus_id词库标识符查询已存在词库Thesaurus的完整信息包括 ARN、状态、同义词规则数量、词条数量、S3 源文件路径与标签等。读完本文你将掌握该数据源的全部参数与导出属性、与aws_kendra_thesaurus管理资源的组合用法并了解其背后的 SDKv2 数据源实现与 AWS KendraDescribeThesaurusAPI 调用链路。数据源概述与适用场景Amazon Kendra 的词库Thesaurus允许你自定义同义词规则用于扩展索引的查询理解能力。词库文件存放在 S3 中由 Kendra 服务读取并构建同义词映射。aws_kendra_thesaurus数据源解决的核心问题是当词库不是由当前 Terraform 配置管理例如由其他团队或手工创建时如何安全地引用它的元数据。典型应用场景包括在同一配置或不同配置之间共享词库 ARN、名称、状态等元数据在模块化 Terraform 工程中通过数据源把外部词库的name、role_arn等值传给其他资源使用编写条件判断或输出时读取status、synonym_rule_count、term_count等状态信息。该数据源对应的官方文档位于 website/docs/d/kendra_thesaurus.html.markdown实现代码位于 internal/service/kendra/thesaurus_data_source.go。基础示例按 ID 查询词库数据源仅需两个必填参数index_id与thesaurus_id。两个 ID 都可以从aws_kendra_thesaurus资源或其他渠道获得data aws_kendra_thesaurus example { index_id 12345678-1234-1234-1234-123456789123 thesaurus_id 87654321-1234-4321-4321-321987654321 }查询完成后即可在输出或下游配置中引用其属性output thesaurus_arn { value data.aws_kendra_thesaurus.example.arn } output thesaurus_status { value data.aws_kendra_thesaurus.example.status } output thesaurus_term_count { value data.aws_kendra_thesaurus.example.term_count }与资源组合的完整用法实践中更常见的写法是先用aws_kendra_thesaurus资源创建词库需要同属一个aws_kendra_index词库文件来自 S3再用本数据源读取其详情从而避免手写易错的 ID。参照仓库中的验收测试配置 internal/service/kendra/thesaurus_data_source_test.go一个完整的组合示例为resource aws_kendra_thesaurus test { index_id aws_kendra_index.test.id name example-thesaurus description example description thesaurus role_arn aws_iam_role.test.arn source_s3_path { bucket aws_s3_bucket.test.id key aws_s3_object.test.key } tags { Key1 Value1 } } data aws_kendra_thesaurus test { index_id aws_kendra_index.test.id thesaurus_id aws_kendra_thesaurus.test.thesaurus_id }其中aws_kendra_index.test.id是 Kendra 索引的标识符36 位 UUID 形式aws_kendra_thesaurus.test.thesaurus_id是词库自身的标识符词库源文件同义词规则文件必须先上传到 S3source_s3_path指向该文件Kendra 通过role_arn对应的 IAM 角色读取该文件因此角色需要具备对 S3 桶与对象的访问权限。数据源的tags、description、status等属性会与资源侧保持一致验收测试通过TestCheckResourceAttrPair逐项断言了这种一致性例如arn、description、index_id、name、role_arn、status、source_s3_path、thesaurus_id以及tags均与aws_kendra_thesaurus.test对应相等见 thesaurus_data_source_test.go。参数参考Argument Reference数据源支持以下参数参数必填说明index_id是词库所属 Kendra 索引的标识符。源码中通过正则[0-9A-Za-z][0-9A-Za-z-]{35}校验要求以字母或数字开头、后续可含字母数字与连字符、固定长度为 36见 thesaurus_data_source.go即通常为 UUID 格式。thesaurus_id是词库自身的标识符。源码中校验长度为 1100并匹配正则[0-9A-Za-z][0-9A-Za-z_-]*即以字母或数字开头后续可含字母、数字、连字符与下划线见 thesaurus_data_source.go。region否词库所在区域。默认使用 provider 配置 中设置的区域。适用于跨区域读取词库元数据的场景。两个必填参数的校验规则与aws_kendra_thesaurus资源侧保持一致资源的index_id同样是Required且ForceNewthesaurus_id为Computed由 API 返回具体可见 internal/service/kendra/thesaurus.go。属性参考Attribute Reference除上述参数外数据源还导出以下只读属性属性类型说明idstring词库标识符与索引标识符以斜杠/连接格式为thesaurus_id/index_id。arnstring词库的 ARN。created_atstring词库创建时间RFC3339 格式。descriptionstring词库描述。error_messagestring当status为FAILED时包含失败原因说明。file_size_bytesnumber词库文件大小字节。namestring词库名称。role_arnstring有权访问包含词库文件的 S3 桶的 IAM 角色 ARN。source_s3_pathobject词库输入数据在 S3 中的位置结构详见下节。statusstring词库状态当值为ACTIVE时表示可正常使用。synonym_rule_countnumber词库文件中的同义词规则数量。term_countnumber词库文件中的唯一词条数量。例如同义词a,b,c与adterm count 为 4。updated_atstring词库最近更新时间RFC3339 格式。tagsmap词库的标签元数据。source_s3_path 嵌套块source_s3_path为只读嵌套块包含两个属性属性类型说明bucketstring包含词库文件的 S3 桶名称。keystring词库文件名对象键。在 HCL 中引用时使用索引语法例如data.aws_kendra_thesaurus.example.source_s3_path[0].bucket与data.aws_kendra_thesaurus.example.source_s3_path[0].key。源码中该块通过flattenSourceS3Path从 AWS SDK 的*types.S3Path对象展开为列表见 internal/service/kendra/flex.go当 API 未返回 S3 路径时该块为null。源码级原理数据源读取链路从实现层面看该数据源是一个标准的 Terraform Plugin SDKv2 数据源其读取逻辑集中在 thesaurus_data_source.go 的dataSourceThesaurusRead函数中整体链路如下获取客户端通过meta.(*conns.AWSClient).KendraClient(ctx)取得 Kendra 服务的 AWS SDK for Go v2 客户端调用查找函数将thesaurus_id与index_id传入FindThesaurusByID见 internal/service/kendra/find.go其内部调用 Kendra APIDescribeThesaurus若 API 返回ResourceNotFoundException则包装为retry.NotFoundError数据源读取会报错退出若返回空结果则抛出空结果错误否则返回词库详情对象构造并写入属性基于返回对象依次写入arn、created_at、description、error_message、file_size_bytes、index_id、name、role_arn、status、synonym_rule_count、term_count、thesaurus_id、updated_at。其中ARN 并非来自 API而是在 Provider 内部按arn:partition:kendra:region:account:index/{index_id}/thesaurus/{thesaurus_id}模板拼装而成时间字段created_at、updated_at通过aws.ToTime(...).Format(time.RFC3339)转换为 RFC3339 字符串source_s3_path使用flattenSourceS3Path展开读取标签调用listTags基于 ARN 列出标签并经IgnoreAWS()与IgnoreConfig(ignoreTagsConfig)过滤后写入tags属性tags在数据源侧为 Computed见 thesaurus_data_source.go设置 ID最终以fmt.Sprintf(%s/%s, thesaurusID, indexID)设置id即文档所述的thesaurus_id/index_id格式。值得注意的验证细节是数据源在读取不存在的词库时会以reading Kendra Thesaurus为前缀返回错误。仓库的验收测试专门用一个不存在的配置断言了该错误见 thesaurus_data_source_test.go 与testAccThesaurusDataSourceConfig_nonExistent说明查询不存在的词库会直接报错而不是静默返回空数据。常见问题与使用提示status 为FAILED怎么办查看error_message属性获取失败原因。常见诱因包括 IAM 角色role_arn缺少对 S3 源文件的读取权限、词库文件格式不符合 Kendra 同义词文件规范等。term_count 如何理解它统计的是词库文件中的唯一词条数。例如同义词a,b,c视作 3 个词条ad视作 1 个合计 4。ID 格式提醒数据源的id为thesaurus_id/index_id顺序该格式与 aws_kendra_thesaurus 资源 的导入 ID 约定一致资源侧SetId同样采用thesaurus_id/index_id格式见 thesaurus.go因此数据源读取到的id可直接用于资源的terraform import场景参考。跨区域读取如词库位于非默认区域请通过region参数显式指定否则 Provider 会使用自身配置的区域发起 API 调用。延伸阅读数据源文档website/docs/d/kendra_thesaurus.html.markdown数据源实现internal/service/kendra/thesaurus_data_source.go资源实现创建/更新/删除与导入internal/service/kendra/thesaurus.go底层查找逻辑DescribeThesaurus调用与 NotFound 处理internal/service/kendra/find.goS3 路径的展开/折叠转换internal/service/kendra/flex.go数据源验收测试internal/service/kendra/thesaurus_data_source_test.go同服务其余 Kendra 资源的实现与注册internal/service/kendra/service_package_gen.go【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/18 21:53:05

Redis ACL 权限控制:从共享密码到最小权限实战

1. 从一次线上事故聊聊为什么需要 ACLRedis 6.0 的 ACL 机制,我是等到线上真出了事才回头认真啃的。在那之前,我们那套缓存集群里所有业务线共用一个requirepass,密码写在配置中心的明文条目里,谁都能KEYS *,谁都能FLU…

2026/9/18 21:53:05

勇闯前后端 Week

开篇:Week2 学习地图如果把 Week1 看作是搭好前后端学习的地基,那么 Week2 就是正式开始盖楼的一周。Week1 里我们认识了 HTML、CSS 的基础语法,也初步接触了 JavaScript 的变量、函数和简单的事件绑定,同时在 Node.js 环境里跑通…

2026/9/18 21:53:05

RFC 详解:从历史渊源、编号体系到阅读实战的完整指南

一、引言:互联网世界的“宪法典籍”如果把互联网比作一个庞大的国家,那么 RFC(Request for Comments)就是这个国家的法律典籍和工程图纸。从我们每天使用的 HTTP 请求、TCP 连接、DNS 解析,到电子邮件传输、网络时间同…

2026/9/18 22:58:07

PyWxDump环境配置完全指南:4条命令跑起来,3件事用得安全

PyWxDump环境配置完全指南:4条命令跑起来,3件事用得安全 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 照着文档装完,终端里一敲 wxdump info 就抛 ImportError,这是装完 Py…

2026/9/18 22:58:07

给 Codex 的 Skill 链,TaoToken 只补 Base URL

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 22:58:07

PHP+uniapp构建智能举报系统:DFA敏感词过滤与工单闭环实践

做这个项目之前,我去调研过辖区派出所的举报登记流程。接待窗口放着一个厚厚的登记本,民警一边听群众口述一边手写,遇到电话举报就顺手记在便签纸上。一天下来几十条线索,格式五花八门,地址写“老菜场旁边”这种模糊位…

2026/9/18 22:58:07

Cursor 挂 DBHub MCP 操作 MySQL,模型 Base URL 指到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 22:58:07

VSCODE插件十大推荐,这次让Codex走TaoToken替我挑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 22:53:07

ollama 在 Ubuntu 装不上,OpenClaw 改走 TaoToken 通道行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码