Problemas de limitação de solicitação e HTTP 403 – Problemas proibidos

Referindo-se ao artigo sobre o Azure Gerenciamento de API Série de Solução de Problemas, este é o quinto cenário do laboratório. Verifique se você seguiu as instruções de instalação do laboratório de acordo com isso, para recriar o problema.

Versão original do produto: Gerenciamento de API Service
Número de KB original: 4464928

Sintomas

A API de Recursos busca os detalhes pessoais do usuário, postagens nas redes sociais, comentários e fotos e utiliza a resposta retornada para um projeto de machine learning. Estranhamente, depois de alguns dias de uso, a operação GetPosts começou a lançar HTTP 403 – Erro proibido , enquanto as outras operações estão funcionando bem conforme o esperado.

{
"statusCode": 403,
"message": "Proibido"
}

Além do acima, também estamos encontrando o erro HTTP 429 – Muitas solicitações ao invocar a operação GetComments para cada segunda solicitação. O problema obtém automaticamente resolve após 10 segundos, no entanto, ele ocorre novamente quando a primeira chamada à API é feita novamente. O comportamento não é observado para as outras operações.

{
"statusCode": 429,
"message": "Limite de taxa é excedido. Tente novamente em 5 segundos."
}

Etapas para a solução de problemas

  • HTTP 403 – Erro proibido pode ser gerado quando há qualquer política de restrição de acesso implementada.

  • Verifique o rastreamento do inspetor APIM e você deve observar a existência de uma política de "filtro ip" que filtra chamadas (permite/nega) de endereços IP específicos e/ou intervalos de endereços.

  • Para marcar o escopo da política de "filtro ip", selecione o botão Calcular política efetiva. Se você não vir nenhuma política de restrição de acesso implementada em nenhum escopo, a próxima etapa de validação deverá ser feita no nível do produto, navegando até o produto associado e clique na opção Políticas.

    <inbound>
        <base />
        <choose>
            <when condition="@(context.Operation.Name.Equals("GetPosts"))">
                <ip-filter action="forbid">
                    <address-range from="0.0.0.0" to="255.255.255.255" />
                </ip-filter>
            </when>
        </choose>
    </inbound>
    
  • Para o segundo problema (HTTP 429 – Solicitações demais), seguiremos o mesmo procedimento verificando o rastreamento e o marcar do inspetor APIM se houver alguma política de "limite de taxa" ou "limite de taxa por chave" implementada em qualquer escopo.

  • Se você calcular a política efetiva, deverá observar uma política de restrição de acesso (limite de taxa por chave) implementada no escopo global, ou seja, em "Processamento de entrada" na opção "Todas as APIs".

    <inbound>
        <choose>
            <when condition="@(context.Operation.Name.Equals("GetComments"))">
                <rate-limit-by-key calls="1" renewal-period="10" increment-condition="@(context.Response.StatusCode == 200)" counter-key="@(context.Request.IpAddress)" />
            </when>
        </choose>
    </inbound>
    

Leia mais sobre políticas ip-filter e rate-limit-by-key no APIM.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.