Función de creador de política de cuota cero

Descubra cómo utilizar la función predefinida Zero Quota Policy Creator en OCI Functions para crear una política de cuota en compartimentos para evitar la creación de recursos de OCI, y así ayudar a aplicar presupuestos y gestionar el gasto de OCI.

Casos de Uso Común

Cree una política de cuota cero que impida la creación de recursos de OCI después de alcanzar un umbral de gasto. Para ello, realice los dos pasos siguientes:

  • Cree un presupuesto para un compartimento y una regla de alerta de presupuesto para definir una alerta de presupuesto basada en un umbral de gasto real o previsto. Para obtener más información sobre los presupuestos, consulte Gestión de presupuestos.
  • Configure una regla de evento en el compartimento raíz para disparar desde la alerta de presupuesto y llamar a una función creada a partir de esta función predefinida. Para obtener más información sobre las reglas de eventos, consulte Uso de la consola para crear una regla.

Los servicios relacionados con la función Creador de política de cuota cero incluyen:

Ámbito

Las consideraciones de ámbito para esta función incluyen:

  • Esta función incorporada soporta presupuestos creados solo para el ámbito de compartimento. Para obtener más información, consulte Gestión de presupuestos.

Requisitos y recomendaciones

A continuación, se muestran las mejores prácticas al utilizar esta función incorporada:

  • Establezca el tiempo de espera de la función predefinida en 300 segundos.
  • La VCN enlazada a la aplicación facilita el acceso a otros servicios de OCI mediante un gateway de servicio, un gateway de Internet o un gateway de NAT.
  • Cree reglas de eventos solo en el compartimento raíz.
  • Tanto los presupuestos como la política de cuotas son funciones de nivel de arrendamiento. Configure esta función incorporada en la región principal. Cuando esté configurado en la región principal, utilice un gateway de servicio en una VCN.

    Si la función incorporada está configurada en otra región, se necesita un gateway de Internet o un gateway de NAT para realizar llamadas entre regiones.

Configuración de la función de creador de política de cuota cero

