22import logging
33import os
44from typing import List
5+ from typing import Optional
56
67from ddtrace ._trace ._span_pointer import _SpanPointerDirection
78from ddtrace ._trace ._span_pointer import _SpanPointerDescription
@@ -30,7 +31,7 @@ def calculate_span_pointers(
3031 return _calculate_dynamodb_span_pointers_for_event (event )
3132
3233 except Exception as e :
33- logger .warning (
34+ logger .debug (
3435 "failed to calculate span pointers for event: %s" ,
3536 e ,
3637 )
@@ -75,7 +76,7 @@ def _calculate_s3_span_pointers_for_object_created_s3_information(
7576 etag = s3_information ["object" ]["eTag" ]
7677
7778 except KeyError as e :
78- logger .warning (
79+ logger .debug (
7980 "missing s3 information required to make a span pointer: %s" ,
8081 e ,
8182 )
@@ -86,17 +87,31 @@ def _calculate_s3_span_pointers_for_object_created_s3_information(
8687 _aws_s3_object_span_pointer_description ,
8788 )
8889
89- return [
90- _aws_s3_object_span_pointer_description (
90+ try :
91+ span_pointer_description = _aws_s3_object_span_pointer_description (
92+ operation = "S3.LambdaEvent" ,
9193 pointer_direction = _SpanPointerDirection .UPSTREAM ,
9294 bucket = bucket ,
9395 key = key ,
9496 etag = etag ,
9597 )
96- ]
98+ except TypeError :
99+ # The older version of this function did not have an operation
100+ # parameter.
101+ span_pointer_description = _aws_s3_object_span_pointer_description (
102+ pointer_direction = _SpanPointerDirection .UPSTREAM ,
103+ bucket = bucket ,
104+ key = key ,
105+ etag = etag ,
106+ )
107+
108+ if span_pointer_description is None :
109+ return []
110+
111+ return [span_pointer_description ]
97112
98113 except Exception as e :
99- logger .warning (
114+ logger .debug (
100115 "failed to generate S3 span pointer: %s" ,
101116 e ,
102117 )
@@ -120,10 +135,13 @@ def _calculate_dynamodb_span_pointers_for_event_record(
120135) -> List [_SpanPointerDescription ]:
121136 try :
122137 table_name = _extract_table_name_from_dynamodb_stream_record (record )
138+ if table_name is None :
139+ return []
140+
123141 primary_key = record ["dynamodb" ]["Keys" ]
124142
125143 except Exception as e :
126- logger .warning (
144+ logger .debug (
127145 "missing DynamoDB information required to make a span pointer: %s" ,
128146 e ,
129147 )
@@ -134,23 +152,36 @@ def _calculate_dynamodb_span_pointers_for_event_record(
134152 _aws_dynamodb_item_span_pointer_description ,
135153 )
136154
137- return [
138- _aws_dynamodb_item_span_pointer_description (
155+ try :
156+ span_pointer_description = _aws_dynamodb_item_span_pointer_description (
157+ operation = "DynamoDB.LambdaEvent" ,
139158 pointer_direction = _SpanPointerDirection .UPSTREAM ,
140159 table_name = table_name ,
141160 primary_key = primary_key ,
142161 )
143- ]
162+ except TypeError :
163+ # The older version of this function did not have an operation
164+ # parameter.
165+ span_pointer_description = _aws_dynamodb_item_span_pointer_description (
166+ pointer_direction = _SpanPointerDirection .UPSTREAM ,
167+ table_name = table_name ,
168+ primary_key = primary_key ,
169+ )
170+
171+ if span_pointer_description is None :
172+ return []
173+
174+ return [span_pointer_description ]
144175
145176 except Exception as e :
146- logger .warning (
177+ logger .debug (
147178 "failed to generate DynamoDB span pointer: %s" ,
148179 e ,
149180 )
150181 return []
151182
152183
153- def _extract_table_name_from_dynamodb_stream_record (record ) -> str :
184+ def _extract_table_name_from_dynamodb_stream_record (record ) -> Optional [ str ] :
154185 # Example eventSourceARN:
155186 # arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525
156187 event_source_arn = record ["eventSourceARN" ]
@@ -159,10 +190,12 @@ def _extract_table_name_from_dynamodb_stream_record(record) -> str:
159190 ":" , maxsplit = 5
160191 )
161192 if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb" :
162- raise ValueError (f"unexpected eventSourceARN format: { event_source_arn } " )
193+ logger .debug ("unexpected eventSourceARN format: %s" , event_source_arn )
194+ return None
163195
164196 [_table , table_name , _stream , _timestamp ] = dynamodb_info .split ("/" )
165197 if _table != "table" or _stream != "stream" :
166- raise ValueError (f"unexpected eventSourceARN format: { event_source_arn } " )
198+ logger .debug ("unexpected eventSourceARN format: %s" , event_source_arn )
199+ return None
167200
168201 return table_name
0 commit comments