Erros de recurso não encontrado - Azure Resource Manager | Microsoft Docs
Resolver erros de recurso não encontrado
Este artigo descreve os erros com que você pode ver quando um recurso não é encontrado durante uma operação. Normalmente, você vê esse erro ao implantar recursos com um arquivo Bicep ou um modelo do ARM (Azure Resource Manager). Você também verá esse erro quando realizar tarefas de gerenciamento e o Azure Resource Manager não conseguir localizar o recurso necessário. Por exemplo, se tentar adicionar marcas a um recurso que não existe, você receberá esse erro.
Há dois códigos de erro que indicam que o recurso não foi encontrado. O erro NotFound retorna um resultado semelhante a:
O erro ResourceNotFound retorna um resultado semelhante a:
O Resource Manager precisa recuperar as propriedades de um recurso, mas não consegue identificar o recurso em suas assinaturas.
Solução 1 - verificar as propriedades do recurso
Quando você receber esse erro durante uma tarefa de gerenciamento, verifique os valores fornecidos para o recurso. Os três valores a serem verificados são:
Se você estiver usando o PowerShell ou a CLI do Azure, verifique se está executando os comandos na assinatura que contém o recurso. Você pode alterar a assinatura com Set-AzContext ou az account set. Muitos comandos fornecem um parâmetro de assinatura que permite especificar uma assinatura diferente do contexto atual.
Se você não puder verificar as propriedades, entre no portal do Microsoft Azure. Localize o recurso que você está tentando usar e examine o nome do recurso, o grupo de recursos e a assinatura.
Se você receber esse erro ao implantar um modelo, talvez seja necessário adicionar uma dependência. O Resource Manager otimiza as implantações criando recursos em paralelo, quando possível.
Por exemplo, ao implantar um aplicativo Web, o plano do Serviço de Aplicativo deve existir. Se você não tiver especificado que o aplicativo Web depende do plano do Serviço de Aplicativo, o Gerenciador de Recursos criará os dois recursos ao mesmo tempo. O aplicativo Web falha com um erro de que o recurso de Plano do Serviço de Aplicativo não pode ser encontrado porque ele ainda não existe. Você evita esse erro configurando a dependência no aplicativo Web.
Use uma dependência implícita em vez da função resourceId. A dependência é criada usando o nome simbólico e a propriedade ID de um recurso.
Por exemplo, a propriedade serverFarmId do aplicativo Web usa servicePlan.id para criar uma dependência no Plano do Serviço de Aplicativo.
Para a maioria das implantações, não é necessário usar dependsOn para criar uma dependsOn.
Evite definir dependências desnecessárias. Dependências desnecessárias prolongam a duração da implantação porque os recursos não são implantados em paralelo. Além disso, você pode criar dependências circulares que bloqueiam a implantação.
Se um recurso precisar ser implantado após outro recurso, você precisará usar o elemento dependsOn em seu modelo.
A funções reference e list* criam uma dependência implícita no recurso referenciado, quando esse recurso é implantado no mesmo modelo e é referenciado por seu nome (não pela ID de recurso). Portanto, você pode ter dependências mais que as dependências especificada na propriedade dependsOn.
A função resourceId não cria uma dependência implícita ou valida que o recurso existe. A função reference e as funções list* não criam uma dependência implícita quando o recurso for referenciado por sua ID de recurso. Para criar uma dependência implícita, passe o nome do recurso que é implantado no mesmo modelo.
Quando você vir os problemas de dependência, você precisa obter informações sobre a ordem de implantação de recursos. Você pode usar o portal para exibir a ordem das operações de implantação:
Na Visão Geral do grupo de recursos, selecione o link para o histórico de implantação.
Para o Nome da implantação que você deseja revisar, selecione Eventos relacionados.
Examine a sequência de eventos de cada recurso. Preste atenção ao status de cada operação e ao carimbo de data/hora. Por exemplo, a imagem a seguir mostra três contas de armazenamento implantadas em paralelo. Observe que as três contas de armazenamento são iniciadas ao mesmo tempo.
A imagem a seguir mostra três contas de armazenamento que não são implantadas em paralelo. A segunda conta de armazenamento depende da primeira conta de armazenamento e a terceira conta de armazenamento depende da segunda conta de armazenamento. A primeira conta de armazenamento é rotulada como Iniciada, Aceita e Exitosa antes que a próxima seja iniciada.
Solução 3 - obter recurso externo
O Bicep usa o nome simbólico para criar uma dependência implícita em outro recurso. A palavra-chave existente faz referência a um recurso implantado. Se um recurso existente estiver em um grupo de recursos diferente do recurso que você deseja implantar, inclua escopo e use a função resourceGroup.
Neste exemplo, é implantado um aplicativo Web que usa um Plano do Serviço de Aplicativo existente de outro grupo de recursos.
Quando você implanta um modelo e precisa obter um recurso que existe em uma assinatura ou grupo de recursos diferente, use a função resourceId. Essa função retorna o nome totalmente qualificado do recurso.
Os parâmetros de grupo de recursos e assinatura na função resourceId são opcionais. Se você não fornecê-los, eles assumem como padrão a assinatura e o grupo de recursos atuais. Ao trabalhar com um recurso em um grupo de recursos ou assinatura diferente, certifique-se de fornecer esses valores.
O exemplo a seguir obtém a ID de recurso de um recurso que existe em um grupo de recursos diferente.
Solução 4 – obter a identidade gerenciada do recurso
Se você estiver implantando um recurso com uma identidade gerenciada, deverá aguardar até que esse recurso seja implantado antes de recuperar os valores na identidade gerenciada. Use uma dependência implícita para o recurso ao qual a identidade é aplicada. Essa abordagem garante que o recurso e a identidade gerenciada sejam implantados antes que o Resource Manager use a dependência.
Você pode obter a ID da entidade de segurança e a ID do locatário para uma identidade gerenciada aplicada a uma máquina virtua. Por exemplo, se um recurso de máquina virtual tiver um nome simbólico de vm, use a seguinte sintaxe:
Se você estiver implantando um recurso com uma identidade gerenciada, deverá aguardar até que esse recurso seja implantado antes de recuperar os valores na identidade gerenciada. Se você passar o nome da identidade gerenciada para a função reference, o Resource Manager tentará resolver a referência antes que o recurso e a identidade sejam implantados. Em vez disso, passe o nome do recurso ao qual a identidade é aplicada. Essa abordagem garante que o recurso e a identidade gerenciada sejam implantados antes que o Resource Manager resolva a função reference.
Na função reference, use Full para obter todas as propriedades, incluindo a identidade gerenciada.
Seu modelo falhará.
Por exemplo, para obter a ID principal para uma identidade gerenciada aplicada a uma máquina virtual, use:
Ou, para obter a ID de locatário para uma identidade gerenciada aplicada a um conjunto de dimensionamento de máquinas virtuais, use:
Você pode usar o nome simbólico de um recurso para obter valores de um recurso. Você pode fazer referência a uma conta de armazenamento no mesmo grupo de recursos ou em outro grupo de recursos usando um nome simbólico. Para obter um valor de um recurso implantado, use a palavra-chave existente. Se um recurso estiver em um grupo de recursos diferente, use scope com a função scope. Para a maioria dos casos, a função de referência não é necessária.
O exemplo a seguir faz referência a uma conta de armazenamento existente em um grupo de recursos diferente.
Ao implantar um modelo, procure expressões que usam as funções reference ou listKeys. Os valores que você fornecerá serão diferentes se o recurso estiver no mesmo modelo, grupo de recursos e assinatura. Verifique se você está fornecendo os valores de parâmetro necessários para seu cenário. Se o recurso estiver em um grupo de recursos diferente, forneça a ID do recurso completa. Por exemplo, para fazer referência a uma conta de armazenamento em outro grupo de recursos, use:
Solução 6 - após a exclusão do recurso
Quando você exclui um recurso, pode haver um curto período de tempo em que o recurso aparece no portal, mas não está disponível. Se selecionar o recurso, você receberá a informação de erro Não encontrado.
Atualize o portal e o recurso excluído deve ser removido da lista de recursos disponíveis. Se um recurso excluído continuar a ser mostrado como disponível por mais de alguns minutos, contate o suporte.