Lambda 텔레메트리 API Event 스키마 참조 - AWS Lambda

Lambda 텔레메트리 API Event 스키마 참조

Lambda 텔레메트리 API 엔드포인트를 사용하여 텔레메트리 스트림에 대한 확장을 구독할 수 있습니다. AWS_LAMBDA_RUNTIME_API 환경 변수에서 텔레메트리 API 엔드포인트를 검색할 수 있습니다. API 요청을 보내려면 API 버전(2022-07-01/) 및 telemetry/를 추가합니다. 예:

http://${AWS_LAMBDA_RUNTIME_API}/2022-07-01/telemetry/

구독 응답 버전 2022-12-13의 OpenAPI 사양(OAS) 정의는 다음을 참조하세요.

다음 표에는 텔레메트리 API가 지원하는 모든 유형의 Event 객체가 요약되어 있습니다.

범주 이벤트 유형 설명 이벤트 레코드 스키마

플랫폼 이벤트

platform.initStart

함수 초기화가 시작되었습니다.

platform.initStart 스키마

플랫폼 이벤트

platform.initRuntimeDone

함수 초기화가 완료되었습니다.

platform.initRuntimeDone 스키마

플랫폼 이벤트

platform.initReport

함수 초기화 보고서입니다.

platform.initReport 스키마

플랫폼 이벤트

platform.start

함수 호출이 시작되었습니다.

platform.start 스키마

플랫폼 이벤트

platform.runtimeDone

런타임이 이벤트 처리를 성공 또는 실패로 완료했습니다.

platform.runtimeDone 스키마

플랫폼 이벤트

platform.report

함수 호출 보고서입니다.

platform.report 스키마

플랫폼 이벤트

platform.restoreStart

런타임 복원이 시작되었습니다.

platform.restoreStart 스키마

플랫폼 이벤트

platform.restoreRuntimeDone

런타임 복원이 완료되었습니다.

platform.restoreRuntimeDone 스키마

플랫폼 이벤트

platform.restoreReport

런타임 복원 보고서.

platform.restoreReport 스키마

플랫폼 이벤트

platform.telemetrySubscription

텔레메트리 API를 구독하는 확장입니다.

platform.telemetrySubscription 스키마

플랫폼 이벤트

platform.logsDropped

Lambda가 로그 항목을 삭제했습니다.

platform.logsDropped 스키마

함수 로그

function

함수 코드의 로그 줄입니다.

function 스키마

익스텐션 로그

extension

확장 코드의 로그 줄입니다.

extension 스키마

텔레메트리 API Event 객체 유형

이 섹션에서는 Lambda 텔레메트리 API가 지원하는 Event 객체 유형을 자세히 설명합니다. 이벤트 설명에서 물음표(?)는 해당 속성이 객체에 없을 수 있음을 나타냅니다.

platform.initStart

platform.initStart 이벤트는 함수 초기화 단계가 시작되었음을 나타냅니다. platform.initStart Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.initStart - record: PlatformInitStart

PlatformInitStart 객체에는 다음 속성이 있습니다.

  • functionName - String

  • functionVersion - String

  • initializationTypeInitType 객체

  • instanceId? - String

  • instanceMaxMemory? - Integer

  • phaseInitPhase 객체

  • runtimeVersion?String

  • runtimeVersionArn?String

다음은 platform.initStart 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.initStart", "record": { "initializationType": "on-demand", "phase": "init", "runtimeVersion": "nodejs-14.v3", "runtimeVersionArn": "arn", "functionName": "myFunction", "functionVersion": "$LATEST", "instanceId": "82561ce0-53dd-47d1-90e0-c8f5e063e62e", "instanceMaxMemory": 256 } }

platform.initRuntimeDone

platform.initRuntimeDone 이벤트는 함수 초기화 단계가 완료되었음을 나타냅니다. platform.initRuntimeDone Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.initRuntimeDone - record: PlatformInitRuntimeDone

PlatformInitRuntimeDone 객체에는 다음 속성이 있습니다.

다음은 platform.initRuntimeDone 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.initRuntimeDone", "record": { "initializationType": "on-demand" "status": "success", "spans": [ { "name": "someTimeSpan", "start": "2022-06-02T12:02:33.913Z", "durationMs": 70.5 } ] } }

platform.initReport

platform.initReport 이벤트에는 함수 초기화 단계의 전체 보고서가 포함됩니다. platform.initReport Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.initReport - record: PlatformInitReport

PlatformInitReport 객체에는 다음 속성이 있습니다.

