@@ -634,10 +634,11 @@ def _validate_and_fetch_logs_header() -> OtlpLogHeaderSetting:
634
634
logs_headers = os .environ .get (OTEL_EXPORTER_OTLP_LOGS_HEADERS )
635
635
636
636
if not logs_headers :
637
- _logger .warning (
638
- "Improper configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS "
639
- "to include x-aws-log-group and x-aws-log-stream"
640
- )
637
+ if not _is_lambda_environment ():
638
+ _logger .warning (
639
+ "Improper configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS "
640
+ "to include x-aws-log-group and x-aws-log-stream"
641
+ )
641
642
return OtlpLogHeaderSetting (None , None , None , False )
642
643
643
644
log_group = None
@@ -771,8 +772,24 @@ def _check_emf_exporter_enabled() -> bool:
771
772
772
773
return True
773
774
774
-
775
775
def _create_emf_exporter ():
776
+ """
777
+ Create the appropriate EMF exporter based on the environment and configuration.
778
+
779
+ """
780
+ log_header_setting = _validate_and_fetch_logs_header ()
781
+
782
+ if _is_lambda_environment () and not log_header_setting .is_valid :
783
+ # Lambda without valid logs http headers - use Console EMF exporter
784
+ from amazon .opentelemetry .distro .exporter .aws .metrics .console_emf_exporter import (
785
+ ConsoleEmfExporter ,
786
+ )
787
+ return ConsoleEmfExporter (namespace = log_header_setting .namespace )
788
+ else :
789
+ # Non-Lambda environment - use CloudWatch EMF exporter
790
+ return _create_cloudwatch_emf_exporter ()
791
+
792
+ def _create_cloudwatch_emf_exporter ():
776
793
"""Create and configure the CloudWatch EMF exporter."""
777
794
try :
778
795
session = get_aws_session ()
0 commit comments