@aws/nx-plugin 0.7.1 → 0.8.0
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/package.json +1 -1
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +94 -2
- package/src/py/fast-api/files/app/__name__/init.py.template +95 -0
- package/src/py/fast-api/files/app/__name__/main.py.template +3 -6
- package/src/py/fast-api/generator.js +6 -1
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +8 -4
- package/src/trpc/backend/files/backend/src/init.ts.template +1 -0
- package/src/trpc/backend/files/backend/src/middleware/metrics.ts.template +7 -4
package/package.json
CHANGED
|
@@ -4,15 +4,107 @@ exports[`fastapi project generator > should match snapshot > main-snapshot 1`] =
|
|
|
4
4
|
{
|
|
5
5
|
"apps/test_api/test_api/__init__.py": """"Automatically generated by Nx."""
|
|
6
6
|
",
|
|
7
|
-
"apps/test_api/test_api/
|
|
7
|
+
"apps/test_api/test_api/init.py": "import os
|
|
8
|
+
import uuid
|
|
9
|
+
from collections.abc import Callable
|
|
10
|
+
|
|
11
|
+
from aws_lambda_powertools import Logger, Metrics, Tracer
|
|
12
|
+
from aws_lambda_powertools.metrics import MetricUnit
|
|
13
|
+
from fastapi import FastAPI, Request, Response
|
|
14
|
+
from fastapi.responses import JSONResponse
|
|
15
|
+
from fastapi.routing import APIRoute
|
|
8
16
|
from mangum import Mangum
|
|
17
|
+
from starlette.middleware.exceptions import ExceptionMiddleware
|
|
18
|
+
|
|
19
|
+
os.environ["POWERTOOLS_METRICS_NAMESPACE"] = "TestApi"
|
|
20
|
+
os.environ["POWERTOOLS_SERVICE_NAME"] = "TestApi"
|
|
21
|
+
|
|
22
|
+
logger: Logger = Logger()
|
|
23
|
+
metrics: Metrics = Metrics()
|
|
24
|
+
tracer: Tracer = Tracer()
|
|
9
25
|
|
|
10
26
|
app = FastAPI(
|
|
11
27
|
title="TestApi"
|
|
12
28
|
)
|
|
13
|
-
|
|
29
|
+
lambda_handler = Mangum(app)
|
|
30
|
+
|
|
31
|
+
# Add tracing
|
|
32
|
+
lambda_handler.__name__ = "handler" # tracer requires __name__ to be set
|
|
33
|
+
lambda_handler = tracer.capture_lambda_handler(lambda_handler)
|
|
34
|
+
# Add logging
|
|
35
|
+
lambda_handler = logger.inject_lambda_context(lambda_handler, clear_state=True)
|
|
36
|
+
# Add metrics last to properly flush metrics.
|
|
37
|
+
lambda_handler = metrics.log_metrics(lambda_handler, capture_cold_start_metric=True)
|
|
38
|
+
|
|
39
|
+
# Add exception middleware(s)
|
|
40
|
+
app.add_middleware(ExceptionMiddleware, handlers=app.exception_handlers)
|
|
41
|
+
|
|
42
|
+
@app.exception_handler(Exception)
|
|
43
|
+
async def unhandled_exception_handler(request, err):
|
|
44
|
+
logger.exception("Unhandled exception")
|
|
45
|
+
|
|
46
|
+
metrics.add_metric(name="Failure", unit=MetricUnit.Count, value=1)
|
|
47
|
+
|
|
48
|
+
return JSONResponse(status_code=500, content={"detail": "Internal Server Error"})
|
|
49
|
+
|
|
50
|
+
@app.middleware("http")
|
|
51
|
+
async def metrics_handler(request: Request, call_next):
|
|
52
|
+
metrics.add_dimension("route", f"{request.method} {request.url.path}")
|
|
53
|
+
metrics.add_metric(name="RequestCount", unit=MetricUnit.Count, value=1)
|
|
54
|
+
|
|
55
|
+
response = await call_next(request)
|
|
56
|
+
|
|
57
|
+
if response.status_code == 200:
|
|
58
|
+
metrics.add_metric(name="Success", unit=MetricUnit.Count, value=1)
|
|
59
|
+
|
|
60
|
+
return response
|
|
61
|
+
|
|
62
|
+
# Add correlation id middleware
|
|
63
|
+
@app.middleware("http")
|
|
64
|
+
async def add_correlation_id(request: Request, call_next):
|
|
65
|
+
# Get correlation id from X-Correlation-Id header
|
|
66
|
+
corr_id = request.headers.get("x-correlation-id")
|
|
67
|
+
if not corr_id and "aws.context" in request.scope:
|
|
68
|
+
# If empty, use request id from aws context
|
|
69
|
+
corr_id = request.scope["aws.context"].aws_request_id
|
|
70
|
+
elif not corr_id:
|
|
71
|
+
# If still empty, use uuid
|
|
72
|
+
corr_id = uuid.uuid4().hex
|
|
73
|
+
|
|
74
|
+
# Add correlation id to logs
|
|
75
|
+
logger.set_correlation_id(corr_id)
|
|
76
|
+
|
|
77
|
+
response = await call_next(request)
|
|
78
|
+
|
|
79
|
+
# Return correlation header in response
|
|
80
|
+
response.headers["X-Correlation-Id"] = corr_id
|
|
81
|
+
return response
|
|
82
|
+
|
|
83
|
+
class LoggerRouteHandler(APIRoute):
|
|
84
|
+
def get_route_handler(self) -> Callable:
|
|
85
|
+
original_route_handler = super().get_route_handler()
|
|
86
|
+
|
|
87
|
+
async def route_handler(request: Request) -> Response:
|
|
88
|
+
# Add fastapi context to logs
|
|
89
|
+
ctx = {
|
|
90
|
+
"path": request.url.path,
|
|
91
|
+
"route": self.path,
|
|
92
|
+
"method": request.method,
|
|
93
|
+
}
|
|
94
|
+
logger.append_keys(fastapi=ctx)
|
|
95
|
+
logger.info("Received request")
|
|
96
|
+
|
|
97
|
+
return await original_route_handler(request)
|
|
98
|
+
|
|
99
|
+
return route_handler
|
|
100
|
+
|
|
101
|
+
app.router.route_class = LoggerRouteHandler",
|
|
102
|
+
"apps/test_api/test_api/main.py": "from .init import app, lambda_handler, tracer
|
|
103
|
+
|
|
104
|
+
handler = lambda_handler
|
|
14
105
|
|
|
15
106
|
@app.get("/")
|
|
107
|
+
@tracer.capture_method
|
|
16
108
|
def read_root():
|
|
17
109
|
return {"Hello": "World"}",
|
|
18
110
|
"apps/test_api/tests/__init__.py": """"unit tests."""
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import uuid
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
|
|
5
|
+
from aws_lambda_powertools import Logger, Metrics, Tracer
|
|
6
|
+
from aws_lambda_powertools.metrics import MetricUnit
|
|
7
|
+
from fastapi import FastAPI, Request, Response
|
|
8
|
+
from fastapi.responses import JSONResponse
|
|
9
|
+
from fastapi.routing import APIRoute
|
|
10
|
+
from mangum import Mangum
|
|
11
|
+
from starlette.middleware.exceptions import ExceptionMiddleware
|
|
12
|
+
|
|
13
|
+
os.environ["POWERTOOLS_METRICS_NAMESPACE"] = "<%= apiNameClassName %>"
|
|
14
|
+
os.environ["POWERTOOLS_SERVICE_NAME"] = "<%= apiNameClassName %>"
|
|
15
|
+
|
|
16
|
+
logger: Logger = Logger()
|
|
17
|
+
metrics: Metrics = Metrics()
|
|
18
|
+
tracer: Tracer = Tracer()
|
|
19
|
+
|
|
20
|
+
app = FastAPI(
|
|
21
|
+
title="<%= apiNameClassName %>"
|
|
22
|
+
)
|
|
23
|
+
lambda_handler = Mangum(app)
|
|
24
|
+
|
|
25
|
+
# Add tracing
|
|
26
|
+
lambda_handler.__name__ = "handler" # tracer requires __name__ to be set
|
|
27
|
+
lambda_handler = tracer.capture_lambda_handler(lambda_handler)
|
|
28
|
+
# Add logging
|
|
29
|
+
lambda_handler = logger.inject_lambda_context(lambda_handler, clear_state=True)
|
|
30
|
+
# Add metrics last to properly flush metrics.
|
|
31
|
+
lambda_handler = metrics.log_metrics(lambda_handler, capture_cold_start_metric=True)
|
|
32
|
+
|
|
33
|
+
# Add exception middleware(s)
|
|
34
|
+
app.add_middleware(ExceptionMiddleware, handlers=app.exception_handlers)
|
|
35
|
+
|
|
36
|
+
@app.exception_handler(Exception)
|
|
37
|
+
async def unhandled_exception_handler(request, err):
|
|
38
|
+
logger.exception("Unhandled exception")
|
|
39
|
+
|
|
40
|
+
metrics.add_metric(name="Failure", unit=MetricUnit.Count, value=1)
|
|
41
|
+
|
|
42
|
+
return JSONResponse(status_code=500, content={"detail": "Internal Server Error"})
|
|
43
|
+
|
|
44
|
+
@app.middleware("http")
|
|
45
|
+
async def metrics_handler(request: Request, call_next):
|
|
46
|
+
metrics.add_dimension("route", f"{request.method} {request.url.path}")
|
|
47
|
+
metrics.add_metric(name="RequestCount", unit=MetricUnit.Count, value=1)
|
|
48
|
+
|
|
49
|
+
response = await call_next(request)
|
|
50
|
+
|
|
51
|
+
if response.status_code == 200:
|
|
52
|
+
metrics.add_metric(name="Success", unit=MetricUnit.Count, value=1)
|
|
53
|
+
|
|
54
|
+
return response
|
|
55
|
+
|
|
56
|
+
# Add correlation id middleware
|
|
57
|
+
@app.middleware("http")
|
|
58
|
+
async def add_correlation_id(request: Request, call_next):
|
|
59
|
+
# Get correlation id from X-Correlation-Id header
|
|
60
|
+
corr_id = request.headers.get("x-correlation-id")
|
|
61
|
+
if not corr_id and "aws.context" in request.scope:
|
|
62
|
+
# If empty, use request id from aws context
|
|
63
|
+
corr_id = request.scope["aws.context"].aws_request_id
|
|
64
|
+
elif not corr_id:
|
|
65
|
+
# If still empty, use uuid
|
|
66
|
+
corr_id = uuid.uuid4().hex
|
|
67
|
+
|
|
68
|
+
# Add correlation id to logs
|
|
69
|
+
logger.set_correlation_id(corr_id)
|
|
70
|
+
|
|
71
|
+
response = await call_next(request)
|
|
72
|
+
|
|
73
|
+
# Return correlation header in response
|
|
74
|
+
response.headers["X-Correlation-Id"] = corr_id
|
|
75
|
+
return response
|
|
76
|
+
|
|
77
|
+
class LoggerRouteHandler(APIRoute):
|
|
78
|
+
def get_route_handler(self) -> Callable:
|
|
79
|
+
original_route_handler = super().get_route_handler()
|
|
80
|
+
|
|
81
|
+
async def route_handler(request: Request) -> Response:
|
|
82
|
+
# Add fastapi context to logs
|
|
83
|
+
ctx = {
|
|
84
|
+
"path": request.url.path,
|
|
85
|
+
"route": self.path,
|
|
86
|
+
"method": request.method,
|
|
87
|
+
}
|
|
88
|
+
logger.append_keys(fastapi=ctx)
|
|
89
|
+
logger.info("Received request")
|
|
90
|
+
|
|
91
|
+
return await original_route_handler(request)
|
|
92
|
+
|
|
93
|
+
return route_handler
|
|
94
|
+
|
|
95
|
+
app.router.route_class = LoggerRouteHandler
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
from
|
|
2
|
-
from mangum import Mangum
|
|
1
|
+
from .init import app, lambda_handler, tracer
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
title="<%= apiNameClassName %>"
|
|
6
|
-
)
|
|
7
|
-
handler = Mangum(app)
|
|
3
|
+
handler = lambda_handler
|
|
8
4
|
|
|
9
5
|
@app.get("/")
|
|
6
|
+
@tracer.capture_method
|
|
10
7
|
def read_root():
|
|
11
8
|
return {"Hello": "World"}
|
|
@@ -107,7 +107,12 @@ const fastApiProjectGenerator = (tree, schema) => tslib_1.__awaiter(void 0, void
|
|
|
107
107
|
return config;
|
|
108
108
|
});
|
|
109
109
|
const projectToml = (0, toml_1.parse)(tree.read((0, devkit_1.joinPathFragments)(dir, 'pyproject.toml'), 'utf8'));
|
|
110
|
-
projectToml.project.dependencies = [
|
|
110
|
+
projectToml.project.dependencies = [
|
|
111
|
+
'fastapi',
|
|
112
|
+
'mangum',
|
|
113
|
+
'aws-lambda-powertools',
|
|
114
|
+
'aws-lambda-powertools[tracer]',
|
|
115
|
+
].concat(((_b = projectToml.project) === null || _b === void 0 ? void 0 : _b.dependencies) || []);
|
|
111
116
|
projectToml['dependency-groups'] = { dev: ['fastapi[standard]>=0.115'] };
|
|
112
117
|
tree.write((0, devkit_1.joinPathFragments)(dir, 'pyproject.toml'), (0, toml_1.stringify)(projectToml));
|
|
113
118
|
yield (0, format_1.formatFilesInSubtree)(tree);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/fast-api/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/fast-api/generator.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAWoB;AAEpB,oEAAmE;AACnE,oEAAiE;AACjE,0EAA+E;AAC/E,sCAA+C;AAE/C,qEAIuC;AACvC,6CAA0E;AAC1E,yCAAgD;AAChD,+CAA0D;AAC1D,mDAAkD;AAClD,uCAAgD;AAEhD;;GAEG;AACI,MAAM,uBAAuB,GAAG,CACrC,IAAU,EACV,MAAqC,EACT,EAAE;;IAC9B,MAAM,IAAA,6CAAyB,EAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,GACrE,IAAA,+BAAmB,EAAC,IAAI,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IACL,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,eAAe,mCAChB,MAAM,KACT,GAAG;QACH,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB,GACjB,CAAC;IAEF,MAAM,IAAA,mBAAkB,EAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,oBAAoB;QAChC,WAAW,EAAE,aAAa;KAC3B,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEzE,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG;QAC7B,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAC/C,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,uDAAuD,cAAc,YAAY,GAAG,0BAA0B;gBAC9G,mJAAmJ,GAAG,mBAAmB,GAAG,0BAA0B;aACvM;YACD,QAAQ,EAAE,KAAK;SAChB;QACD,SAAS,EAAE,CAAC,SAAS,CAAC;KACvB,CAAC;IACF,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG;QACtC,GAAG,CAAC,MAAA,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC;QAChD,QAAQ;KACT,CAAC;IACF,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG;QAC5B,QAAQ,EAAE,2BAA2B;QACrC,OAAO,EAAE;YACP,OAAO,EAAE,sBAAsB,cAAc,UAAU;YACvD,GAAG,EAAE,GAAG;SACT;KACF,CAAC;IAEF,aAAa,CAAC,QAAQ,GAAG;QACvB,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE,UAAU;KACb,CAAC;IAET,aAAa,CAAC,OAAO,GAAG,IAAA,mBAAc,EAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAA,mCAA0B,EAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAEhE;QACE,IAAA,0BAAiB,EAAC,GAAG,EAAE,oBAAoB,aAApB,oBAAoB,cAApB,oBAAoB,GAAI,cAAc,EAAE,UAAU,CAAC;QAC1E,IAAA,0BAAiB,EAAC,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC;KACjD,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAA,sBAAa,EACX,IAAI,EAAE,0BAA0B;IAChC,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,6BAA6B;IAC3E,GAAG,EAAE,gCAAgC;IACrC;QACE,IAAI,EAAE,cAAc;QACpB,gBAAgB;KACjB,EACD;QACE,iBAAiB,EAAE,0BAAiB,CAAC,SAAS;KAC/C,CACF,CAAC;IAEF,IACE,CAAC,IAAI,CAAC,MAAM,CACV,IAAA,0BAAiB,EACf,gCAAY,EACZ,yCAAqB,EACrB,KAAK,EACL,KAAK,EACL,WAAW,EACX,GAAG,gBAAgB,KAAK,CACzB,CACF,EACD,CAAC;QACD,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EACf,SAAS,EACT,OAAO,EACP,yCAAqB,EACrB,KAAK,EACL,KAAK,CACN,EACD,IAAA,0BAAiB,EAAC,gCAAY,EAAE,yCAAqB,EAAE,KAAK,EAAE,KAAK,CAAC,EACpE,eAAe,EACf;YACE,iBAAiB,EAAE,0BAAiB,CAAC,YAAY;SAClD,CACF,CAAC;QAEF,IAAA,mBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EACf,gCAAY,EACZ,yCAAqB,EACrB,KAAK,EACL,KAAK,EACL,UAAU,CACX,EACD,sBAAsB,CACvB,CAAC;QACF,IAAA,mBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EACf,gCAAY,EACZ,yCAAqB,EACrB,KAAK,EACL,KAAK,EACL,WAAW,EACX,UAAU,CACX,EACD,KAAK,gBAAgB,KAAK,CAC3B,CAAC;IACJ,CAAC;IAED,IAAA,qBAAU,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAEnC,IAAA,mBAAU,EACR,IAAI,EACJ,IAAA,0BAAiB,EAAC,gCAAY,EAAE,yCAAqB,EAAE,cAAc,CAAC,EACtE,CAAC,MAA4B,EAAE,EAAE;;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG;YAC/B,GAAG,CAAC,MAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC;YACzC,GAAG,kBAAkB,QAAQ;SAC9B,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,YAAK,EACvB,IAAI,CAAC,IAAI,CAAC,IAAA,0BAAiB,EAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CACzC,CAAC;IACrB,WAAW,CAAC,OAAO,CAAC,YAAY,GAAG;QACjC,SAAS;QACT,QAAQ;QACR,uBAAuB;QACvB,+BAA+B;KAChC,CAAC,MAAM,CAAC,CAAA,MAAA,WAAW,CAAC,OAAO,0CAAE,YAAY,KAAI,EAAE,CAAC,CAAC;IAClD,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC;IACzE,IAAI,CAAC,KAAK,CAAC,IAAA,0BAAiB,EAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,IAAA,gBAAS,EAAC,WAAW,CAAC,CAAC,CAAC;IAE7E,MAAM,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,GAAS,EAAE;QAChB,MAAM,IAAI,qBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,eAAM,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9D,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAA,CAAC;AACJ,CAAC,CAAA,CAAC;AA7KW,QAAA,uBAAuB,2BA6KlC;AACF,kBAAe,+BAAuB,CAAC"}
|
|
@@ -68,6 +68,7 @@ import {
|
|
|
68
68
|
} from './middleware/index.js';
|
|
69
69
|
|
|
70
70
|
process.env.POWERTOOLS_SERVICE_NAME = 'TestApi';
|
|
71
|
+
process.env.POWERTOOLS_METRICS_NAMESPACE = 'TestApi';
|
|
71
72
|
|
|
72
73
|
export type Context = IMiddlewareContext;
|
|
73
74
|
|
|
@@ -195,9 +196,12 @@ export const createMetricsPlugin = () => {
|
|
|
195
196
|
|
|
196
197
|
return t.procedure.use(async (opts) => {
|
|
197
198
|
const metrics = new Metrics();
|
|
199
|
+
metrics.addDimensions({
|
|
200
|
+
procedure: opts.path,
|
|
201
|
+
type: opts.type,
|
|
202
|
+
});
|
|
198
203
|
metrics.captureColdStartMetric();
|
|
199
|
-
|
|
200
|
-
metrics.addMetric('requestCount', MetricUnit.Count, 1);
|
|
204
|
+
metrics.addMetric('RequestCount', MetricUnit.Count, 1);
|
|
201
205
|
|
|
202
206
|
try {
|
|
203
207
|
const response = await opts.next({
|
|
@@ -208,9 +212,9 @@ export const createMetricsPlugin = () => {
|
|
|
208
212
|
});
|
|
209
213
|
|
|
210
214
|
if (!response.ok) {
|
|
211
|
-
metrics.addMetric('
|
|
215
|
+
metrics.addMetric('Failure', MetricUnit.Count, 1);
|
|
212
216
|
} else {
|
|
213
|
-
metrics.addMetric('
|
|
217
|
+
metrics.addMetric('Success', MetricUnit.Count, 1);
|
|
214
218
|
}
|
|
215
219
|
|
|
216
220
|
return response;
|
|
@@ -10,9 +10,12 @@ export const createMetricsPlugin = () => {
|
|
|
10
10
|
|
|
11
11
|
return t.procedure.use(async (opts) => {
|
|
12
12
|
const metrics = new Metrics();
|
|
13
|
+
metrics.addDimensions({
|
|
14
|
+
procedure: opts.path,
|
|
15
|
+
type: opts.type,
|
|
16
|
+
});
|
|
13
17
|
metrics.captureColdStartMetric();
|
|
14
|
-
|
|
15
|
-
metrics.addMetric('requestCount', MetricUnit.Count, 1);
|
|
18
|
+
metrics.addMetric('RequestCount', MetricUnit.Count, 1);
|
|
16
19
|
|
|
17
20
|
try {
|
|
18
21
|
const response = await opts.next({
|
|
@@ -23,9 +26,9 @@ export const createMetricsPlugin = () => {
|
|
|
23
26
|
});
|
|
24
27
|
|
|
25
28
|
if (!response.ok) {
|
|
26
|
-
metrics.addMetric('
|
|
29
|
+
metrics.addMetric('Failure', MetricUnit.Count, 1);
|
|
27
30
|
} else {
|
|
28
|
-
metrics.addMetric('
|
|
31
|
+
metrics.addMetric('Success', MetricUnit.Count, 1);
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
return response;
|