尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Terraform AWS Provider 6.56.0 版本解读:ElastiCache 服务更新 Action、S3 桶列表数据源与三个新 List Resource 全解析
Terraform AWS Provider 6.56.0 版本解读ElastiCache 服务更新 Action、S3 桶列表数据源与三个新 List Resource 全解析【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws本篇文章以 HashiCorp 官方发布的 Terraform AWS Provider 6.56.0 版本变更记录为核心逐一拆解该版本新增的 Action、数据源、List Resource 以及若干关键增强与缺陷修复。文章结合仓库源码internal/service/与internal/provider/验证了各功能的真实实现细节帮助读者在升级到 6.56.0 后快速掌握新能力、规避升级风险并理解 Terraform Plugin Framework 中 Action 与 List Resource 等新式资源类型的落地方式。一、6.56.0 版本概览6.56.02026 年 7 月 22 日发布是 AWS Provider 在 v6 主线上的一个功能密集版本共带来6 项新特性、20 项增强与9 项缺陷修复覆盖 ElastiCache、S3、EKS、Secrets Manager、MSK、Bedrock Agent、OpenSearch Serverless 等多个服务。其中最有代表性的变化是新增首个面向 ElastiCache 的 Action 类型资源aws_elasticache_apply_service_update用于在 Terraform 中直接发起并跟踪服务更新的应用流程新增aws_s3_buckets数据源可批量枚举 S3 桶并支持前缀、区域、数量上限过滤新增3 个 List Resourceaws_eks_addon、aws_s3_bucket_notification、aws_secretsmanager_secret_policy延续 Provider 将多实例资源抽象为列表资源的演进方向Provider 凭证体系支持通过TF_AWS_WEB_IDENTITY_TOKEN环境变量配置 Web Identity Token。二、新 Actionaws_elasticache_apply_service_update2.1 背景Action 是什么Action 是 Terraform Plugin Framework 提供的一类特殊资源类型它不维护持久化状态而是执行一次性的外部操作并跟踪其完成。6.56.0 引入的aws_elasticache_apply_service_update正是用于将 ElastiCache 集群或复制组的服务更新Service Update应用到指定节点上。2.2 参数与 Schema从 apply_service_update_action.go 的Schema定义可以确认其完整入参参数类型是否必填说明service_update_nameString是要应用的服务更新名称如redis-7-3-20260721cache_cluster_idString否二选一目标 Cache Cluster IDreplication_group_idString否二选一目标复制组 IDtimeoutsBlock否Action 超时控制cache_cluster_id与replication_group_id通过actionvalidator.Conflicting校验器强制互斥见源码ConfigValidators二者只能指定其一。该 Action 默认的 Invoke 超时为1 小时SetDefaultInvokeTimeout(1 * time.Hour)。2.3 执行流程与状态机Invoke方法的实现展示了完整的执行链路读取配置并展开为elasticache.BatchApplyUpdateActionInput将cache_cluster_id/replication_group_id映射为 API 的CacheClusterIds/ReplicationGroupIds列表调用 ElastiCache 的BatchApplyUpdateActionAPI 发起更新若 API 返回UnprocessedUpdateActions存在未处理的更新动作直接报错并附上ErrorType与ErrorMessage通过actionwait.WaitForStatus轮询DescribeUpdateActions直到UpdateActionStatus变为complete轮询过程中将waiting-to-start、in-progress视为过渡态每 60 秒上报一次进度超时或进入意外状态UnexpectedStateError都会给出明确诊断信息。由于执行期间会持续推送进度fwactions.NewSendProgressFunc该 Action 在terraform apply时会输出Applying… / started, waiting for completion… / applied successfully等阶段信息便于观察长任务进展。2.4 使用示例# 先查询可用的服务更新动作 data aws_elasticache_service_update_actions example { replication_group_id aws_elasticache_replication_group.example.id } # 对复制组应用最新可用的服务更新 resource terraform_data apply_update { triggers_replace data.aws_elasticache_service_update_actions.example.update_actions[0].service_update_name provisioner local-exec { command true # 占位实际由 Action 触发 } } # 6.56.0 之后可直接用 Action 发起应用 # 以下为 Action 的调用形态具体以 Plugin Framework 对 Action 的声明方式为准注意Action 的执行效果集群重启、只读等取决于具体服务更新的属性建议先在测试集群上验证再对生产复制组执行。三、新数据源aws_elasticache_service_update_actions与上述 Action 配套6.56.0 新增了 service_update_actions_data_source.go 实现的数据源aws_elasticache_service_update_actions用于查询符合条件的服务更新动作列表可作为 Action 的输入来源。3.1 过滤参数参数类型说明cache_cluster_idString按 Cache Cluster 过滤与 replication_group_id 互斥replication_group_idString按复制组过滤service_update_statusSet(String)按服务更新状态过滤取值来自 AWS SDK 的ServiceUpdateStatus枚举从源码可以看到service_update_status使用了fwtypes.SetOfStringEnumType[awstypes.ServiceUpdateStatus]()即强类型枚举集合非法取值会在配置校验阶段即被拒绝。底层通过DescribeUpdateActionsAPI 的分页迭代器elasticache.NewDescribeUpdateActionsPaginator拉取全部结果。3.2 输出属性update_actions每次查询返回计算属性update_actions对象列表每个元素包含属性说明cache_cluster_id关联的 Cache Cluster IDreplication_group_id关联的复制组 IDengine引擎类型service_update_name服务更新名称service_update_type服务更新类型service_update_severity严重级别service_update_status服务更新状态update_action_status更新动作当前状态如complete、in-progressestimated_update_time预估更新耗时recommended_apply_by_date推荐应用截止日期RFC3339release_date发布日期RFC3339典型用法是先查询目标复制组未完成的服务更新再将其service_update_name传递给aws_elasticache_apply_service_updateAction形成查询 → 应用的自动化闭环。四、新数据源aws_s3_buckets此前枚举 S3 桶只能使用 AWS CLITerraform 侧缺少统一的批量查询能力。6.56.0 新增的 buckets_data_source.go 填补了这一空白。4.1 过滤参数与输出参数类型是否必填说明bucket_regionString否按桶所在区域过滤max_bucketsInt32否返回的桶数量上限注意底层 API 的MaxBuckets是分页大小这里实现为总数量上限prefixString否按桶名前缀过滤bucketsList(Object)计算桶列表每项含bucket_arn、bucket_region、creation_dateRFC3339、name4.2 实现细节源码中的findBuckets函数展示了几个值得注意的行为通过s3.NewListBucketsPaginator自动分页迭代ListBuckets聚合所有页结果若配置了max_buckets且大于10000会被强制钳制到 10000aws.Int32(10000)注释明确说明这是 API 的每页上限达到数量上限后提前终止分页output output[:limit]; break避免多余 API 调用。data aws_s3_buckets example { prefix app- bucket_region us-west-2 max_buckets 50 } output bucket_names { value data.aws_s3_buckets.example.buckets[*].name }五、三个新 List ResourceList Resource 是 AWS Provider 近年来主推的资源形态它把一个服务下所有同类资源视为一个集合进行枚举与管理天然适合跨实例的批量操作。6.56.0 一次性新增了三个5.1aws_eks_addon枚举集群中的全部 EKS Add-on实现位于 addon_list.go。其列表配置 Schema 仅要求一个必填属性参数类型说明cluster_nameString要枚举 Add-on 的 EKS 集群名称声明方式为SDKListResource(aws_eks_addon)底层复用既有resourceAddon()的资源 Schema并基于 EKSListAddons分页拉取。与aws_eks_addon单实例资源相比列表形态可直接for_each遍历集群内所有 Add-on 统一管理。5.2aws_s3_bucket_notification枚举桶通知配置实现位于 bucket_notification_list.go。其List方法的工作流颇具代表性以当前 Provider 区域为BucketRegion调用ListBuckets枚举桶MaxBuckets取请求的Limit跳过目录桶Directory Bucket——源码中isDirectoryBucket(bucketName)明确注释Directory buckets do not support standard notification configuration对每个普通桶读取通知配置findBucketNotificationConfiguration不存在则跳过读取失败仅记录日志继续支持include_resource语义当请求要求包含完整资源数据时将通知配置展开回填到资源实例。5.3aws_secretsmanager_secret_policy枚举密钥资源策略实现位于 secret_policy_list.go声明为SDKListResource(aws_secretsmanager_secret_policy)复用resourceSecretPolicy()的 Schema通过 Secrets Manager 客户端分页枚举各 Secret 的资源策略供需要批量审计或统一管理密钥策略的场景使用。三个 List Resource 的配套测试如 addon_list_test.go、bucket_notification_list_test.go、secret_policy_list_test.go与internal/service/*/testdata/*/list_basic/下的 golden 测试数据共同验证了列表枚举、区域覆盖region_override、include_resource等行为。六、Provider 增强TF_AWS_WEB_IDENTITY_TOKEN环境变量6.56.0 对 Web Identity 凭证配置做了两处调整对应 issue #48736新增TF_AWS_WEB_IDENTITY_TOKEN环境变量可直接提供 Web Identity Token 字符串修复了此前必须显式配置web_identity_token或web_identity_token_file之一的报错现在任意合法的AWS_WEB_IDENTITY_TOKEN_FILE环境变量值都可直接使用。6.1 优先级规则从 provider.go 的expandAssumeRoleWithWebIdentity实现可以确认确切的优先级Provider 配置 web_identity_token Provider 配置 web_identity_token_file TF_AWS_WEB_IDENTITY_TOKEN 环境变量作为 token AWS_WEB_IDENTITY_TOKEN_FILE 环境变量作为 token 文件即Provider 配置优先于环境变量未配置时依次回退到两个环境变量。源码还保证 token 与 token 文件二者必须恰好指定其一(assumeRole.WebIdentityToken ! ) (assumeRole.WebIdentityTokenFile ! )为真时报错。6.2 使用示例# 方式一token 文件既有方式 export AWS_WEB_IDENTITY_TOKEN_FILE/path/to/token.jwt export AWS_ROLE_ARNarn:aws:iam::123456789012:role/my-oidc-role # 方式二直接以环境变量传入 token 字符串6.56.0 新增 export TF_AWS_WEB_IDENTITY_TOKENeyJhbGciOi... export AWS_ROLE_ARNarn:aws:iam::123456789012:role/my-oidc-role# 方式三在 Provider 块中显式配置优先级最高 provider aws { assume_role_with_web_identity { role_arn arn:aws:iam::123456789012:role/my-oidc-role web_identity_token eyJhbGciOi... } }该能力对GitHub Actions / GitLab CI 等 OIDC 联邦登录场景尤其有用——CI 中常常只持有 token 字符串而非文件此前的版本无法直接消费。七、其他关键增强速览7.1 EKS 节点组warm_pool_configdata-source/aws_eks_node_group与resource/aws_eks_node_group同时新增warm_pool_config属性/配置块issue #48977支持声明节点组的温池配置如min_size、max_size、pool_state配合 EC2 Auto Scaling 温池实现快速横向扩容。7.2 MSKIPv6 Bootstrap Broker 地址aws_msk_cluster与data-source/aws_msk_bootstrap_brokers新增 4 个 IPv6 引导地址属性bootstrap_brokers_ipv6bootstrap_brokers_sasl_iam_ipv6bootstrap_brokers_sasl_scram_ipv6bootstrap_brokers_tls_ipv6用于在双栈Dual-stackVPC 场景下获取基于 IPv6 的客户端引导连接串issue #48975。7.3 OpenSearch Serverless安全配置的联邦与身份中心选项aws_opensearchserverless_security_config资源与数据源新增两个配置块iam_federation_optionsIAM 联邦配置iam_identity_center_optionsIAM Identity Center 配置。同时aws_opensearch_package_association新增了import 支持issue #46690。7.4 Bedrock Agent托管知识库aws_bedrockagent_knowledge_base支持MANAGED类型type MANAGED及managed_knowledge_base_configuration块vector_knowledge_base_configuration.bedrock_embedding_model_configuration下新增audio、video嵌入模型配置块aws_bedrockagent_data_source新增data_source_configuration.managed_knowledge_base_connector_configuration块并新增timeouts.update默认30 分钟。7.5 其他增强资源增强点aws_autoscaling_group新增instance_lifecycle_policy配置块aws_cloudwatch_log_subscription_filteremit_system_fields支持source.log取值aws_flow_log新增tag_field_specification配置块aws_guardduty_detector_feature/aws_guardduty_organization_configuration_feature支持AI_PROTECTION、AI_ANALYST特性名aws_s3tables_tablemetadata.iceberg.properties参数八、缺陷修复盘点升级前必读8.1 与凭证相关的修复Web Identity Token 校验修复修复了one ofweb_identity_token,web_identity_token_filemust be specified的错误此前即使设置了合法的AWS_WEB_IDENTITY_TOKEN_FILE环境变量也可能被误判为未配置issue #48736。8.2 创建 / 删除流程修复aws_bedrockagent_data_source创建过程中若资源进入FAILED状态则短路等待避免无谓的长轮询aws_sagemaker_endpoint重试创建时避免 Cannot create already existing endpoint 错误aws_subnet删除时等待 IPAM 释放其 CIDR 后再返回避免删除不干净aws_datazone_domain修复删除时的AccessDeniedException。8.3 持续漂移Perpetual Diff修复aws_fsx_lustre_file_system当sizing_mode为PROPORTIONAL_TO_THROUGHPUT_CAPACITY且未指定size时data_read_cache_configuration.size不再产生永久性漂移aws_mq_broker修复 ActiveMQ 代理的shared_resources永久漂移问题aws_mq_configuration删除时对ConflictException: Configuration ID [...] is in use错误自动重试。8.4 其他修复aws_vpc_ipam_pool为其他账号中 VPC 创建 IPAM VPC 资源规划池时不再报 Error: reading EC2 VPC。九、升级建议与总结6.56.0 是一个以新资源形态落地为主题的版本如果你使用 ElastiCache建议先通过aws_elasticache_service_update_actions数据源盘点待应用的服务更新再决定是否使用新的 Action 自动化应用注意cache_cluster_id与replication_group_id互斥、默认超时 1 小时如果你管理大量 S3 桶aws_s3_buckets数据源配合prefix/bucket_region/max_buckets可以显著简化桶的批量发现与成本分析工作EKS / S3 / Secrets Manager 用户三个新 List Resource 为批量枚举与统一管理提供了更符合声明式习惯的入口CI/CD 中使用 OIDC 联邦的团队可立即切换到TF_AWS_WEB_IDENTITY_TOKEN环境变量减少对 token 文件落盘的依赖升级前重点关注 8.2、8.3 节中与创建/删除/漂移相关的修复——这些修复通常意味着行为变化建议在非生产环境先行验证。若需深入了解实现细节可继续阅读仓库中的核心源码ElastiCache Action 实现、S3 桶数据源、EKS Add-on List Resource 以及 Provider 凭证解析逻辑并结合各服务的testdata/golden 测试理解其行为预期。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

