Skip to content

Commit 55ce3a1

Browse files
committed
improv: update example to reflect middleware feat
1 parent 1f0a6c9 commit 55ce3a1

File tree

2 files changed

+28
-11
lines changed
  • python

2 files changed

+28
-11
lines changed

python/aws_lambda_powertools/middleware_factory/factory.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,16 @@ def lambda_handler(event, context):
7676
7777
**Trace execution of custom middleware**
7878
79+
from aws_lambda_powertools.tracing import Tracer
7980
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
8081
82+
tracer = Tracer(service="payment") # or via env var
83+
...
8184
@lambda_handler_decorator(trace_execution=True)
8285
def log_response(handler, event, context):
8386
...
8487
88+
@tracer.capture_lambda_handler
8589
@log_response
8690
def lambda_handler(event, context):
8791
return True
@@ -119,7 +123,7 @@ def wrapper(event, context):
119123
middleware = functools.partial(decorator, func, event, context, **kwargs)
120124
if trace_execution:
121125
tracer = Tracer(auto_patch=False)
122-
tracer.create_subsegment(name=f"## middleware {decorator.__qualname__}")
126+
tracer.create_subsegment(name=f"## {decorator.__qualname__}")
123127
response = middleware()
124128
tracer.end_subsegment()
125129
else:

python/example/hello_world/app.py

+23-10
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import json
22

3+
import requests
4+
35
from aws_lambda_powertools.logging import logger_inject_lambda_context, logger_setup
4-
from aws_lambda_powertools.tracing import Tracer
56
from aws_lambda_powertools.metrics import Metrics, MetricUnit, single_metric
6-
import requests
7+
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
8+
from aws_lambda_powertools.tracing import Tracer
79

810
tracer = Tracer()
911
logger = logger_setup()
@@ -13,8 +15,22 @@
1315

1416
metrics.add_dimension(name="operation", value="example")
1517

18+
19+
@lambda_handler_decorator(trace_execution=True)
20+
def my_middleware(handler, event, context, say_hello=False):
21+
if say_hello:
22+
print("========= HELLO PARAM DETECTED =========")
23+
print("========= Logging event before Handler is called =========")
24+
print(event)
25+
ret = handler(event, context)
26+
print("========= Logging response after Handler is called =========")
27+
print(ret)
28+
return ret
29+
30+
1631
@metrics.log_metrics
1732
@tracer.capture_lambda_handler
33+
@my_middleware(say_hello=True)
1834
@logger_inject_lambda_context
1935
def lambda_handler(event, context):
2036
"""Sample pure Lambda function
@@ -41,25 +57,22 @@ def lambda_handler(event, context):
4157
if _cold_start:
4258
logger.debug("Recording cold start metric")
4359
metrics.add_metric(name="ColdStart", unit=MetricUnit.Count, value=1)
44-
metrics.add_dimension(name="function_name", value=context.function_name)
60+
metrics.add_dimension(name="function_name", value=context.function_name)
4561
_cold_start = False
4662

4763
try:
4864
ip = requests.get("http://checkip.amazonaws.com/")
4965
metrics.add_metric(name="SuccessfulLocations", unit="Count", value=1)
5066
except requests.RequestException as e:
5167
# Send some context about this error to Lambda Logs
52-
logger.error(e)
53-
raise e
54-
68+
logger.exception(e, exc_info=True)
69+
raise
70+
5571
with single_metric(name="UniqueMetricDimension", unit="Seconds", value=1) as metric:
5672
metric.add_dimension(name="unique_dimension", value="for_unique_metric")
5773

5874
logger.info("Returning message to the caller")
5975
return {
6076
"statusCode": 200,
61-
"body": json.dumps({
62-
"message": "hello world",
63-
"location": ip.text.replace("\n", "")
64-
}),
77+
"body": json.dumps({"message": "hello world", "location": ip.text.replace("\n", "")}),
6578
}

0 commit comments

Comments
 (0)