다음은 platform.initReport 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.initReport", "record": { "initializationType": "on-demand", "status": "success", "phase": "init", "metrics": { "durationMs": 125.33 }, "spans": [ { "name": "someTimeSpan", "start": "2022-06-02T12:02:33.913Z", "durationMs": 90.1 } ] } }

platform.start

platform.start 이벤트는 함수 호출 단계가 시작되었음을 나타냅니다. platform.start Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.start - record: PlatformStart

PlatformStart 객체에는 다음 속성이 있습니다.

  • requestIdString

  • version?String

  • tracing?TraceContext

다음은 platform.start 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.start", "record": { "requestId": "6d68ca91-49c9-448d-89b8-7ca3e6dc66aa", "version": "$LATEST", "tracing": { "spanId": "54565fb41ac79632", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" } } }

platform.runtimeDone

platform.runtimeDone 이벤트는 함수 호출 단계가 완료되었음을 나타냅니다. platform.runtimeDone Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.runtimeDone - record: PlatformRuntimeDone

PlatformRuntimeDone 객체에는 다음 속성이 있습니다.

다음은 platform.runtimeDone 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.runtimeDone", "record": { "requestId": "6d68ca91-49c9-448d-89b8-7ca3e6dc66aa", "status": "success", "tracing": { "spanId": "54565fb41ac79632", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" }, "spans": [ { "name": "someTimeSpan", "start": "2022-08-02T12:01:23:521Z", "durationMs": 80.0 } ], "metrics": { "durationMs": 140.0, "producedBytes": 16 } } }

platform.report

platform.report 이벤트에는 함수 간접 호출 단계의 전체 보고서가 포함됩니다. platform.report Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.report - record: PlatformReport

PlatformReport 객체에는 다음 속성이 있습니다.

다음은 platform.report 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:01:15.000Z", "type": "platform.report", "record": { "metrics": { "billedDurationMs": 694, "durationMs": 693.92, "initDurationMs": 397.68, "maxMemoryUsedMB": 84, "memorySizeMB": 128 }, "requestId": "6d68ca91-49c9-448d-89b8-7ca3e6dc66aa", } }

platform.restoreStart

platform.restoreStart 이벤트는 함수 환경 복원 이벤트가 시작되었음을 나타냅니다. 환경 복원 이벤트에서 Lambda는 처음부터 초기화하지 않고 캐싱된 스냅샷에서 환경을 생성합니다. 자세한 내용은 Lambda SnapStart 단원을 참조하십시오. platform.restoreStart Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.restoreStart - record: PlatformRestoreStart

PlatformRestoreStart 객체에는 다음 속성이 있습니다.

  • functionName - String

  • functionVersion - String

  • instanceId? - String

  • instanceMaxMemory? - String

  • runtimeVersion?String

  • runtimeVersionArn?String

다음은 platform.restoreStart 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.restoreStart", "record": { "runtimeVersion": "nodejs-14.v3", "runtimeVersionArn": "arn", "functionName": "myFunction", "functionVersion": "$LATEST", "instanceId": "82561ce0-53dd-47d1-90e0-c8f5e063e62e", "instanceMaxMemory": 256 } }

platform.restoreRuntimeDone

platform.restoreRuntimeDone 이벤트는 함수 환경 복원 이벤트가 완료되었음을 나타냅니다. 환경 복원 이벤트에서 Lambda는 처음부터 초기화하지 않고 캐싱된 스냅샷에서 환경을 생성합니다. 자세한 내용은 Lambda SnapStart 단원을 참조하십시오. platform.restoreRuntimeDone Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.restoreRuntimeDone - record: PlatformRestoreRuntimeDone

PlatformRestoreRuntimeDone 객체에는 다음 속성이 있습니다.

  • errorType?String

  • spans? - Span 객체의 목록

  • statusStatus 객체

다음은 platform.restoreRuntimeDone 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.restoreRuntimeDone", "record": { "status": "success", "spans": [ { "name": "someTimeSpan", "start": "2022-08-02T12:01:23:521Z", "durationMs": 80.0 } ] } }

platform.restoreReport

platform.restoreReport 이벤트에는 함수 복원 이벤트의 전체 보고서가 포함됩니다. platform.restoreReport Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.restoreReport - record: PlatformRestoreReport

PlatformRestoreReport 객체에는 다음 속성이 있습니다.

다음은 platform.restoreReport 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:00:15.064Z", "type": "platform.restoreReport", "record": { "status": "success", "metrics": { "durationMs": 15.19 }, "spans": [ { "name": "someTimeSpan", "start": "2022-08-02T12:01:23:521Z", "durationMs": 30.0 } ] } }

platform.extension