VS Code 里 where gcc 没输出?让走 TaoToken 的 Codex 查环境变量

VS Code 里 where gcc 没输出?让走 TaoToken 的 Codex 查环境变量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/16 19:24:11
DataHub Scoped MCP Servers:为领域专属 AI Agent 定制隔离的 MCP 端点

DataHub Scoped MCP Servers:为领域专属 AI Agent 定制隔离的 MCP 端点

DataHub Scoped MCP Servers:为领域专属 AI Agent 定制隔离的 MCP 端点 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub 本篇技术指南讲解 DataHub Cloud(…

📅 2026/9/16 19:24:11
Redis缓存雪崩实战防御指南:从原理到四级防护体系

Redis缓存雪崩实战防御指南:从原理到四级防护体系

1. 这不是故障,是缓存设计的照妖镜“Redis缓存雪崩把我坑惨了”——这句话我去年在凌晨三点的告警群里看到时,手抖着把咖啡泼在了键盘上。不是因为心疼那杯美式,而是因为这句话背后藏着一个被无数团队反复踩、却总被轻描淡写带过的真相&#…

📅 2026/9/16 19:24:11
MORE NEWS

更多资讯

📰

EIP-8310 详解:面向状态型密钥的后量子 Keystore 格式(Post-Quantum Keystore for Stateful Keys)

EIP-8310 详解:面向状态型密钥的后量子 Keystore 格式(Post-Quantum Keystore for Stateful Keys) 【免费下载链接】EIPs The Ethereum Improvement Proposal repository 项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs 本指…

📰

基于51单片机的环境监测系统设计与Proteus仿真调试

简介:面向51单片机学习者和电子设计开发者,提供一套基于51单片机的环境监测系统完整工程,涵盖温湿度、光照、硫化氢浓度与模拟量采集,适用于智能家居、实验室监测等场景。压缩包共包含56个文件,大小约1.4MB&#xff0c…

📰

Mac Mouse Fix 鼠标手势指南:免费三步给普通鼠标装上平滑滚动

Mac Mouse Fix 鼠标手势指南:免费三步给普通鼠标装上平滑滚动 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix 是一款…

📰

Nextcloud AIO 部署实战:一条命令搭好私有云

Nextcloud AIO 部署实战:一条命令搭好私有云 【免费下载链接】all-in-one 📦 The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance. 项目地址: https…

📰

.reg文件完全指南:从语法到实战,解决注册表难题

昨天一个朋友火急火燎地找我:任务管理器打不开,一打开就提示被管理员禁用。我远程看了下,没装任何工具,直接在记事本里敲了几行字,保存成.reg文件,让她双击导入,重启后问题消失。她问我刚才改了…

📰

AG Kit SEO Specialist Agent 实战指南:面向 Google 与 AI 搜索的双引擎优化方案

AG Kit SEO Specialist Agent 实战指南:面向 Google 与 AI 搜索的双引擎优化方案 【免费下载链接】ag-kit 项目地址: https://gitcode.com/GitHub_Trending/an/ag-kit 本指南以 AG Kit 仓库中的 seo-specialist 智能体定义 为核心,系统讲解如何同…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