Search code examples
azureazure-keyvaultazure-cli

Azure key vault creation error: VaultAlreadyExists - I can't find the existing vault


I'm trying to create a key vault in Azure using this CLI command...

az keyvault create --location $location --name $keyVaultName --resource-group $resourceGroupMainName --output none

But this returns the error...

(VaultAlreadyExists) The vault name '[value of $keyVaultName]' is already in use. Vault names are globaly unique so it is possible that the name is already taken. If you are sure that the vault name was not taken then it is possible that a vault with the same name was recently deleted but not purged after being placed in a recoverable state. If the vault is in a recoverable state then the vault will need to be purged before reusing the name. For more information on soft delete and purging a vault follow this link https://go.microsoft.com/fwlink/?linkid=2147740.

So I ran both of these...

az keyvault list
az keyvault list-deleted

And $keyVaultName does not appear in either list. I've asked a colleague to double-check those results but it really doesn't appear. I've also looked in the Manage deleted vaults blade in the portal and that matches the results from the CLI - it's not there.

I also tried to recover the key vault with that name...

(DeletedVaultNotFound) The specified deleted vault '[value of $keyVaultName]' does not exist.

...and to purge a key vault with that name...

No deleted Vault or HSM was found with name [value of $keyVaultName]

So why does Azure think that the name is already in use?


Solution

  • As provided in the comment, Similar to Storage Accounts in Azure, the keyvault is also unique across globally. You can check the similar error code from the docs,

    Your attempt to create a new key vault with the specified name has failed since the name is already in use. If you recently deleted a key vault with this name, it may still be in the soft deleted state

    Vault names and Managed HSM pool names are selected by the user and are globally unique.

    You can verify the existence using Powershell or Rest API