Solución de problemas del entorno de ejecución del restablecimiento de cuotas

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

InvalidRLPolicy

Código de error

policies.resetquota.InvalidRLPolicy

Cuerpo de la respuesta del error

{
    "fault": {
        "faultstring": "Invalid rate limit policy quota_policy_name",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "Invalid rate limit policy MyQuotaPolicy",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

Causa

Este error se produce si la política de cuota que se especifica en el elemento <Quota> de la política de restablecimiento de cuotas no se define en el proxy de API. El elemento <Quota> es obligatorio e identifica la política de cuota de destino cuyo recuento debe actualizarse a través de la política de restablecimiento de cuotas. En esta política de cuotas de destino, se debe crear y definir dentro del mismo proxy de API y debe estar disponible durante el flujo.

Por ejemplo, supongamos que el elemento <Quota> se define como se muestra a continuación, pero si MyQuotaPolicy no está definido en el proxy de API, se muestra el error anterior.

<Quota name="MyQuotaPolicy">

Diagnóstico

  1. Identifica el nombre de política de cuota no válido que se especifica en la política de restablecimiento de cuotas. Puedes encontrar el nombre de la política de cuotas en la string con errores. Por ejemplo, en la siguiente string con errores, el nombre de la política de cuotas es MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Examina cada una de las políticas de restablecimiento de cuotas en el proxy de API en el que se produjo el error. Identifica la política de restablecimiento de cuotas determinada en la que la política de cuotas especificada en el elemento obligatorio <Quota> coincide con el nombre identificado en el paso 1 anterior.

    Por ejemplo, la siguiente política de restablecimiento de cuotas especifica una política de cuotas llamada MyQuotaPolicy, que coincide con lo que está en la string con errores:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
           <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    
    
  3. Determina si se crea y define esta política de cuota en el mismo proxy de API. Si la política de cuotas no existe dentro del mismo proxy de API, entonces esa es la causa del error.

    En el ejemplo anterior, la política de cuota MyQuotaPolicy debe existir en el flujo antes de que se ejecute la política de restablecimiento de cuotas Reset_Quota_Demo.

    Debido a que la política de cuotas MyQuotaPolicy no existe en el flujo, recibirás el siguiente código de error:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Resolución

Asegúrate de que la política de cuotas declarada en el elemento <Quota> se defina en el proxy de API. Esta política de cuotas de destino debe estar disponible cuando se ejecuta la política de restablecimiento de cuotas.

FailedToResolveAllowCountRef

Código de error

policies.resetquota.FailedToResolveAllowCountRef

Cuerpo de la respuesta del error

Failed to resolve allow count reference reference_name for identifier identifier_name
in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision:
revision_number;Environment:env_name;Organization:org_name

Ejemplo de mensaje de error

Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo

El error que se muestra al cliente será el siguiente: policies.ratelimit.QuotaViolation.

Causa

Este error se produce si la referencia a la variable que contiene el recuento permitido en el elemento <Allow> de la política no se puede resolver en un valor. Este elemento es obligatorio y especifica el importe para reducir el recuento de cuotas.

Diagnóstico

  1. Identifica la política de restablecimiento de cuotas en la que se generó el error y el nombre de la variable de referencia que no se puede resolver. Puedes encontrar ambos elementos en la respuesta de error.

    Por ejemplo, en la siguiente string con errores, el nombre de la política es ResetQuota y la referencia es request.header.allowcount:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    
  2. En el archivo XML de la política de restablecimiento de cuotas, verifica que el nombre de la variable de referencia que se usa coincida con el nombre de referencia identificado en la respuesta de error (paso 1 anterior).

    Por ejemplo, con la siguiente política, se establece el elemento con la referencia llamada request.header.allowcount, que coincide con lo que hay en el error:

    <ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota">
        <DisplayName>ResetQuota</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
            <Identifier name="identifierName">
                <Allow ref="request.header.allowcount"/>
            </Identifier>
        </Quota>
    </ResetQuota>
    
  3. Determina si la variable de referencia está definida y disponible en el flujo en el que se ejecuta la política de restablecimiento de cuotas.

  4. Verifica si la variable tiene una de las siguientes características:

    1. fuera de alcance (no disponible en el flujo específico en el que se ejecuta la política) o
    2. no se pueden resolver (no está definido)

    entonces esa es la causa del error.

    En el ejemplo anterior, el valor del recuento permitido en el elemento <Allow> se debería recuperar del encabezado de solicitud llamado allowcount. Sin embargo, Edge no puede resolver request.header.allowcount. Esto sucede si no se pasa el encabezado allowcount como parte de la solicitud a la API.

    La siguiente es una solicitud a la API de muestra que no pasa el encabezado allowcount como parte de la solicitud:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    Debido a que el encabezado allowcount no se pasa como parte de la solicitud, la variable request.header.allowcount que se usa en el elemento <Allow> en la política de restablecimiento de cuotas anterior no está definida y, por lo tanto, no se puede resolver. Por lo tanto, recibirás la respuesta de error:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    

Resolución

Asegúrate de que la variable a la que se hace referencia en el elemento <Allow> exista o esté definida y disponible en el flujo específico, en el que se ejecuta la política de restablecimiento de cuotas.

Para corregir el ejemplo anterior, puedes modificar la solicitud a fin de que incluya el encabezado allowcount, como se muestra a continuación:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"

FailedToResolveRLPolicy

Código de error

policies.resetquota.FailedToResolveRLPolicy

Cuerpo de la respuesta del error

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

Causa

Este error se produce si no se puede resolver la variable a la que se hace referencia en el atributo ref del elemento <Quota>.

Por ejemplo, si el atributo ref se configura como request.header.quotapolicy en el elemento <Quota>, pero no está disponible en el flujo del proxy de API, se mostrará el error anterior.

<Quota ref="request.header.quotapolicy">

Diagnóstico

  1. Examina cada una de las políticas de restablecimiento de cuotas en el proxy de API en el que se produjo el error e identifica la política de restablecimiento de cuotas en el que no se puede resolver el nombre de la variable de referencia especificada en el elemento <Quota> de forma correcta.

  2. Determina si la variable está definida y disponible en el flujo en el que se ejecuta la política de restablecimiento de cuotas.

  3. Verifica si la variable tiene una de las siguientes características:

    1. fuera del alcance (no disponible en el flujo específico en el que se ejecuta la política) o
    2. no se puede resolver (no está definido)

    entonces esa es la causa del error.

    En el ejemplo que se muestra a continuación, se supone que el nombre de la política de cuota de destino se recupera del encabezado de la solicitud llamado quotapolicy. Sin embargo, Edge no puede resolver la request.header.quotapolicy. Esto sucede si no se pasa el encabezado quotapolicy como parte de la solicitud a la API.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota ref="request.header.quotapolicy">
            <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    

    La siguiente es una solicitud a la API de muestra que no pasa el encabezado quotapolicy como parte de la solicitud:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    Debido a que el encabezado quotapolicy no se pasa como parte de la solicitud, request.header.quotapolicy de referencia que se usa en el elemento <Quota> en la política de restablecimiento de cuotas no está definida y no se puede resolver. Como resultado, recibirás la siguiente respuesta de error:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Resolución

Asegúrate de que el atributo ref al que se hace referencia en el elemento <Quota> se resuelva en el entorno de ejecución y que esté disponible en el flujo específico, en el que se ejecuta la política de restablecimiento de cuotas.

Para corregir el ejemplo anterior, puedes modificar la solicitud a fin de incluir el encabezado quotapolicy como se muestra a continuación:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"