@@ -634,10 +634,11 @@ def _validate_and_fetch_logs_header() -> OtlpLogHeaderSetting:
634634 logs_headers = os .environ .get (OTEL_EXPORTER_OTLP_LOGS_HEADERS )
635635
636636 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+ )
641642 return OtlpLogHeaderSetting (None , None , None , False )
642643
643644 log_group = None
@@ -771,8 +772,24 @@ def _check_emf_exporter_enabled() -> bool:
771772
772773 return True
773774
774-
775775def _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 ():
776793 """Create and configure the CloudWatch EMF exporter."""
777794 try :
778795 session = get_aws_session ()
0 commit comments