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,19 @@ 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 (
91- pointer_direction = _SpanPointerDirection .UPSTREAM ,
92- bucket = bucket ,
93- key = key ,
94- etag = etag ,
95- )
96- ]
90+ span_pointer_description = _aws_s3_object_span_pointer_description (
91+ pointer_direction = _SpanPointerDirection .UPSTREAM ,
92+ bucket = bucket ,
93+ key = key ,
94+ etag = etag ,
95+ )
96+ if span_pointer_description is None :
97+ return []
98+
99+ return [span_pointer_description ]
97100
98101 except Exception as e :
99- logger .warning (
102+ logger .debug (
100103 "failed to generate S3 span pointer: %s" ,
101104 e ,
102105 )
@@ -120,10 +123,13 @@ def _calculate_dynamodb_span_pointers_for_event_record(
120123) -> List [_SpanPointerDescription ]:
121124 try :
122125 table_name = _extract_table_name_from_dynamodb_stream_record (record )
126+ if table_name is None :
127+ return []
128+
123129 primary_key = record ["dynamodb" ]["Keys" ]
124130
125131 except Exception as e :
126- logger .warning (
132+ logger .debug (
127133 "missing DynamoDB information required to make a span pointer: %s" ,
128134 e ,
129135 )
@@ -134,23 +140,25 @@ def _calculate_dynamodb_span_pointers_for_event_record(
134140 _aws_dynamodb_item_span_pointer_description ,
135141 )
136142
137- return [
138- _aws_dynamodb_item_span_pointer_description (
139- pointer_direction = _SpanPointerDirection .UPSTREAM ,
140- table_name = table_name ,
141- primary_key = primary_key ,
142- )
143- ]
143+ span_pointer_description = _aws_dynamodb_item_span_pointer_description (
144+ pointer_direction = _SpanPointerDirection .UPSTREAM ,
145+ table_name = table_name ,
146+ primary_key = primary_key ,
147+ )
148+ if span_pointer_description is None :
149+ return []
150+
151+ return [span_pointer_description ]
144152
145153 except Exception as e :
146- logger .warning (
154+ logger .debug (
147155 "failed to generate DynamoDB span pointer: %s" ,
148156 e ,
149157 )
150158 return []
151159
152160
153- def _extract_table_name_from_dynamodb_stream_record (record ) -> str :
161+ def _extract_table_name_from_dynamodb_stream_record (record ) -> Optional [ str ] :
154162 # Example eventSourceARN:
155163 # arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525
156164 event_source_arn = record ["eventSourceARN" ]
@@ -159,10 +167,12 @@ def _extract_table_name_from_dynamodb_stream_record(record) -> str:
159167 ":" , maxsplit = 5
160168 )
161169 if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb" :
162- raise ValueError (f"unexpected eventSourceARN format: { event_source_arn } " )
170+ logger .debug ("unexpected eventSourceARN format: %s" , event_source_arn )
171+ return None
163172
164173 [_table , table_name , _stream , _timestamp ] = dynamodb_info .split ("/" )
165174 if _table != "table" or _stream != "stream" :
166- raise ValueError (f"unexpected eventSourceARN format: { event_source_arn } " )
175+ logger .debug ("unexpected eventSourceARN format: %s" , event_source_arn )
176+ return None
167177
168178 return table_name
0 commit comments