使用 "type_properties_json" 字段创建资源 "azurerm_synapse_linked_service" 的 Terraform 问题
Terraform issue creating the resource "azurerm_synapse_linked_service" specifically with the "type_properties_json" field
我正在尝试使用 Terraform 创建一个 Synapse 工作区 Linked Service,并且 运行 遇到了“type_properties_json”字段(必填)的持续障碍。
当我尝试为 SFTP 资源类型建立链接服务时,我可以通过门户网站毫无问题地这样做,但是尝试使用 Terraform 这样做时,我总是会遇到错误。我正在使用 JSON 代码格式 referenced here,但是“type_properties_json”字段不断出错,因为我认为它期待的是“String”,而我提供的是 Map[string]类型。
我在 terraform 应用期间不断收到的错误是 json: cannot unmarshal string into Go value of type map[string]interface {}
我的具体代码如下所示:
resource "azurerm_synapse_linked_service" "linked-service" {
synapse_workspace_id = azurerm_synapse_workspace.synapse.id
name = "name"
type = "Sftp"
type_properties_json = <<JSON
{
"host": "x.x.com",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerprint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
"authenticationType": "Basic",
"userName": "whatever_name,
"password": "randompassw"
}
JSON
depends_on = [azurerm_synapse_firewall_rule.allow]
}
运行 在这里没有希望,现在正在寻找众包资源,看看是否有其他人 运行 遇到过这个问题!!
这是因为您传递的密码参数。根据这个 Microsoft documentation,它应该按如下方式传递:
"password": {
"type": "SecureString",
"value": "<value>"
}
而不是
"password": <value>
我在我的环境中使用您的代码进行了相同的测试,我遇到了完全相同的问题:
所以,我使用了下面的代码,应用了上面提到的解决方案:
resource "azurerm_synapse_linked_service" "example" {
name = "SftpLinkedService"
synapse_workspace_id = azurerm_synapse_workspace.example.id
type = "Sftp"
type_properties_json = <<TYPE
{
"host": "xxx.xx.x.x",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerprint": "<SSH-publicKey>",
"authenticationType": "Basic",
"userName": "adminuser",
"password": {
"type": "SecureString",
"value": "<Value>"
}
}
TYPE
depends_on = [
azurerm_synapse_firewall_rule.example,
azurerm_synapse_firewall_rule.example1
]
}
输出:
我正在尝试使用 Terraform 创建一个 Synapse 工作区 Linked Service,并且 运行 遇到了“type_properties_json”字段(必填)的持续障碍。
当我尝试为 SFTP 资源类型建立链接服务时,我可以通过门户网站毫无问题地这样做,但是尝试使用 Terraform 这样做时,我总是会遇到错误。我正在使用 JSON 代码格式 referenced here,但是“type_properties_json”字段不断出错,因为我认为它期待的是“String”,而我提供的是 Map[string]类型。
我在 terraform 应用期间不断收到的错误是 json: cannot unmarshal string into Go value of type map[string]interface {}
我的具体代码如下所示:
resource "azurerm_synapse_linked_service" "linked-service" {
synapse_workspace_id = azurerm_synapse_workspace.synapse.id
name = "name"
type = "Sftp"
type_properties_json = <<JSON
{
"host": "x.x.com",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerprint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
"authenticationType": "Basic",
"userName": "whatever_name,
"password": "randompassw"
}
JSON
depends_on = [azurerm_synapse_firewall_rule.allow]
}
运行 在这里没有希望,现在正在寻找众包资源,看看是否有其他人 运行 遇到过这个问题!!
这是因为您传递的密码参数。根据这个 Microsoft documentation,它应该按如下方式传递:
"password": {
"type": "SecureString",
"value": "<value>"
}
而不是
"password": <value>
我在我的环境中使用您的代码进行了相同的测试,我遇到了完全相同的问题:
所以,我使用了下面的代码,应用了上面提到的解决方案:
resource "azurerm_synapse_linked_service" "example" {
name = "SftpLinkedService"
synapse_workspace_id = azurerm_synapse_workspace.example.id
type = "Sftp"
type_properties_json = <<TYPE
{
"host": "xxx.xx.x.x",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerprint": "<SSH-publicKey>",
"authenticationType": "Basic",
"userName": "adminuser",
"password": {
"type": "SecureString",
"value": "<Value>"
}
}
TYPE
depends_on = [
azurerm_synapse_firewall_rule.example,
azurerm_synapse_firewall_rule.example1
]
}
输出: