@empire-builder-kit/runtime 0.0.1-alpha.9 → 1.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -21
- package/NOTICE +5 -0
- package/README.md +14 -23
- package/package.json +58 -97
- package/src/auth-backend.d.ts +44 -0
- package/src/auth-backend.js +158 -0
- package/src/auth-backend.js.map +1 -0
- package/src/auth-session.d.ts +175 -0
- package/src/auth-session.js +181 -0
- package/src/auth-session.js.map +1 -0
- package/src/auth-web.d.ts +79 -0
- package/src/auth-web.js +153 -0
- package/src/auth-web.js.map +1 -0
- package/src/auth.d.ts +143 -0
- package/src/auth.js +233 -0
- package/src/auth.js.map +1 -0
- package/{dist → src}/config.d.ts +0 -1
- package/{dist → src}/config.js +9 -21
- package/src/config.js.map +1 -0
- package/src/database.d.ts +32 -0
- package/src/database.js +119 -0
- package/src/database.js.map +1 -0
- package/src/events.d.ts +74 -0
- package/src/events.js +149 -0
- package/src/events.js.map +1 -0
- package/{dist → src}/frontend.d.ts +1 -2
- package/src/frontend.js +62 -0
- package/src/frontend.js.map +1 -0
- package/src/hosts.d.ts +9 -0
- package/src/hosts.js +38 -0
- package/src/hosts.js.map +1 -0
- package/src/index.d.ts +15 -0
- package/src/index.js +31 -0
- package/src/index.js.map +1 -0
- package/src/lambda.d.ts +45 -0
- package/src/lambda.js +117 -0
- package/src/lambda.js.map +1 -0
- package/{dist → src}/logging.d.ts +0 -1
- package/src/logging.js +113 -0
- package/src/logging.js.map +1 -0
- package/{dist → src}/observability.d.ts +18 -1
- package/{dist → src}/observability.js +72 -62
- package/src/observability.js.map +1 -0
- package/src/rds-global-ca-bundle.d.ts +1 -0
- package/src/rds-global-ca-bundle.js +2742 -0
- package/src/rds-global-ca-bundle.js.map +1 -0
- package/{dist → src}/request-context.d.ts +12 -2
- package/src/request-context.js +68 -0
- package/src/request-context.js.map +1 -0
- package/{dist → src}/response.d.ts +0 -1
- package/src/response.js +66 -0
- package/src/response.js.map +1 -0
- package/dist/auth-backend.d.ts +0 -18
- package/dist/auth-backend.d.ts.map +0 -1
- package/dist/auth-backend.js +0 -57
- package/dist/auth-web.d.ts +0 -18
- package/dist/auth-web.d.ts.map +0 -1
- package/dist/auth-web.js +0 -32
- package/dist/auth.d.ts +0 -68
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -107
- package/dist/config.d.ts.map +0 -1
- package/dist/frontend.d.ts.map +0 -1
- package/dist/frontend.js +0 -64
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -23
- package/dist/logging.d.ts.map +0 -1
- package/dist/logging.js +0 -129
- package/dist/observability.d.ts.map +0 -1
- package/dist/request-context.d.ts.map +0 -1
- package/dist/request-context.js +0 -58
- package/dist/response.d.ts.map +0 -1
- package/dist/response.js +0 -66
package/src/lambda.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { createLogger } from './logging.js';
|
|
3
|
+
import { createRequestContext, toRequestHeaders, } from './request-context.js';
|
|
4
|
+
import { createErrorResponse, createSuccessResponse, } from './response.js';
|
|
5
|
+
export const lambdaContract = {
|
|
6
|
+
defaultResponseFormat: 'json',
|
|
7
|
+
exportPath: '@empire-builder-kit/runtime/lambda',
|
|
8
|
+
packageName: '@empire-builder-kit/runtime',
|
|
9
|
+
};
|
|
10
|
+
function getHeader(headers, name) {
|
|
11
|
+
if (!headers) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
const lowerName = name.toLowerCase();
|
|
15
|
+
const entry = Object.entries(headers).find(([key]) => key.toLowerCase() === lowerName);
|
|
16
|
+
return entry === null || entry === void 0 ? void 0 : entry[1];
|
|
17
|
+
}
|
|
18
|
+
function resolveStage(stage) {
|
|
19
|
+
const resolved = stage !== null && stage !== void 0 ? stage : process.env['EBK_STAGE'];
|
|
20
|
+
if (resolved === undefined || resolved.trim() === '') {
|
|
21
|
+
throw new Error('EBK runtime stage is required. Pass options.stage or set EBK_STAGE.');
|
|
22
|
+
}
|
|
23
|
+
return resolved.trim();
|
|
24
|
+
}
|
|
25
|
+
function createResponseMeta(context) {
|
|
26
|
+
return {
|
|
27
|
+
correlationId: context.correlationId,
|
|
28
|
+
requestId: context.requestId,
|
|
29
|
+
stage: context.stage,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function toHttpJsonResponse(response) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
return {
|
|
35
|
+
body: JSON.stringify(response),
|
|
36
|
+
headers: Object.assign(Object.assign({ 'content-type': 'application/json' }, (((_a = response.meta) === null || _a === void 0 ? void 0 : _a.correlationId)
|
|
37
|
+
? { 'x-correlation-id': String(response.meta.correlationId) }
|
|
38
|
+
: {})), (((_b = response.meta) === null || _b === void 0 ? void 0 : _b.requestId)
|
|
39
|
+
? { 'x-request-id': String(response.meta.requestId) }
|
|
40
|
+
: {})),
|
|
41
|
+
statusCode: response.status,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function createHttpJsonHandler(options) {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const stage = resolveStage(options.stage);
|
|
47
|
+
const baseLogger = (_a = options.logger) !== null && _a !== void 0 ? _a : createLogger({
|
|
48
|
+
app: options.app,
|
|
49
|
+
service: (_b = options.service) !== null && _b !== void 0 ? _b : options.operation,
|
|
50
|
+
stage,
|
|
51
|
+
});
|
|
52
|
+
return (event) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
54
|
+
const requestId = (_a = getHeader(event.headers, 'x-request-id')) !== null && _a !== void 0 ? _a : (_b = event.requestContext) === null || _b === void 0 ? void 0 : _b.requestId;
|
|
55
|
+
const context = createRequestContext({
|
|
56
|
+
app: options.app,
|
|
57
|
+
causationId: getHeader(event.headers, 'x-causation-id'),
|
|
58
|
+
correlationId: (_c = getHeader(event.headers, 'x-correlation-id')) !== null && _c !== void 0 ? _c : requestId,
|
|
59
|
+
metadata: {
|
|
60
|
+
method: (_e = (_d = event.requestContext) === null || _d === void 0 ? void 0 : _d.http) === null || _e === void 0 ? void 0 : _e.method,
|
|
61
|
+
path: (_f = event.rawPath) !== null && _f !== void 0 ? _f : (_h = (_g = event.requestContext) === null || _g === void 0 ? void 0 : _g.http) === null || _h === void 0 ? void 0 : _h.path,
|
|
62
|
+
sourceIp: (_k = (_j = event.requestContext) === null || _j === void 0 ? void 0 : _j.http) === null || _k === void 0 ? void 0 : _k.sourceIp,
|
|
63
|
+
userAgent: (_m = (_l = event.requestContext) === null || _l === void 0 ? void 0 : _l.http) === null || _m === void 0 ? void 0 : _m.userAgent,
|
|
64
|
+
},
|
|
65
|
+
operation: options.operation,
|
|
66
|
+
requestId,
|
|
67
|
+
stage,
|
|
68
|
+
tenantId: getHeader(event.headers, 'x-tenant-id'),
|
|
69
|
+
traceParent: getHeader(event.headers, 'traceparent'),
|
|
70
|
+
traceState: getHeader(event.headers, 'tracestate'),
|
|
71
|
+
});
|
|
72
|
+
const requestLogger = baseLogger.child({
|
|
73
|
+
context,
|
|
74
|
+
service: (_o = options.service) !== null && _o !== void 0 ? _o : options.operation,
|
|
75
|
+
stage,
|
|
76
|
+
});
|
|
77
|
+
requestLogger.info(`${options.app}.${options.operation} request received`, {
|
|
78
|
+
metadata: {
|
|
79
|
+
method: (_q = (_p = event.requestContext) === null || _p === void 0 ? void 0 : _p.http) === null || _q === void 0 ? void 0 : _q.method,
|
|
80
|
+
path: (_r = event.rawPath) !== null && _r !== void 0 ? _r : (_t = (_s = event.requestContext) === null || _s === void 0 ? void 0 : _s.http) === null || _t === void 0 ? void 0 : _t.path,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
try {
|
|
84
|
+
const data = yield options.handle({
|
|
85
|
+
context,
|
|
86
|
+
event,
|
|
87
|
+
logger: requestLogger,
|
|
88
|
+
});
|
|
89
|
+
const response = createSuccessResponse(data, {
|
|
90
|
+
meta: createResponseMeta(context),
|
|
91
|
+
status: options.successStatus,
|
|
92
|
+
});
|
|
93
|
+
requestLogger.info(`${options.app}.${options.operation} request completed`, {
|
|
94
|
+
metadata: {
|
|
95
|
+
status: response.status,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
const httpResponse = toHttpJsonResponse(response);
|
|
99
|
+
return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
const response = createErrorResponse(error, {
|
|
103
|
+
includeDetails: options.includeErrorDetails,
|
|
104
|
+
meta: createResponseMeta(context),
|
|
105
|
+
});
|
|
106
|
+
requestLogger.error(`${options.app}.${options.operation} request failed`, {
|
|
107
|
+
error,
|
|
108
|
+
metadata: {
|
|
109
|
+
status: response.status,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
const httpResponse = toHttpJsonResponse(response);
|
|
113
|
+
return Object.assign(Object.assign({}, httpResponse), { headers: Object.assign(Object.assign({}, httpResponse.headers), toRequestHeaders(context)) });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=lambda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../../packages/runtime/src/lambda.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,4 +67,3 @@ export declare const loggingContract: {
|
|
|
67
67
|
export declare function serializeError(error: unknown): SerializedError;
|
|
68
68
|
export declare function consoleSink(entry: LogEntry): void;
|
|
69
69
|
export declare function createLogger(options: CreateLoggerOptions): Logger;
|
|
70
|
-
//# sourceMappingURL=logging.d.ts.map
|
package/src/logging.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export const loggingContract = {
|
|
2
|
+
defaultFormat: 'json',
|
|
3
|
+
exportPath: '@empire-builder-kit/runtime/logging',
|
|
4
|
+
packageName: '@empire-builder-kit/runtime',
|
|
5
|
+
};
|
|
6
|
+
function mergeContext(base, overrides) {
|
|
7
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8
|
+
if (!base && !overrides) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
actor: (_a = overrides === null || overrides === void 0 ? void 0 : overrides.actor) !== null && _a !== void 0 ? _a : base === null || base === void 0 ? void 0 : base.actor,
|
|
13
|
+
correlationId: (_b = overrides === null || overrides === void 0 ? void 0 : overrides.correlationId) !== null && _b !== void 0 ? _b : base === null || base === void 0 ? void 0 : base.correlationId,
|
|
14
|
+
metadata: Object.assign(Object.assign({}, ((_c = base === null || base === void 0 ? void 0 : base.metadata) !== null && _c !== void 0 ? _c : {})), ((_d = overrides === null || overrides === void 0 ? void 0 : overrides.metadata) !== null && _d !== void 0 ? _d : {})),
|
|
15
|
+
operation: (_e = overrides === null || overrides === void 0 ? void 0 : overrides.operation) !== null && _e !== void 0 ? _e : base === null || base === void 0 ? void 0 : base.operation,
|
|
16
|
+
requestId: (_f = overrides === null || overrides === void 0 ? void 0 : overrides.requestId) !== null && _f !== void 0 ? _f : base === null || base === void 0 ? void 0 : base.requestId,
|
|
17
|
+
source: (_g = overrides === null || overrides === void 0 ? void 0 : overrides.source) !== null && _g !== void 0 ? _g : base === null || base === void 0 ? void 0 : base.source,
|
|
18
|
+
stage: (_h = overrides === null || overrides === void 0 ? void 0 : overrides.stage) !== null && _h !== void 0 ? _h : base === null || base === void 0 ? void 0 : base.stage,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function contextMetadata(context) {
|
|
22
|
+
var _a, _b, _c;
|
|
23
|
+
if (!context) {
|
|
24
|
+
return {};
|
|
25
|
+
}
|
|
26
|
+
return compactObject(Object.assign({ actorId: (_a = context.actor) === null || _a === void 0 ? void 0 : _a.id, actorType: (_b = context.actor) === null || _b === void 0 ? void 0 : _b.type, operation: context.operation, source: context.source }, ((_c = context.metadata) !== null && _c !== void 0 ? _c : {})));
|
|
27
|
+
}
|
|
28
|
+
function compactObject(value) {
|
|
29
|
+
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
30
|
+
}
|
|
31
|
+
function safeStringify(value) {
|
|
32
|
+
if (typeof value === 'string') {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return JSON.stringify(value);
|
|
37
|
+
}
|
|
38
|
+
catch (_a) {
|
|
39
|
+
return String(value);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function serializeError(error) {
|
|
43
|
+
if (error instanceof Error) {
|
|
44
|
+
const value = error;
|
|
45
|
+
return compactObject({
|
|
46
|
+
code: value.code,
|
|
47
|
+
message: value.message,
|
|
48
|
+
name: value.name,
|
|
49
|
+
stack: value.stack,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
message: safeStringify(error),
|
|
54
|
+
name: 'UnknownError',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function consoleSink(entry) {
|
|
58
|
+
console.log(JSON.stringify(entry));
|
|
59
|
+
}
|
|
60
|
+
export function createLogger(options) {
|
|
61
|
+
var _a, _b;
|
|
62
|
+
const sink = (_a = options.sink) !== null && _a !== void 0 ? _a : consoleSink;
|
|
63
|
+
const now = (_b = options.now) !== null && _b !== void 0 ? _b : (() => new Date());
|
|
64
|
+
const write = (level, message, input = {}) => {
|
|
65
|
+
var _a, _b, _c;
|
|
66
|
+
const mergedContext = mergeContext(options.context, input.context);
|
|
67
|
+
const metadata = compactObject(Object.assign(Object.assign(Object.assign({}, ((_a = options.metadata) !== null && _a !== void 0 ? _a : {})), contextMetadata(mergedContext)), ((_b = input.metadata) !== null && _b !== void 0 ? _b : {})));
|
|
68
|
+
const entry = compactObject({
|
|
69
|
+
app: options.app,
|
|
70
|
+
correlationId: mergedContext === null || mergedContext === void 0 ? void 0 : mergedContext.correlationId,
|
|
71
|
+
error: input.error === undefined ? undefined : serializeError(input.error),
|
|
72
|
+
level,
|
|
73
|
+
message,
|
|
74
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
|
|
75
|
+
requestId: mergedContext === null || mergedContext === void 0 ? void 0 : mergedContext.requestId,
|
|
76
|
+
service: options.service,
|
|
77
|
+
stage: (_c = mergedContext === null || mergedContext === void 0 ? void 0 : mergedContext.stage) !== null && _c !== void 0 ? _c : options.stage,
|
|
78
|
+
timestamp: now().toISOString(),
|
|
79
|
+
});
|
|
80
|
+
sink(entry);
|
|
81
|
+
return entry;
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
child(childOptions = {}) {
|
|
85
|
+
var _a, _b, _c, _d;
|
|
86
|
+
return createLogger({
|
|
87
|
+
app: options.app,
|
|
88
|
+
context: mergeContext(options.context, childOptions.context),
|
|
89
|
+
metadata: Object.assign(Object.assign({}, ((_a = options.metadata) !== null && _a !== void 0 ? _a : {})), ((_b = childOptions.metadata) !== null && _b !== void 0 ? _b : {})),
|
|
90
|
+
now,
|
|
91
|
+
service: (_c = childOptions.service) !== null && _c !== void 0 ? _c : options.service,
|
|
92
|
+
sink,
|
|
93
|
+
stage: (_d = childOptions.stage) !== null && _d !== void 0 ? _d : options.stage,
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
debug(message, input) {
|
|
97
|
+
return write('debug', message, input);
|
|
98
|
+
},
|
|
99
|
+
error(message, input) {
|
|
100
|
+
return write('error', message, input);
|
|
101
|
+
},
|
|
102
|
+
info(message, input) {
|
|
103
|
+
return write('info', message, input);
|
|
104
|
+
},
|
|
105
|
+
log(level, message, input) {
|
|
106
|
+
return write(level, message, input);
|
|
107
|
+
},
|
|
108
|
+
warn(message, input) {
|
|
109
|
+
return write('warn', message, input);
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../packages/runtime/src/logging.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,7 +83,24 @@ export declare function createQueueAlarmDefinitions(input: QueueAlarmInput): Ala
|
|
|
83
83
|
export declare function createDashboardPath(input: DashboardPathInput): string;
|
|
84
84
|
export declare function createDashboardRegistration(input: DashboardRegistrationInput): MonitoringDashboardRegistration;
|
|
85
85
|
export declare function createQueueAlarmRegistration(input: QueueAlarmRegistrationInput): QueueAlarmRegistration;
|
|
86
|
+
export interface EventConsumerAlarmInput {
|
|
87
|
+
app: string;
|
|
88
|
+
consumer: string;
|
|
89
|
+
queueName: string;
|
|
90
|
+
dlqName: string;
|
|
91
|
+
severity?: AlarmSeverity;
|
|
92
|
+
stage: string;
|
|
93
|
+
thresholds?: Partial<QueueAlertThresholds>;
|
|
94
|
+
}
|
|
95
|
+
export interface EventConsumerAlarmRegistration {
|
|
96
|
+
alarms: AlarmDefinition[];
|
|
97
|
+
app: string;
|
|
98
|
+
consumer: string;
|
|
99
|
+
dlqName: string;
|
|
100
|
+
queueName: string;
|
|
101
|
+
stage: string;
|
|
102
|
+
}
|
|
103
|
+
export declare function defineEventConsumerAlarms(input: EventConsumerAlarmInput): EventConsumerAlarmRegistration;
|
|
86
104
|
export declare function createDefaultAppGroupAlarmDefinitions(input: AppGroupObservabilityInput): AlarmDefinition[];
|
|
87
105
|
export declare function createAppGroupObservabilityRegistration(input: AppGroupObservabilityInput): AppGroupObservabilityRegistration;
|
|
88
106
|
export declare function defineAppGroupMonitoringRegistration<T extends AppGroupMonitoringRegistration>(registration: T): T;
|
|
89
|
-
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMetricNamespace = createMetricNamespace;
|
|
4
|
-
exports.createAlarmName = createAlarmName;
|
|
5
|
-
exports.defaultQueueAlertThresholds = defaultQueueAlertThresholds;
|
|
6
|
-
exports.createQueueAlarmDefinitions = createQueueAlarmDefinitions;
|
|
7
|
-
exports.createDashboardPath = createDashboardPath;
|
|
8
|
-
exports.createDashboardRegistration = createDashboardRegistration;
|
|
9
|
-
exports.createQueueAlarmRegistration = createQueueAlarmRegistration;
|
|
10
|
-
exports.createDefaultAppGroupAlarmDefinitions = createDefaultAppGroupAlarmDefinitions;
|
|
11
|
-
exports.createAppGroupObservabilityRegistration = createAppGroupObservabilityRegistration;
|
|
12
|
-
exports.defineAppGroupMonitoringRegistration = defineAppGroupMonitoringRegistration;
|
|
13
1
|
function normalizeSegment(value) {
|
|
14
2
|
return value
|
|
15
3
|
.trim()
|
|
@@ -17,30 +5,27 @@ function normalizeSegment(value) {
|
|
|
17
5
|
.replace(/[^a-z0-9]+/g, '-')
|
|
18
6
|
.replace(/^-+|-+$/g, '');
|
|
19
7
|
}
|
|
20
|
-
function createMetricNamespace(app) {
|
|
8
|
+
export function createMetricNamespace(app) {
|
|
21
9
|
return `EBK/${normalizeSegment(app)}`;
|
|
22
10
|
}
|
|
23
|
-
function createAlarmName(input) {
|
|
11
|
+
export function createAlarmName(input) {
|
|
12
|
+
var _a;
|
|
24
13
|
return [
|
|
25
14
|
normalizeSegment(input.app),
|
|
26
15
|
normalizeSegment(input.stage),
|
|
27
16
|
normalizeSegment(input.component),
|
|
28
17
|
normalizeSegment(input.metric),
|
|
29
|
-
normalizeSegment(input.severity
|
|
18
|
+
normalizeSegment((_a = input.severity) !== null && _a !== void 0 ? _a : 'medium'),
|
|
30
19
|
].join('-');
|
|
31
20
|
}
|
|
32
|
-
function defaultQueueAlertThresholds(overrides = {}) {
|
|
33
|
-
return {
|
|
34
|
-
messagesInFlight: 10,
|
|
35
|
-
messagesVisible: 25,
|
|
36
|
-
oldestMessageAgeSeconds: 300,
|
|
37
|
-
...overrides,
|
|
38
|
-
};
|
|
21
|
+
export function defaultQueueAlertThresholds(overrides = {}) {
|
|
22
|
+
return Object.assign({ messagesInFlight: 10, messagesVisible: 25, oldestMessageAgeSeconds: 300 }, overrides);
|
|
39
23
|
}
|
|
40
|
-
function createQueueAlarmDefinitions(input) {
|
|
24
|
+
export function createQueueAlarmDefinitions(input) {
|
|
25
|
+
var _a;
|
|
41
26
|
const thresholds = defaultQueueAlertThresholds(input.thresholds);
|
|
42
27
|
const namespace = 'AWS/SQS';
|
|
43
|
-
const severity = input.severity
|
|
28
|
+
const severity = (_a = input.severity) !== null && _a !== void 0 ? _a : 'high';
|
|
44
29
|
return [
|
|
45
30
|
{
|
|
46
31
|
comparisonOperator: 'GreaterThanOrEqualToThreshold',
|
|
@@ -104,41 +89,72 @@ function createQueueAlarmDefinitions(input) {
|
|
|
104
89
|
},
|
|
105
90
|
];
|
|
106
91
|
}
|
|
107
|
-
function createDashboardPath(input) {
|
|
92
|
+
export function createDashboardPath(input) {
|
|
108
93
|
return `/${normalizeSegment(input.stage)}/${normalizeSegment(input.app)}/${normalizeSegment(input.dashboard)}`;
|
|
109
94
|
}
|
|
110
|
-
function createDashboardRegistration(input) {
|
|
111
|
-
return {
|
|
112
|
-
...input,
|
|
113
|
-
path: createDashboardPath(input),
|
|
114
|
-
};
|
|
95
|
+
export function createDashboardRegistration(input) {
|
|
96
|
+
return Object.assign(Object.assign({}, input), { path: createDashboardPath(input) });
|
|
115
97
|
}
|
|
116
|
-
function createQueueAlarmRegistration(input) {
|
|
98
|
+
export function createQueueAlarmRegistration(input) {
|
|
117
99
|
const thresholds = defaultQueueAlertThresholds(input.thresholds);
|
|
118
|
-
return {
|
|
119
|
-
...input,
|
|
120
|
-
alarms: createQueueAlarmDefinitions({
|
|
121
|
-
...input,
|
|
122
|
-
thresholds,
|
|
123
|
-
}),
|
|
124
|
-
dashboardPath: input.dashboard
|
|
100
|
+
return Object.assign(Object.assign({}, input), { alarms: createQueueAlarmDefinitions(Object.assign(Object.assign({}, input), { thresholds })), dashboardPath: input.dashboard
|
|
125
101
|
? createDashboardPath({
|
|
126
102
|
app: input.app,
|
|
127
103
|
dashboard: input.dashboard,
|
|
128
104
|
stage: input.stage,
|
|
129
105
|
})
|
|
130
|
-
: undefined,
|
|
131
|
-
thresholds,
|
|
132
|
-
};
|
|
106
|
+
: undefined, thresholds });
|
|
133
107
|
}
|
|
134
|
-
|
|
108
|
+
// Baseline alarms for an event consumer on the shared core bus
|
|
109
|
+
// (rule -> SQS buffer -> Lambda, DLQ on the buffer):
|
|
110
|
+
//
|
|
111
|
+
// - DLQ depth >= 1 (critical): a poison event exhausted its retries and
|
|
112
|
+
// needs manual redrive — this is the primary signal.
|
|
113
|
+
// - Buffer queue depth / in-flight / age (standard queue thresholds): the
|
|
114
|
+
// consumer is falling behind its publisher.
|
|
115
|
+
export function defineEventConsumerAlarms(input) {
|
|
116
|
+
var _a;
|
|
117
|
+
const bufferAlarms = createQueueAlarmDefinitions({
|
|
118
|
+
app: input.app,
|
|
119
|
+
queue: input.queueName,
|
|
120
|
+
severity: (_a = input.severity) !== null && _a !== void 0 ? _a : 'high',
|
|
121
|
+
stage: input.stage,
|
|
122
|
+
thresholds: input.thresholds,
|
|
123
|
+
});
|
|
124
|
+
const dlqAlarm = {
|
|
125
|
+
comparisonOperator: 'GreaterThanOrEqualToThreshold',
|
|
126
|
+
description: `Dead-lettered ${input.consumer} events in ${input.dlqName} — a poison event exhausted its retries and needs redrive.`,
|
|
127
|
+
dimensions: {
|
|
128
|
+
QueueName: input.dlqName,
|
|
129
|
+
},
|
|
130
|
+
evaluationPeriods: 1,
|
|
131
|
+
metricName: 'ApproximateNumberOfMessagesVisible',
|
|
132
|
+
name: createAlarmName({
|
|
133
|
+
app: input.app,
|
|
134
|
+
component: `${input.consumer}-event-dlq`,
|
|
135
|
+
metric: 'dead-lettered-events',
|
|
136
|
+
severity: 'critical',
|
|
137
|
+
stage: input.stage,
|
|
138
|
+
}),
|
|
139
|
+
namespace: 'AWS/SQS',
|
|
140
|
+
periodSeconds: 60,
|
|
141
|
+
severity: 'critical',
|
|
142
|
+
threshold: 1,
|
|
143
|
+
};
|
|
135
144
|
return {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
145
|
+
alarms: [dlqAlarm, ...bufferAlarms],
|
|
146
|
+
app: input.app,
|
|
147
|
+
consumer: input.consumer,
|
|
148
|
+
dlqName: input.dlqName,
|
|
149
|
+
queueName: input.queueName,
|
|
150
|
+
stage: input.stage,
|
|
139
151
|
};
|
|
140
152
|
}
|
|
141
|
-
function
|
|
153
|
+
function createAppGroupMetricDimensions(input, extra = {}) {
|
|
154
|
+
return Object.assign({ App: input.app, Stage: input.stage }, extra);
|
|
155
|
+
}
|
|
156
|
+
export function createDefaultAppGroupAlarmDefinitions(input) {
|
|
157
|
+
var _a, _b;
|
|
142
158
|
const namespace = createMetricNamespace(input.app);
|
|
143
159
|
const alarms = [
|
|
144
160
|
{
|
|
@@ -160,7 +176,7 @@ function createDefaultAppGroupAlarmDefinitions(input) {
|
|
|
160
176
|
threshold: 1,
|
|
161
177
|
},
|
|
162
178
|
];
|
|
163
|
-
for (const webApp of input.webApps
|
|
179
|
+
for (const webApp of (_a = input.webApps) !== null && _a !== void 0 ? _a : []) {
|
|
164
180
|
alarms.push({
|
|
165
181
|
comparisonOperator: 'GreaterThanOrEqualToThreshold',
|
|
166
182
|
description: `5xx responses for ${input.app}/${webApp} exceed the web baseline threshold.`,
|
|
@@ -182,7 +198,7 @@ function createDefaultAppGroupAlarmDefinitions(input) {
|
|
|
182
198
|
threshold: 1,
|
|
183
199
|
});
|
|
184
200
|
}
|
|
185
|
-
for (const functionName of input.functions
|
|
201
|
+
for (const functionName of (_b = input.functions) !== null && _b !== void 0 ? _b : []) {
|
|
186
202
|
alarms.push({
|
|
187
203
|
comparisonOperator: 'GreaterThanOrEqualToThreshold',
|
|
188
204
|
description: `Lambda errors for ${input.app}/${functionName} exceed the function baseline threshold.`,
|
|
@@ -224,14 +240,11 @@ function createDefaultAppGroupAlarmDefinitions(input) {
|
|
|
224
240
|
});
|
|
225
241
|
return alarms;
|
|
226
242
|
}
|
|
227
|
-
function createAppGroupObservabilityRegistration(input) {
|
|
228
|
-
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
return {
|
|
232
|
-
...input,
|
|
233
|
-
alarms: createDefaultAppGroupAlarmDefinitions(input),
|
|
234
|
-
dashboards: [
|
|
243
|
+
export function createAppGroupObservabilityRegistration(input) {
|
|
244
|
+
var _a, _b;
|
|
245
|
+
const owner = (_a = input.owner) !== null && _a !== void 0 ? _a : 'product';
|
|
246
|
+
const summary = (_b = input.summary) !== null && _b !== void 0 ? _b : `${input.app} app-group CloudWatch baseline for runtime health, web health, function errors, and smoke validation.`;
|
|
247
|
+
return Object.assign(Object.assign({}, input), { alarms: createDefaultAppGroupAlarmDefinitions(input), dashboards: [
|
|
235
248
|
createDashboardRegistration({
|
|
236
249
|
app: input.app,
|
|
237
250
|
dashboard: 'operations',
|
|
@@ -239,12 +252,9 @@ function createAppGroupObservabilityRegistration(input) {
|
|
|
239
252
|
stage: input.stage,
|
|
240
253
|
title: `${input.app} Operations`,
|
|
241
254
|
}),
|
|
242
|
-
],
|
|
243
|
-
owner,
|
|
244
|
-
queues: [],
|
|
245
|
-
summary,
|
|
246
|
-
};
|
|
255
|
+
], owner, queues: [], summary });
|
|
247
256
|
}
|
|
248
|
-
function defineAppGroupMonitoringRegistration(registration) {
|
|
257
|
+
export function defineAppGroupMonitoringRegistration(registration) {
|
|
249
258
|
return registration;
|
|
250
259
|
}
|
|
260
|
+
//# sourceMappingURL=observability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../../packages/runtime/src/observability.ts"],"names":[],"mappings":"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"}
|