mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-31 14:11:50 +08:00
Fix Invalid type NoneType for attribute X error | AWS-Lambda instrumentation (#1785)
* Add None checking to the aws-lambda logic * Update changelog. * Change .get() check to 'key' in dict check. * Fix consistency issues. * Update changelog. --------- Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com> Co-authored-by: Shalev Roda <65566801+shalevr@users.noreply.github.com>
This commit is contained in:
@ -14,6 +14,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Fix falcon instrumentation's usage of Span Status to only set the description if the status code is ERROR.
|
||||
([#1840](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1840))
|
||||
- Instrument all httpx versions >= 0.18. ([#1748](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1748))
|
||||
- Fix `Invalid type NoneType for attribute X (opentelemetry-instrumentation-aws-lambda)` error when some attributes do not exist
|
||||
([#1780](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1780))
|
||||
|
||||
## Version 1.18.0/0.39b0 (2023-05-10)
|
||||
|
||||
|
@ -201,30 +201,35 @@ def _set_api_gateway_v1_proxy_attributes(
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_METHOD, lambda_event.get("httpMethod")
|
||||
)
|
||||
span.set_attribute(SpanAttributes.HTTP_ROUTE, lambda_event.get("resource"))
|
||||
|
||||
if lambda_event.get("headers"):
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_USER_AGENT,
|
||||
lambda_event["headers"].get("User-Agent"),
|
||||
)
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_SCHEME,
|
||||
lambda_event["headers"].get("X-Forwarded-Proto"),
|
||||
)
|
||||
span.set_attribute(
|
||||
SpanAttributes.NET_HOST_NAME, lambda_event["headers"].get("Host")
|
||||
)
|
||||
if "User-Agent" in lambda_event["headers"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_USER_AGENT,
|
||||
lambda_event["headers"]["User-Agent"],
|
||||
)
|
||||
if "X-Forwarded-Proto" in lambda_event["headers"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_SCHEME,
|
||||
lambda_event["headers"]["X-Forwarded-Proto"],
|
||||
)
|
||||
if "Host" in lambda_event["headers"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.NET_HOST_NAME,
|
||||
lambda_event["headers"]["Host"],
|
||||
)
|
||||
if "resource" in lambda_event:
|
||||
span.set_attribute(SpanAttributes.HTTP_ROUTE, lambda_event["resource"])
|
||||
|
||||
if lambda_event.get("queryStringParameters"):
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
f"{lambda_event.get('resource')}?{urlencode(lambda_event.get('queryStringParameters'))}",
|
||||
)
|
||||
else:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET, lambda_event.get("resource")
|
||||
)
|
||||
if lambda_event.get("queryStringParameters"):
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
f"{lambda_event['resource']}?{urlencode(lambda_event['queryStringParameters'])}",
|
||||
)
|
||||
else:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET, lambda_event["resource"]
|
||||
)
|
||||
|
||||
return span
|
||||
|
||||
@ -237,35 +242,38 @@ def _set_api_gateway_v2_proxy_attributes(
|
||||
More info:
|
||||
https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
|
||||
"""
|
||||
span.set_attribute(
|
||||
SpanAttributes.NET_HOST_NAME,
|
||||
lambda_event["requestContext"].get("domainName"),
|
||||
)
|
||||
if "domainName" in lambda_event["requestContext"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.NET_HOST_NAME,
|
||||
lambda_event["requestContext"]["domainName"],
|
||||
)
|
||||
|
||||
if lambda_event["requestContext"].get("http"):
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_METHOD,
|
||||
lambda_event["requestContext"]["http"].get("method"),
|
||||
)
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_USER_AGENT,
|
||||
lambda_event["requestContext"]["http"].get("userAgent"),
|
||||
)
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_ROUTE,
|
||||
lambda_event["requestContext"]["http"].get("path"),
|
||||
)
|
||||
|
||||
if lambda_event.get("rawQueryString"):
|
||||
if "method" in lambda_event["requestContext"]["http"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
f"{lambda_event['requestContext']['http'].get('path')}?{lambda_event.get('rawQueryString')}",
|
||||
SpanAttributes.HTTP_METHOD,
|
||||
lambda_event["requestContext"]["http"]["method"],
|
||||
)
|
||||
else:
|
||||
if "userAgent" in lambda_event["requestContext"]["http"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
lambda_event["requestContext"]["http"].get("path"),
|
||||
SpanAttributes.HTTP_USER_AGENT,
|
||||
lambda_event["requestContext"]["http"]["userAgent"],
|
||||
)
|
||||
if "path" in lambda_event["requestContext"]["http"]:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_ROUTE,
|
||||
lambda_event["requestContext"]["http"]["path"],
|
||||
)
|
||||
if lambda_event.get("rawQueryString"):
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
f"{lambda_event['requestContext']['http']['path']}?{lambda_event['rawQueryString']}",
|
||||
)
|
||||
else:
|
||||
span.set_attribute(
|
||||
SpanAttributes.HTTP_TARGET,
|
||||
lambda_event["requestContext"]["http"]["path"],
|
||||
)
|
||||
|
||||
return span
|
||||
|
||||
|
Reference in New Issue
Block a user