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

如何在Terraform的azurerm_api_connection中设置敏感密码参数

问题:Terraform创建Azure邮件API连接时密码未设置成功

我通过Terraform创建Azure API连接用于发送邮件,参考官方文档编写代码后,除密码外其余配置均正常生效,但连接属性中密码未被正确设置。

我的Terraform代码片段:

resource "azurerm_api_connection" "noreply_email_api" {
  ...

  parameter_values = {
    serverAddress: "xxx",
    userName: "yyy",
    port: 123,
    enableSSL: true,
    password: "zzzz" 
  }

  lifecycle {
    # NOTE: since the connectionString is a secure value it's not returned from the API
    ignore_changes = [ parameter_values ]
  }
}

执行代码后返回的连接结构(关键部分):

"nonSecretParameterValues": {
    "enableSSL": "true",
    "port": "123",
    "serverAddress": "xxx",
    "userName": "yyy"
},

该结构与手动创建的API连接一致,但连接属性中密码为空,请问如何正确设置该连接的密码?


解决方法

Azure API连接的敏感参数(如密码)不能放在parameter_values中,需使用专门的secret_parameter_values字段配置——parameter_values仅用于存储非敏感参数,敏感参数会被Azure归类到secretParameterValues中,Terraform的azurerm_api_connection资源也针对这类敏感值提供了对应字段。

修改后的代码如下:

resource "azurerm_api_connection" "noreply_email_api" {
  ...

  parameter_values = {
    serverAddress = "xxx"
    userName = "yyy"
    port = 123
    enableSSL = true
  }

  # 敏感参数单独配置在secret_parameter_values中
  secret_parameter_values = {
    password = "zzzz"
  }

  lifecycle {
    # 忽略敏感参数的变更检测,因为Azure API不会返回敏感值
    ignore_changes = [ parameter_values, secret_parameter_values ]
  }
}

关键注意点:

  • secret_parameter_values专门用于存储密码、密钥等敏感参数,这些值会被Terraform标记为敏感,不会在状态文件中明文显示,也不会在API返回结果中暴露。
  • 必须在lifecycle.ignore_changes中添加secret_parameter_values,否则Terraform每次执行时会因API不返回敏感值,误判该参数缺失而触发不必要的变更。
  • 确保参数名称(此处为password)与目标邮件连接器要求的敏感参数名完全匹配,不同类型的API连接器敏感参数名称可能不同,需对应连接器的配置要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:52:59