Skip to content

Commit 7de806a

Browse files
committed
.
1 parent d4e5b0e commit 7de806a

2 files changed

Lines changed: 46 additions & 37 deletions

File tree

‎sentry_sdk/integrations/aws_lambda/_handler.py‎

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -171,46 +171,54 @@ def sentry_handler(
171171
}
172172

173173
function_name = aws_context.function_name
174-
invoked_function_arn = aws_context.invoked_function_arn
175-
function_version = aws_context.function_version
176-
177-
attributes: "Attributes" = {
178-
SPANDATA.SENTRY_OP: OP.FUNCTION_AWS,
179-
SPANDATA.SENTRY_ORIGIN: ORIGIN,
180-
SPANDATA.SENTRY_KIND: "server",
181-
SPANDATA.SENTRY_SEGMENT_NAME_SOURCE: SegmentNameSource.COMPONENT,
182-
SPANDATA.CLOUD_PROVIDER: CLOUD_PROVIDER,
183-
SPANDATA.CLOUD_PLATFORM: CLOUD_PLATFORM,
184-
SPANDATA.CLOUD_REGION: environ["AWS_REGION"],
185-
SPANDATA.FAAS_NAME: environ["AWS_LAMBDA_FUNCTION_NAME"],
186-
SPANDATA.FAAS_VERSION: environ["AWS_LAMBDA_FUNCTION_VERSION"],
187-
SPANDATA.FAAS_INVOCATION_ID: aws_context.aws_request_id,
188-
SPANDATA.AWS_LAMBDA_INVOKED_ARN: invoked_function_arn,
189-
SPANDATA.AWS_LOG_GROUP_NAMES: [aws_context.log_group_name],
190-
SPANDATA.AWS_LOG_STREAM_NAMES: [aws_context.log_stream_name],
191-
SPANDATA.MESSAGING_BATCH_MESSAGE_COUNT: batch_size,
192-
**header_attributes,
193-
**additional_attributes,
194-
}
195-
196-
arn_parts = invoked_function_arn.split(":")
197-
with capture_internal_exceptions():
198-
attributes[SPANDATA.CLOUD_ACCOUNT_ID] = arn_parts[4]
199174

200-
resource_id = ":".join(arn_parts[:7])
201-
if function_version != LATEST_FUNCTION_VERSION:
202-
resource_id = f"{resource_id}:{function_version}"
203-
attributes[SPANDATA.CLOUD_RESOURCE_ID] = resource_id
175+
if has_span_streaming_enabled(client.options):
176+
attributes: "Attributes" = {
177+
SPANDATA.SENTRY_OP: OP.FUNCTION_AWS,
178+
SPANDATA.SENTRY_ORIGIN: ORIGIN,
179+
SPANDATA.SENTRY_KIND: "server",
180+
SPANDATA.SENTRY_SEGMENT_NAME_SOURCE: SegmentNameSource.COMPONENT,
181+
SPANDATA.CLOUD_PROVIDER: CLOUD_PROVIDER,
182+
SPANDATA.CLOUD_PLATFORM: CLOUD_PLATFORM,
183+
SPANDATA.MESSAGING_BATCH_MESSAGE_COUNT: batch_size,
184+
**header_attributes,
185+
**additional_attributes,
186+
}
204187

205-
if "AWS_LAMBDA_METADATA_API" in environ and has_span_streaming_enabled(
206-
client.options
207-
):
208188
with capture_internal_exceptions():
209-
availability_zone = _get_availability_zone()
210-
if availability_zone is not None:
211-
attributes[SPANDATA.CLOUD_AVAILABILITY_ZONE] = availability_zone
189+
invoked_function_arn = aws_context.invoked_function_arn
190+
function_version = aws_context.function_version
191+
arn_parts = invoked_function_arn.split(":")
192+
resource_id = ":".join(arn_parts[:7])
193+
if function_version != LATEST_FUNCTION_VERSION:
194+
resource_id = f"{resource_id}:{function_version}"
195+
196+
attributes.update(
197+
{
198+
SPANDATA.CLOUD_REGION: environ["AWS_REGION"],
199+
SPANDATA.CLOUD_ACCOUNT_ID: arn_parts[4],
200+
SPANDATA.CLOUD_RESOURCE_ID: resource_id,
201+
SPANDATA.FAAS_NAME: environ["AWS_LAMBDA_FUNCTION_NAME"],
202+
SPANDATA.FAAS_VERSION: environ[
203+
"AWS_LAMBDA_FUNCTION_VERSION"
204+
],
205+
SPANDATA.FAAS_INVOCATION_ID: aws_context.aws_request_id,
206+
SPANDATA.AWS_LAMBDA_INVOKED_ARN: invoked_function_arn,
207+
SPANDATA.AWS_LOG_GROUP_NAMES: [aws_context.log_group_name],
208+
SPANDATA.AWS_LOG_STREAM_NAMES: [
209+
aws_context.log_stream_name
210+
],
211+
}
212+
)
213+
214+
if "AWS_LAMBDA_METADATA_API" in environ:
215+
with capture_internal_exceptions():
216+
availability_zone = _get_availability_zone()
217+
if availability_zone is not None:
218+
attributes[SPANDATA.CLOUD_AVAILABILITY_ZONE] = (
219+
availability_zone
220+
)
212221

213-
if has_span_streaming_enabled(client.options):
214222
sentry_sdk.traces.continue_trace(headers)
215223
Scope.set_custom_sampling_context(sampling_context)
216224
span_ctx = sentry_sdk.traces.start_span(

‎sentry_sdk/integrations/aws_lambda/_metadata.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import urllib3
77

88
from sentry_sdk.integrations.aws_lambda.consts import (
9+
LAMBDA_METADATA_FAILURE_CACHE_SECONDS,
910
LAMBDA_METADATA_PATH,
1011
)
1112

@@ -21,7 +22,7 @@
2122

2223

2324
def _get_availability_zone() -> "Optional[str]":
24-
now = time.monotonic()
25+
now = time.time()
2526
global _lambda_metadata_cache
2627
if _lambda_metadata_cache is not None and _lambda_metadata_cache[0] > now:
2728
return _lambda_metadata_cache[1]

0 commit comments

Comments
 (0)