As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Enviando registros usando o endpoint NDJSON (ND-JSON Logs)
O endpoint ND-JSON Logs (/ingest/bulk) aceita registros no formato NDJSON (Newline Delimited JSON)
Se você estiver usando a autenticação do token do portador, conclua as etapas de configuração Configurando a autenticação do token do portador antes de continuar.
Formato de solicitação
Envie um valor JSON por linha, separado por \n (LF) ou \r\n (CRLF). As linhas vazias são ignoradas silenciosamente.
{"timestamp":1771007942000,"message":"event one","level":"INFO"} {"timestamp":1771007943000,"message":"event two","level":"ERROR"} {"timestamp":1771007944000,"message":"event three","level":"DEBUG"}
Ambos application/json application/x-ndjson são aceitos como o tipo de conteúdo.
Tipos de valores JSON aceitos
De acordo com a especificação NDJSON (RFC 8259), qualquer valor JSON válido é aceito em cada linha.
Objetos JSON (mais comuns):
{"timestamp":1771007942000,"message":"User logged in","service":"auth"} {"timestamp":1771007943000,"error":"Connection timeout","service":"api"}
Matrizes JSON (agrupadas em eventos individuais):
[{"timestamp":1000,"message":"a"},{"timestamp":2000,"message":"b"}]
Essa única linha produz 2 eventos. Cada elemento da matriz se torna um evento de log separado.
Valores primitivos:
"a plain string log message" 42 true null
Cada primitivo se torna seu próprio evento com a data e hora atual do servidor.
Tipos mistos:
{"timestamp":1771007942000,"message":"structured event"} "unstructured string message" 42 {"timestamp":1771007943000,"error":"something failed"}
Todas as 4 linhas são aceitas como eventos válidos.
| Conteúdo da linha | Comportamento |
|---|---|
| Objeto JSON | Aceito, carimbo de data/hora extraído, se presente |
| matriz JSON | Achatado — cada elemento se torna um evento separado |
Matriz vazia [] |
Aceito, produz 0 eventos |
| Cadeia de caracteres JSON | Aceito como mensagem do evento |
| Número JSON | Aceito como mensagem do evento |
| Booleano JSON | Aceito como mensagem do evento |
| JSON nulo | Aceito como mensagem do evento |
| JSON inválido | Ignorado (contado, o processamento continua) |
| Linha vazia | Ignorado (não contado como ignorado) |
Campo de carimbo de data/hora
O "timestamp" campo está em milissegundos de época (não segundos).
| Formato | Exemplo | Interpretada como |
|---|---|---|
| Numérico (millis) | "timestamp":1771007942000 |
1771007942000 ms |
| Missing (Ausente) | (sem campo de carimbo de data/hora) | Hora atual do servidor |
| Não numérico | "timestamp":"invalid" |
Hora atual do servidor |
| Linha sem objeto | "hello", 42, true |
Hora atual do servidor |
Linhas inválidas
As linhas que não são JSON válidas são ignoradas e contadas silenciosamente. O processamento continua com a próxima linha.
{"message":"valid event"} this is not valid json {"message":"another valid event"}
Resultado: 2 eventos ingeridos, 1 ignorado. Retorna HTTP 200.
Se todas as linhas forem inválidas, retorna HTTP 400 com"All events were invalid".
Exemplo de solicitação
curl -X POST "https://logs.<region>.amazonaws.com/ingest/bulk?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/x-ndjson" \ -d '{"timestamp":1771007942000,"message":"User logged in","level":"INFO"} {"timestamp":1771007943000,"message":"Query took 42ms","level":"DEBUG"} {"timestamp":1771007944000,"error":"Connection refused","level":"ERROR"}'
Respostas
Sucesso (todos os eventos são aceitos):
HTTP 200 OK {}
Sucesso parcial (alguns eventos foram rejeitados):
{ "partialSuccess": { "rejectedLogRecords": 5, "errorMessage": "{\"tooOldLogEventCount\": 3, \"tooNewLogEventCount\": 1, \"expiredLogEventCount\": 1}" } }
O rejectedLogRecords campo é o número total de eventos rejeitados. O errorMessage campo contém um detalhamento codificado em JSON por motivo de rejeição:
tooOldLogEventCount— Eventos com carimbos de data/hora anteriores ao período de retençãotooNewLogEventCount— Eventos com timestamps muito distantes no futuroexpiredLogEventCount— Eventos que expiraram durante o processamento
Práticas recomendadas
eventos em lotes
Para melhor desempenho e eficiência:
Agrupe vários eventos em uma única solicitação, quando possível
Tamanho de lote recomendado: 10 a 100 eventos por solicitação
Tamanho máximo da solicitação: 1 MB
Tratamento de erros
Implemente o tratamento adequado de erros em seu aplicativo. Códigos de status HTTP comuns:
200 OK— Registros ingeridos com sucesso400 Bad Request— Formato ou parâmetros de solicitação inválidos401 Unauthorized— Token de portador inválido ou expirado403 Forbidden— Permissões insuficientes404 Not Found— O grupo de log ou stream não existe429 Too Many Requests— Limite de taxa excedido500 Internal Server Error— Erro de serviço (tente novamente com recuo exponencial)
Limitações
Tamanho máximo do evento: 256 KB por evento
Tamanho máximo da solicitação: 1 MB
Máximo de eventos por solicitação: 10.000
Os nomes dos grupos de registros devem seguir as convenções de nomenclatura de CloudWatch registros
A autenticação do token do portador deve ser ativada no grupo de registros se a autenticação do token do portador for usada.