使用 aws_identitystore_groups 数据源批量检索 AWS IAM Identity Center 群组列表
使用 aws_identitystore_groups 数据源批量检索 AWS IAM Identity Center 群组列表【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-awsaws_identitystore_groups是 terraform-provider-aws 提供的 Terraform 数据源Data Source用于一次性列出指定 AWS IAM Identity Center原 AWS SSOIdentity Store 中的全部群组Groups并以结构化列表形式导出每个群组的 ID、显示名称、描述以及外部身份提供商IdP颁发的标识。本文将以仓库文档 website/docs/d/identitystore_groups.html.markdown 为主线结合 groups_data_source.go 源码与 groups_data_source_test.go 验收测试完整讲解其用法、参数、返回属性与底层实现原理帮助你在自动化配置中批量枚举 SSO 群组并与其他资源联动。数据源概览批量枚举 vs 单条查询Identity Store身份存储是 IAM Identity Center 中保存用户与群组等目录对象的容器。terraformer-provider-aws 在identitystore服务包位于 internal/service/identitystore中提供了两类面向群组的数据源aws_identitystore_groups本数据源批量返回 Identity Store 中的全部群组列表无过滤条件适用于全量盘点场景aws_identitystore_group单数形式按group_id、alternate_identifier或旧版filter精确查询某一个群组详见 identitystore_group.html.markdown。两者的核心输入都是identity_store_id区别在于输出形态单数数据源返回扁平属性复数数据源返回一个可遍历的groups列表。与之对应的还有用户批量数据源aws_identitystore_users见 identitystore_users.html.markdown三者共同构成 Identity Store 的只读查询入口。前置条件如何获取 identity_store_ididentity_store_id是 Identity Store 的唯一标识与 SSO 实例一一对应。最常见且推荐的方式是使用aws_ssoadmin_instances数据源动态获取而不是硬编码data aws_ssoadmin_instances example {} output arns { value tolist(data.aws_ssoadmin_instances.example.arns) } output identity_store_id { value tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] }aws_ssoadmin_instances数据源会返回当前账号与区域下所有 SSO 实例的 ARN 集合arns以及与之关联的 Identity Store ID 集合identity_store_ids详细属性见 ssoadmin_instances.html.markdown。注意identity_store_ids与arns在返回时是无序的 Set集合因此在使用时通常需要通过tolist(...)[0]取第一个元素。如果你的账号下只有一个 SSO 实例该写法即可稳定工作。使用本数据源需要执行 AWSidentitystore:ListGroupsAPI 权限建议通过 IAM 策略为运行 Terraform 的身份用户或角色授予类似以下的最小权限仅示意实际请按组织安全规范收敛{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: [ identitystore:ListGroups, sso:ListInstances ], Resource: * } ] }其中sso:ListInstances用于支持aws_ssoadmin_instances数据源。基本用法示例按照官方文档最简单的用法如下data aws_ssoadmin_instances example {} data aws_identitystore_groups example { identity_store_id data.aws_ssoadmin_instances.example.identity_store_ids[0] } output group_ids { value data.aws_identitystore_groups.example.groups[*].group_id } output display_names { value data.aws_identitystore_groups.example.groups[*].display_name }执行流程为aws_ssoadmin_instances查询 SSO 实例并导出identity_store_idsaws_identitystore_groups以该 ID 为输入调用 AWS Identity Store API 枚举全部群组通过groups[*].xxx的 splat 表达式将列表中的某个字段投影为字符串集合方便后续for_each或输出。若希望确保数据源读取到刚创建/刚修改的群组可以在配置中加入显式依赖这是仓库验收测试采用的做法见下文验收测试一节resource aws_identitystore_group example { identity_store_id data.aws_ssoadmin_instances.example.identity_store_ids[0] display_name ExampleGroup description Managed by Terraform } data aws_identitystore_groups example { depends_on [aws_identitystore_group.example] identity_store_id data.aws_ssoadmin_instances.example.identity_store_ids[0] }由于数据源通常在 plan 阶段读取而群组资源在 apply 阶段才创建二者之间需要depends_on显式建立时序关系否则数据源可能读到创建前的旧状态。参数说明Argument Reference本数据源支持以下参数参数是否必填类型说明identity_store_idRequiredString与 SSO 实例关联的 Identity Store ID用于定位要枚举群组的身份存储。regionOptionalString资源将被管理的区域默认取 Provider 配置中设置的区域。适用于跨区域管理场景。其中region属于通用参数在 Provider 配置中设置了region的前提下可通过在该数据源上显式传入region覆盖默认值。该数据源的 Go 模型定义中嵌入了framework.WithRegionModel见 groups_data_source.go说明它与同服务包内其他数据源一样统一支持区域覆盖能力。返回属性说明Attribute Reference除参数外数据源还导出以下属性属性类型说明groupsListIdentity Store 中的群组列表每个元素包含下述子属性。groups.group_idString群组在 Identity Store 中的标识符。groups.descriptionString指定群组的描述信息。groups.display_nameString群组的显示名称。groups.external_idsList外部身份提供商颁发给该资源的标识列表。groups.external_ids.idString外部身份提供商颁发的标识符。groups.external_ids.issuerString外部标识的颁发方Issuer。典型取值示例如下output first_group { value { id data.aws_identitystore_groups.example.groups[0].group_id name data.aws_identitystore_groups.example.groups[0].display_name description data.aws_identitystore_groups.example.groups[0].description external_ids data.aws_identitystore_groups.example.groups[0].external_ids } }external_ids仅在群组由外部 IdP如 Okta、Azure AD置备进 Identity Store 时才可能非空用于记录该对象在外部系统中的身份由 Identity Center 本地创建的群组通常为空列表。源码实现解析ListGroups 分页与自动展平从源码层面看该数据源由 groups_data_source.go 实现注册逻辑位于 service_package_gen.goFactory: newGroupsDataSource, TypeName: aws_identitystore_groups, Name: Groups,数据源基于 Terraform Plugin Framework 构建其 Schema 定义了两个顶层属性见Schema方法groupsComputed只计算、不可配置的 List 属性元素类型为groupModelidentity_store_idRequired必填的 String 属性。Read方法是整个数据源的核心其调用链如下从配置中读取identity_store_id通过d.Meta().IdentityStoreClient(ctx)获取 AWS SDK for Go v2 的 Identity Store 客户端构造identitystore.ListGroupsInput{IdentityStoreId: ...}请求使用identitystore.NewListGroupsPaginator(conn, input)创建分页器并循环pages.HasMorePages()/pages.NextPage(ctx)拉取所有页将各页的Groups依次追加合并通过fwflex.Flatten将 AWS API 返回结构自动展平到数据源模型最终写入 State。关键点在于该数据源内部自动完成了全量分页拉取。也就是说即使 Identity Store 中群组数量超过单页上限每页 100 条数据源返回的groups也是所有页合并后的完整列表使用方无需感知分页细节。数据源模型定义groupsDataSourceModel与文档属性一一对应type groupModel struct { Description types.String tfsdk:description DisplayName types.String tfsdk:display_name ExternalIDs fwtypes.ListNestedObjectValueOf[externalIDModel] tfsdk:external_ids GroupID types.String tfsdk:group_id IdentityStoreID types.String tfsdk:identity_store_id } type externalIDModel struct { ID types.String tfsdk:id Issuer types.String tfsdk:issuer }从源码结构可以看到groupModel中额外包含了identity_store_id字段即返回的每个群组元素也携带其所属的 Identity Store ID便于在多个 Identity Store 并存时区分数据来源。该字段未在文档属性表中单独列出属于实现层的冗余导出。验收测试数据源与资源联动的标准写法仓库中为aws_identitystore_groups编写了验收测试Acceptance Test位于 groups_data_source_test.go其测试用例结构极具参考价值data aws_ssoadmin_instances test {} resource aws_identitystore_group test { identity_store_id data.aws_ssoadmin_instances.test.identity_store_ids[0] display_name 测试群组名 description Acceptance Test } data aws_identitystore_groups test { depends_on [aws_identitystore_group.test] identity_store_id data.aws_ssoadmin_instances.test.identity_store_ids[0] }测试逻辑要点通过acctest.PreCheckSSOAdminInstances预检确保测试环境存在可用的 SSO 实例先创建aws_identitystore_group资源再用depends_on保证数据源在其之后读取断言使用acctest.CheckResourceAttrGreaterThanValue(dataSourceName, groups.#, 0)即群组列表数量必须大于 0验证数据源确实枚举到了群组。这一写法可直接迁移到生产配置中当你要先建群组、再读取全量群组列表做后续处理时depends_on与数量断言是保证正确性的关键。常见应用场景批量盘点在审计或合规场景中将全量群组 ID、名称与描述导出到 Terraform 状态或输出供其他自动化消费。与for_each联动以groups列表为输入批量管理依赖群组的资源例如resource aws_ssoadmin_account_assignment example { for_each { for g in data.aws_identitystore_groups.example.groups : g.group_id g } instance_arn tolist(data.aws_ssoadmin_instances.example.arns)[0] permission_set_arn aws_ssoadmin_permission_set.example.arn principal_id each.value.group_id principal_type GROUP target_id data.aws_caller_identity.current.account_id target_type AWS_ACCOUNT }多 Identity Store 场景分别传入不同identity_store_id声明多个数据源实例实现多目录群组的统一管理。与单数数据源 aws_identitystore_group 的取舍如果只需要定位某一个群组例如按显示名称DisplayName查找推荐使用单数数据源aws_identitystore_group它支持更精细的查询条件data aws_identitystore_group example { identity_store_id tolist(data.aws_ssoadmin_instances.example.identity_store_ids)[0] alternate_identifier { unique_attribute { attribute_path DisplayName attribute_value ExampleGroup } } }而当需要全量枚举群组、或不确定具体群组 ID 时需要先列出再筛选时aws_identitystore_groups才是合适的选择。二者互相补充配合 identitystore_group.html.markdown 中的完整参数说明group_id、alternate_identifier.external_id、alternate_identifier.unique_attribute可覆盖绝大多数查询需求。小结aws_identitystore_groups是批量枚举 IAM Identity Center 群组的官方数据源参数极简仅identity_store_id必填region可选。返回的groups列表包含group_id、display_name、description与external_ids等核心字段可直接配合 splat 表达式或for_each使用。底层基于 AWS SDK for Go v2 的ListGroupsAPI并通过分页器自动拉取全量数据见 groups_data_source.go使用方无需关心分页。获取identity_store_id的标准姿势是结合aws_ssoadmin_instances数据源动态解析避免硬编码涉及与群组资源的时序依赖时务必使用depends_on参见 groups_data_source_test.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/19 7:38:55 阅读更多 →
2026年AI智能PPT工具评测与核心技术解析

2026年AI智能PPT工具评测与核心技术解析

1. 智能演示文稿工具的市场现状过去三年间,全球演示文稿工具市场经历了显著的技术迭代。根据行业调研数据显示,2023年至2026年期间,具备AI生成能力的PPT工具用户增长率达到惊人的437%,远超传统工具的市场表现。这种爆发式增长背后…

2026/9/19 7:38:26 阅读更多 →
DeepSeek长文本处理驱动电子病历智能分析与诊断预测

DeepSeek长文本处理驱动电子病历智能分析与诊断预测

简介:这是一份面向医疗AI从业者与算法工程师的专题文档,聚焦DeepSeek长文本处理技术在电子病历分析中的实际落地。文档共20页,从医疗AI与电子病历分析概述切入,系统讲解了DeepSeek的核心架构、长文本处理机制、训练机制&#xff0…

2026/9/19 7:38:26 阅读更多 →

最新新闻

深入解析 Ray 文档的 Sphinx autosummary 自定义模板:class_without_autosummary.rst 的原理与实践

深入解析 Ray 文档的 Sphinx autosummary 自定义模板:class_without_autosummary.rst 的原理与实践

深入解析 Ray 文档的 Sphinx autosummary 自定义模板:class_without_autosummary.rst 的原理与实践 【免费下载链接】ray Ray is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads. 项…

2026/9/19 8:32:48 阅读更多 →
网盘直链下载指南:3 步装好能取 8 大网盘真实链接的脚本

网盘直链下载指南:3 步装好能取 8 大网盘真实链接的脚本

网盘直链下载指南:3 步装好能取 8 大网盘真实链接的脚本 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…

2026/9/19 8:32:48 阅读更多 →
React项目中为何不能用CDN引入Tailwind?正确接入方式全解析

React项目中为何不能用CDN引入Tailwind?正确接入方式全解析

“React 项目里,直接在 index.html 里加一行 Tailwind CSS 的 CDN 链接,为什么有的页面样式正常,有的样式时灵时不灵?”这是技术群里出现频率极高的问题。我最初接触 Tailwind 时也这么干过,当时觉得既然官方文档都提供…

2026/9/19 8:32:48 阅读更多 →
Flutter与OpenHarmony校园兼职平台开发实践

Flutter与OpenHarmony校园兼职平台开发实践

1. 项目背景与核心价值校园兼职市场一直存在信息不对称的痛点。学生们经常面临兼职信息分散、匹配效率低下、岗位真实性难以验证等问题。而企业端也苦于无法精准触达目标学生群体。这个基于Flutter和OpenHarmony的勤工俭学平台,正是为了解决这些实际问题而生。我在开…

2026/9/19 8:32:48 阅读更多 →
SpringBoot+Vue实现企业HR系统核心模块设计

SpringBoot+Vue实现企业HR系统核心模块设计

1. 项目概述:现代企业HR系统的技术实现方案这个基于SpringBootVue的人力资源管理系统是我去年为一家中型制造企业实施的数字化改造项目核心部分。传统Excel和纸质档案管理方式已经无法满足200人以上规模企业的考勤、绩效和薪资核算需求,我们通过这套系统…

2026/9/19 8:32:48 阅读更多 →
Matter 布尔状态配置集群(Boolean State Configuration Server)在 connectedhomeip 中的实现与接入指南

Matter 布尔状态配置集群(Boolean State Configuration Server)在 connectedhomeip 中的实现与接入指南

Matter 布尔状态配置集群(Boolean State Configuration Server)在 connectedhomeip 中的实现与接入指南 【免费下载链接】connectedhomeip Matter (formerly Project CHIP) creates more connections between more objects, simplifying development for…

2026/9/19 8:31:48 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/19 3:59:36 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/19 3:53:08 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/19 4:02:43 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/16 22:32:59 阅读更多 →