diff --git a/internal/services/keyvault/key_vault_managed_storage_account.go b/internal/services/keyvault/key_vault_managed_storage_account.go index 730e01e574ca..cb63025dbdea 100644 --- a/internal/services/keyvault/key_vault_managed_storage_account.go +++ b/internal/services/keyvault/key_vault_managed_storage_account.go @@ -169,7 +169,7 @@ func resourceKeyVaultManagedStorageAccountCreateUpdate(d *pluginsdk.ResourceData return fmt.Errorf("cannot read Managed Storage Account ID %q (Key Vault %q)", name, *keyVaultId) } - storageId, err := commonids.ParseStorageAccountID(*read.ID) + storageId, err := keyVaultParse.ParseOptionallyVersionedNestedItemID(*read.ID) if err != nil { return err } diff --git a/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go b/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go index ce7320c52c08..d4e7f5357468 100644 --- a/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go +++ b/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go @@ -180,7 +180,12 @@ func resourceKeyVaultManagedStorageAccountSasTokenDefinitionCreateUpdate(d *plug return fmt.Errorf("cannot read Managed Storage Account Sas Definition %q (Storage Account %q, Key Vault %q)", name, storageAccount.Name, *keyVaultId) } - d.SetId(*read.ID) + sasId, err := parse.SasDefinitionID(*read.ID) + if err != nil { + return err + } + + d.SetId(sasId.ID()) return resourceKeyVaultManagedStorageAccountSasTokenDefinitionRead(d, meta) } diff --git a/internal/services/keyvault/parse/nested_item.go b/internal/services/keyvault/parse/nested_item.go index 0beed86564cb..baa588a2d63b 100644 --- a/internal/services/keyvault/parse/nested_item.go +++ b/internal/services/keyvault/parse/nested_item.go @@ -152,7 +152,7 @@ func parseNestedItemId(id string) (*NestedItemId, error) { nestedItemObjectType := NestedItemObjectType(components[0]) childId := NestedItemId{ - KeyVaultBaseUrl: fmt.Sprintf("%s://%s/", idURL.Scheme, idURL.Host), + KeyVaultBaseUrl: fmt.Sprintf("https://%s/", idURL.Host), NestedItemType: nestedItemObjectType, Name: components[1], Version: version, diff --git a/internal/services/keyvault/parse/sas_definition.go b/internal/services/keyvault/parse/sas_definition.go index f6bb96fa519c..4ce8d10a6ffb 100644 --- a/internal/services/keyvault/parse/sas_definition.go +++ b/internal/services/keyvault/parse/sas_definition.go @@ -15,6 +15,11 @@ type SasDefinitionId struct { Name string } +func (i SasDefinitionId) ID() string { + fmtString := "%s/storage/%s/sas/%s" + return fmt.Sprintf(fmtString, i.KeyVaultBaseUrl, i.StorageAccountName, i.Name) +} + func SasDefinitionID(id string) (*SasDefinitionId, error) { // example: https://example-keyvault.vault.azure.net/storage/exampleStorageAcc01/sas/exampleSasDefinition01 idURL, err := url.ParseRequestURI(id) @@ -38,7 +43,7 @@ func SasDefinitionID(id string) (*SasDefinitionId, error) { } sasDefinitionId := SasDefinitionId{ - KeyVaultBaseUrl: fmt.Sprintf("%s://%s/", idURL.Scheme, idURL.Host), + KeyVaultBaseUrl: fmt.Sprintf("https://%s", idURL.Host), StorageAccountName: components[1], Name: components[3], }