Skip to content

Commit 49d3fdd

Browse files
authored
Revert "0.10.2 Patch Release" (#455)
Reverts #453
1 parent 77c9175 commit 49d3fdd

File tree

15 files changed

+729
-1771
lines changed

15 files changed

+729
-1771
lines changed

.github/workflows/daily_scan.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,15 @@ jobs:
8282
id: high_scan
8383
uses: ./.github/actions/image_scan
8484
with:
85-
image-ref: "public.ecr.aws/aws-observability/adot-autoinstrumentation-python:v0.10.1"
85+
image-ref: "public.ecr.aws/aws-observability/adot-autoinstrumentation-python:v0.10.0"
8686
severity: 'CRITICAL,HIGH'
8787

8888
- name: Perform low image scan
8989
if: always()
9090
id: low_scan
9191
uses: ./.github/actions/image_scan
9292
with:
93-
image-ref: "public.ecr.aws/aws-observability/adot-autoinstrumentation-python:v0.10.1"
93+
image-ref: "public.ecr.aws/aws-observability/adot-autoinstrumentation-python:v0.10.0"
9494
severity: 'MEDIUM,LOW,UNKNOWN'
9595

9696
- name: Configure AWS Credentials for emitting metrics

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/aws_opentelemetry_configurator.py

Lines changed: 17 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
AwsMetricAttributesSpanExporterBuilder,
2424
)
2525
from amazon.opentelemetry.distro.aws_span_metrics_processor_builder import AwsSpanMetricsProcessorBuilder
26-
from amazon.opentelemetry.distro.exporter.console.logs.compact_console_log_exporter import CompactConsoleLogExporter
2726
from amazon.opentelemetry.distro.otlp_udp_exporter import OTLPUdpSpanExporter
2827
from amazon.opentelemetry.distro.sampler.aws_xray_remote_sampler import AwsXRayRemoteSampler
2928
from amazon.opentelemetry.distro.scope_based_exporter import ScopeBasedPeriodicExportingMetricReader
@@ -47,7 +46,7 @@
4746
)
4847
from opentelemetry.sdk._events import EventLoggerProvider
4948
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
50-
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor, ConsoleLogExporter, LogExporter
49+
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor, LogExporter
5150
from opentelemetry.sdk.environment_variables import (
5251
_OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED,
5352
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL,
@@ -123,14 +122,7 @@ class OtlpLogHeaderSetting(NamedTuple):
123122
log_group: Optional[str]
124123
log_stream: Optional[str]
125124
namespace: Optional[str]
126-
127-
def is_valid(self) -> bool:
128-
"""Check if the log header setting is valid by ensuring both log_group and log_stream are present."""
129-
return self.log_group is not None and self.log_stream is not None
130-
131-
132-
# Singleton cache for OtlpLogHeaderSetting
133-
_otlp_log_header_setting_cache: Optional[OtlpLogHeaderSetting] = None
125+
is_valid: bool
134126

135127

136128
class AwsOpenTelemetryConfigurator(_OTelSDKConfigurator):
@@ -217,9 +209,6 @@ def _init_logging(
217209
set_logger_provider(provider)
218210

219211
for _, exporter_class in exporters.items():
220-
if exporter_class is ConsoleLogExporter and _is_lambda_environment():
221-
exporter_class = CompactConsoleLogExporter
222-
_logger.debug("Lambda environment detected, using CompactConsoleLogExporter instead of ConsoleLogExporter")
223212
exporter_args = {}
224213
_customize_log_record_processor(
225214
logger_provider=provider, log_exporter=_customize_logs_exporter(exporter_class(**exporter_args))
@@ -451,7 +440,7 @@ def _customize_logs_exporter(log_exporter: LogExporter) -> LogExporter:
451440

452441
if isinstance(log_exporter, OTLPLogExporter):
453442

454-
if _fetch_logs_header().is_valid():
443+
if _validate_and_fetch_logs_header().is_valid:
455444
endpoint, region = _extract_endpoint_and_region_from_otlp_endpoint(logs_endpoint)
456445
# Setting default compression mode to Gzip as this is the behavior in upstream's
457446
# collector otlp http exporter:
@@ -638,23 +627,18 @@ def _extract_endpoint_and_region_from_otlp_endpoint(endpoint: str):
638627
return endpoint, region
639628

640629

641-
def _fetch_logs_header() -> OtlpLogHeaderSetting:
642-
"""Returns the OTLP log header setting as a singleton instance."""
643-
global _otlp_log_header_setting_cache # pylint: disable=global-statement
644-
645-
if _otlp_log_header_setting_cache is not None:
646-
return _otlp_log_header_setting_cache
630+
def _validate_and_fetch_logs_header() -> OtlpLogHeaderSetting:
631+
"""Checks if x-aws-log-group and x-aws-log-stream are present in the headers in order to send logs to
632+
AWS OTLP Logs endpoint."""
647633

648634
logs_headers = os.environ.get(OTEL_EXPORTER_OTLP_LOGS_HEADERS)
649635

650636
if not logs_headers:
651-
if not _is_lambda_environment():
652-
_logger.warning(
653-
"Improper configuration: Please configure the environment variable OTEL_EXPORTER_OTLP_LOGS_HEADERS "
654-
"to include x-aws-log-group and x-aws-log-stream"
655-
)
656-
_otlp_log_header_setting_cache = OtlpLogHeaderSetting(None, None, None)
657-
return _otlp_log_header_setting_cache
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+
)
641+
return OtlpLogHeaderSetting(None, None, None, False)
658642

659643
log_group = None
660644
log_stream = None
@@ -672,14 +656,9 @@ def _fetch_logs_header() -> OtlpLogHeaderSetting:
672656
elif key == AWS_EMF_METRICS_NAMESPACE and value:
673657
namespace = value
674658

675-
_otlp_log_header_setting_cache = OtlpLogHeaderSetting(log_group, log_stream, namespace)
676-
return _otlp_log_header_setting_cache
677-
659+
is_valid = log_group is not None and log_stream is not None
678660

679-
def _clear_logs_header_cache():
680-
"""Clear the singleton cache for OtlpLogHeaderSetting. Used primarily for testing."""
681-
global _otlp_log_header_setting_cache # pylint: disable=global-statement
682-
_otlp_log_header_setting_cache = None
661+
return OtlpLogHeaderSetting(log_group, log_stream, namespace, is_valid)
683662

684663

685664
def _get_metric_export_interval():
@@ -794,25 +773,8 @@ def _check_emf_exporter_enabled() -> bool:
794773

795774

796775
def _create_emf_exporter():
797-
"""
798-
Create the appropriate EMF exporter based on the environment and configuration.
799-
800-
Returns:
801-
ConsoleEmfExporter for Lambda without log headers log group and stream
802-
AwsCloudWatchEmfExporter for other cases (when conditions are met)
803-
None if CloudWatch exporter cannot be created
804-
"""
776+
"""Create and configure the CloudWatch EMF exporter."""
805777
try:
806-
log_header_setting = _fetch_logs_header()
807-
808-
# Lambda without valid logs http headers - use Console EMF exporter
809-
if _is_lambda_environment() and not log_header_setting.is_valid():
810-
# pylint: disable=import-outside-toplevel
811-
from amazon.opentelemetry.distro.exporter.aws.metrics.console_emf_exporter import ConsoleEmfExporter
812-
813-
return ConsoleEmfExporter(namespace=log_header_setting.namespace)
814-
815-
# For non-Lambda environment or Lambda with valid headers - use CloudWatch EMF exporter
816778
session = get_aws_session()
817779
# Check if botocore is available before importing the EMF exporter
818780
if not session:
@@ -824,7 +786,9 @@ def _create_emf_exporter():
824786
AwsCloudWatchEmfExporter,
825787
)
826788

827-
if not log_header_setting.is_valid():
789+
log_header_setting = _validate_and_fetch_logs_header()
790+
791+
if not log_header_setting.is_valid:
828792
return None
829793

830794
return AwsCloudWatchEmfExporter(

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/aws_opentelemetry_distro.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import importlib
44
import os
55
import sys
6-
from logging import ERROR, Logger, getLogger
6+
from logging import Logger, getLogger
77

88
from amazon.opentelemetry.distro._utils import get_aws_region, is_agent_observability_enabled
99
from amazon.opentelemetry.distro.aws_opentelemetry_configurator import (
@@ -22,17 +22,12 @@
2222
from opentelemetry import propagate
2323
from opentelemetry.distro import OpenTelemetryDistro
2424
from opentelemetry.environment_variables import OTEL_PROPAGATORS, OTEL_PYTHON_ID_GENERATOR
25-
from opentelemetry.instrumentation.auto_instrumentation import _load
26-
from opentelemetry.instrumentation.logging import LEVELS
27-
from opentelemetry.instrumentation.logging.environment_variables import OTEL_PYTHON_LOG_LEVEL
2825
from opentelemetry.sdk.environment_variables import (
2926
OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION,
3027
OTEL_EXPORTER_OTLP_PROTOCOL,
3128
)
3229

3330
_logger: Logger = getLogger(__name__)
34-
# Suppress configurator warnings from auto-instrumentation
35-
_load._logger.setLevel(LEVELS.get(os.environ.get(OTEL_PYTHON_LOG_LEVEL, "error").lower(), ERROR))
3631

3732

3833
class AwsOpenTelemetryDistro(OpenTelemetryDistro):

0 commit comments

Comments
 (0)