Grenzen und Quoten
Die Zahlen, die Sie benötigen, bevor Sie eine Funktion entwerfen, und die bekannten Lücken der aktuellen Plattform.
1. Eine Funktion
| Begrenzen | Wert | Woher es kommt |
|---|---|---|
| Name | 1 bis 64 Zeichen unter a-z, A-Z, 0-9, _, - | Wird bei der Bereitstellung erzwungen |
| Quellgröße | 20 MB | Wird bei der Bereitstellung erzwungen |
| Laufzeiten | deno (TypeScript oder JavaScript) und wasm | |
| Erinnerung | 16 bis 1024 MB, Standard 128 | permissions.memory_mb |
| Dauer | 1 bis 300 s, Standard 30 | permissions.timeout_secs |
| Ausgehendes Netzwerk | Standardmäßig offen | permissions.allow_net: wenn nicht leer, sind nur die aufgeführten Hosts erreichbar |
Ein Wert außerhalb der Grenzen wird mit 400 abgelehnt; es wird nie lautlos geklemmt. Echte Antwort für timeout_secs: 0: permissions.timeout_secs doit être compris entre 1 et 300 secondes.
Ändern Sie Berechtigungen ohne erneute Bereitstellung:
Nur die von Ihnen gesendeten Felder ändern sich.
2. Ein Anruf
| Begrenzen | Wert | Quelle |
|---|---|---|
| Anforderungstext | Über 256 KiB | Gemessen: 260 KB bestanden, 300 KB fehlgeschlagen mit 503 |
| Antwortkörper | Über 256 KiB | Gemessen: 250 KB bestanden; 300 KB haben innerhalb von 50 s nichts zurückgegeben |
| Status zwischen Anrufen | Keine | Jeder Anruf wird in einem neuen isolierten V8-Worker ausgeführt |
| Regionen | Eins | Keine Regionsauswahl |
Die Nachricht, die die Plattform überquert, ist auf 1 MiB begrenzt und jedes Byte eines Anforderungstexts zählt viermal, sodass ein Text mit mehr als etwa 256 KiB mit 503 SERVICE_UNAVAILABLE abgelehnt wird. Das SDK meldet es als FunctionsRelayError, was irreführend ist: Ein erneuter Versuch hilft nicht. Eine Antwort über derselben Größe kam in unserem Test überhaupt nicht zurück. Halten Sie Anfragen und Antworten unter 250 KB und senden Sie größere Daten über den Speicher.
3. Quoten bewerten und planen
Aufrufrate pro Client-IP:
| Profil | Wert |
|---|---|
| Platzen | 15 Anrufe |
| Nachhaltig | 1 Anruf pro Sekunde |
In einem echten Durchlauf von 30 Schnellaufrufen gaben 15 200 und 15 429 zurück. Ein 429 trägt die Header x-ratelimit-* und retry-after und das SDK macht die Verzögerung als error.retryAfter verfügbar.
Monatliche Kontingente pro Plan, aus der Plantabelle der Plattform:
| Planen | Anrufungen | Gesamtdauer |
|---|---|---|
| Kostenlos | 100,000 | 6.000.000 ms (100 Min.) |
| Profi | 1,000,000 | 60.000.000 ms (1.000 Min.) |
| Team | 10,000,000 | 600.000.000 ms (10.000 Minuten) |
| Unternehmen | 100,000,000 | 6.000.000.000 ms (100.000 Minuten) |
Im Free-Tarif ist das Limit schwierig: Ein darüber hinausgehender Anruf wird mit 403 QUOTA_EXCEEDED abgelehnt. Bei kostenpflichtigen Plänen ist die Tabelle die monatliche Vergütung. Was darüber hinaus geschieht, hängt von der Überschreitungseinstellung Ihres Abonnements ab. Ein Anruf wird gezählt, sobald Ihre Funktion geantwortet hat, unabhängig von ihrem Status. Ein Aufruf, der fehlschlägt, bevor die Funktion antwortet, wird nicht gezählt. Jobs und Cron-Firings gelten ebenfalls als Aufrufe.
4. Jobs, Cron und Benachrichtigungen
| Begrenzen | Wert |
|---|---|
| Arbeitsversuche | 3 standardmäßig, pro Job mit maxAttempts festgelegt |
| Verzögerung zwischen Versuchen | 5 s, behoben |
| Parallele Jobs pro Dienstinstanz | 8 standardmäßig |
| Laufender Mietvertrag | 450 s, dann wird der Auftrag zurückgefordert |
| Abgeschlossene Aufträge bleiben erhalten | Standardmäßig 14 Tage |
listJobs Seite | 1 bis 500, Standard 50 |
| Cron-Zeitplan | 5 oder 6 Felder, UTC, keine Aliase |
| Alarmprüfung | Alle 60 s |
Diese Jobwerte sind Diensteinstellungen: JOB_MAX_RETRIES, JOB_RETRY_DELAY_SECS, WORKER_CONCURRENCY, JOB_RUNNING_LEASE_SECS und JOB_RETENTION_DAYS. Fragen Sie Ihren Plattformbetreiber nach den Vorteilen einer verwalteten Bereitstellung.
5. Bekannte Lücken
- Kein Zugriff auf die eigenen Protokolle einer Funktion. Was eine Funktion mit
console.logoderconsole.errorschreibt, bleibt in den Protokollen der Laufzeit, die nur der Plattformbetreiber lesen kann.aura functions logszeigt Anfragen (Methode, Pfad, Status, Dauer, Anfrage-ID), nicht die Ausgabe. Geben Sie die benötigten Informationen in der Antwort zurück oder senden Sie sie an Ihren eigenen Protokollierungsdienst. - Keine Anforderungs-ID innerhalb der Funktion. Die Kennung eines Aufrufs wird nicht an die Funktion weitergeleitet.
- Keine Versionen oder Rollback. Durch die Bereitstellung wird der Code ersetzt. Behalten Sie die vorherige Version in Ihrem Repository.
- Kein Streaming. Die gesamte Antwort wird gepuffert, bevor sie das SDK erreicht.
- Ein leeres
allow_netschränkt nichts ein. Das Netzwerk ist standardmäßig offen; führen Sie Ihre Hosts auf, um es einzuschränken. - Die lokale Emulation ist teilweise.
aura functions serveführt Ihre Datei mit Deno aus, reproduziert jedoch nicht die Plattformroute, Header oder Grenzwerte.