diff --git a/instrumentation/aws_lambda/lib/opentelemetry/instrumentation/aws_lambda/wrap.rb b/instrumentation/aws_lambda/lib/opentelemetry/instrumentation/aws_lambda/wrap.rb index 655fb7b2b8..8b02685190 100644 --- a/instrumentation/aws_lambda/lib/opentelemetry/instrumentation/aws_lambda/wrap.rb +++ b/instrumentation/aws_lambda/lib/opentelemetry/instrumentation/aws_lambda/wrap.rb @@ -43,7 +43,7 @@ def wrap_lambda(event:, context:, handler:, flush_timeout: DEFAULT_FLUSH_TIMEOUT begin response = yield - unless span.attributes.key?(OpenTelemetry::SemanticConventions::Trace::HTTP_STATUS_CODE) + if span.recording? && !span.attributes.key?(OpenTelemetry::SemanticConventions::Trace::HTTP_STATUS_CODE) status_code = response['statusCode'] || response[:statusCode] if response.is_a?(Hash) span.set_attribute(OpenTelemetry::SemanticConventions::Trace::HTTP_STATUS_CODE, status_code) if status_code end