Para configurar una función Creador de política de cuota cero, realice los siguientes pasos:

  1. En la página Funciones predefinidas, seleccione Creador de política de cuota cero y, a continuación, seleccione Crear función.
  2. Configure el nombre, el compartimento y la aplicación de la siguiente forma:
    • Nombre: nombre que desea para la nueva función. El nombre debe comenzar con una letra o guion bajo, seguido de letras, números, guiones o guiones bajos. La longitud puede abarcar entre 1 y 255 caracteres. Evite introducir información confidencial.

      Para crear la función en un compartimento diferente, seleccione Cambiar compartimento.

    • Aplicación: seleccione la aplicación en la que desea crear la función.

      Si aún no existe una aplicación adecuada en el compartimento actual, seleccione Crear nueva aplicación y especifique los siguientes detalles:

      • Nombre: nombre de la nueva aplicación. Evite introducir información confidencial.
      • VCN: VCN (red virtual en la nube) en la que se ejecutan funciones en la aplicación. Opcionalmente, seleccione Cambiar compartimento para seleccionar una VCN de otro compartimento.
      • Subredes: subred (o subredes, hasta un máximo de tres) en la que ejecutar funciones. Opcionalmente, seleccione Cambiar compartimento para seleccionar una subred de un compartimento diferente.
      • Unidad: arquitectura de procesador de las instancias informáticas en las que desplegar y ejecutar funciones en la aplicación. Todas las funciones de la aplicación se despliegan y ejecutan en instancias informáticas con la misma arquitectura. La imagen de la función debe contener las dependencias necesarias para la arquitectura que seleccione.
      • Tagging options: If you have permissions to create a resource, then you also have permissions to apply free-form tags to that resource. Para aplicar una etiqueta defined, debe tener permisos para utilizar el espacio de nombres de la etiqueta. Para obtener más información sobre el etiquetado, consulte Etiquetas de recursos. Si no está seguro de si desea aplicar etiquetas, omita esta opción o pregunte a un administrador. Puede aplicar etiquetas más tarde.
  3. Configure la política de IAM para funciones predefinidas.

    Por defecto, OCI Functions crea un grupo dinámico y una política de IAM con las sentencias de política necesarias para ejecutar la función predefinida. No realice cambios para aceptar el comportamiento predeterminado.

    Si no desea que OCI Functions cree automáticamente el grupo dinámico y la política, seleccione No crear un grupo dinámico ni una política de IAM.

    Importante

    Si selecciona la opción No crear un grupo dinámico y una política de IAM, debe definir el grupo dinámico y la política de IAM usted mismo. Para obtener más información, consulte Permisos.
  4. Configure la memoria de la función y los valores de timeout de la siguiente manera:
    • Memoria: la cantidad máxima de memoria que puede utilizar la función mientras se ejecuta, en megabytes. Esta es la memoria disponible para la imagen de la función. (Valor por defecto: 256 MB)
    • Timeout: la cantidad máxima de tiempo durante el que se puede ejecutar la función, en segundos. Si la función no se completa en el tiempo especificado, el sistema cancela la función. (Valor por defecto: 300)
  5. (Opcional) Configure la simultaneidad aprovisionada para minimizar los retrasos iniciales al llamar a la función especificando un número mínimo de llamadas a funciones simultáneas para las que desea que la infraestructura de ejecución esté disponible constantemente. (Valor por defecto: No activado)

    Si se selecciona, especifique el número de unidades de simultaneidad aprovisionadas asignadas a esta función. Por defecto: 20.

    Para obtener más información sobre la simultaneidad aprovisionada, consulte Reducing Initial Latency Using Provisioned Concurrency.

  6. Defina los parámetros de configuración de función como se describe en Parámetros de Configuración.
  7. Opcionalmente, introduzca cualquier etiqueta en la sección Opciones de etiquetado. Si tiene permisos para crear un recurso, también tiene permisos para aplicar etiquetas de formato libre a dicho recurso. Para aplicar una etiqueta defined, debe tener permisos para utilizar el espacio de nombres de la etiqueta. Para obtener más información sobre el etiquetado, consulte Etiquetas de recursos. Si no está seguro de si desea aplicar etiquetas, omita esta opción o pregunte a un administrador. Puede aplicar etiquetas más tarde.
  8. Haga clic en Crear.

El cuadro de diálogo de despliegue muestra las tareas para desplegar la función (consulte Finalización del despliegue de funciones incorporadas).

Opciones de Configuración

Parámetros de Configuración

Nombre Descripción necesario
SERVICE_FAMILY_NAMES Lista separada por comas de los nombres de familia de servicios que se van a utilizar en la sentencia de política de cuota. El valor por defecto incluye todos los apellidos de servicio que soportan el servicio de cuota. Para obtener más información, consulte Cuotas disponibles por servicio. No
PBF_LOG_LEVEL Nivel de registro, las opciones son DEBUG, INFO, WARN y ERROR. El valor por defecto es INFO. No

Permisos

La ejecución de una función requiere determinadas políticas de IAM. Si ha seleccionado la opción No crear un grupo dinámico y una política de IAM al crear la función, debe definir el grupo dinámico y la política de IAM usted mismo.

Para definir las políticas adecuadas, realice los siguientes pasos:

  • Crear un grupo dinámico con la regla:
    ALL {resource.id = '<function_ocid>' , resource.compartment.id = '<compartment_ocid>'}
  • Configure una política de IAM mediante el grupo dinámico:
    Allow dynamic-group <dynamic group name> to read usage-budgets in tenancy
    Allow dynamic-group <dynamic-group-name> to manage quota in tenancy
    Allow dynamic-group <dynamic-group-name> to read limits in tenancy
    Allow dynamic-group <dynamic-group-name> to read compartments in tenancy
Nota

Sustituya <function-ocid> por el OCID de la función que ha creado en los pasos anteriores.
Nota

Sustituya <dynamic-group-name> por el nombre del grupo dinámico que ha creado mediante el OCID de la función.
Nota

Sustituya <compartment_ocid> por el OCID del compartimento que contiene la función.

