使用 Terraform AWS Provider 的 aws_lakeformation_resource 数据源查询已注册的 Lake Formation 数据位置
使用 Terraform AWS Provider 的 aws_lakeformation_resource 数据源查询已注册的 Lake Formation 数据位置【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws导读aws_lakeformation_resource是 terraform-provider-aws 在 Lake Formation 服务下提供的一个数据源Data Source用于查询 AWS Lake Formation 中已注册数据位置Registered Data Location通常是一个 S3 路径的详细信息包括注册所用 IAM 角色、混合访问模式、联邦federation与特权访问标记等。本文以仓库中的 数据源官方文档 为主线结合 resource_data_source.go、resource.go 及对应测试代码完整讲解该数据源的参数、导出属性、底层实现与实战用法。数据源概述它查询的是什么AWS Lake Formation 要求在使用某个数据位置典型为 S3 存储桶或前缀之前先将其注册到 Lake Formation 中。注册时通常会绑定一个 IAM 角色用于 Lake Formation 代表调用方访问底层数据并可以附带若干行为标记。aws_lakeformation_resource数据源正是用来读取这类已注册资源的状态信息。它不做任何写操作只通过只读 API 获取快照供 Terraform 配置中其他资源或输出output引用。从源码看它被注册为 Lake Formation 服务包中的 SDK 数据源之一见 service_package_gen.go。典型应用场景在已由其他流程控制台、CLI 或本 Provider 的aws_lakeformation_resource资源注册过数据位置的账户中以声明式方式获取该位置的元数据将查询到的role_arn、last_modified等信息输出给下游模块如权限策略、监控告警配置在配置中判断某个数据位置当前是否开启了混合访问、联邦或特权访问模式。使用前提数据位置必须先注册该数据源本身是只读的它要求目标 ARN 对应的数据位置已经在 Lake Formation 中完成注册。若未注册DescribeResourceAPI 会返回EntityNotFoundExceptionProvider 会将资源 ID 置空并从状态中移除见 resource_data_source.go。在本仓库中注册动作由同名的管理资源aws_lakeformation_resource完成其源码位于 resource.go通过RegisterResourceAPI 实现注册、DeregisterResource实现注销。因此最常见的组合是先用aws_lakeformation_resource资源注册数据位置再用本数据源读取其详情。参数详解Argument Reference该数据源支持以下参数参数必填类型说明arn是string要查询的 Lake Formation 资源的 ARN即一个 S3 路径的 ARN例如arn:aws:s3:::my-bucket或带前缀的arn:aws:s3:::my-bucket/data/。在 resource_data_source.go 中该参数被声明为Required并通过verify.ValidARN做 ARN 格式校验。region否string该资源被管理的区域。默认使用 Provider 配置 中设置的区域。从 service_package_gen.go 可以看到Provider 会根据配置覆盖客户端默认区域确保 Lake Formation API 调用落到正确的区域端点。其中arn是查询的唯一主键数据源读取后会将arn的值直接作为资源 IDd.SetId写入状态见 resource_data_source.go。属性参考Attribute Reference除了上述参数之外数据源还会导出以下只读属性Computed属性类型说明hybrid_access_enabledbool是否启用了 AWS Lake Formation 混合访问Hybrid Access权限模式。last_modifiedstring数据位置最近一次被修改的日期与时间格式为 RFC 3339 标准时间字符串。role_arnstring数据位置注册时绑定的 IAM 角色 ARN。with_federationbool该资源是否为联邦federated资源。with_privileged_accessbool是否授予调用主体在该已注册数据位置上执行所有受支持 Lake Formation 操作的权限。这些属性与 AWS SDK for Go v2 的DescribeResource返回的ResourceInfo结构体字段一一对应。在 resource_data_source.go 中可以看到映射逻辑hybrid_access_enabled←ResourceInfo.HybridAccessEnabledlast_modified←ResourceInfo.LastModified格式化输出为time.RFC3339role_arn←ResourceInfo.RoleArnwith_federation←ResourceInfo.WithFederationwith_privileged_access←ResourceInfo.WithPrivilegedAccess实战示例从注册到查询的完整配置原文档给出了最小示例直接以 S3 路径 ARN 查询已注册资源data aws_lakeformation_resource example { arn arn:aws:s3:::tf-acc-test-9151654063908211878 }仓库的验收测试resource_data_source_test.go给出了更完整的注册 查询闭环配置可以直接作为生产配置模板# 1. 准备一个 S3 存储桶作为数据位置 resource aws_s3_bucket test { bucket my-lake-bucket } # 2. 创建用于注册的 IAM 角色 resource aws_iam_role test { name lakeformation-registration-role path /test/ assume_role_policy EOF { Version: 2012-10-17, Statement: [ { Action: sts:AssumeRole, Principal: { Service: s3.amazonaws.com }, Effect: Allow, Sid: } ] } EOF } data aws_partition current {} # 3. 为角色授予访问该桶所需的最小 S3 权限 resource aws_iam_role_policy test { name lakeformation-s3-access role aws_iam_role.test.id policy EOF { Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [ s3:GetBucketLocation, s3:ListAllMyBuckets, s3:GetObjectVersion, s3:GetBucketAcl, s3:GetObject, s3:GetObjectACL, s3:PutObject, s3:PutObjectAcl ], Resource: [ arn:${data.aws_partition.current.partition}:s3:::${aws_s3_bucket.test.id}/*, arn:${data.aws_partition.current.partition}:s3:::${aws_s3_bucket.test.id} ] } ] } EOF } # 4. 将数据位置注册到 Lake Formation resource aws_lakeformation_resource test { arn aws_s3_bucket.test.arn role_arn aws_iam_role.test.arn } # 5. 通过数据源读取注册详情 data aws_lakeformation_resource test { arn aws_lakeformation_resource.test.arn } output registered_role { value data.aws_lakeformation_resource.test.role_arn }执行terraform plan与terraform apply后数据源的各项属性即可被下游引用。测试中的断言resource_data_source_test.go验证了数据源的arn/role_arn与aws_lakeformation_resource资源的对应属性值相等且默认情况下hybrid_access_enabled、with_federation、with_privileged_access均为false。底层实现数据源如何读取资源信息该数据源是一个基于terraform-plugin-sdk/v2的 SDK 数据源核心读取逻辑在dataSourceResourceRead函数中resource_data_source.go调用链如下通过meta.(*conns.AWSClient).LakeFormationClient(ctx)获取 Lake Formation 服务客户端构造lakeformation.DescribeResourceInput将用户传入的arn写入ResourceArn字段调用conn.DescribeResource(ctx, input)发起 AWS API 请求处理异常若返回EntityNotFoundException资源未注册记录 WARN 日志并将资源 ID 置空从 Terraform 状态中移除其他错误则通过sdkdiag.AppendErrorf汇总为诊断信息返回校验output与output.ResourceInfo非空空响应同样报错将arn设置为数据源 ID并把ResourceInfo的字段逐一写入状态。值得注意的实现细节last_modified可能缺失代码注释明确说明output not including last modified currentlyresource_data_source.go即当前 AWS API 响应中LastModified字段可能不返回因此写入前做了 nil 判断避免空指针。with_federation/with_privileged_access的守卫逻辑管理资源 resource.go 中对这两个字段也做了 nil 判断。这是因为对于 Glue 连接类型不支持联邦的 ARN如 JDBC 连接AWS 会省略这两个字段若把 nil 强转成false会与用户配置的true产生永久性漂移perpetual drift。数据源侧同样遵循这一守卫保证读回的状态与远端一致。数据源与 aws_lakeformation_resource 资源的关系理解这一对资源/数据源的关系有助于正确使用维度aws_lakeformation_resource资源aws_lakeformation_resource数据源生命周期Create / Read / Delete可注册与注销数据位置仅 Read只读查询底层 APIRegisterResource/DescribeResource/DeregisterResourceDescribeResource参数arn必填、role_arn、use_service_linked_role、hybrid_access_enabled、with_federation、with_privileged_accessarn必填、region可选是否可写是会真实修改 AWS 侧注册状态否管理资源的注册逻辑resource.go中有两个对理解数据源输出很有帮助的行为角色选择配置了role_arn时使用显式 IAM 角色注册未配置时自动回退为UseServiceLinkedRole true即使用 Lake Formation 的服务相关角色。因此数据源输出的role_arn可能是用户指定的角色也可能是AWSServiceRoleForLakeFormationDataAccess这类服务相关角色测试 resource_test.go 中对此有专门断言。AlreadyExistsException幂等处理重复注册同一 ARN 时不会报错仅记录 WARN 日志后继续读取。测试与质量保障仓库为数据源提供了专门的验收测试TestAccLakeFormationResourceDataSource_basicresource_data_source_test.go其关键点包括使用acctest.PreCheckPartitionHasService检查当前分区是否提供 Lake Formation 服务通过TestCheckResourceAttrPair断言数据源与资源之间的arn、role_arn属性值一致对hybrid_access_enabled、with_federation、with_privileged_access断言默认false值固化了对默认行为的契约。此外管理资源侧的测试resource_test.go覆盖了基本注册、disappears、服务相关角色切换SLR↔Role、hybrid_access_enabled与with_privileged_access开启等场景这些测试共同保证了数据源查询结果的准确性。仓库还通过 sweepersweep.go使用ListResources分页器遍历清理测试残留的已注册资源保障 CI 环境的可重复性。常见问题与注意事项arn必须是已注册的 S3 路径 ARN数据源不会自动注册数据位置。若查询未注册的 ARNProvider 会将该数据源从状态中移除d.SetId()后续引用它的属性会报错。此时应先创建aws_lakeformation_resource资源完成注册。region与 Provider 区域的关系Lake Formation 是区域性服务数据位置的注册状态按区域隔离。若资源注册在 A 区域而 Provider 默认区域是 B则需通过region参数显式指定 A 区域否则会查询不到。last_modified可能为空受 AWS API 响应限制该字段可能不返回引用时建议做空值兼容处理。联邦相关字段的语义with_federation为true表示资源是联邦资源对于非联邦能力的 Glue 连接 ARN如 JDBCAWS 可能完全省略该字段Provider 会保留 nil 而不会强行写入false避免漂移。ARN 校验arn参数会经过verify.ValidARN校验传入非法 ARN 会在terraform plan阶段直接报错而不是等到 API 调用时才失败。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