extension 이벤트에는 확장 코드의 로그가 포함됩니다. extension Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = extension - record: {}

PlatformExtension 객체에는 다음 속성이 있습니다.

  • eventsString의 목록

  • nameString

  • stateString

다음은 platform.extension 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:02:15.000Z", "type": "platform.extension", "record": { "events": [ "INVOKE", "SHUTDOWN" ], "name": "my-telemetry-extension", "state": "Ready" } }

platform.telemetrySubscription

platform.telemetrySubscription 이벤트에는 확장 구독에 대한 정보가 포함됩니다. platform.telemetrySubscription Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.telemetrySubscription - record: PlatformTelemetrySubscription

PlatformTelemetrySubscription 객체에는 다음 속성이 있습니다.

  • nameString

  • stateString

  • typesString의 목록

다음은 platform.telemetrySubscription 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:02:35.000Z", "type": "platform.telemetrySubscription", "record": { "name": "my-telemetry-extension", "state": "Subscribed", "types": [ "platform", "function" ] } }

platform.logsDropped

platform.logsDropped 이벤트에는 삭제된 이벤트에 대한 정보가 포함됩니다. 함수의 로그 출력 속도가 높아 Lambda에서 처리할 수 없는 경우에도 Lambda는 platform.logsDropped 이벤트를 발생시킵니다. Lambda에서 함수의 로그 생성 속도에 맞춰 CloudWatch 또는 텔레메트리 API가 구독한 확장으로 로그를 전송할 수 없는 경우 로그를 삭제하여 함수 실행 속도가 느려지는 것을 방지합니다. platform.logsDropped Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = platform.logsDropped - record: PlatformLogsDropped

PlatformLogsDropped 객체에는 다음 속성이 있습니다.

  • droppedBytesInteger

  • droppedRecordsInteger

  • reasonString

다음은 platform.logsDropped 유형의 예제 Event입니다.

{ "time": "2022-10-12T00:02:35.000Z", "type": "platform.logsDropped", "record": { "droppedBytes": 12345, "droppedRecords": 123, "reason": "Some logs were dropped because the downstream consumer is slower than the logs production rate" } }

function

function 이벤트에는 함수 코드의 로그가 포함됩니다. function Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = function - record: {}

record 필드 형식은 함수의 로그 형식이 일반 텍스트 형식인지 JSON 형식인지에 따라 달라집니다. 로그 형식 구성 옵션에 대한 자세한 내용은 JSON 및 일반 텍스트 로그 형식 구성를 참조하십시오.

다음은 로그 형식이 일반 텍스트인 Eventfunction 유형입니다.

{ "time": "2022-10-12T00:03:50.000Z", "type": "function", "record": "[INFO] Hello world, I am a function!" }

다음은 로그 형식이 JSON인 Eventfunction 유형입니다.

{ "time": "2022-10-12T00:03:50.000Z", "type": "function", "record": { "timestamp": "2022-10-12T00:03:50.000Z", "level": "INFO", "requestId": "79b4f56e-95b1-4643-9700-2807f4e68189", "message": "Hello world, I am a function!" } }
참고

사용 중인 스키마 버전이 2022-12-13 버전보다 이전인 경우 함수의 로깅 형식이 JSON으로 구성된 경우에도 "record"는 항상 문자열로 렌더링됩니다.

extension

extension 이벤트에는 확장 코드의 로그가 포함됩니다. extension Event 객체의 형식은 다음과 같습니다.

Event: Object - time: String - type: String = extension - record: {}

record 필드 형식은 함수의 로그 형식이 일반 텍스트 형식인지 JSON 형식인지에 따라 달라집니다. 로그 형식 구성 옵션에 대한 자세한 내용은 JSON 및 일반 텍스트 로그 형식 구성를 참조하십시오.

다음은 로그 형식이 일반 텍스트인 Eventextension 유형입니다.

{ "time": "2022-10-12T00:03:50.000Z", "type": "extension", "record": "[INFO] Hello world, I am an extension!" }

다음은 로그 형식이 JSON인 Eventextension 유형입니다.

{ "time": "2022-10-12T00:03:50.000Z", "type": "extension", "record": { "timestamp": "2022-10-12T00:03:50.000Z", "level": "INFO", "requestId": "79b4f56e-95b1-4643-9700-2807f4e68189", "message": "Hello world, I am an extension!" } }
참고

사용 중인 스키마 버전이 2022-12-13 버전보다 이전인 경우 함수의 로깅 형식이 JSON으로 구성된 경우에도 "record"는 항상 문자열로 렌더링됩니다.

공유 객체 유형

