Límites y cuotas
Los números que necesita antes de diseñar una función y las lagunas conocidas de la plataforma actual.
1. Una función
| Límite | Valor | de donde viene |
|---|---|---|
| Nombre | 1 a 64 caracteres entre a-z, A-Z, 0-9, _, - | Aplicado en el despliegue |
| Tamaño de fuente | 20 megas | Aplicado en el despliegue |
| Tiempos de ejecución | deno (TypeScript o JavaScript) y wasm | |
| Memoria | 16 a 1024 MB, predeterminado 128 | permissions.memory_mb |
| Duración | 1 a 300 s, predeterminado 30 | permissions.timeout_secs |
| Red saliente | Abierta por defecto | permissions.allow_net: si no está vacío, solo se puede acceder a los hosts enumerados |
Un valor fuera de los límites se rechaza con 400; nunca se sujeta silenciosamente. Respuesta real para timeout_secs: 0: permissions.timeout_secs doit être compris entre 1 et 300 secondes.
Cambiar permisos sin volver a implementar:
Sólo cambian los campos que envías.
2. Una llamada
| Límite | Valor | Fuente |
|---|---|---|
| Cuerpo de la solicitud | Acerca de 256 KiB | Medido: 260 KB aprobados, 300 KB fallidos con 503 |
| Cuerpo de respuesta | Acerca de 256 KiB | Medido: 250 KB pasados; 300 KB no devolvieron nada en 50 s |
| Estado entre llamadas | Ninguno | Cada llamada se ejecuta en un nuevo trabajador V8 aislado |
| Regiones | uno | Sin selección de región |
El mensaje que cruza la plataforma está limitado a 1 MiB y cada byte del cuerpo de una solicitud cuenta cuatro veces, por lo que un cuerpo superior a unos 256 KiB se rechaza con 503 SERVICE_UNAVAILABLE. El SDK lo informa como FunctionsRelayError, lo cual es engañoso: volver a intentarlo no ayuda. Una respuesta superior al mismo tamaño no obtuvo resultados en nuestra prueba. Mantenga las solicitudes y respuestas por debajo de 250 KB y envíe datos más grandes a través del Almacenamiento.
3. Tarifar y planificar cuotas
Tasa de invocación, por IP de cliente:
| Perfil | Valor |
|---|---|
| Explosión | 15 llamadas |
| sostenido | 1 llamada por segundo |
En una serie real de 30 llamadas rápidas, 15 devolvieron 200 y 15 devolvieron 429. Un 429 lleva encabezados x-ratelimit-* y retry-after, y el SDK expone el retraso como error.retryAfter.
Cuotas mensuales por plan, de la tabla de planes de la plataforma:
| Planificar | Invocaciones | Duración total |
|---|---|---|
| Gratis | 100,000 | 6.000.000 ms (100 minutos) |
| profesional | 1,000,000 | 60.000.000 ms (1.000 minutos) |
| equipo | 10,000,000 | 600.000.000 ms (10.000 minutos) |
| Empresa | 100,000,000 | 6.000.000.000 ms (100.000 min) |
En el plan gratuito, el límite es estricto: una llamada más allá de ese límite se rechaza con 403 QUOTA_EXCEEDED. En los planes pagos, la tabla es la asignación mensual y lo que sucede más allá depende de la configuración de excedente de su suscripción. Una llamada se cuenta una vez que su función ha respondido, cualquiera que sea su estado. Una llamada que falla antes de que responda la función no se cuenta. Los trabajos y los despidos de cron también cuentan como invocaciones.
4. Trabajos, cron y alertas
| Límite | Valor |
|---|---|
| Intentos de trabajo | 3 de forma predeterminada, configurado por trabajo con maxAttempts |
| Retraso entre intentos | 5 s, fijo |
| Trabajos paralelos por instancia de servicio | 8 por defecto |
| Arrendamiento en ejecución | 450 s, luego se recupera el trabajo |
| Se mantienen los trabajos terminados | 14 días por defecto |
página listJobs | 1 a 500, predeterminado 50 |
| programación cron | 5 o 6 campos, UTC, sin alias |
| Verificación de alerta | Cada 60 s |
Estos valores de trabajo son configuraciones de servicio: JOB_MAX_RETRIES, JOB_RETRY_DELAY_SECS, WORKER_CONCURRENCY, JOB_RUNNING_LEASE_SECS y JOB_RETENTION_DAYS. Pregunte a su operador de plataforma los valores de una implementación gestionada.
5. Lagunas conocidas
- No hay acceso a los registros propios de una función. Lo que una función escribe con
console.logoconsole.errorpermanece en los registros del tiempo de ejecución, que solo el operador de la plataforma puede leer.aura functions logsmuestra las solicitudes (método, ruta, estado, duración, ID de la solicitud), no esa salida. Devuelva la información que necesita en la respuesta o envíela a su propio servicio de registro. - No hay identificación de solicitud dentro de la función. El identificador de una llamada no se reenvía a la función.
- Sin versiones ni reversión. La implementación reemplaza el código. Mantenga la versión anterior en su repositorio.
- Sin transmisión. Toda la respuesta se almacena en el búfer antes de llegar al SDK.
- Un
allow_netvacío no restringe nada. La red está abierta por defecto; enumere sus hosts para restringirla. - La emulación local es parcial.
aura functions serveejecuta su archivo con Deno pero no reproduce la ruta, los encabezados ni los límites de la plataforma.