Я использую 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 — это объект с двумя атрибутами».
Поскольку это уже объект, то нет необходимости выполнять его декодирование: можно напрямую обратиться к соответствующим атрибутам. Например:
output "key_data" {
value = azapi_resource_action.ssh_public_key_gen.output.publicKey
}