ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

terraform-provider-aws 6.43.0 版本详解:Security Hub 新资源、List Resource 批量查询与关键修复实践

terraform-provider-aws 6.43.0 版本详解:Security Hub 新资源、List Resource 批量查询与关键修复实践 terraform-provider-aws 6.43.0 版本详解Security Hub 新资源、List Resource 批量查询与关键修复实践【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws本文围绕 terraform-provider-aws 官方变更记录 .changes/6.x/6.43.0.md2026-04-29 发布展开完整解读该版本新增的数据源、List Resource、常规资源与增强项并结合仓库源码internal/service/*剖析其底层实现Resource Identity、List Resource 框架、Terraformlist块查询机制。读完本文你将掌握 6.43.0 版本新增的全部资源用法、Security Hub 系列资源的配置要点以及如何排查该版本涉及的关键 bug 修复。版本概览6.43.0 带来了什么terraform-provider-aws 6.43.0 于 2026 年 4 月 29 日发布是 v6 系列中一个以Security Hub 生态扩展 List Resource 批量落地为双主线的版本。从变更记录看本版本的变动集中在四个方向新增 2 个数据源aws_securityhub_enabled_standards、aws_securityhub_security_controls#43947新增 5 个 List Resourceaws_db_subnet_group、aws_ec2_network_insights_access_scope、aws_iam_group_policy_attachment、aws_lambda_event_source_mapping、aws_securityhub_insight新增 3 个常规资源aws_arczonalshift_autoshift_observer_notification_status、aws_ec2_network_insights_access_scope、aws_securityhub_account_v2为大量现有资源补充 Resource Identity 支持覆盖 Audit Manager、IAM、Lambda、Security Hub 等并修复了 CloudWatch、ECS Express Gateway、S3、Pinpoint 等多个资源的问题。其中Security Hub 相关改动占本版本近一半的篇幅是该版本当之无愧的核心主题。新增数据源查询 Security Hub 已启用标准与安全控制6.43.0 为 Security Hub 新增了两个互补的数据源均基于 Terraform Plugin Framework 实现源码位于 internal/service/securityhub/enabled_standards_data_source.go 与 internal/service/securityhub/security_controls_data_source.go。aws_securityhub_enabled_standards列出当前已启用的标准订阅该数据源调用 Security Hub 的GetEnabledStandardsAPI用于枚举账户或指定 ARN 集合中已启用的安全标准订阅。从源码可见其 Schema 结构见 enabled_standards_data_source.go属性类型说明standards_subscription_arns可选ARN 列表按订阅 ARN 过滤结果留空则返回全部已启用标准standards_subscriptions计算嵌套对象列表每个元素描述一条标准订阅包含standards_arn、standards_subscription_arn、standards_status、standards_controls_updatable、standards_inputs、standards_status_reason等字段典型的用法是配合 aws_securityhub_account_v2 使用——先启用账户再读取该账户实际生效的标准订阅data aws_securityhub_account_v2 this {} data aws_securityhub_enabled_standards this {} output enabled_standards { value data.aws_securityhub_enabled_standards.this.standards_subscriptions }按指定标准订阅过滤的写法data aws_securityhub_enabled_standards filtered { standards_subscription_arns [ aws_securityhub_standards_subscription.cis.standards_subscription_arn ] }aws_securityhub_security_controls枚举安全控制定义该数据源调用ListSecurityControlDefinitionsAPI源码中的findSecurityControls使用官方 Paginator 分页拉取全部定义见 security_controls_data_source.go用于枚举 Security Hub 的安全控制Security Control定义。其 Schema 包含属性类型说明standards_arn可选ARN限定只返回该标准下的控制定义security_control_definitions计算嵌套对象列表每个元素包含security_control_id、title、description、severity_rating、current_region_availability、customizable_properties、remediation_url示例——列出 CIS AWS Foundations 标准下所有控制及其严重级别data aws_securityhub_security_controls cis { standards_arn arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.4.0 } output control_ids { value data.aws_securityhub_security_controls.cis.security_control_definitions[*].security_control_id }这两个数据源非常适合用于审计当前安全标准启用情况、批量生成控制状态配置、或在模块中按条件启用/停用特定控制。新增 List Resource用 Terraform 1.14 的 list 块批量查询资源本版本一次性新增了 5 个 List Resource。List Resource 是 terraform-provider-aws 为配合Terraform 1.14 引入的list块resource query而实现的一种新资源形态它不管理资源而是以list块形式在配置中批量查询远端资源返回 Resource Identity 与 Display Name可选的include_resource可让结果携带完整资源数据。其设计规范详见 docs/list-resources.md。5 个新增 List Resource 一览List Resource所属服务核心源码实现框架aws_db_subnet_groupRDSinternal/service/rds/subnet_group_list.goPlugin SDKaws_ec2_network_insights_access_scopeEC2internal/service/ec2/vpc_network_insights_access_scope_list.goPlugin Frameworkaws_iam_group_policy_attachmentIAMinternal/service/iam/group_policy_attachment_list.goPlugin SDKaws_lambda_event_source_mappingLambdainternal/service/lambda/event_source_mapping_list.goPlugin SDKaws_securityhub_insightSecurity Hubinternal/service/securityhub/insight_list.goPlugin SDK使用方式list块查询示例以aws_iam_group_policy_attachment为例它属于典型的弱实体weak entity场景必须携带父资源 IAM Group 的名称才能读取因此 List 实现中先分页列举所有 Group再对每个 Group 调用ListAttachedGroupPolicies拉取附加的策略见 group_policy_attachment_list.go。在 Terraform 1.14 中查询全部组-策略附加关系的写法如下list aws_iam_group_policy_attachment all { include_resource true }不传任何过滤参数时会返回所有可管理的附加关系每个结果的id由group与policy_arn拼接而成源码中通过groupPolicyAttachmentImportID{}.Create(rd)生成Display Name 形如Group: xxx - Policy: arn:aws:iam::...:policy/xxx。再如aws_securityhub_insight其 List 实现insight_list.go以GetInsights分页拉取全部 Insight设置id与arn并把 Insight 的Name作为 Display Name当include_resource为 true 时调用resourceInsightFlatten填充完整数据list aws_securityhub_insight all { include_resource false }aws_db_subnet_group的 List 实现同样遵循该模式subnet_group_list.go以DescribeDBSubnetGroups分页列举id与name一致Display Name 使用DBSubnetGroupName——这正是 docs/list-resources.md 中Display Name 优先使用 Name 字段的落地。而aws_ec2_network_insights_access_scope则体现了另一条规范EC2 服务把Name标签视为控制台显示名因此 Display Name 优先取Name标签值缺省时回退为资源 ID见 vpc_network_insights_access_scope_list.go。List Resource 的通用约束不可管理资源会被排除如 RDS 的默认 Parameter Group 等 AWS 内置且不可修改的资源不会出现在列表中特例资源类型会被排除例如采用 Adopt-on-Create 模式的默认 VPC、默认 Security Group 等需要为特例类型单独创建 List Resource所有 List Resource 都要求提供basic验证可查询多个资源与includeResource验证include_resourcetrue时数据被填充两类验收测试区域型资源还需regionOverride测试list块的region属性可覆盖 Provider 默认区域。关于 List Resource 的强/弱/属性实体分类与 API 模式All-Or-One、All-Or-Some、Summary List等设计概念可进一步阅读 docs/list-resources.md。新增常规资源详解aws_securityhub_account_v2Security Hub V2 账户aws_securityhub_account_v2是本版本引入的 Security HubV2 形态的账户资源区别于旧版aws_securityhub_account使用 Plugin Framework 实现源码位于 internal/service/securityhub/account_v2.go。从源码的注解account_v2.go与 Schema 可以看出标注ArnIdentity以 ARN 作为 Resource Identity并带有Testing(importStateIdAttributearn)导入时直接使用arn作为 state idSchema 仅含arn只读计算、tags、tags_all三个属性account_v2.goCreate/Read 分别调用EnableSecurityHubV2/DescribeSecurityHubV2APIDelete 调用DisableSecurityHubV2并妥善处理ResourceNotFoundException删除时幂等、读取时视为资源不存在并移出 state。基础用法resource aws_securityhub_account_v2 this { tags { Name security-hub-v2 } }由于是单账户级资源每个区域一个实际场景中往往配合前述aws_securityhub_enabled_standards数据源与aws_securityhub_standards_subscription一起完成启用账户 订阅标准 审计标准的完整闭环。aws_arczonalshift_autoshift_observer_notification_status自动移位观测通知开关该资源用于管理 ARCApplication Recovery ControllerZonal Shift 的 Autoshift Observer 通知状态源码位于 internal/service/arczonalshift/autoshift_observer_notification_status.go。它的实现有一个值得注意的细节注解SingletonIdentity(identityDuplicateAttributesid)属于**单例身份Singleton Identity**资源——每个区域只能存在一个实例因此id直接取当前区域r.Meta().Region(ctx)Schema 只有id已废弃推荐使用区域作为替代与status两个属性status为必填枚举取值为ENABLED/DISABLED对应 AWS SDK 的AutoshiftObserverNotificationStatus枚举Create/Update 调用UpdateAutoshiftObserverNotificationStatusDelete 则把状态重置为DISABLED而非删除资源本身Read 通过GetAutoshiftObserverNotificationStatus读取。用法示例resource aws_arczonalshift_autoshift_observer_notification_status this { status ENABLED }aws_ec2_network_insights_access_scope网络洞察访问范围该资源用于管理 EC2 Network Insights Access Scope网络路径分析的范围定义用于analyze-*操作时的访问范围过滤。它与同名 List Resource 一同引入#47582采用 Plugin Framework 实现List 实现见 vpc_network_insights_access_scope_list.go。增强项ENHANCEMENTSResource Identity 全面铺开6.43.0 最大的技术主线之一是为大量既有资源补充 Resource Identity 支持。什么是 Resource IdentityTerraform 1.12 引入了 Resource Identity 概念一种能够唯一标识远端资源的结构化数据与传统的id字符串相对。它分为三类详见 docs/resource-identity.mdARN Identity资源本身支持 ARN且 AWS API 以 ARN 作为标识参数时使用注解为ArnIdentitySingleton Identity每个区域或全局资源每个账户仅允许一个实例注解为SingletonIdentityParameterized Identity由多个属性组合唯一标识account_id与region自动包含无需声明注解为一个或多个IdentityAttribute(attribute-name)。本版本新增 Resource Identity 的资源资源Identity 类型说明aws_arczonalshift_autoshift_observer_notification_statusSingleton见上文aws_auditmanager_assessment/control/framework/framework_share参数化Audit Manager 系列资源aws_iam_group_policy_attachment参数化与 List Resource 同批落地#47667aws_lambda_event_source_mapping参数化与 List Resource 同批落地#47686aws_securityhub_action_target/configuration_policy/configuration_policy_association/finding_aggregator/insight/member/organization_admin_account/product_subscription/standards_control/standards_control_association/standards_subscriptionARN 等Security Hub 大批量铺开#47543以aws_securityhub_account_v2的ArnIdentity为例这意味着该资源具备 ARN Identityarn属性即身份属性从而支持 Terraform 的import块、removed块、moved块等基于 identity 的高级能力aws_arczonalshift_autoshift_observer_notification_status的SingletonIdentity(identityDuplicateAttributesid)则表明其id与身份属性同值Plugin Framework 资源需要显式声明这一重复关系Plugin SDK 资源则总是如此。对于普通使用者Resource Identity 的落地意味着导入体验更统一import块可以直接使用 ARN 或结构化 identity配合 List Resource 的list块查询import与removed块可以引用list查询结果实现先查询后纳入管理的自动化流程未来 Terraform 的 identity 相关特性如removed、moved的 identity 匹配在更多资源上可用。关于在资源类型上启用 Resource Identity 的注解规则、多属性 identity 的ImportIDParser/SDKv2ImportID接口实现、以及 identity schema 版本升级IdentityVersion等细节可参见 docs/resource-identity.md 与 docs/add-resource-identity-support.md。其他增强项aws_securityhub_configuration_policy_association新增支持SELF_MANAGED_SECURITY_HUB作为policy_id取值#47078aws_securityhub_finding_aggregator与aws_securityhub_standards_subscription新增arn输出属性#47543aws_bedrockagentcore_memory_strategy的type新增合法值EPISODIC#47589aws_ecs_express_gateway_service废弃current_deployment属性#47694aws_subnet/aws_vpc在terraform destroy时自动检测并解除 GuardDuty 托管的 VPC Endpoint / Security Group避免它们阻塞子网与 VPC 的删除#46953。Bug 修复BUG FIXES解读高危修复CloudWatch Metric Alarm 计划期校验回归aws_cloudwatch_metric_alarm修复了计划期plan-time误报错误One of metric_name, metric_query, or evaluation_criteria must be set for a cloudwatch metric alarm该错误是 v6.42.0 引入的回归#476666.43.0 予以修复。如果你从 6.42.0 升级后遇到 CloudWatch 告警的 plan 校验报错应立即升级到 6.43.0。ECS Express Gateway Service 的稳定性修复针对aws_ecs_express_gateway_service修复了 4 个问题#47568、#47694创建/删除期间处理更多瞬时 API 错误等待创建失败时将资源标记为需要重建防止current_deployment值变化引发错误删除等待条件从DRAINING改为INACTIVE。其余修复要点资源修复内容aws_flow_log修复从早期版本升级或导入 VPC Flow Log 时更新报错#47699aws_globalaccelerator_cross_account_attachment修复移除resource块时的空指针 panic#47625aws_pinpoint_applimits.messages_per_second最小值从 50 下调为 1对齐 AWS API#47636aws_s3_bucket兼容第三方 S3 兼容 API如 OVH、Ceph RGW创建时处理MalformedXML错误规避标签与CreateBucketConfiguration问题#47530其中aws_s3_bucket的修复对使用 S3 兼容存储非 AWS 原生 S3的用户意义重大涉及创建时打标签与区域配置 XML 的容错处理。升级与使用建议务必升级如果你正使用 6.42.0 且遭遇 CloudWatch Metric Alarm 的 plan 校验错误或正在管理大量 Security Hub 资源建议升级到 6.43.0开启 List Resource 需要 Terraform 1.14list块是 Terraform 1.14 的资源查询语法使用前请确认 Terraform 版本配套概念参见 docs/list-resources.mdResource Identity 是渐进式能力它不破坏现有配置但对新写配置可以开始利用import块、removed块的 identity 匹配以及 List Resource 的联动docs/resource-identity.md、docs/import-support完整变更清单CHANGELOG 全量记录见 CHANGELOG.md本版本条目位于 .changes/6.x/6.43.0.md。结语6.43.0 是 terraform-provider-aws 在资源身份与批量查询两条主线上的重要一步Security Hub 家族新增 V2 账户资源与两个查询数据源、5 个 List Resource 让 RDS/EC2/IAM/Lambda/Security Hub 的存量资源可以被list块批量发现同时十余个资源获得 Resource Identity 支持。结合 docs/resource-identity.md 与 docs/list-resources.md 两份设计文档你可以更深刻地理解这些新能力的边界与用法并在升级到 6.43.0 后立即获得更安全、更可编排的 AWS 资源管理体验。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表