You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Terraform的aws_cognito_user_pool每次plan均显示原地更新?

解决Terraform中AWS Cognito用户池无变更却持续提示原地更新的问题

问题现象

每次执行terraform plan时,aws_cognito_user_pool资源总会被标记为需要原地更新,具体变更内容如下:

# aws_cognito_user_pool.user_pool will be updated in-place
  ~ resource "aws_cognito_user_pool" "user_pool" {
        id                        = "us-east-1_xxxyyy"
        name                      = "my-user-pool"
        tags                      = {
            "Name" = "my-user-pool"
        }
        # (10 unchanged attributes hidden)

      ~ password_policy {
          - temporary_password_validity_days = 7 -> null
            # (5 unchanged attributes hidden)
        }

        # (4 unchanged blocks hidden)
    }

实际并未对该资源做任何修改。

原因分析

这不是Bug,是Terraform AWS Provider与AWS Cognito API的交互特性导致的:

  • AWS Cognito用户池的temporary_password_validity_days参数有默认值7,即便你没在Terraform配置里定义它,AWS API返回资源状态时也会带上这个默认值。
  • 但Terraform的本地状态里没有记录这个参数,所以每次执行plan时,会判定需要把该参数从API返回的7改为配置中未定义的null,从而产生无意义的变更提示。

解决方法

  • 在aws_cognito_user_pool资源的password_policy块中,显式添加temporary_password_validity_days = 7(或你需要的有效值,范围为1-365),让Terraform配置与AWS返回的默认值对齐:
resource "aws_cognito_user_pool" "user_pool" {
  # 其他已有配置...

  password_policy {
    # 其他已有配置...
    temporary_password_validity_days = 7
  }
}
  • 执行一次terraform apply,之后再运行terraform plan就不会再出现该无意义的变更提示了。

内容的提问来源于stack exchange,提问作者Drew B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:32:06