diff --git a/.gitignore b/.gitignore
index 97a330f..00e2bea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,6 @@ obj/
/.vs
/.vscode
/.idea
+
+# Local developer overrides
+Directory.Build.local.props
diff --git a/Directory.Build.props b/Directory.Build.props
index 3eb3e4c..ca7cae1 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -35,4 +35,6 @@
+
+
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 4fd371b..f3eb858 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -4,6 +4,7 @@
+
@@ -18,6 +19,8 @@
+
+
diff --git a/README.md b/README.md
index eb74da1..ff54bec 100644
--- a/README.md
+++ b/README.md
@@ -25,6 +25,7 @@ Prerequisites:
* [EagerWorkflowStart](src/EagerWorkflowStart) - Demonstrates usage of Eager Workflow Start to reduce latency for workflows that start with a local activity.
* [Encryption](src/Encryption) - End-to-end encryption with Temporal payload codecs.
* [EnvConfig](src/EnvConfig) - Load client configuration from TOML files with programmatic overrides
+* [LambdaWorker](src/LambdaWorker) - Run a Temporal Worker inside an AWS Lambda function.
* [Mutex](src/Mutex) - How to implement a mutex as a workflow. Demonstrates how to avoid race conditions or parallel mutually exclusive operations on the same resource.
* [NexusCancellation](src/NexusCancellation) - Demonstrates how to cancel a running Nexus operation from a caller workflow.
* [NexusContextPropagation](src/NexusContextPropagation) - Context propagation through Nexus services.
@@ -83,4 +84,4 @@ Can add options like:
There is also a standalone project for running tests so output is more visible. To use it, run
`dotnet run --project tests/TemporalioSamples.Tests.csproj` and can pass options after `--`, e.g. `-- -verbose` and/or
-`-- -method "*.RunAsync_SimpleRun_SucceedsAfterRetry"`.
\ No newline at end of file
+`-- -method "*.RunAsync_SimpleRun_SucceedsAfterRetry"`.
diff --git a/TemporalioSamples.sln b/TemporalioSamples.sln
index 4f16013..e5dd716 100644
--- a/TemporalioSamples.sln
+++ b/TemporalioSamples.sln
@@ -97,6 +97,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemporalioSamples.NexusMult
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemporalioSamples.EnvConfig", "src\EnvConfig\TemporalioSamples.EnvConfig.csproj", "{52CE80AF-09C3-4209-8A21-6CFFAA3B2B01}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemporalioSamples.LambdaWorker", "src\LambdaWorker\TemporalioSamples.LambdaWorker.csproj", "{D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemporalioSamples.Timer", "src\Timer\TemporalioSamples.Timer.csproj", "{B37B3E98-4B04-48B8-9017-F0EDEDC7BD98}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemporalioSamples.UpdatableTimer", "src\UpdatableTimer\TemporalioSamples.UpdatableTimer.csproj", "{5D02DFEA-DC08-4B7B-8E26-EDAC1942D347}"
@@ -663,6 +665,18 @@ Global
{5D493692-53AB-4FAA-BA4D-33B1E54E9A48}.Release|x64.Build.0 = Release|Any CPU
{5D493692-53AB-4FAA-BA4D-33B1E54E9A48}.Release|x86.ActiveCfg = Release|Any CPU
{5D493692-53AB-4FAA-BA4D-33B1E54E9A48}.Release|x86.Build.0 = Release|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Debug|x64.Build.0 = Debug|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Debug|x86.Build.0 = Debug|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Release|x64.ActiveCfg = Release|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Release|x64.Build.0 = Release|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Release|x86.ActiveCfg = Release|Any CPU
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -711,6 +725,7 @@ Global
{18E26AEE-5DA3-7BF8-A1AD-13A28A6C7BA3} = {1A647B41-53D0-4638-AE5A-6630BAAE45FC}
{8BE23F78-7178-4924-AB45-4AF74454CC97} = {18E26AEE-5DA3-7BF8-A1AD-13A28A6C7BA3}
{52CE80AF-09C3-4209-8A21-6CFFAA3B2B01} = {1A647B41-53D0-4638-AE5A-6630BAAE45FC}
+ {D1D6B7AD-0E12-4D8C-83BE-9CE3EB916DD7} = {1A647B41-53D0-4638-AE5A-6630BAAE45FC}
{B37B3E98-4B04-48B8-9017-F0EDEDC7BD98} = {1A647B41-53D0-4638-AE5A-6630BAAE45FC}
{5D02DFEA-DC08-4B7B-8E26-EDAC1942D347} = {1A647B41-53D0-4638-AE5A-6630BAAE45FC}
{AF077751-E4B9-4696-93CB-74653F0BB6C4} = {1A647B41-53D0-4638-AE5A-6630BAAE45FC}
diff --git a/src/LambdaWorker/.gitignore b/src/LambdaWorker/.gitignore
new file mode 100644
index 0000000..69b7c32
--- /dev/null
+++ b/src/LambdaWorker/.gitignore
@@ -0,0 +1,2 @@
+temporal.toml
+otel-collector-config.yaml
diff --git a/src/LambdaWorker/Activities.cs b/src/LambdaWorker/Activities.cs
new file mode 100644
index 0000000..11b7e37
--- /dev/null
+++ b/src/LambdaWorker/Activities.cs
@@ -0,0 +1,16 @@
+namespace TemporalioSamples.LambdaWorker;
+
+using Microsoft.Extensions.Logging;
+using Temporalio.Activities;
+
+public static class Activities
+{
+ [Activity]
+ public static string HelloActivity(string name)
+ {
+ ActivityExecutionContext.Current.Logger.LogInformation(
+ "HelloActivity started with name: {Name}",
+ name);
+ return $"Hello, {name}!";
+ }
+}
diff --git a/src/LambdaWorker/Function.cs b/src/LambdaWorker/Function.cs
new file mode 100644
index 0000000..e5f5f36
--- /dev/null
+++ b/src/LambdaWorker/Function.cs
@@ -0,0 +1,25 @@
+namespace TemporalioSamples.LambdaWorker;
+
+using Amazon.Lambda.Core;
+using Temporalio.Common;
+using Temporalio.Extensions.Aws.Lambda;
+using Temporalio.Extensions.Aws.Lambda.OpenTelemetry;
+
+public class LambdaFunction
+{
+ private static readonly Func