I just ran into a frustrating error that seemed unexplainable to me.
My goal was to replace an existing Azure Resource Group with a new one
managed entirely with Terraform. Besides a few other errors, this
SoftDeletedVaultDoesNotExist
was incredibly confusing because no
more Key Vaults were found in the Resource Group’s list of resources.
Error: creating Vault: (Name "my-fancy-key-vault" / Resource Group "The-Codeslinger"):
keyvault.VaultsClient#CreateOrUpdate: Failure sending request: StatusCode=0 --
Original Error: Code="SoftDeletedVaultDoesNotExist"
Message="A soft deleted vault with the given name does not exist.
Ensure that the name for the vault that is being attempted to recover is in a recoverable state.
For more information on soft delete please follow this link https://go.microsoft.com/fwlink/?linkid=2149745"
with module.base.azurerm_key_vault.keyvault,
on terraform\key_vault.tf line 9, in resource "azurerm_key_vault" "keyvault":
9: resource "azurerm_key_vault" "keyvault" {
That is because it was soft-delete enabled. And it was the Key Vault from the other Resource Group that I previously cleared of all resources, not the new Resource Group.
Using the az
CLI you can display it, though.
> az keyvault list-deleted
[
{
"id": "/subscriptions/<subscription-id>/providers/Microsoft.KeyVault/locations/westeurope/deletedVaults/my-fancy-key-vault",
"name": "my-fancy-key-vault",
"properties": {
"deletionDate": "2021-08-02T09:39:29+00:00",
"location": "westeurope",
"purgeProtectionEnabled": null,
"scheduledPurgeDate": "2021-10-31T09:39:29+00:00",
"tags": {
"customer": "The-Codeslinger",
"source": "Terraform"
},
"vaultId": "/subscriptions/<subscription-id>/resourceGroups/My-Other-ResourceGroup/providers/Microsoft.KeyVault/vaults/my-fancy-key-vault"
},
"type": "Microsoft.KeyVault/deletedVaults"
}
]
And finally delete it.
> az keyvault purge --name my-fancy-key-vault
After that, it is gone.
$ az keyvault list-deleted
[]
Another option seems to be the Azure Portal, but I discovered this only after removing it on the command line.
