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

发布时间:2026/11/11 9:53:32

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/10/31 11:50:14

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

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

2026/11/5 6:21:45

勇闯前后端 Week

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

2026/11/7 12:24:02

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

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

2026/11/11 9:48:43

厦门高压电工证价格多少钱?上岗必备证书怎么选才不吃亏

厦门高压电工证价格多少钱?上岗必备证书怎么选才不吃亏 证书过期了不知道怎么复审延期,工作随时可能被叫停,这是很多电工朋友的真实写照。你是不是也遇到过这种情况?手头的高压电工证眼看就要到期,却不知道如何操作,甚至担心一旦过期就等于没了“上岗必…

2026/11/11 9:48:43

电工证去哪个部门考核在哪考?学历不高也能报!

电工证去哪个部门考核在哪考?学历不高也能报! 你是不是也在担心,自己学历不高, 电工证去哪个部门考核 , 在哪考 ,根本报不上名?其实,这种担心大可不必。不管你是初中毕业还是高中毕业,只要符合条件,都有机会考到电工证。今天,我从许昌转岗从业…

2026/11/11 9:48:43

电工证作废怎么避免?多久拿证不影响收入的关键点

电工证作废怎么避免?多久拿证不影响收入的关键点 怕考不过白交培训费?别让电工证作废毁了你的努力和投入。特别是对新乡中小施工企业负责人来说,电工证不光是上岗的“门槛”,更是薪资增长和项目承接的“通行证”。但一旦电工证作废,不仅影响个人职业发展…

2026/11/11 9:48:43

高压电工证挂靠费用值不值得考 这些避坑细节你必须知道

高压电工证挂靠费用值不值得考 这些避坑细节你必须知道 之前考的证在外省能不能转过来?这几乎是每位想从事特种作业岗位的人在报考高压电工证前最关心的问题。特别是对于已经在外地工作、想回本地发展的人来说,证书的 跨省互认 和 挂靠费用…

2026/11/10 8:12:38

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

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

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

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