我有一个我不再使用的自定义属性,并且强制terraform每次都会破坏用户池。有没有避免用户池的破坏?
我的terraform:
resource "aws_cognito_user_pool" "my_pool" {
name = "${var.la} Pool"
alias_attributes = [
"email"
]
/* Auto-verify these fields */
auto_verified_attributes = [
"email"
]
...
schema {
attribute_data_type = "String"
name = "my_custom_attribute1"
required = "false"
mutable = "true"
}
}
terraform计划给出以下结果:
schema.xxx.attribute_data_type: "String" => "" (forces new resource)
schema.xxx.developer_only_attribute: "false" => "false"
schema.xxx.mutable: "true" => "false" (forces new resource)
schema.xxx.name: "my_custom_attribute1" => "" (forces new resource)
schema.xxx.number_attribute_constraints.#: "0" => "0"
schema.xxx.required: "false" => "false"
schema.xxx.string_attribute_constraints.#: "1" => "0" (forces new resource)
schema.xxx.string_attribute_constraints.0.max_length: "" => ""
schema.xxx.string_attribute_constraints.0.min_length: "" => ""
我没有对这些进行更改,但每次我尝试计划时都说有变化,我需要销毁我的用户池(我不想做)。
我尝试过运行terraform刷新,但它似乎没有效果。
我发现了以下内容,但这些建议似乎无法解决我的问题:https://github.com/terraform-providers/terraform-provider-aws/issues/3891
我认为这不是一个真正的错误。如何避免破坏我的Cognito用户池?
terraform版本:0.11.5 aws版本:0.17(也试过0.15)
答案 0 :(得分:1)
我最近遇到了同样的问题,看来Terraform已更新their documentation来突出此问题:
注意:在定义String或Number的attribute_data_type时,需要各个属性约束配置块(例如string_attribute_constraints或number_attribute_contraints)来防止重新生成Terraform资源。对于标准(例如名称,电子邮件)和自定义架构属性,此要求都是正确的。
简而言之,您可能需要向属性添加约束以阻止每次重新创建它,例如:
string_attribute_constraints = { # This is required to stop user pool being recreated
max_length = 32
}
这可能会导致您的资源被更新(并因此被破坏)一次,但随后应按预期运行。与往常一样,我还是建议您先进行测试!