이 섹션에서는 Lambda 텔레메트리 API가 지원하는 공유 객체 유형을 자세히 설명합니다.

InitPhase

초기화 작업이 발생하는 단계를 설명하는 문자열 열거형입니다. 대부분의 경우 Lambda는 init 단계 중에 함수 초기화 코드를 실행합니다. 하지만 오류가 발생하면 Lambda가 invoke 단계 중에 함수 초기화 코드를 다시 실행할 수 있습니다. (이를 억제된 초기화라고 함)

  • 유형String

  • 유효한 값init|invoke|snap-start

InitReportMetrics

초기화 단계에 대한 지표를 포함하는 객체입니다.

  • 유형Object

InitReportMetrics 객체의 형식은 다음과 같습니다.

InitReportMetrics: Object - durationMs: Double

다음은 InitReportMetrics 객체의 예입니다.

{ "durationMs": 247.88 }

InitType

Lambda가 환경을 초기화한 방법을 설명하는 문자열 열거형입니다.

  • 유형String

  • 유효한 값on-demand|provisioned-concurrency

ReportMetrics

완료된 단계에 대한 지표가 포함된 객체입니다.

  • 유형Object

ReportMetrics 객체의 형식은 다음과 같습니다.

ReportMetrics: Object - billedDurationMs: Integer - durationMs: Double - initDurationMs?: Double - maxMemoryUsedMB: Integer - memorySizeMB: Integer - restoreDurationMs?: Double

다음은 ReportMetrics 객체의 예입니다.

{ "billedDurationMs": 694, "durationMs": 693.92, "initDurationMs": 397.68, "maxMemoryUsedMB": 84, "memorySizeMB": 128 }

RestoreReportMetrics

완료된 복원 단계에 대한 지표가 포함된 객체입니다.

  • 유형Object

RestoreReportMetrics 객체의 형식은 다음과 같습니다.

RestoreReportMetrics: Object - durationMs: Double

다음은 RestoreReportMetrics 객체의 예입니다.

{ "durationMs": 15.19 }

RuntimeDoneMetrics

호출 단계에 대한 지표가 포함된 객체입니다.

  • 유형Object

RuntimeDoneMetrics 객체의 형식은 다음과 같습니다.

RuntimeDoneMetrics: Object - durationMs: Double - producedBytes?: Integer

다음은 RuntimeDoneMetrics 객체의 예입니다.

{ "durationMs": 200.0, "producedBytes": 15 }

Span

범위에 대한 세부 정보가 포함된 객체입니다. 범위는 트레이스의 작업 또는 작업 단위를 나타냅니다. 범위에 대한 자세한 내용은 OpenTelemetry 문서 웹 사이트의 추적 API 페이지에서 범위를 참조하세요.

Lambda는 platform.RuntimeDone 이벤트에 대해 다음과 같은 범위를 지원합니다.

  • responseLatency 범위는 Lambda 함수가 응답의 전송을 시작하는 데 걸린 시간을 나타냅니다.

  • responseDuration 범위는 Lambda 함수가 전체 응답의 전송을 마치는 데 걸린 시간을 나타냅니다.

  • runtimeOverhead 범위는 Lambda 런타임이 다음 함수 간접 호출을 처리할 준비가 되었음을 알리는 데 걸린 시간을 나타냅니다. 이는 런타임이 함수 응답을 반환한 후 다음 이벤트를 가져오기 위해 다음 간접 호출 API를 호출하는 데 걸린 시간입니다.

다음은 responseLatency 범위 객체의 예입니다.

{ "name": "responseLatency", "start": "2022-08-02T12:01:23.521Z", "durationMs": 23.02 }

Status

초기화 또는 호출 단계의 상태를 설명하는 객체입니다. 상태가 failure 또는 error 인 경우Status 객체에는 오류를 설명하는 errorType 필드도 포함됩니다.

  • 유형Object

  • 유효한 상태 값success|failure|error|timeout

TraceContext

트레이스의 속성을 설명하는 객체입니다.

  • 유형Object

TraceContext 객체의 형식은 다음과 같습니다.

TraceContext: Object - spanId?: String - type: TracingType enum - value: String

다음은 TraceContext 객체의 예입니다.

{ "spanId": "073a49012f3c312e", "type": "X-Amzn-Trace-Id", "value": "Root=1-62e900b2-710d76f009d6e7785905449a;Parent=0efbd19962d95b05;Sampled=1" }

TracingType

TraceContext 객체의 추적 유형을 설명하는 문자열 열거형입니다.

  • 유형String

  • 유효한 값X-Amzn-Trace-Id