阿里云 Terraform Provider 6.22.0 版本全览:新增资源、Tag Policy 合规强制与关键增强
阿里云 Terraform Provider 6.22.0 版本全览新增资源、Tag Policy 合规强制与关键增强【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws本文基于官方仓库.changes/6.x/6.22.0.md变更记录结合internal/下的源码实现与website/docs/guides/tag-policy-compliance.html.markdown官方指南全面解析 6.22.0 版本的新资源、新特性、增强与缺陷修复并深入剖析tag_policy_compliance参数从配置到执行的完整链路帮助开发者在升级与使用中获得准确的技术依据。注意本文章节标题中的「阿里云」为占位符误写正确项目为HashiCorp Terraform AWS Providerterraform-provider-aws。文中所有配置、命令与源码路径均以当前仓库为准。版本概览与升级注意6.22.0 于 2025 年 11 月 20 日发布主要包含新 Ephemeral 资源aws_ecr_authorization_token新指南Tag Policy Compliance新资源aws_billing_view、aws_vpclattice_domain_verificationProvider 增强新增tag_policy_compliance参数支持组织级标签策略合规强制多项资源增强与缺陷修复重要升级提醒S3 SSE-C 默认禁用本版本对aws_s3_bucket_server_side_encryption_configuration增加了一条NOTES级别的升级提示自 2026 年 3 月起Amazon S3 将自动禁用所有新桶的 SSE-C客户提供的密钥加密功能。可通过blocked_encryption_types参数管理特定桶的该行为。这一变更属于 AWS 服务端默认行为变化Provider 通过新增rule.blocked_encryption_types参数见 ENHANCEMENTS 第 36 行为使用者提供了显式控制手段。新 Ephemeral 资源aws_ecr_authorization_token6.22.0 新增aws_ecr_authorization_token临时Ephemeral资源用于获取 ECR 的授权令牌。其源码实现位于internal/service/ecr/authorization_token_ephemeral.go。从源码看该资源实现了 Terraform Plugin Framework 的ephemeral.EphemeralResourceWithConfigure接口Open方法调用e.Meta().ECRClient(ctx)获取 ECR 客户端其 Schema 包含以下属性属性类型说明authorization_tokenComputed SensitiveBase64 编码的授权令牌expires_atComputed令牌过期时间passwordComputed Sensitive解密后的密码proxy_endpointComputed代理端点user_nameComputed用户名新资源aws_billing_view新增 AWS Billing 视图资源aws_billing_view源码位于internal/service/billing/view.go。其默认创建/更新/删除超时均为 5 分钟见view.go第 48-50 行并支持标签管理Tags(identifierAttributearn)。新资源aws_vpclattice_domain_verification新增 VPC Lattice 域名验证资源aws_vpclattice_domain_verification源码internal/service/vpclattice/domain_verification.go同时为aws_vpclattice_resource_configuration增加了custom_domain_name、domain_verification_id参数及domain_verification_arn、domain_verification_status属性用于支持资源配置的自定义域名。核心特性Tag Policy Compliance标签策略合规本版本最大亮点是Tag Policy Compliance特性——在 plan/apply 阶段强制执行组织级标签策略合规。官方指南位于website/docs/guides/tag-policy-compliance.html.markdown其核心内容包括启用前提账号必须已挂载标签策略Tag Policy且策略需为至少一个资源定义必填标签才能观察到校验效果执行 Terraform 的 principal 必须具备tags:ListRequiredTagsIAM 权限对应 Resource Groups Tagging API 的ListRequiredTags2025 年 11 月引入可能需要修改现有权限策略。创建标签策略标签策略必须在 AWS 组织的管理账号中创建。以下策略要求所有logs:log-group资源必须有Owner标签{ tags: { Owner: { tag_key: { assign: Owner }, report_required_tag_for: { assign: [ logs:log-group ] } } } }可使用 Provider 的aws_organizations_policy与aws_organizations_policy_attachment资源通过 Terraform 完成创建与挂载data aws_caller_identity current {} resource aws_organizations_policy example { name tag-policy-example content EOF { tags: { Owner: { tag_key: { assign: Owner }, report_required_tag_for: { assign: [ logs:log-group ] } } } } EOF type TAG_POLICY } resource aws_organizations_policy_attachment example { policy_id aws_organizations_policy.example.id target_id data.aws_caller_identity.current.account_id }启用合规强制在 provider 块中设置tag_policy_complianceprovider aws { tag_policy_compliance error }有效值error、warning、disabled默认未设置即视为disabled。error违规触发 error 诊断plan 失败warning违规触发 warning 诊断plan 可继续但诊断不会被静默直到违规解决disabled不强制等价于不设置。环境变量与优先级也可通过TF_AWS_TAG_POLICY_COMPLIANCE环境变量配置。当两者同时设置时provider 参数优先于环境变量见internal/provider/sdkv2/provider.go第 1142-1174 行。实际报错示例若策略已挂载以下未配置任何标签的aws_cloudwatch_log_group会触发错误resource aws_cloudwatch_log_group example { name required-tags-demo }Error: Missing Required Tags - An organizational tag policy requires the following tags for aws_cloudwatch_log_group: [Owner] with aws_cloudwatch_log_group.example, on main.tf line 23, in resource aws_cloudwatch_log_group example: 23: resource aws_cloudwatch_log_group example {解决方式为资源设置Owner标签或在 provider 中配置default_tags使所有资源自动继承provider aws { tag_policy_compliance error default_tags { tags { Owner foo } } } resource aws_cloudwatch_log_group example { name required-tags-demo }源码实现解析参数定义tag_policy_compliance在internal/provider/sdkv2/provider.go第 254-262 行定义为schema.TypeString有效值为error/warning/disabled且支持TF_AWS_TAG_POLICY_COMPLIANCE环境变量Plugin Framework 侧的定义位于internal/provider/framework/provider.go第 177-183 行。配置解析expandTagPolicyConfig在provider.go第 489 行将用户配置转换为config.TagPolicyConfig供后续 plan-time 校验使用。合规数据获取internal/tags/tagpolicy/required_tags.go中的GetRequiredTags通过 Resource Groups Tagging API 的ListRequiredTags分页拉取组织级必填标签并通过convert函数配合internal/tags/tagpolicy/lookup_gen.go的映射表将 AWS 资源类型映射为 Terraform 资源类型。校验时机与边界校验发生在创建新资源前、修改已有资源的 tags 时非标签相关的更新始终放行——即使现有标签不合规也不会阻塞无关更新只有在任何标签被修改时才强制合规。SDKv2 资源的 Warning 限制由于 Terraform Plugin SDK V2 的 plan-time 校验方法无法发出 warning 诊断基于 SDKv2 的资源在warning模式下会改为输出WARN级别日志。查看方式TF_LOGwarn terraform plan注Provider 大部分资源基于 Plugin SDK V2 实现所有新增资源必须使用 Plugin Framework但大量历史资源在迁移完成前仍受此限制影响。资源类型交叉引用表指南末尾提供了「Tag 资源类型 → Terraform 资源类型」的生成式交叉引用表官方指南website/docs/guides/tag-policy-compliance.html.markdown第 213-678 行帮助确认策略约束影响哪些资源。常见映射示例Tag 资源类型Terraform 资源类型logs:log-groupaws_cloudwatch_log_groupec2:instanceaws_instanceec2:security-groupaws_security_groups3:bucketaws_s3_bucketecr:repositoryaws_ecr_repositoryiam:roleaws_iam_rolesns:topicaws_sns_topicsqs:queueaws_sqs_queue完整映射表可在官方指南中查看也可结合internal/tags/tagpolicy/tagris-terraform-mapping.hcl了解映射数据来源。ENHANCEMENTS增强全览数据源增强aws_lb_listener/aws_lb_listener_rule新增default_action.jwt_validation/action.jwt_validation属性aws_route53_zone支持仅按tags或仅按vpc_id过滤。资源增强按服务分类Compute / Containeraws_bedrock_guardrailcontent_policy_config.filters_config新增input_action、input_enabled、input_modalities、output_action、output_enabled、output_modalitiesaws_bedrockagent_knowledge_base新增storage_configuration.rds_configuration.field_mapping.custom_metadata_fieldaws_bedrockagentcore_agent_runtime新增agent_runtime_artifact.code_configuration并使container_configuration可选aws_sagemaker_model新增container.additional_model_data_source与primary_container.additional_model_data_source。Storage / Databaseaws_backup_logically_air_gapped_vault新增encryption_key_arnaws_dynamodb_table新增global_table_witnessaws_s3_bucket_server_side_encryption_configuration新增rule.blocked_encryption_typesaws_timestreaminfluxdb_db_cluster新增engine_type属性并为 InfluxDB V2/V3 集群增加字段校验需timestream-influxdb:GetDbParameterGroupIAM 权限。Networkaws_fis_experiment_templateaction.*.target支持Functions并对log_configuration.cloudwatch_logs_configuration.log_group_arn增加 plan-time 校验aws_lb_listener/aws_lb_listener_rule支持jwt-validation类型的 actionaws_vpn_connection新增tunnel_bandwidth参数aws_vpclattice_resource_configuration新增自定义域名支持见上文。Otheraws_emr_managed_scaling_policy新增scaling_strategy与utilization_performance_indexaws_lambda_invocation新增导入支持importaws_odb_cloud_vm_cluster支持通过 odb network ARN 与 exadata infrastructure ARN 的资源共享模型创建 VM 集群aws_organizations_organizationenabled_policy_types新增SECURITYHUB_POLICYaws_prometheus_query_logging_configuration/aws_prometheus_workspace新增 plan-time 校验aws_sfn_state_machinelogging_configuration.log_destination新增 plan-time 校验。BUG FIXES缺陷修复全览资源修复内容aws_db_instance修复 blue/green 部署在storage-config-upgrade/storage-initialization状态下的稳定性问题避免 not in available state 错误aws_elastic_beanstalk_configuration_template修复更新不生效为 option settings 包含ResourceName并阻止重复的 add/remove 操作aws_odb_cloud_vm_cluster支持 hostname 前缀中的连字符aws_quicksight_account_settings新增region参数aws_s3_directory_bucket修复只读会话模式下 refresh 时的 AWS resource not found 警告导致资源替换的问题aws_ssoadmin_account_assignment修正target_type为必填参数aws_timestreaminfluxdb_db_cluster为 InfluxDB V3 集群将allocated_storage、bucket、organization、username、password改为可选版本升级建议升级前请注意S3 SSE-C 默认策略变更如有使用客户密钥加密的桶需关注 AWS 2026 年 3 月的默认行为变化并考虑设置blocked_encryption_typesTag Policy Compliance 属于可选特性默认不启用不影响现有配置的兼容性新增tags:ListRequiredTags权限如需启用标签策略合规请先在 IAM 中为执行 principal 添加该权限对于 SDKv2 资源warning 模式的合规提示需要通过TF_LOGwarn查看。延伸阅读标签策略合规完整指南website/docs/guides/tag-policy-compliance.html.markdown合规数据映射表internal/tags/tagpolicy/tagris-terraform-mapping.hclECR 授权令牌临时资源实现internal/service/ecr/authorization_token_ephemeral.goBilling 视图资源实现internal/service/billing/view.goVPC Lattice 域名验证资源实现internal/service/vpclattice/domain_verification.goProvider 参数定义SDKv2internal/provider/sdkv2/provider.goProvider 参数定义Frameworkinternal/provider/framework/provider.go必填标签获取逻辑internal/tags/tagpolicy/required_tags.go变更记录文件.changes/6.x/6.22.0.md【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考