Lambda Telemetry API 이벤트 스키마 참조
Lambda Telemetry API 이벤트 스키마 참조
Lambda Telemetry API 엔드포인트를 사용해 확장(extension)을 텔레메트리 스트림에 구독시킬 수 있어요. Telemetry API 엔드포인트는 AWS_LAMBDA_RUNTIME_API 환경 변수에서 얻을 수 있습니다. API 요청을 보내려면 API 버전(2022-07-01/)과 telemetry/를 추가하세요. 예:
본문
http://${AWS_LAMBDA_RUNTIME_API}/2022-07-01/telemetry/
구독 응답 버전 2025-01-29의 OpenAPI Specification(OAS) 정의는 다음을 참고하세요:
다음 표는 Telemetry API가 지원하는 모든 유형의 Event 객체를 요약한 것입니다.
| 이벤트 유형 | type 값 | 설명 |
|---|---|---|
| Platform event | platform.initStart |
함수 초기화 시작 |
| Platform event | platform.initRuntimeDone |
함수 초기화 완료 |
| Platform event | platform.initReport |
함수 초기화 보고 |
| Platform event | platform.start |
함수 호출 시작 |
| Platform event | platform.runtimeDone |
런타임이 성공 또는 실패로 이벤트 처리를 마침 |
| Platform event | platform.report |
함수 호출 보고 |
| Platform event | platform.restoreStart |
런타임 복원 시작 |
| Platform event | platform.restoreRuntimeDone |
런타임 복원 완료 |
| Platform event | platform.restoreReport |
런타임 복원 보고 |
| Platform event | platform.telemetrySubscription |
확장이 Telemetry API에 구독함 |
| Platform event | platform.logsDropped |
Lambda가 로그 항목을 버림 |
| Function logs | function |
함수 코드의 로그 줄 |
| Extension logs | extension |
확장 코드의 로그 줄 |
Contents
Telemetry API Event 객체 유형
이 섹션에서는 Lambda Telemetry API가 지원하는 Event 객체의 유형을 자세히 설명합니다. 이벤트 설명에서 물음표(?)는 해당 속성이 객체에 없을 수도 있음을 나타냅니다.
platform.initStart
platform.initStart 이벤트는 함수 초기화 단계가 시작되었음을 나타냅니다. platform.initStart Event 객체는 다음과 같은 형태를 가집니다:
Event: Object
- time: String
- type: String = platform.initStart
- record: PlatformInitStart
PlatformInitStart 객체는 다음 속성을 가집니다:
- functionName –
String - functionVersion –
String - initializationType –
InitType객체 - instanceId? –
String - instanceMaxMemory? –
Integer - phase –
InitPhase객체 - 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 객체는 다음 속성을 가집니다:
- initializationType –
InitType객체 - phase –
InitPhase객체 - status –
Status객체 - spans? –
Span객체 목록
다음은 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 객체는 다음 속성을 가집니다:
- errorType? – string
- initializationType –
InitType객체 - phase –
InitPhase객체 - metrics –
InitReportMetrics객체 - spans? –
Span객체 목록 - status –
Status객체
다음은 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 객체는 다음 속성을 가집니다:
- requestId –
String - 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 객체는 다음과 같은 형태를 가집니다:
Lambda Managed Instances
platform.runtimeDone 이벤트는 Lambda Managed Instances에서 지원되지 않습니다. Managed Instances에서 실행되는 확장은 이 이벤트를 받지 못하는데, 확장이 Managed Instances에서 INVOKE 이벤트를 구독할 수 없기 때문이에요. 여러 호출을 동시에 처리할 수 있는 동시 실행 모델 때문에 확장은 Lambda(기본) 함수에서 전통적으로 했던 것처럼 개별 호출에 대한 사후 호출 처리를 수행할 수 없습니다.
Managed Instances의 경우 platform.runtimeDone에 보통 포함되는 responseLatency와 responseDuration 스팬은 대신 platform.report 이벤트에서 사용할 수 있어요. 자세한 내용은 platform.report를 참고하세요.
Event: Object
- time: String
- type: String = platform.runtimeDone
- record: PlatformRuntimeDone
PlatformRuntimeDone 객체는 다음 속성을 가집니다:
- errorType? –
String - metrics? –
RuntimeDoneMetrics객체 - requestId –
String - status –
Status객체 - spans? –
Span객체 목록 - tracing? –
TraceContext객체
다음은 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 객체는 다음과 같은 형태를 가집니다:
Lambda Managed Instances
Lambda Managed Instances의 platform.report 이벤트는 Lambda(기본) 함수와 비교해 지표와 스팬이 다릅니다. Managed Instances의 경우:
- 스팬:
extensionOverhead대신responseLatency와responseDuration을 포함합니다. 동시 실행 모델 때문에 확장이 Managed Instances에서INVOKE이벤트를 구독할 수 없어서extensionOverhead스팬은 사용할 수 없습니다. - 지표:
durationMs만 포함합니다.billedDurationMs,initDurationMs,maxMemoryUsedMB,memorySizeMB는 포함되지 않습니다. 이러한 호출별 지표는 동시 실행 환경에는 적용되지 않습니다. 리소스 사용률 지표는 Lambda Managed Instances 모니터링이나 Lambda Insights를 사용하세요.
Event: Object
- time: String
- type: String = platform.report
- record: PlatformReport
PlatformReport 객체는 다음 속성을 가집니다:
- metrics –
ReportMetrics객체 - requestId –
String - spans? –
Span객체 목록 - status –
Status객체 - tracing? –
TraceContext객체
다음은 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는 처음부터 초기화하는 대신 캐시된 스냅샷에서 환경을 만듭니다. 자세한 내용은 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는 처음부터 초기화하는 대신 캐시된 스냅샷에서 환경을 만듭니다. 자세한 내용은 SnapStart를 참고하세요. platform.restoreRuntimeDone Event 객체는 다음과 같은 형태를 가집니다:
Event: Object
- time: String
- type: String = platform.restoreRuntimeDone
- record: PlatformRestoreRuntimeDone
PlatformRestoreRuntimeDone 객체는 다음 속성을 가집니다:
- errorType? –
String - spans? –
Span객체 목록 - status –
Status객체
다음은 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 객체는 다음 속성을 가집니다:
- errorType? – string
- metrics? –
RestoreReportMetrics객체 - spans? –
Span객체 목록 - status –
Status객체
다음은 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 객체는 다음 속성을 가집니다:
- events –
String목록 - name –
String - state –
String
다음은 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 객체는 다음 속성을 가집니다:
- name –
String - state –
String - types –
String목록
다음은 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 또는 Telemetry API에 구독한 확장에 보낼 수 없으면, 함수 실행이 느려지는 것을 방지하기 위해 로그를 버립니다. platform.logsDropped Event 객체는 다음과 같은 형태를 가집니다:
Event: Object
- time: String
- type: String = platform.logsDropped
- record: PlatformLogsDropped
PlatformLogsDropped 객체는 다음 속성을 가집니다:
- droppedBytes –
Integer - droppedRecords –
Integer - reason –
String
다음은 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 필드의 형식은 함수 로그가 일반 텍스트(plain text)인지 JSON 형식인지에 따라 달라져요. 로그 형식 구성 옵션에 대해 더 배우려면 JSON 및 일반 텍스트 로그 형식 구성을 참고하세요.
다음은 로그 형식이 일반 텍스트인 function 유형의 Event 예시입니다:
{
"time": "2022-10-12T00:03:50.000Z",
"type": "function",
"record": "[INFO] Hello world, I am a function!"
}
다음은 로그 형식이 JSON인 function 유형의 Event 예시입니다:
{
"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"는 항상 문자열로 렌더링됩니다. Lambda Managed Instances의 경우 스키마 버전 2025-01-29를 사용해야 합니다.
extension
extension 이벤트는 확장 코드의 로그를 포함합니다. extension Event 객체는 다음과 같은 형태를 가집니다:
Event: Object
- time: String
- type: String = extension
- record: {}
record 필드의 형식은 함수 로그가 일반 텍스트인지 JSON 형식인지에 따라 달라져요. 로그 형식 구성 옵션에 대해 더 배우려면 JSON 및 일반 텍스트 로그 형식 구성을 참고하세요.
다음은 로그 형식이 일반 텍스트인 extension 유형의 Event 예시입니다:
{
"time": "2022-10-12T00:03:50.000Z",
"type": "extension",
"record": "[INFO] Hello world, I am an extension!"
}
다음은 로그 형식이 JSON인 extension 유형의 Event 예시입니다:
{
"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 Managed Instances의 경우 스키마 버전 2025-01-29를 사용해야 합니다.
공유 객체 유형
이 섹션에서는 Lambda Telemetry API가 지원하는 공유 객체의 유형을 자세히 설명합니다.
InitPhase
초기화 단계가 발생하는 시점을 설명하는 문자열 열거형(enum)입니다. 대부분의 경우 Lambda는 init 단계 동안 함수 초기화 코드를 실행합니다. 그러나 일부 오류 상황에서는 Lambda가 invoke 단계 동안 함수 초기화 코드를 다시 실행할 수 있습니다. (이를 suppressed init이라고 합니다.)
- Type –
String - Valid values –
init|invoke|snap-start
InitReportMetrics
초기화 단계에 대한 지표를 포함하는 객체입니다.
- Type –
Object
InitReportMetrics 객체는 다음과 같은 형태를 가집니다:
InitReportMetrics: Object
- durationMs: Double
다음은 InitReportMetrics 객체 예시입니다:
{
"durationMs": 247.88
}
InitType
Lambda가 환경을 어떻게 초기화했는지 설명하는 문자열 열거형입니다.
- Type –
String - Valid values –
on-demand|provisioned-concurrency
ReportMetrics
완료된 단계에 대한 지표를 포함하는 객체입니다.
- Type –
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
완료된 복원 단계에 대한 지표를 포함하는 객체입니다.
- Type –
Object
RestoreReportMetrics 객체는 다음과 같은 형태를 가집니다:
RestoreReportMetrics: Object
- durationMs: Double
다음은 RestoreReportMetrics 객체 예시입니다:
{
"durationMs": 15.19
}
RuntimeDoneMetrics
호출 단계에 대한 지표를 포함하는 객체입니다.
- Type –
Object
RuntimeDoneMetrics 객체는 다음과 같은 형태를 가집니다:
RuntimeDoneMetrics: Object
- durationMs: Double
- producedBytes?: Integer
다음은 RuntimeDoneMetrics 객체 예시입니다:
{
"durationMs": 200.0,
"producedBytes": 15
}
Span
스팬(span)에 대한 세부 정보를 포함하는 객체입니다. 스팬은 트레이스에서 작업 또는 연산의 단위를 나타냅니다. 스팬에 대한 자세한 내용은 OpenTelemetry Docs 웹사이트의 Tracing API 페이지에 있는 Span을 참고하세요.
Lambda는 platform.RuntimeDone 이벤트에 대해 다음 스팬을 지원합니다:
responseLatency스팬은 Lambda 함수가 응답 보내기를 시작하는 데 걸린 시간을 설명합니다.responseDuration스팬은 Lambda 함수가 전체 응답 보내기를 마치는 데 걸린 시간을 설명합니다.runtimeOverhead스팬은 Lambda 런타임이 다음 함수 호출을 처리할 준비가 되었음을 알리는 데 걸린 시간을 설명합니다. 이는 함수 응답을 반환한 후 런타임이 다음 이벤트를 얻기 위해 next 호출 API를 호출하는 데 걸린 시간이에요.
다음은 responseLatency 스팬 객체 예시입니다:
{
"name": "responseLatency",
"start": "2022-08-02T12:01:23.521Z",
"durationMs": 23.02
}
Status
초기화 또는 호출 단계의 상태를 설명하는 객체입니다. 상태가 failure 또는 error이면 Status 객체는 오류를 설명하는 errorType 필드도 포함합니다.
- Type –
Object - Valid status values –
success|failure|error|timeout
TraceContext
트레이스의 속성을 설명하는 객체입니다.
- Type –
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 객체의 트레이싱 유형을 설명하는 문자열 열거형입니다.
- Type –
String - Valid values –
X-Amzn-Trace-Id