기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
구조화된 JSON 엔드포인트를 사용하여 로그 전송(구조화된 JSON 로그)
구조화된 JSON 로그 엔드포인트(/ingest/json)는 단일 JSON 객체 또는 객체의 JSON 배열인 표준 JSON을 허용합니다. 이 엔드포인트는 각 이벤트가 JSON 객체인 구조화된 로그 데이터를 위해 설계되었습니다.
보유자 토큰 인증을 사용하는 경우 계속하기 보유자 토큰 인증 설정 전에의 설정 단계를 완료합니다.
요청 형식
application/json 만 Content-Type으로 허용됩니다.
단일 JSON 객체:
{"timestamp":1771007942000,"message":"single event","level":"INFO"}
객체의 JSON 배열:
[ {"timestamp":1771007942000,"message":"event one","level":"INFO"}, {"timestamp":1771007943000,"message":"event two","level":"ERROR"} ]
허용되는 JSON 값 유형
이 엔드포인트는 엄격합니다. JSON 객체만 이벤트로 허용됩니다.
| Input | 동작 |
|---|---|
| 단일 JSON 객체 | 하나의 이벤트로 수락됨 |
| 객체의 JSON 배열 | 각 객체는 별도의 이벤트가 됩니다. |
빈 배열 [] |
수락됨, 이벤트 0개 생성 |
| 배열의 비객체(문자열, 숫자 등) | 건너뜀 |
최상위 프리미티브("hello", 42) |
건너뜀 |
연결된 객체 {...}{...} |
첫 번째 객체만 구문 분석됨 |
예 - 혼합 유형이 있는 배열:
[ {"timestamp":1771007942000,"message":"valid object"}, "just a string", 42, {"timestamp":1771007943000,"message":"another valid object"} ]
결과: 수집된 이벤트 2개(객체), 건너뛴 이벤트 2개(문자열 및 숫자).
타임스탬프 필드
"timestamp" 필드는 NDJSON 엔드포인트와 동일한 에포크 밀리초 단위입니다.
| 형식 | 예제 | 다음으로 해석됨 |
|---|---|---|
| 숫자(millis) | "timestamp":1771007942000 |
1771007942000ms |
| 누락됨 | (타임스탬프 필드 없음) | 서버 현재 시간 |
| 숫자가 아닌 | "timestamp":"invalid" |
서버 현재 시간 |
요청 예제
curl -X POST "https://logs.<region>.amazonaws.com/ingest/json?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/json" \ -d '[{"timestamp":1771007942000,"message":"User logged in","user_id":"u-123"},{"timestamp":1771007943000,"message":"Order placed","order_id":"o-456"}]'
응답
성공(모든 이벤트 수락됨):
HTTP 200 OK {}
부분 성공(일부 이벤트가 거부됨):
{ "partialSuccess": { "rejectedLogRecords": 5, "errorMessage": "{\"tooOldLogEventCount\": 3, \"tooNewLogEventCount\": 1, \"expiredLogEventCount\": 1}" } }
rejectedLogRecords 필드는 거부된 총 이벤트 수입니다. errorMessage 필드에는 거부 이유별 JSON 인코딩 분류가 포함되어 있습니다.
tooOldLogEventCount- 보존 기간보다 오래된 타임스탬프가 있는 이벤트tooNewLogEventCount- 타임스탬프가 너무 먼 미래의 이벤트expiredLogEventCount- 처리 중에 만료된 이벤트
모범 사례
이벤트 일괄 처리
성능 및 효율성 향상을 위해:
가능한 경우 단일 요청으로 여러 이벤트 배치
권장 배치 크기: 요청당 이벤트 10~100개
최대 요청 크기: 1MB
오류 처리
애플리케이션에서 적절한 오류 처리를 구현합니다. 일반적인 HTTP 상태 코드:
200 OK- 로그가 성공적으로 수집됨400 Bad Request- 잘못된 요청 형식 또는 파라미터401 Unauthorized- 유효하지 않거나 만료된 보유자 토큰403 Forbidden- 권한 부족404 Not Found- 로그 그룹 또는 스트림이 존재하지 않음429 Too Many Requests- 속도 제한 초과500 Internal Server Error- 서비스 오류(지수 백오프로 재시도)
제한 사항
최대 이벤트 크기: 이벤트당 256KB
최대 요청 크기: 1MB
요청당 최대 이벤트 수: 10,000
로그 그룹 이름은 CloudWatch Logs 명명 규칙을 따라야 합니다.
보유자 토큰 인증을 사용하는 경우 로그 그룹에서 보유자 토큰 인증을 활성화해야 합니다.