terraform-provider-aws 6.25.0 版本解读:CloudWatch Log Transformer 与 EKS Capability 新资源及关键能力增强
2026/9/16 6:35:24 网站建设 项目流程

terraform-provider-aws 6.25.0 版本解读:CloudWatch Log Transformer 与 EKS Capability 新资源及关键能力增强

【免费下载链接】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.25.0.md(发布于 2025 年 12 月 4 日)深度解读 6.25.0 版本的技术增量:新增aws_cloudwatch_log_transformer(CloudWatch Logs 日志处理器)与aws_eks_capability(EKS 集群能力)两个资源,同时为 8 个数据源与 18 个资源引入新属性,覆盖日志处理、KMS 明文写入保护、ALB Target Optimizer、VPC Lattice 连接、恶意软件扫描等多个领域。读完本文,你将掌握该版本全部新增/增强项的适用场景、配置写法与底层实现线索,可直接对照仓库源码验证与落地。

一、版本概览:6.25.0 改了什么

6.25.0 是 AWS Provider 6.x 系列的一个功能增量版本,变更日志结构为标准三段式:

分类数量内容
新资源(New Resource)2aws_cloudwatch_log_transformeraws_eks_capability
数据源增强(data-source)8覆盖 Backup、CloudWatch Logs、EC2 Transit Gateway、Lambda、ELB、Route 53、Transfer、WorkSpaces
资源增强(resource)18覆盖 API Gateway、Athena、Backup、Bedrock Agent Core、CloudWatch Logs、EC2 Transit Gateway、Flow Logs、KMS、Lambda、ELB、Roles Anywhere、Route 53、SSM、Transfer、WorkSpaces

