Skip to content

Commit 57cf7b3

Browse files
author
Jeel Mehta
committed
Adding additional check to SpanExporterBuilder to see if we are already working in Lambda environment or not
1 parent 3dbbae0 commit 57cf7b3

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

exporters/aws-otel-otlp-udp-exporter/src/main/java/software/opentelemetry/exporters/otlp/udp/OtlpUdpSpanExporterBuilder.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package software.opentelemetry.exporters.otlp.udp;
1717

1818
import static java.util.Objects.requireNonNull;
19+
//import static software.amazon.opentelemetry.javaagent.providers.AwsApplicationSignalsCustomizerProvider.AWS_LAMBDA_FUNCTION_NAME_CONFIG;
20+
//import static software.amazon.opentelemetry.javaagent.providers.AwsApplicationSignalsCustomizerProvider.AWS_XRAY_DAEMON_ADDRESS_CONFIG;
1921

2022
public final class OtlpUdpSpanExporterBuilder {
2123

@@ -35,6 +37,9 @@ public final class OtlpUdpSpanExporterBuilder {
3537
private UdpSender sender;
3638
private String tracePayloadPrefix = FORMAT_OTEL_SAMPLED_TRACES_BINARY_PREFIX;
3739

40+
private static final String AWS_LAMBDA_FUNCTION_NAME_CONFIG = "AWS_LAMBDA_FUNCTION_NAME";
41+
private static final String AWS_XRAY_DAEMON_ADDRESS_CONFIG = "AWS_XRAY_DAEMON_ADDRESS";
42+
3843
public OtlpUdpSpanExporterBuilder setEndpoint(String endpoint) {
3944
requireNonNull(endpoint, "endpoint must not be null");
4045
try {
@@ -58,10 +63,34 @@ public OtlpUdpSpanExporterBuilder setPayloadSampleDecision(TracePayloadSampleDec
5863

5964
public OtlpUdpSpanExporter build() {
6065
if (sender == null) {
61-
this.sender = new UdpSender(DEFAULT_HOST, DEFAULT_PORT);
66+
String endpoint = null;
67+
68+
// If in Lambda environment, try to get X-Ray daemon address
69+
if (isLambdaEnvironment()) {
70+
endpoint = System.getenv(AWS_XRAY_DAEMON_ADDRESS_CONFIG);
71+
}
72+
73+
if (endpoint != null) {
74+
// Use the endpoint from Lambda environment
75+
try {
76+
String[] parts = endpoint.split(":");
77+
String host = parts[0];
78+
int port = Integer.parseInt(parts[1]);
79+
this.sender = new UdpSender(host, port);
80+
} catch (Exception e) {
81+
// Fallback to defaults if parsing fails
82+
this.sender = new UdpSender(DEFAULT_HOST, DEFAULT_PORT);
83+
}
84+
} else {
85+
// Use defaults if not in Lambda or if daemon address is not available
86+
this.sender = new UdpSender(DEFAULT_HOST, DEFAULT_PORT);
87+
}
6288
}
6389
return new OtlpUdpSpanExporter(
6490
this.sender, PROTOCOL_HEADER + PROTOCOL_DELIMITER + tracePayloadPrefix);
91+
}
92+
private static boolean isLambdaEnvironment() {
93+
return System.getenv(AWS_LAMBDA_FUNCTION_NAME_CONFIG) != null;
6594
}
6695

6796
// Only for testing

0 commit comments

Comments
 (0)