Terraform如何为带count条件的Cognito资源配置depends_on依赖
问题原因
Terraform 的 depends_on 元参数仅支持静态资源引用,不支持三元表达式等动态计算逻辑,所以你之前的动态条件写法不符合语法规范,无法生效。
正确配置方案
不需要拆分创建多个用户池客户端,直接把两个身份提供者资源都写入 depends_on 即可:
resource "aws_cognito_user_pool_client" "this" { # 其余原有配置保持不变 depends_on = [ aws_cognito_identity_provider.test1, aws_cognito_identity_provider.test2 ] }
对于用 count 控制是否创建的资源,即使最终计数为0不实际部署,Terraform 也能合法识别这类资源引用,不会抛出依赖错误,只会对实际创建的资源生效等待逻辑。
额外优化建议
你配置里的 supported_identity_providers 参数可以配合变量动态生成,避免手动修改:
locals { supported_identity_providers = concat( # 如果需要保留默认的Cognito用户池身份源,可先添加 ["COGNITO"] var.test1 ? ["test1"] : [], var.test2 ? ["test2"] : [] ) }
常见疑问解答
不需要为test1、test2分别创建独立的用户池客户端,除非两种场景下的客户端配置(回调地址、OAuth范围、授权流等)存在差异,共用同一个即可满足需求。
内容的提问来源于stack exchange,提问作者ced
相关产品推荐
相关产品推荐

