代码之家  ›  专栏  ›  技术社区  ›  cekodis681 cekodis681

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

  •  0
  • cekodis681 cekodis681  · 技术社区  · 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"
        }
    }
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   Martin Atkins    1 年前

    The documentation for azapi_resource_action output 属性具有对象类型:

    • 输出 -包含中指定的属性的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
    }