mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +08:00
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
from ..utils.formats import flatten_dict
|
|
|
|
|
|
DENYLIST_ENDPOINT = ['kms', 'sts']
|
|
DENYLIST_ENDPOINT_TAGS = {
|
|
's3': ['params.Body'],
|
|
}
|
|
|
|
|
|
def truncate_arg_value(value, max_len=1024):
|
|
"""Truncate values which are bytes and greater than `max_len`.
|
|
Useful for parameters like 'Body' in `put_object` operations.
|
|
"""
|
|
if isinstance(value, bytes) and len(value) > max_len:
|
|
return b'...'
|
|
|
|
return value
|
|
|
|
|
|
def add_span_arg_tags(span, endpoint_name, args, args_names, args_traced):
|
|
if endpoint_name not in DENYLIST_ENDPOINT:
|
|
denylisted = DENYLIST_ENDPOINT_TAGS.get(endpoint_name, [])
|
|
tags = dict(
|
|
(name, value)
|
|
for (name, value) in zip(args_names, args)
|
|
if name in args_traced
|
|
)
|
|
tags = flatten_dict(tags)
|
|
tags = {
|
|
k: truncate_arg_value(v)
|
|
for k, v in tags.items()
|
|
if k not in denylisted
|
|
}
|
|
span.set_tags(tags)
|
|
|
|
|
|
REGION = 'aws.region'
|
|
AGENT = 'aws.agent'
|
|
OPERATION = 'aws.operation'
|