terraform-provider-aws 6.16.0 版本深度解读:Transcribe Action、Transfer Web App、ODB 数据源与框架层修复全解析
【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws
本篇文章以 .changes/6.x/6.16.0.md 变更记录为核心,结合 terraform-provider-aws 仓库源码,系统解读 6.16.0 版本的三大类变更:新增的 9 个功能(含 1 个 Action、2 个新资源系列与 6 个数据源)、5 项资源增强,以及覆盖 Provider 核心与多个服务的缺陷修复。读完本文,你将掌握这批新资源的参数用法、底层实现原理,以及框架层身份(Identity)修复对 Plugin Framework 资源的影响边界。
一、版本概览与变更结构
6.16.0 发布于 2025 年 10 月 9 日,属于 6.x 主版本线的常规功能迭代。本仓库当前代码版本为 6.64.1(见 version/VERSION),6.16.0 作为更早的历史版本,其变更记录完整保存在 .changes/6.x/6.16.0.md 中,遵循该仓库的 changelog-process 规范按FEATURES、ENHANCEMENTS、BUG FIXES三类组织。
本版本变更覆盖面广,概括如下:
| 类别 | 数量 | 涉及服务 |
|---|---|---|
| FEATURES(新功能) | 9 项 | Transcribe、ODB、Prometheus(AMP)、Transfer |
| ENHANCEMENTS(增强) | 5 项 | CodeBuild、EMR Serverless、Lambda、SSM Contacts、VPC Lattice |
| BUG FIXES(修复) | 13 项 | Provider 核心、DataZone、DynamoDB、IVS Chat、Launch Template、Service Catalog |
二、FEATURES:新增 Action、资源与数据源
1. 全新 Action:aws_transcribe_start_transcription_job
这是 6.16.0 中最具代表性的新能力——Terraform Plugin Framework 的Action类型。与 Resource/Data Source 不同,Action 用于执行一次性操作而不维护持久状态,适合"提交任务、等待完成"的场景。
其核心实现位于 internal/service/transcribe/start_transcription_job_action.go,通过@Action(aws_transcribe_start_transcription_job, name="Start Transcription Job")注解注册到 Provider。从源码模型可确认以下参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
transcription_job_name | String | 是 | 账户内唯一的转录任务名称 |
media_file_uri | String | 是 | 待转录媒体文件的 S3 位置(如s3://bucket-name/file.mp3) |
language_code | String 枚举 | 否 | 媒体文件语言代码;当identify_language与identify_multiple_languages均为 false 时必填 |
identify_language | Bool | 否 | 单语言文件自动语言识别,不能与identify_multiple_languages同时使用 |
identify_multiple_languages | Bool | 否 | 多语言文件自动语言识别 |
media_format | String 枚举 | 否 | 媒体格式 |
media_sample_rate_hertz | Int64 | 否 | 媒体采样率 |
output_bucket_name | String | 否 | 输出结果 S3 桶 |
output_key | String | 否 | 输出对象键 |
timeout | Int64 | 否 | 任务超时控制 |
源码还定义了轮询节奏常量:transcriptionJobPollInterval = 5 * time.Second(普通轮询间隔)与transcriptionJobProgressInterval = 30 * time.Second(进度上报间隔),配合 internal/actionwait 实现任务完成的等待逻辑,对应测试见 internal/service/transcribe/start_transcription_job_action_test.go。
2. AWS Transfer 三连:aws_transfer_web_app、aws_transfer_web_app_customization、aws_transfer_host_key
本版本为 AWS Transfer Family 一次性新增三个资源,实现在internal/service/transfer目录下。
aws_transfer_web_app(源码 internal/service/transfer/web_app.go):基于@FrameworkResource注解注册,核心 schema 包括:
access_endpoint:可选,长度 1–1024,与endpoint_details下的vpc块互斥(ConflictsWith);web_app_endpoint_policy:枚举类型,配置后触发RequiresReplace(重建);web_app_units:嵌套对象列表,最多 1 个;endpoint_details.vpc:VPC 接入详情块,其中subnet_ids与vpc_id为必填,security_group_ids可选,vpc_endpoint_id由系统计算;- 支持标准
tags体系(identifierAttribute="arn")。
aws_transfer_web_app_customization(源码 internal/service/transfer/web_app_customization.go):用于定制 Web App 界面外观,确认存在favicon_file(长度 1–20960)与logo_file(长度 1–51200)两个可选+计算属性。源码注释特别说明:调用 UpdateWebAppCustomization API 时若未指定faviconFile,现有图标保持不变,因此这两个字段被标记为Optional + Computed并使用UseStateForUnknown。
aws_transfer_host_key(源码 internal/service/transfer/host_key.go):管理服务器主机密钥,值得关注的是其写专用(WriteOnly)属性设计:
host_key_body:敏感字符串,长度 0–4096,带RequiresReplace;host_key_body_wo:同样的敏感字段但标记为WriteOnly: true,并通过PreferWriteOnlyAttribute校验器与host_key_body构成二选一(ExactlyOneOf),这是仓库 internal/framework/planmodifiers/stringplanmodifier 中RequiresReplaceWO机制的典型应用;description:长度 0–200;host_key_fingerprint:计算属性,用于校验密钥指纹;server_id:必填,变更触发重建。
3. 新资源:aws_prometheus_resource_policy
为 Amazon Managed Prometheus(AMP)新增的资源策略管理能力,实现在 internal/service/amp/resource_policy.go,配套测试见 internal/service/amp/resource_policy_test.go。它允许以 Terraform 方式声明工作区的资源策略,将权限策略纳入 IaC 版本管理。
4. ODB 数据源五连发:aws_odb_*
ODB(Oracle Database@AWS)服务在本版本集中补齐了 5 个列表型数据源,均位于 internal/service/odb 目录:
aws_odb_cloud_autonomous_vm_clusters(cloud_autonomous_vm_clusters_data_source.go)aws_odb_cloud_exadata_infrastructures(cloud_exadata_infrastructures_data_source.go)aws_odb_cloud_vm_clusters(cloud_vm_clusters_data_source.go)aws_odb_network_peering_connections(network_peering_connections_data_source.go)aws_odb_networks(networks_data_source.go)
以aws_odb_cloud_autonomous_vm_clusters为例,数据源只实现Read方法,内部调用ListCloudAutonomousVmClusters并通过 SDK 分页器(NewListCloudAutonomousVmClustersPaginator)聚合所有页数据,返回cloud_autonomous_vm_clusters列表属性。单个摘要对象包含arn、id、cloud_exadata_infrastructure_id、odb_network_id、oci_resource_anchor_name、oci_url、ocid、display_name等字段,可与已存在的单例数据源(如 cloud_autonomous_vm_cluster_data_source.go)配合使用,先查列表再定位具体资源。
三、ENHANCEMENTS:五项资源能力增强
1.aws_codebuild_project:新增auto_retry_limit
为 CodeBuild 项目增加自动重试上限参数(#40035),允许用户在构建失败场景下配置自动重试次数,减少手工重新触发构建的运维负担。
2.aws_emrserverless_application:新增scheduler_configuration
为 EMR Serverless 应用引入调度配置块(#44589),使应用可以按预定计划执行任务,扩展了 Serverless 作业的自动化能力。
3.aws_lambda_event_source_mapping:新增schema_registry_config
在amazon_managed_kafka_event_source_config与self_managed_kafka_event_source_config两个块内新增schema_registry_config配置块(#44540),让 MSK / 自管理 Kafka 事件源可以绑定 Schema Registry,支撑 Avro 等带 Schema 的消息格式处理。
4.aws_ssmcontacts_contact:资源身份支持
为 SSM Contacts 联系人资源补齐resource identity能力(#44548 与 docs/add-resource-identity-support.md,核心思路是以规范化 Identity 替代传统 ID 字符串,为import、状态校验与一致性检查提供统一入口。
5.aws_vpclattice_resource_gateway:新增ipv4_addresses_per_eni
为 VPC Lattice 资源网关增加ipv4_addresses_per_eni参数(#44560),用于控制每个弹性网络接口(ENI)上分配的 IPv4 地址数量,细化网关的 IP 资源配置。
四、BUG FIXES:Provider 核心与多服务修复
1. Provider 核心修复
本版本最重要的修复集中在 Provider 层:
- AWS 欧洲主权云区域 ARN 校验(#44573 与 docs/arn.md(如存在)中的区域扩展说明。
- 修复 Plugin Framework 资源的
Missing Resource Identity After Update(#44518 的身份处理机制直接相关。 - 修复
Unexpected Identity Change(#44518):当 state 中全空(fully-null)的 identity 值被更新为合法值时,不再误报"意外身份变更"。这两个修复对大量基于 Plugin Framework 的存量资源都有正面影响,升级后若曾受此类报错困扰,可重点回归验证相关资源的 update 流程。
2. DataZone 环境与项目修复
针对aws_datazone_environment与aws_datazone_project的修复多达 8 条(#44491):
aws_datazone_environment:正确更新glossary_terms;可选参数account_identifier、account_region未指定时不再报unknown value;更新时不再报错;删除时不再偶发unexpected state;创建时正确传递blueprint_identifier;导入时正确设置user_parameters的值;user_parameters中的值不再允许被更新(只读语义修正)。aws_datazone_project:删除时不再忽略错误;资源已在删除中时不再重复报错。
这批修复说明 6.16.0 对 DataZone 资源的创建、导入、更新、删除全生命周期做了系统性打磨,使用 DataZone 的团队升级后应重点验证现有 environment/project 的terraform plan与apply行为是否与预期一致。
3. 其他资源修复
aws_dynamodb_table(#44576):不再对LimitExceededException进行重试,避免在限流错误上做无效的指数退避等待;aws_ivschat_room(#44572):将maximum_message_rate_per_second的校验上限修正为100,与此前实际 API 约束对齐;aws_launch_template(#44505):kms_key_id校验放宽为同时接受 Key ID、别名、别名 ARN 以及 Key ARN 四种形式,与 KMS 参数的常见传值习惯保持一致;aws_servicecatalog_portfolio_share(#24730 等基础设施支撑。
五、升级建议与影响评估
综合以上变更,升级到 6.16.0 时可参考以下要点:
- 新功能开箱即用:Transcribe Action、Transfer 三件套与 ODB 数据源均为新增能力,不改变既有资源配置,可安全引入;Transfer 的
host_key_body_wo展示了本仓库对 WriteOnly 敏感属性的推荐用法,新增资源建议直接采用该模式。 - 框架层修复收益面广:
Missing Resource Identity After Update与Unexpected Identity Change两个 Provider 级修复影响所有 Plugin Framework 资源,若此前升级过程中遇到过上述报错,6.16.0 是值得优先验证的版本。 - 行为变更需回归:DataZone 的
user_parameters只读语义修正、DynamoDB 表对LimitExceededException停止重试、Launch Template 的kms_key_id校验放宽,均可能改变既有配置的 plan 结果或运行行为,建议在升级环境中先行回归。 - 并发与限流优化:Service Catalog Portfolio Share 的全局锁与 DynamoDB 的重试策略调整,面向的都是真实场景中的限流/并发问题,对大规模账户运营场景尤为相关。
如需继续深入,可阅读仓库内的 docs/changelog-process.md 了解变更记录维护规范、docs/breaking-changes.md 评估破坏性变更边界,或直接查阅上文列出的各资源源码与测试文件,掌握每个新增参数的精确约束与实现细节。
【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考