Llamando a esta función

Puede llamar a la función de las siguientes formas:

  • Cree una regla de evento para confrontar los eventos de gasto de umbral de presupuesto con una regla que cree una política de cuota para evitar la creación de nuevos recursos.

Cuerpo de Respuesta

  • Registros de hora: utilice UTC para evitar problemas de zona horaria.
  • Código: la función devuelve un código 200 si la tarea finaliza correctamente.
  • Estado: la función devuelve "Correcto" como estado si la tarea se completa correctamente.
  • Mensaje: cuerpo de mensaje JSON que incluye información de respuesta específica para la tarea.

Ejemplo

En el siguiente ejemplo se muestran los datos de retorno de JSON:

{
    "startTime": "2023-02-21T05:08:25.275Z",
    "endTime": "2023-02-21T05:08:28.731Z",
    "runTime": "PT3.456S",
    "code": 200,
    "status": "Success",
    "data": {
        "additionalInformation": {
            "Created Quota Policy OCID": "ocid1.quota.oc1..aaaaa..."
        }
    }
}

Solución de Problemas

Códigos de estado comunes de OCI Functions

En la siguiente tabla se resumen los errores comunes de OCI Functions que puede encontrar al trabajar con funciones predefinidas:

Código de Error Mensaje de Error Acción
200 Correcto Ninguna.
404 NotAuthorizedOrNotFound Verifique que las políticas necesarias estén configuradas (consulte Ejecución de comandos de la CLI de Fn Project devuelve un error 404).
444 Timeout

La conexión entre el cliente y OCI Functions se ha interrumpido durante la ejecución de la función (consulte La llamada a una función hace que el cliente informe de un timeout y se muestra un error 444 en los logs de la función). Un reintento podría resolver el problema.

Tenga en cuenta que la mayoría de los clientes tienen un timeout interno de 60 segundos. Incluso cuando el tiempo de espera de la función predefinida se establece en 300 segundos, puede ser necesario lo siguiente:

  • Al utilizar la CLI de OCI: utilice --read-timeout 300
  • Al utilizar el SDK de OCI: defina el timeout de lectura en 300 al crear el cliente
  • Al utilizar DBMS_CLOUD.SEND_REQUEST: utilice UTL_HTTP.set_transfer_timeout(300);

Para obtener más información, consulte Llamada a funciones.

502 504 (varios) La mayoría de los problemas devuelven un código de estado 502 (consulte Llamada a una función devuelve un mensaje de fallo de función y un error 502). Se puede resolver un error 502 con el mensaje "error receive function response" mediante el aumento de la asignación de memoria. Un 502 puede ocurrir ocasionalmente cuando la función está en algún estado transitorio. Un reintento podría resolver el problema.

Para identificar aún más la causa, active las funciones de registro para la función predefinida (consulte Almacenamiento y visualización de logs de funciones). Para obtener información detallada sobre la solución de problemas de una función, consulte Solución de problemas de OCI Functions.

Códigos de estado de función predefinidos del creador de políticas de cuota cero

En la siguiente tabla se resumen los errores que puede encontrar al trabajar con esta función creada previamente:

Código de Error Mensaje de Error Acción
400 La carga útil de función tiene un tipo de evento incorrecto Verifique si el tipo de evento es "AlertRule - Create".

Para identificar aún más la causa, active las funciones de registro para la función predefinida (consulte Almacenamiento y visualización de logs de funciones).

Consejos de análisis de logs

Todas las funciones predefinidas proporcionan una opción para especificar el nivel de registro como parámetro de configuración. Puede definir el nivel de registro en DEBUG para obtener más información.

Dado que una aplicación tiene varias funciones, las entradas del log de funciones predefinidas se identifican con el prefijo "PBF | <PBF NAME> ".

Por ejemplo, una entrada de log para la función creada previamente del generador de trabajos de flujo de trabajo de medios tiene un aspecto similar al siguiente:

"PBF | Media Workflow Job Spawner | INFO | 2023-02-07T18:06:50.809Z | Fetching details from Events JSON"