我正在使用 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"
}
}
azapi_resource_action
的文档说output
属性有一个对象类型:
- 包含output
中指定的属性的 HCL 对象。response_export_values
由于您的
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
}