azapi_resource_action:“str”参数的值无效:需要字符串

问题描述 投票:0回答:1

我正在使用 azapi_resource_action 使用以下代码生成密钥

resource "azapi_resource_action" "ssh_public_key_gen" {
  type        = "Microsoft.Compute/sshPublicKeys@2022-11-01"
  resource_id = azapi_resource.ssh_public_key.id
  action      = "generateKeyPair"
  method      = "POST"

  response_export_values = ["publicKey", "privateKey"]
}

尝试显示公钥时出现以下错误

output "key_data" {
  value = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey
}




 Error: Invalid function argument
│
│   on ssh.tf line 23, in output "key_data":
│   23:   value = jsondecode(azapi_resource_action.ssh_public_key_gen.output).publicKey
│     ├────────────────
│     │ azapi_resource_action.ssh_public_key_gen.output is object with 2 attributes
│
│ Invalid value for "str" parameter: string required.

我正在使用以下提供商版本

  required_providers {
    azapi = {
      source  = "azure/azapi"
      version = "~>1.5"
    }
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.0"
    }
}
terraform azapi
1个回答
0
投票

azapi_resource_action
的文档说
output
属性有一个对象类型:

  • output
    - 包含
    response_export_values
    中指定的属性的 HCL 对象。

由于您的

response_export_values
参数有两个元素
publicKey
privateKey
,我希望这个对象有两个属性。错误消息似乎证实了这一点,该消息显示“azapi_resource_action.ssh_public_key_gen.output 是具有 2 个属性的对象”。

由于这已经是一个对象,因此不需要对其进行任何解码:您可以直接引用相关属性。例如:

output "key_data" {
  value = azapi_resource_action.ssh_public_key_gen.output.publicKey
}
© www.soinside.com 2019 - 2024. All rights reserved.