该版本没有包含 Bug Fix 与 Breaking Changes 条目,整体属于"纯增量"发布。所有变更条目均以 GitHub issue/PR 编号(如 #44300、#45326)追溯,仓库根目录的 CHANGELOG.md 会随版本发布同步合并这些片段。若你想查看其他版本的同期变更,可浏览 .changes/6.x 目录下的全部版本文件。

二、新资源:aws_cloudwatch_log_transformer — CloudWatch Logs 日志转换器

2.1 功能定位

CloudWatch Logs Transformer 是 CloudWatch Logs 的日志处理能力:在日志进入 Log Group 后,通过一系列**处理器(processor)**实时转换日志(添加字段、重命名字段、复制字段、删除字段、解析、掩码、类型转换等),便于后续查询与告警。aws_cloudwatch_log_transformer让 Terraform 用户能够以声明式配置管理这一处理链路。

从源码看,该资源定义在 internal/service/logs/transformer.go,基于 Terraform Plugin Framework 实现:

  • 通过@FrameworkResource("aws_cloudwatch_log_transformer", name="Transformer")注解注册(transformer.go);
  • 资源以log_group_arn作为标识(@ArnIdentity),并支持按该 ARN 导入(WithImportByIdentity)。

2.2 核心 Schema 与约束

  • log_group_arn:必填、RequiresReplace()。指定要绑定 Transformer 的目标 Log Group ARN。注意该资源是"一个 Log Group 一个 Transformer"的模型,变更 ARN 会触发重建。
  • transformer_config:必填的处理器列表块,校验规则为SizeBetween(1, 20),即至少配置 1 个、最多 20 个处理器。处理链路顺序即列表顺序。
  • 处理器子块包括add_keys(添加键)、parsemove_keysrename_keyscopy_keysdelete_keysgrokmasktype_conversiontrim_stringsplit_stringlowercase_stringuppercase_stringsubstitute_stringdatetime_converter等 AWS CloudWatch Logs Transformer API 所支持的类型。

add_keys为例,源码中可见其约束细节(transformer.go):

  • entry:必填,数量 1~5;
  • 每条entrykey长度 1~128,value长度 1~256;
  • overwrite_if_exists:可选,控制键已存在时是否覆盖。

2.3 配置示例

resource "aws_cloudwatch_log_group" "example" { name = "app/backend" } resource "aws_cloudwatch_log_transformer" "example" { log_group_arn = aws_cloudwatch_log_group.example.arn transformer_config { add_keys { entry { key = "env" value = "production" overwrite_if_exists = false } } parse { source = "message" type = "JSON" } mask { mask = "****" } } }

提示:处理器子块的可用类型与字段以 CloudWatch Logs Transformer API(PutTransformer/GetTransformer)为准,仓库中的 schema 定义(transformer.go)是最直接的参照物。

2.4 源码与测试佐证

  • 资源生命周期:创建时调用 CloudWatch LogsPutTransformer,读取时通过GetTransformer验证状态(源码中的existsType注解即指向cloudwatchlogs.GetTransformerOutput)。
  • 验收测试:transformer_test.go 覆盖基本创建、更新与导入;测试配置模板见 testdata/Transformer/basic/main_gen.tf,由于该资源"无既有资源可依赖"(@Testing(hasNoPreExistingResource=true)),测试会自行创建配套的 Log Group。

三、新资源:aws_eks_capability — EKS 集群能力管理

3.1 功能定位

aws_eks_capability用于在 EKS 集群上启用/管理特定"能力"(Capability)。当前版本支持的能力围绕 Argo CD 集成展开(详见下文configuration块),例如为集群启用 Argo CD 管控平面并配置 IAM Identity Center(IDC)身份、网络访问与 RBAC 角色映射。

实现文件为 internal/service/eks/capability.go,同样基于 Plugin Framework:

  • 注册注解@FrameworkResource("aws_eks_capability", name="Capability")(capability.go);
  • cluster_name+capability_name双属性作为资源身份(@IdentityAttribute双注解),导入时需组合二者;
  • 支持标签(@Tags(identifierAttribute="arn")),自带 create/update/delete 超时,默认均为20 分钟(capability.go)。

3.2 属性一览

属性必填/计算说明
cluster_name必填(RequiresReplace)目标 EKS 集群名称
capability_name必填(RequiresReplace)能力名称,如argo_cd
type必填(RequiresReplace)能力类型枚举(awstypes.CapabilityType),如eks_v1
role_arn必填承载能力运行的角色 ARN
delete_propagation_policy必填删除时的传播策略枚举(awstypes.CapabilityDeletePropagationPolicy
version计算能力版本,由 AWS 返回,用UseStateForUnknown保持稳定
arn计算能力 ARN(标签标识)
configuration可选能力配置块,最多 1 个(见下)

3.3 configuration 块:Argo CD 集成

configurationListNestedBlock,当前仅支持argo_cd子块(capability.go):

  • argo_cd.namespace:可选,Argo CD 部署命名空间;
  • argo_cd.server_url:计算属性,由 AWS 返回的 Argo CD 服务地址;
  • argo_cd.aws_idc:必填块,配置 IAM Identity Center 集成:
    • idc_instance_arn:必填(RequiresReplace),IDC 实例 ARN;
    • idc_managed_application_arn:计算,AWS 自动创建的受管应用 ARN;
    • idc_region:可选,IDC 所在区域(带 AWS Region 校验器);
  • argo_cd.network_access.vpce_ids:可选,用于网络访问控制的 VPC Endpoint ID 集合;
  • argo_cd.rbac_role_mapping:可选,RBAC 角色映射集合,每个映射包含role(枚举ArgoCdRole)与identity(必填集合,含idtypetypeSsoIdentityType枚举)。

3.4 配置示例

resource "aws_eks_cluster" "example" { name = "example" role_arn = aws_iam_role.example.arn # ... 省略网络与节点配置 } resource "aws_eks_capability" "example" { cluster_name = aws_eks_cluster.example.name capability_name = "argo_cd" type = "eks_v1" role_arn = aws_iam_role.capability.arn delete_propagation_policy = "DELETE" configuration { argo_cd { aws_idc { idc_instance_arn = aws_ssoadmin_permission_set.example.instance_arn } } } }

3.5 源码与测试佐证

  • 创建流程:调用 EKSCreateCapabilityAPI,并携带幂等令牌ClientRequestToken = create.UniqueId(ctx)与资源标签(capability.go),随后通过waitCapabilityCreated等待能力就绪,超时即上文所述的 20 分钟;
  • 删除传播:delete_propagation_policy决定能力被删除时其下层资源(如 Argo CD 应用)的清理策略,创建后仍可更新;
  • 验收测试:capability_test.go 及生成式测试数据 testdata/Capability/basic/main_gen.tf 覆盖基础场景与区域覆盖场景,导入时按cluster_name,capability_name组合解析。

四、数据源增强(8 项)

以下属性均来自 6.25.0 变更日志,用于让数据源输出与对应资源能力对齐:

数据源新增属性说明
aws_backup_planrule.scan_actionscan_setting暴露备份计划的恶意软件扫描配置(与下文的资源增强配套)
aws_cloudwatch_log_groupdeletion_protection_enabled日志组删除保护开关状态
aws_ec2_transit_gatewayencryption_support中转网关的加密支持状态
aws_lambda_functiondurable_configLambda 持久化配置(如 S3 桶与日志配置)
aws_lbhealth_check_logs负载均衡器的健康检查日志配置
aws_lb_target_grouptarget_control_port目标组控制端口(配合 ALB Target Optimizer)
aws_route53_zoneenable_accelerated_recovery是否启用加速恢复
aws_transfer_connectoregress_config暴露 VPC Lattice 出站连接配置
aws_workspaces_directorytenancy目录的租期模式(Dedicated/Shared)

例如,读取已有 Lambda 函数的持久化配置:

data "aws_lambda_function" "existing" { function_name = "my-func" } output "durable_s3_bucket" { value = data.aws_lambda_function.existing.durable_config[0].s3_bucket }

这些数据源属性多与资源侧新参数一一对应(详见下一节),保证"资源写什么、数据源就能读什么"。

五、资源增强(18 项)重点解读

5.1 KMS 密文写入保护:plaintext_wo(Write-Only 特性)

aws_kms_ciphertext新增plaintext_woplaintext_wo_version参数,支持write-only(只写)输入:明文仅在 apply 期间传入,不会进入 Terraform 状态文件,从而避免敏感数据落盘。

源码实现在 internal/service/kms/ciphertext.go:

  • plaintextplaintext_wo通过ExactlyOneOf互斥,二选一;
  • plaintext_wo标记WriteOnly: true
  • plaintext_woplaintext_wo_version相互RequiredWith绑定——使用 write-only 明文时必须同时提供一个版本号,用于在下次 apply 时判断明文是否发生变化。
resource "aws_kms_ciphertext" "example" { key_id = aws_kms_key.example.key_id plaintext_wo = var.secret_payload # 敏感变量,仅运行期使用 plaintext_wo_version = sha256(var.secret_payload) }

对应实现细节可进一步阅读 internal/flex/write_only.go 与 internal/framework/flex 下的 write-only 展开逻辑。

5.2 ALB Target Optimizer:aws_lb_target_group 的 target_control_port

aws_lb_target_group新增target_control_port,用于支持ALB Target Optimizer。控制端口用于负载均衡器与控制平面通信,与业务流量端口相互独立,典型场景下可通过该端口实现更细粒度的目标健康与路由控制。该参数同时被aws_lb_target_group数据源以同名字段暴露。

5.3 Transfer Connector 的 VPC Lattice 支持

aws_transfer_connector两项相关变更:

  1. 新增egress_config参数,支持为 SFTP Connector 配置VPC Lattice 出站连接(访问 VPC Lattice 服务网络);
  2. url参数由必填改为可选——当使用 VPC Lattice 连接时不再需要显式填写 URL。

这使得 Transfer Family Connector 可以完全走 VPC Lattice 内部网络,而非公网访问端点。配套的数据源aws_transfer_connector同步新增egress_config属性。

5.4 Backup 恶意软件扫描:rule.scan_action 与 scan_setting

aws_backup_plan新增对恶意软件扫描的支持:

  • rule.scan_action:为备份规则指定扫描动作;
  • scan_setting:扫描设置块(如是否扫描已恢复的恢复点)。

数据源aws_backup_plan同步输出rule.scan_actionscan_setting。典型形态:

resource "aws_backup_plan" "example" { name = "example" rule { rule_name = "daily" target_vault_name = aws_backup_vault.example.name schedule = "cron(0 12 * * ? *)" scan_action { scan_action_type = "backup" } } scan_setting { scan_vault = true } }

5.5 其余资源增强速览

资源新增内容说明
aws_api_gateway_integrationintegration_targetresponse_transfer_mode集成目标与响应传输模式(如BINARY
aws_athena_workgroupconfiguration.managed_query_results_configuration受管查询结果配置(如 S3 桶前缀、加密)
aws_bedrockagentcore_gatewayinterceptor_configuration网关拦截器配置
aws_cloudwatch_log_groupdeletion_protection_enabled防止日志组被误删的删除保护开关
aws_ec2_transit_gatewayencryption_support指定中转网关的加密支持(如enable
aws_flow_logregional_nat_gateway_id支持为区域级 NAT 网关创建流日志
aws_lambda_functiondurable_configLambda 持久化配置(S3 桶、日志配置)
aws_lbhealth_check_logs负载均衡器健康检查日志配置
aws_rolesanywhere_profileaccept_role_session_name是否接受来自角色的会话名称
aws_rolesanywhere_profile计划期校验managed_policy_arnsrole_arns增加 plan-time 校验
aws_route53_zoneenable_accelerated_recovery启用 Route 53 加速恢复
aws_ssm_associationcalendar_names关联的维护窗口日历名称(用于调度约束)
aws_workspaces_directorytenancy目录租期模式(Dedicated/Shared)

值得注意的两点实现细节:

  • aws_rolesanywhere_profile的校验是plan-time(计划期)校验,即terraform plan阶段就会报错,而非等到 apply 时才由 AWS API 拒绝,属于体验性改进;
  • aws_flow_logregional_nat_gateway_id意味着流日志目标类型扩展到了REGIONAL_NAT_GATEWAY,此前仅支持 NAT 网关实例级 ID。

六、升级与验证建议

  1. 升级路径:6.25.0 为纯增量发布(无破坏性变更与 Bug Fix),从 6.24.0 或更早 6.x 版本升级风险较低。标准升级流程:先terraform init -upgrade更新 provider 锁定版本,再terraform plan观察 diff。若启用新参数,请先在小环境验证。
  2. 验证新资源
    • CloudWatch Log Transformer:创建后可在 AWS 控制台 Log Group 的 Transformations 页签查看处理器链路,或用GetTransformerAPI 核对;
    • EKS Capability:创建后terraform state list确认aws_eks_capability进入状态,标签与 Argo CD 集成状态可通过terraform show检查。
  3. KMS write-only 使用前提plaintext_wo依赖 provider 的 write-only 支持(Terraform 1.10+ 的 write-only 参数机制),使用前确认你的 Terraform 版本满足要求;plaintext_wo_version用于触发变更检测,务必选择能反映明文内容变化的版本值(如哈希)。
  4. 查阅源码:所有新功能的 schema 与生命周期实现均可直接在仓库中追溯——日志转换器见 internal/service/logs/transformer.go,EKS 能力见 internal/service/eks/capability.go,KMS 只写参数见 internal/service/kms/ciphertext.go,其余增强项可到 internal/service 下对应服务的资源文件与测试文件中进一步确认。

【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询