Skip to content

Commit 9d2b35e

Browse files
Also add is_lambda support to AwsCloudWatchEmfExporter
- Update AwsCloudWatchEmfExporter to accept and pass is_lambda parameter - Use _is_lambda_environment() for both ConsoleEmfExporter and AwsCloudWatchEmfExporter in _create_emf_exporter() - Add unit test for is_lambda initialization in AwsCloudWatchEmfExporter 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent e512c07 commit 9d2b35e

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ def _create_emf_exporter():
835835
# pylint: disable=import-outside-toplevel
836836
from amazon.opentelemetry.distro.exporter.aws.metrics.console_emf_exporter import ConsoleEmfExporter
837837

838-
return ConsoleEmfExporter(namespace=log_header_setting.namespace, is_lambda=True)
838+
return ConsoleEmfExporter(namespace=log_header_setting.namespace, is_lambda=_is_lambda_environment())
839839

840840
# For non-Lambda environment or Lambda with valid headers - use CloudWatch EMF exporter
841841
session = get_aws_session()
@@ -857,6 +857,7 @@ def _create_emf_exporter():
857857
namespace=log_header_setting.namespace,
858858
log_group_name=log_header_setting.log_group,
859859
log_stream_name=log_header_setting.log_stream,
860+
is_lambda=_is_lambda_environment(),
860861
)
861862
# pylint: disable=broad-exception-caught
862863
except Exception as errors:

aws-opentelemetry-distro/src/amazon/opentelemetry/distro/exporter/aws/metrics/aws_cloudwatch_emf_exporter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def __init__(
3434
aws_region: Optional[str] = None,
3535
preferred_temporality: Optional[Dict[type, AggregationTemporality]] = None,
3636
preferred_aggregation: Optional[Dict[type, Any]] = None,
37+
is_lambda: bool = False,
3738
**kwargs,
3839
):
3940
"""
@@ -46,9 +47,10 @@ def __init__(
4647
aws_region: AWS region (auto-detected if None)
4748
preferred_temporality: Optional dictionary mapping instrument types to aggregation temporality
4849
preferred_aggregation: Optional dictionary mapping instrument types to preferred aggregation
50+
is_lambda: Whether the exporter is running in AWS Lambda environment
4951
**kwargs: Additional arguments passed to botocore client
5052
"""
51-
super().__init__(namespace, preferred_temporality, preferred_aggregation)
53+
super().__init__(namespace, preferred_temporality, preferred_aggregation, is_lambda=is_lambda)
5254

5355
self.log_group_name = log_group_name
5456

aws-opentelemetry-distro/tests/amazon/opentelemetry/distro/exporter/aws/metrics/test_aws_cloudwatch_emf_exporter.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,32 @@ def test_initialization_with_custom_params(self, mock_session):
161161
self.assertEqual(exporter.namespace, "CustomNamespace")
162162
self.assertEqual(exporter.log_group_name, "custom-log-group")
163163

164+
@patch("botocore.session.Session")
165+
def test_is_lambda_initialization(self, mock_session):
166+
"""Test exporter initialization with is_lambda parameter."""
167+
# Mock the botocore session to avoid AWS calls
168+
mock_client = Mock()
169+
mock_session_instance = Mock()
170+
mock_session.return_value = mock_session_instance
171+
mock_session_instance.create_client.return_value = mock_client
172+
173+
# Test with is_lambda=True
174+
exporter_lambda = AwsCloudWatchEmfExporter(
175+
session=mock_session_instance,
176+
namespace="TestNamespace",
177+
log_group_name="test-log-group",
178+
is_lambda=True,
179+
)
180+
self.assertTrue(exporter_lambda._is_lambda)
181+
182+
# Test with is_lambda=False (default)
183+
exporter_non_lambda = AwsCloudWatchEmfExporter(
184+
session=mock_session_instance,
185+
namespace="TestNamespace",
186+
log_group_name="test-log-group",
187+
)
188+
self.assertFalse(exporter_non_lambda._is_lambda)
189+
164190
def test_get_unit_mapping(self):
165191
"""Test unit mapping functionality."""
166192
# Test known units from UNIT_MAPPING

0 commit comments

Comments
 (0)