For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
노드 SDK
Amplitude Node.js SDK는 TypeScript로 작성된 Amplitude용 최초의 백엔드 SDK입니다.
클라이언트측 SDK는 단일 사용자 또는 장치에 대한 세션 및 기여 추적을 위해 최적화되어 있습니다. Node SDK는 개발자 경험에 중점을 두어 백엔드 서비스가 많은 사용자와 소스로부터 이벤트를 안정적이고 올바르게 전송할 수 있도록 지원합니다.
Node SDK는 다음을 제공합니다.
- 동일한 요청에서 여러 이벤트를 전송하기 위한 이벤트 배치 작업입니다.
- 네트워크 요청이 실패하거나 Amplitude가 페이로드를 조절하거나 거부할 때를 처리하기 위한 재시도 처리 메커니즘.
- 계측 문제를 디버깅하는 데 도움이 되는 유용한 유틸리티와 타이핑.
SDK 초기화
계측을 하기 전에 Amplitude 프로젝트의 API 키를 사용하여 SDK를 초기화하십시오. 초기화는 기본 인스턴스를 생성합니다. 문자열 이름과 함께 getInstance를 사용하여 더 많은 인스턴스를 생성할 수 있습니다.
// Option 1, initialize with API_KEY only
Amplitude.init(AMPLITUDE_API_KEY);
// Option 2, initialize including configuration
var options = {};
Amplitude.init(AMPLITUDE_API_KEY, options);
SDK 구성
| 이름 | 설명 | 기본값 |
|---|---|---|
debug | boolean. SDK가 디버그 모드로 시작되는지 여부입니다. 디버그 모드는 logLevel가 지정되지 않은 경우 WARN 수준 이상의 로그를 생성합니다. | false |
logLevel | LogLevel. SDK의 로깅 상세도. None 로그를 생성하지 않습니다. Error SDK 내부 오류를 생성합니다. Warn 위험하거나 더 이상 사용되지 않는 기능에 대한 경고를 생성합니다. Verbose 모든 SDK 작업을 기록합니다. | LogLevel.None |
maxCachedEvents | number. 버퍼에 있는 최대 이벤트입니다. | 16000 |
retryTimeouts | number[]. 실패한 이벤트를 전송하기 위한 재시도 횟수와 각 재시도가 대기하는 시간(밀리초)을 결정합니다. 빈 배열은 재시도가 없음을 의미합니다. | [100, 100, 200, 200, 400, 400, 800, 800, 1600, 1600, 3200, 3200] |
optOut | boolean. 이벤트 전송을 제외할 것인지 여부입니다. | false |
retryClass | Retry. 이벤트 재시도를 처리하는 클래스입니다. | null |
transportClass | Transport. 이벤트를 전송하는 클래스입니다. | null |
serverUrl | string. 프록시 서버를 사용하는 경우 해당 URL을 여기에 설정하십시오. | https://api2.amplitude.com/2/httpapi |
uploadIntervalInSec | number. 이벤트 업로드 간격(초)입니다. | 0 |
minIdLength | number. user_id 및 device_id 필드에 대해 허용되는 최소 길이를 설정하는 선택적 매개변수입니다. | 5 |
requestTimeoutMillis | number. 밀리초 단위의 시간 초과를 구성할 수 있습니다. | 10000 |
onRetry | (response: Response, attemptNumber: number, isLastRetry: boolean) => boolean). @param response: 지정된 재시도의 응답. @param attemptNumber: 이 재시도 전에 Amplitude가 대기한 시간에 대한 retryTimeouts의 인덱스. 0부터 시작합니다. @param isLastRetry: attemptNumber === retryTimeouts.length - 1이면 참입니다. 재시도 후 실행되는 생애주기 분석 콜백입니다. {@link Retry.sendEventsWithRetry}에서 호출되었습니다. | null |
일괄 처리 동작 구성
고성능 환경을 지원하기 위해 SDK는 이벤트를 일괄 처리로 전송합니다. SDK는 logEvent 메서드가 메모리에 기록하는 모든 이벤트를 대기열에 추가한 다음, 백그라운드에서 이벤트를 일괄적으로 플러시합니다.maxCachedEvents 및 uploadIntervalInSec을 사용하여 일괄 처리 동작을 사용자 정의할 수 있습니다. 기본적으로 serverUrl은 https://api2.amplitude.com/2/httpapi입니다. 한 번에 대량의 데이터를 전송하려면 배치 모드를 사용하십시오. 서버 URL을 사용자의 요구에 맞는 배치 이벤트 업로드 API로 설정합니다.
- 표준 서버 배치 API:
https://api2.amplitude.com/batch. - EU 거주 서버 배치 API:
https://api.eu.amplitude.com/batch.
일반 모드와 배치 모드 모두 동일한 이벤트 업로드 임계값과 플러시 시간 간격을 사용합니다.
Amplitude.init(AMPLITUDE_API_KEY, {
// Events queued in memory will flush when number of events exceed upload threshold
// Default value is 16000
maxCachedEvents: 20000,
// Events queue will flush every certain milliseconds based on setting
// Default value is 0 second.
uploadIntervalInSec: 10,
});
EU 데이터 상주
Amplitude의 EU 서버로 데이터를 전송하려면 초기화 중에 서버 URL을 구성하십시오.
client = Amplitude.init(AMPLITUDE_API_KEY, {
serverUrl: "https://api.eu.amplitude.com/2/httpapi",
});
이벤트 전송
이 SDK는 HTTP V2 API를 사용하며 이벤트에 대해 동일한 제약 조건을 따릅니다. SDK에 기록된 모든 이벤트에 event_type 필드와 device_id 또는 user_id 중 하나 이상이 있어야 하며, 각 필드에 대한 HTTP API의 제약조건을 준수해야 합니다.
계측 문제를 방지하려면 장치 ID 및 사용자 ID는 5자 이상 길이의 문자열이어야 합니다. 이벤트에 포함된 장치 ID 또는 사용자 ID가 너무 짧은 경우, Amplitude는 이벤트에서 해당 ID 값을 제거합니다. 이벤트에 user_id 또는 device_id 값이 없는 경우, Amplitude는 400 상태 코드로 업로드를 거부할 수 있습니다. 기본 최소 길이 5자를 재정의하려면 요청과 함께 min_id_length 옵션을 전달하십시오.
import * as Amplitude from "@amplitude/node";
const client = Amplitude.init(AMPLITUDE_API_KEY);
client.logEvent({
event_type: "Node.js Event",
user_id: "datamonster@gmail.com",
location_lat: 37.77,
location_lng: -122.39,
ip: "127.0.0.1",
event_properties: {
keyString: "valueString",
keyInt: 11,
keyBool: true,
},
});
// Send any events that are currently queued for sending.
// Will automatically happen on the next event loop.
client.flush();
미들웨어
미들웨어를 사용하면 모든 이벤트에서 일련의 사용자 지정 코드를 실행하여 Amplitude를 확장할 수 있습니다. 미들웨어 패턴은 유연하며 이벤트 보강, 트랜스포메이션, 필터링, 타사 대상으로의 라우팅 등을 지원합니다.
각 미들웨어는 다음 시그니처를 가진 함수입니다:
function (payload: MiddlewarePayload: next: MiddlewareNext): void;
payload에는 사용자 지정 데이터를 고유한 미들웨어 구현에 전달할 수 있는 event 및 선택적 extra 필드가 포함되어 있습니다.
큐의 다음 미들웨어를 호출하려면 next 함수를 사용하십시오. 미들웨어 체인을 계속하려면 next(payload)를 호출하십시오. 미들웨어가 next를 호출하지 않는 경우 현재 미들웨어가 완료된 후 이벤트 처리가 중지됩니다.
client.addEventMiddleware()를 통해 Amplitude에 미들웨어를 추가하십시오. 필요한 만큼 미들웨어를 추가할 수 있습니다. 각 미들웨어는 추가한 순서대로 실행됩니다.
const loggingMiddleware: Middleware = (payload, next) => {
console.log(`[amplitude] event=${payload.event} extra=${payload.extra}`);
// continue to next middleware in chain
next(payload);
}
const filteringMiddleware: Middleware = (payload, next) => {
const {eventType} = payload.event;
if (shouldSendEvent(eventType)) {
next(payload)
} else {
// event will not continue to following middleware or be sent to Amplitude
console.log(`Filtered event: ${eventType}`);
}
}
client.addEventMiddleware(loggingMiddleware)
client.addEventMiddleware(filteringMiddleware)
예를 들어 TypeScript 및 JavaScript를 참조하십시오.
이 내용이 도움이 되었나요?