diff --git a/src/OpenTelemetry.Instrumentation.AWSLambda/AWSLambdaResourceBuilderExtensions.cs b/src/OpenTelemetry.Instrumentation.AWSLambda/AWSLambdaResourceBuilderExtensions.cs
new file mode 100644
index 0000000000..5ee32ec79b
--- /dev/null
+++ b/src/OpenTelemetry.Instrumentation.AWSLambda/AWSLambdaResourceBuilderExtensions.cs
@@ -0,0 +1,33 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+using OpenTelemetry.AWS;
+using OpenTelemetry.Instrumentation.AWSLambda.Implementation;
+using OpenTelemetry.Internal;
+using OpenTelemetry.Resources;
+
+namespace OpenTelemetry.Instrumentation.AWSLambda;
+
+///
+/// Extension methods to simplify registering of AWS Lambda resource detectors.
+///
+public static class AWSLambdaResourceBuilderExtensions
+{
+ ///
+ /// Enables AWS Lambda resource detector.
+ ///
+ /// The being configured.
+ /// Optional callback action for configuring .
+ /// The instance of being configured.
+ public static ResourceBuilder AddAWSLambdaDetector(this ResourceBuilder builder, Action? configure = null)
+ {
+ Guard.ThrowIfNull(builder);
+
+ var options = new AWSLambdaInstrumentationOptions();
+ configure?.Invoke(options);
+
+ var semanticConventionBuilder = new AWSSemanticConventions(options.SemanticConventionVersion);
+
+ return builder.AddDetector(new AWSLambdaResourceDetector(semanticConventionBuilder));
+ }
+}
diff --git a/src/OpenTelemetry.Instrumentation.AWSLambda/CHANGELOG.md b/src/OpenTelemetry.Instrumentation.AWSLambda/CHANGELOG.md
index 24eba641f8..bbb06fb906 100644
--- a/src/OpenTelemetry.Instrumentation.AWSLambda/CHANGELOG.md
+++ b/src/OpenTelemetry.Instrumentation.AWSLambda/CHANGELOG.md
@@ -7,6 +7,7 @@
* Update Amazon.Lambda.Core dependency from 2.2.0 to 2.8.0 which reworks the internal
logic for determining the trace id created by AWS Lambda.
([#3410](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/3410))
+* Implement AWS Lambda detector ([#3411](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/3411))
## 1.13.0
diff --git a/test/OpenTelemetry.Instrumentation.AWSLambda.Tests/AWSLambdaResourceBuilderExtensionsTests.cs b/test/OpenTelemetry.Instrumentation.AWSLambda.Tests/AWSLambdaResourceBuilderExtensionsTests.cs
new file mode 100644
index 0000000000..3e671e5c40
--- /dev/null
+++ b/test/OpenTelemetry.Instrumentation.AWSLambda.Tests/AWSLambdaResourceBuilderExtensionsTests.cs
@@ -0,0 +1,51 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+using OpenTelemetry.Resources;
+using Xunit;
+
+namespace OpenTelemetry.Instrumentation.AWSLambda.Tests;
+
+public class AWSLambdaResourceBuilderExtensionsTests : IDisposable
+{
+ // Expected Semantic Conventions
+ private const string AttributeCloudProvider = "cloud.provider";
+ private const string AttributeCloudRegion = "cloud.region";
+ private const string AttributeFaasName = "faas.name";
+ private const string AttributeFaasVersion = "faas.version";
+ private const string AttributeFaasInstance = "faas.instance";
+ private const string AttributeFaasMaxMemory = "faas.max_memory";
+
+ private readonly IDisposable environmentScope = EnvironmentVariableScope.Create(
+ ("AWS_REGION", "us-east-1"),
+ ("AWS_LAMBDA_FUNCTION_NAME", "testfunction"),
+ ("AWS_LAMBDA_FUNCTION_VERSION", "latest"),
+ ("AWS_LAMBDA_FUNCTION_MEMORY_SIZE", "128"),
+ ("AWS_LAMBDA_LOG_STREAM_NAME", "2025/07/21/[$LATEST]7b176c212e954e62adfb9b5451cb5374"));
+
+ public void Dispose() => this.environmentScope.Dispose();
+
+ [Fact]
+ public void AssertAttributes()
+ {
+ var resourceBuilder = ResourceBuilder.CreateDefault();
+ resourceBuilder.AddAWSLambdaDetector();
+
+ var resource = resourceBuilder.Build();
+
+ var resourceAttributes = resource.Attributes
+ .ToDictionary(x => x.Key, x => x.Value);
+
+ Assert.Equal("aws", resourceAttributes[AttributeCloudProvider]);
+ Assert.Equal("us-east-1", resourceAttributes[AttributeCloudRegion]);
+ Assert.Equal("testfunction", resourceAttributes[AttributeFaasName]);
+ Assert.Equal("latest", resourceAttributes[AttributeFaasVersion]);
+ Assert.Equal("2025/07/21/[$LATEST]7b176c212e954e62adfb9b5451cb5374",
+ resourceAttributes[AttributeFaasInstance]);
+ Assert.Equal(134217728L, resourceAttributes[AttributeFaasMaxMemory]);
+ }
+
+ [Fact]
+ public void AssertArgumentNullException() =>
+ Assert.Throws(() => AWSLambdaResourceBuilderExtensions.AddAWSLambdaDetector(null!));
+}