Terraform将Cosmos DB连接字符串存入KeyVault报类型错误如何解决
问题根因
报错的核心原因是类型不匹配:azurerm_cosmosdb_account资源的connection_strings属性是列表类型,内置了4个不同权限的CosmosDB连接字符串,而azurerm_key_vault_secret的value参数要求传入单个字符串,所以直接赋值会触发类型错误。
具体修改方案
- 你可以根据自身需要的权限取对应下标的连接字符串,通常取下标为
0的主读写连接字符串即可,修改代码中的value字段:
resource "azurerm_key_vault_secret" "Authentication_Server_Cosmos_DB_ConnectionString" { //Auth Server Cosmos Connection String Secret name = "AuthenticationServerCosmosDBConnectionString" # 取列表中第一个主读写连接字符串 value = azurerm_cosmosdb_account.nsauthsrvcosmosdb.connection_strings[0] key_vault_id = azurerm_key_vault.nscsecrets.id depends_on = [ azurerm_key_vault_access_policy.client, azurerm_key_vault_access_policy.service_principal, azurerm_cosmosdb_account.nsauthsrvcosmosdb, ] }
connection_strings四个下标对应的权限分别为:- 下标0:主读写连接字符串
- 下标1:次读写连接字符串
- 下标2:主只读连接字符串
- 下标3:次只读连接字符串
- 关于敏感值说明:
connection_strings默认已经是Terraform标记的敏感属性,不需要额外加sensitive参数,Terraform会自动在命令行输出中隐藏该字段的明文内容。该敏感标记是Terraform侧的安全控制,和Azure Key Vault的参数无关,不会影响密钥存入Key Vault的逻辑。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