(全新整理)上市公司环保投资额测算数据|原始+dofile(1999-2024年) 样本数量:20275条

(全新整理)上市公司环保投资额测算数据|原始+dofile(1999-2024年) 样本数量:20275条

文章目录资料下载地址介绍一、数据介绍二、数据指标三、参考文献四、数据概览项目备注资料下载地址资料下载地址 点击这里下载资料 介绍 在经济增长与环境约束并存的背景下,企业环保投资已成为环境治理和绿色转型的重要抓手。环保投资额是指企业在污染防治、节能…

2026/9/21 6:54:59 阅读更多 →
Unity DrawCall优化:Mesh合并、材质合并与图集化实战

Unity DrawCall优化:Mesh合并、材质合并与图集化实战

加载一个室内场景,Profiler 里 SetPass Calls 显示 400 多,FrameDebugger 一打开满屏的绿色方块,每个方块旁边都挂着一次Draw Mesh——那一刻我基本能确定,问题不在 Shader,也不在光照,而是场景里有太多独立…

2026/9/20 17:43:27 阅读更多 →
PaddleOCR 基于 PaddleHub Serving 的服务化部署实战:从模型安装、服务启动到请求调用与自定义扩展

PaddleOCR 基于 PaddleHub Serving 的服务化部署实战:从模型安装、服务启动到请求调用与自定义扩展

