Limites e cotas
Os números necessários antes de projetar uma função e as lacunas conhecidas da plataforma atual.
1. Uma função
| Limite | Valor | De onde vem |
|---|---|---|
| Nome | 1 a 64 caracteres entre a-z, A-Z, 0-9, _, - | Aplicado na implantação |
| Tamanho da fonte | 20MB | Aplicado na implantação |
| Tempos de execução | deno (TypeScript ou JavaScript) e wasm | |
| Memória | 16 a 1024 MB, padrão 128 | permissions.memory_mb |
| Duração | 1 a 300 s, padrão 30 | permissions.timeout_secs |
| Rede de saída | Aberta por padrão | permissions.allow_net: se não estiver vazio, só os hosts listados são acessíveis |
Um valor fora dos limites é recusado com 400; nunca é preso silenciosamente. Resposta real para timeout_secs: 0: permissions.timeout_secs doit être compris entre 1 et 300 secondes.
Altere as permissões sem reimplantar:
Somente os campos que você envia mudam.
2. Uma ligação
| Limite | Valor | Fonte |
|---|---|---|
| Solicitar corpo | Cerca de 256 KiB | Medido: 260 KB aprovados, 300 KB falhados com 503 |
| Corpo de resposta | Cerca de 256 KiB | Medido: 250 KB aprovados; 300 KB não retornaram nada em 50 segundos |
| Estado entre chamadas | Nenhum | Cada chamada é executada em um novo trabalhador V8 isolado |
| Regiões | Um | Nenhuma seleção de região |
A mensagem que atravessa a plataforma é limitada a 1 MiB e cada byte do corpo da requisição conta quatro vezes, portanto um corpo acima de cerca de 256 KiB é rejeitado com 503 SERVICE_UNAVAILABLE. O SDK relata isso como FunctionsRelayError, o que é enganoso: tentar novamente não pode ajudar. Uma resposta acima do mesmo tamanho não retornou em nosso teste. Mantenha solicitações e respostas abaixo de 250 KB e envie dados maiores por meio do Storage.
3. Tarifar e planejar cotas
Taxa de invocação, por IP do cliente:
| Perfil | Valor |
|---|---|
| Explosão | 15 chamadas |
| Sustentado | 1 chamada por segundo |
Em uma execução real de 30 chamadas rápidas, 15 retornaram 200 e 15 retornaram 429. Um 429 carrega cabeçalhos x-ratelimit-* e retry-after, e o SDK expõe o atraso como error.retryAfter.
Cotas mensais por plano, da tabela de planos da plataforma:
| Plano | Invocações | Duração total |
|---|---|---|
| Grátis | 100,000 | 6.000.000 ms (100 minutos) |
| Pró | 1,000,000 | 60.000.000 ms (1.000 minutos) |
| Equipe | 10,000,000 | 600.000.000 ms (10.000 minutos) |
| Empresa | 100,000,000 | 6.000.000.000 ms (100.000 minutos) |
No plano Gratuito o limite é difícil: uma chamada além dele é recusada com 403 QUOTA_EXCEEDED. Nos planos pagos a tabela é o valor mensal, e o que acontece além dela depende da configuração de excedente da sua assinatura. Uma chamada é contada assim que sua função for atendida, qualquer que seja seu status. Uma chamada que falha antes da função responder não é contada. Jobs e disparos cron também contam como invocações.
4. Jobs, cron e alertas
| Limite | Valor |
|---|---|
| Tentativas de trabalho | 3 por padrão, definido por trabalho com maxAttempts |
| Atraso entre tentativas | 5s, fixo |
| Jobs paralelos por instância de serviço | 8 por padrão |
| Locação em execução | 450 s, então o trabalho é recuperado |
| Trabalhos concluídos mantidos | 14 dias por padrão |
listJobs página | 1 a 500, padrão 50 |
| Cronograma Cron | 5 ou 6 campos, UTC, sem aliases |
| Verificação de alerta | A cada 60 segundos |
Esses valores de trabalho são configurações de serviço: JOB_MAX_RETRIES, JOB_RETRY_DELAY_SECS, WORKER_CONCURRENCY, JOB_RUNNING_LEASE_SECS e JOB_RETENTION_DAYS. Pergunte ao operador da plataforma os valores de uma implantação gerenciada.
5. Lacunas conhecidas
- Sem acesso aos próprios logs de uma função. O que uma função escreve com
console.logouconsole.errorpermanece nos logs do tempo de execução, que somente o operador da plataforma pode ler.aura functions logsmostra solicitações (método, caminho, status, duração, ID da solicitação), não essa saída. Retorne as informações necessárias na resposta ou envie-as para seu próprio serviço de registro. - Nenhum ID de solicitação dentro da função. O identificador de uma chamada não é encaminhado para a função.
- Sem versões ou reversão. A implantação substitui o código. Mantenha a versão anterior em seu repositório.
- Sem transmissão. Toda a resposta é armazenada em buffer antes de chegar ao SDK.
- Um
allow_netvazio não restringe nada. A rede é aberta por padrão; liste seus hosts para restringi-la. - A emulação local é parcial.
aura functions serveexecuta seu arquivo com Deno mas não reproduz a rota, cabeçalhos ou limites da plataforma.