资讯动态

Terraform AWS Provider 数据源 aws_auditmanager_framework 完整指南:查询与复用 Audit Manager 合规框架

发布时间:2026/9/18 5:18:30 来源:尧图企业网站定制
Terraform AWS Provider 数据源 aws_auditmanager_framework 完整指南查询与复用 Audit Manager 合规框架【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws本指南围绕 Terraform AWS Provider 提供的aws_auditmanager_framework数据源展开讲解如何在配置中按名称与类型查找 AWS Audit Manager 中已存在的合规框架包括 AWS 托管的 Standard 框架与用户自定义的 Custom 框架并读取其 ARN、控制集control sets、标签等属性供其他资源引用。读完本文你将掌握该数据源的完整参数与导出属性、底层 API 读取逻辑、与aws_auditmanager_framework资源配合的实战写法以及官方接入测试所验证的行为边界。数据源定位与适用场景aws_auditmanager_framework是 Terraform AWS Provider 中用于只读查询AWS Audit Manager 框架的数据源。它与可创建、更新、删除框架的aws_auditmanager_framework资源对应实现位于 internal/service/auditmanager/framework.go互补标准框架Standard由 AWS 官方托管例如 Essential Eight、Amazon Web Services (AWS) Audit Manager Sample Framework 等用户无法用资源创建只能通过数据源读取后引用自定义框架Custom由用户在 Audit Manager 中手动或通过 Terraform 资源创建数据源用于在多个配置之间复用其 ID、ARN 与结构信息。典型场景包括将标准框架的 ID 注入审计评估Assessment配置、在模块间共享框架 ARN、把框架标签作为其他资源的输入等。基本用法数据源的最小配置只需两个必填参数——框架名称与框架类型。以查询 AWS 托管的 Standard 框架 Essential Eight 为例示例取自 website/docs/d/auditmanager_framework.html.markdowndata aws_auditmanager_framework example { name Essential Eight framework_type Standard }执行terraform plan或terraform apply后即可通过data.aws_auditmanager_framework.example.arn、data.aws_auditmanager_framework.example.id等属性在其他资源中引用该框架。参数详解Argument Reference该数据源支持的参数如下参数必填说明name是待查询框架的名称例如Essential Eight。framework_type是框架类型合法取值为Custom与Standard。region否框架所在区域的覆盖配置默认使用 provider 配置中设置的区域。framework_type的取值约束并非简单的字符串校验从源码 internal/service/auditmanager/framework_data_source.go 可以看到该字段使用了fwtypes.StringEnumType[awstypes.FrameworkType]()枚举类型直接映射到 AWS SDK for Go v2 中auditmanager/types.FrameworkType枚举任何非法取值都会在配置校验阶段被拒绝而不是在 API 调用时才报错。导出属性详解Attribute Reference数据源除上述参数外还导出以下属性属性说明arn框架的 Amazon 资源名称ARN。compliance_type框架支持的合规类型例如CIS、HIPAA等。control_sets与框架关联的控制集列表每个元素包含name、id以及controls子列表详见下节。description框架的描述信息。id框架的唯一标识符framework ID通常是一段 UUID 形式的字符串。tags分配给框架的标签映射只读。这些字段在数据源模型中均有对应定义见 internal/service/auditmanager/framework_data_source.gocompliance_type、description为字符串control_sets为嵌套对象列表ListNestedObjectValueOf[controlSetModel]tags使用 provider 统一的只读标签类型。control_sets 的结构与遍历数据源返回的control_sets是一个列表其元素结构与aws_auditmanager_framework资源中的control_sets配置块一致可对照资源文档 website/docs/r/auditmanager_framework.html.markdown 及源码模型 internal/service/auditmanager/framework.goname控制集名称id框架内该控制集的唯一标识controls该控制集下的控制列表每个元素仅包含id控制唯一标识。例如遍历第一个控制集的第一个控制的 IDoutput first_control_id { value data.aws_auditmanager_framework.example.control_sets[0].controls[0].id }官方接入测试正是基于这一结构做断言在 internal/service/auditmanager/framework_data_source_test.go 中custom 框架测试验证了control_sets.#、control_sets.0.name、control_sets.0.controls.#等属性的取值。完整实战数据源与资源配合使用将数据源与资源结合可以实现先查标准框架、再建自定义框架的典型编排。以下示例完整可运行其中自定义框架通过aws_auditmanager_control资源创建控制再组装进框架结构参考测试配置 internal/service/auditmanager/testdata/Framework/basic/main_gen.tf 与 internal/service/auditmanager/framework_data_source_test.go# 查询 AWS 托管的 Standard 框架 data aws_auditmanager_framework standard { name Essential Eight framework_type Standard } # 创建自定义控制 resource aws_auditmanager_control example { name example-control control_mapping_sources { source_name example-control source_set_up_option Procedural_Controls_Mapping source_type MANUAL } } # 组装自定义框架 resource aws_auditmanager_framework custom { name example-framework control_sets { name example-control-set controls { id aws_auditmanager_control.example.id } } } # 用数据源回读自定义框架获取其 id / arn / control_sets data aws_auditmanager_framework custom { name aws_auditmanager_framework.custom.name framework_type Custom } output standard_framework_arn { value data.aws_auditmanager_framework.standard.arn } output custom_framework_id { value data.aws_auditmanager_framework.custom.id }底层实现原理两步读取流程从源码 internal/service/auditmanager/framework_data_source.go 可以看清数据源的Read实现采用两步查询策略这也是理解其行为的关键按名称与类型定位元数据构造ListAssessmentFrameworksInput携带framework_type调用findFrameworkByTwoPartKey通过ListAssessmentFrameworksAPI 分页遍历所有同名框架并做精确匹配aws.ToString(v.Name) name最后由tfresource.AssertSingleValueResult确保结果唯一——若匹配到 0 个或多个同名框架都会报错。按 ID 获取完整信息源码注释明确说明 List 类 API 返回的元数据并不包含框架的全部信息例如control_sets细节因此先用第一步得到的frameworkMetadata.Id调用GetAssessmentFrameworkfindFrameworkByID获取完整对象再通过fwflex.Flatten将 AWS 响应展平写入数据源模型。此外分页遍历由auditmanager.NewListAssessmentFrameworksPaginator驱动internal/service/auditmanager/framework_data_source.go因此即使账户中同名框架数量较多也能正确扫描全部结果。测试验证与行为边界数据源的官方接入测试位于 internal/service/auditmanager/framework_data_source_test.go覆盖两类典型场景TestAccAuditManagerFrameworkDataSource_standard直接查询 AWS 托管的 Amazon Web Services (AWS) Audit Manager Sample Framework并断言其包含 2 个控制集。注释指出 Standard 框架在 Audit Manager 启用后会自动存在于账户中无需预置TestAccAuditManagerFrameworkDataSource_custom先创建控制与自定义框架再通过数据源回读断言control_sets.#、control_sets.0.name、control_sets.0.controls.#与资源定义一致。据此可以得到几个重要的使用边界使用 Standard 类型时目标账户必须先启用 Audit Manager否则框架不存在数据源会报未找到错误数据源按(name, framework_type)组合定位框架同一类型下名称必须唯一tags为只读导出属性仅用于获取已存在框架的标签不能通过数据源修改。小结aws_auditmanager_framework数据源是 Terraform 配置中安全复用 AWS Audit Manager 框架信息的标准入口它用最少的必填参数nameframework_type完成定位导出arn、id、compliance_type、control_sets、description、tags等完整属性其底层通过分页列表匹配 ID 二次查询两步实现确保返回信息的完整与唯一。无论是读取 AWS 托管的 Standard 框架还是回读 Terraform 创建的自定义框架本文给出的示例与源码解析都可直接作为落地参考。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价