PaddleOCR 基于 PaddleHub Serving 的服务化部署实战:从模型安装、服务启动到请求调用与自定义扩展 【免费下载链接】PaddleOCR 飞桨多语言OCR工具包(实用超轻量OCR系统,支持80种语言识别,提供数据标注与合成工具,支持…

2026/9/21 1:51:04 阅读更多 →

最新新闻

郑州seo顾问热狗hotdoger拆解3个实战案例教你搞定网站UI

郑州seo顾问热狗hotdoger拆解3个实战案例教你搞定网站UI

郑州seo顾问热狗hotdoger拆解3个实战案例教你搞定网站UI 不会写代码却想做个像样的官网?这种焦虑我懂。 很多老板或运营负责人,手里攥着预算,脑子里有画面,但对着设计师提的需求,心里直打鼓:这到底合不合理?怎么验收?怎么让网站既能留住人,又能被搜索引擎抓到?…

2026/9/21 6:44:12 阅读更多 →
2026最新wordpress调用字段避坑指南

2026最新wordpress调用字段避坑指南

2026最新wordpress调用字段避坑指南 找建站公司怕被坑高价?这是很多老板和运营新人的心头大患。很多公司报价动辄几万,说得天花乱坠,其实底层技术也就那样。2026最新的数据显示,超过60%的中小企业网站其实可以用更透明的开源方案搞定,比如WordPress。今天咱们不聊虚的,直接拆解Word…

2026/9/21 6:29:22 阅读更多 →
实战案例揭秘:wordpress删除rss的3个关键坑

实战案例揭秘:wordpress删除rss的3个关键坑

实战案例揭秘:wordpress删除rss的3个关键坑 域名解析改错,服务器配置没跟上,导致后台能改前台打不开?这种“域名服务器搞不懂”的噩梦,我在给客户做运维时见过太多次。上个月刚处理的一个 实战案例…

2026/9/21 6:15:47 阅读更多 →
3个实战案例拆解i网站建设报价,拒绝被坑

3个实战案例拆解i网站建设报价,拒绝被坑

3个实战案例拆解i网站建设报价,拒绝被坑 网站做好了没人访问?这不仅是流量焦虑,更是建站前的预算盲区。很多老板拿着“i网站建设”这个模糊的概念去询价,结果被报出从几千到几十万不等的天价,心里直打鼓。…

2026/9/21 6:03:14 阅读更多 →
网站建设的探讨与研究速查手册

网站建设的探讨与研究速查手册

网站建设探讨与研究:5大费用陷阱与选型注意事项 网站做好了没人访问,这是无数甲方老板和运营负责人深夜里最真实的焦虑。钱花出去了,服务器租了,域名买了,甚至SEO优化都上了,结果后台流量曲线平得像心电图停搏。很多人以为技术决定成败,但在我看来, 注意事项 往往比技术本身更决定生死。…

2026/9/21 5:46:06 阅读更多 →
Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建

Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建

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

2026/9/21 5:38:52 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →