Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6cc1c4d
Add .NET SDK support for Serverless Workers on AWS Lambda
harish-narayanappa-10 Aug 31, 2026
9d84dba
Fold findings from a real .NET deployment into the skill
harish-narayanappa-10 Aug 31, 2026
101df5f
Merge branch 'java-sdk-support' of ssh://github.com/temporalio/skill-…
harish-narayanappa-10 Sep 1, 2026
54278c5
minor updates to readme/sdk config
harish-narayanappa-10 Sep 1, 2026
ccdd389
minor edits to fix unverifed reference to files
harish-narayanappa-10 Sep 1, 2026
c495625
Merge branch 'main' of ssh://github.com/temporalio/skill-temporal-ser…
harish-narayanappa-10 Sep 1, 2026
55204c4
updates to some .net specifics
harish-narayanappa-10 Sep 1, 2026
7410d18
removing .NET related change
harish-narayanappa-10 Sep 1, 2026
349fb7d
updates to code references again
harish-narayanappa-10 Sep 2, 2026
57f9317
minor fix based on copilot suggestion
harish-narayanappa-10 Sep 2, 2026
8d7c219
Merge branch 'dotnet-sdk-support' into codex/refactor-sdk-references
harish-narayanappa-10 Sep 2, 2026
a4c2be4
Carry dotnet-sdk-support's Java citation fixes into sdk-java.md
harish-narayanappa-10 Sep 2, 2026
22144a0
adding minor change to the top level skill md file
harish-narayanappa-10 Sep 2, 2026
50735d8
Drops prose that argues for rules the bold leads already state. No …
harish-narayanappa-10 Sep 2, 2026
f259b3a
remove redundant/repeated information
harish-narayanappa-10 Sep 3, 2026
d3772dc
addressing review comment - reducing verbosity
harish-narayanappa-10 Sep 3, 2026
125c68a
updated based on review comments
harish-narayanappa-10 Sep 3, 2026
60ced1f
addressed partial set of review comments
harish-narayanappa-10 Sep 3, 2026
40fed40
addressing comments to leave java-specific changes out of this pr
harish-narayanappa-10 Sep 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Deploy and operate [Temporal](https://temporal.io/) Workers on serverless comput

## What the skill can do

- Build Serverless Workers with the Go, Python, TypeScript, or Java SDK.
- Build Serverless Workers with the Go, Python, TypeScript, Java, or .NET SDK.
- Package and deploy Workers to AWS Lambda with the correct architecture, timeout, and shutdown settings.
- Configure the separate AWS roles used by the Lambda function and by Temporal.
- Register a Worker Deployment Version, validate its Task Queue binding, and set it current.
Expand All @@ -26,7 +26,7 @@ Deploy and operate [Temporal](https://temporal.io/) Workers on serverless comput
|---|---|
| Compute | AWS Lambda — Public Preview |
| Temporal | Temporal Cloud and self-hosted Temporal Service |
| SDKs | Go, Python, TypeScript, Java |
| SDKs | Go, Python, TypeScript, Java, .NET |
| Other compute providers | Not currently supported |

For Temporal Cloud, the Namespace must be hosted on AWS. The Namespace and Lambda function may be in different AWS regions.
Expand Down Expand Up @@ -94,6 +94,10 @@ Add OpenTelemetry tracing to my Go Serverless Worker on Lambda.
Package this Java Worker as a shaded jar and deploy it to Lambda.
```

```text
Deploy this .NET Worker to Lambda with a runtime-specific publish.
```

Comment thread
harish-narayanappa-10 marked this conversation as resolved.
For a new deployment, the skill follows five stages:

1. **Scope** — confirm the SDK, compute provider, Namespace, region, and resource-naming prefix.
Expand Down Expand Up @@ -124,6 +128,7 @@ Nothing is created before you approve the resource list. Troubleshooting and ins
| [`references/aws-lambda/sdk-python.md`](references/aws-lambda/sdk-python.md) | Python package, API, handler, build, packaging, Lambda deployment values, tuned defaults, connection configuration, OpenTelemetry integration, and diagnostics |
| [`references/aws-lambda/sdk-typescript.md`](references/aws-lambda/sdk-typescript.md) | TypeScript package, API, handler, Workflow pre-bundling, build, packaging, Lambda deployment values, tuned defaults, connection configuration, and OpenTelemetry integration |
| [`references/aws-lambda/sdk-java.md`](references/aws-lambda/sdk-java.md) | Java artifact, API, handler, callbacks, build, packaging, Lambda deployment values, tuned defaults, connection configuration, OpenTelemetry integration, logging, and diagnostics |
| [`references/aws-lambda/sdk-dotnet.md`](references/aws-lambda/sdk-dotnet.md) | .NET package, API, handler, build, RID-specific publish, Lambda deployment values, tuned defaults, connection configuration, OpenTelemetry integration, logging, and diagnostics |
| [`references/aws-lambda/setup.md`](references/aws-lambda/setup.md) | Shared AWS and Temporal deployment lifecycle, verification, and teardown workflow |
| [`references/aws-lambda/iam.md`](references/aws-lambda/iam.md) | Operator permissions, Lambda execution role, and Temporal invocation role |
| [`references/aws-lambda/diagnostics.md`](references/aws-lambda/diagnostics.md) | Diagnostic decision tree and WCI inspection |
Expand Down
4 changes: 3 additions & 1 deletion SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Every supported provider's directory carries the same shared layout — `setup.m
| Python | `references/aws-lambda/sdk-python.md` |
| TypeScript | `references/aws-lambda/sdk-typescript.md` |
| Java | `references/aws-lambda/sdk-java.md` |
| .NET | `references/aws-lambda/sdk-dotnet.md` |

**Public Preview is not GA.** The APIs are still evolving and may change: pin SDK and CLI versions for anything long-lived, and read the installed package's actual API surface rather than writing from memory.

Expand Down Expand Up @@ -90,7 +91,7 @@ Where the harness has a todo list, use it *in addition to* the printed checklist

**A step is complete when its verification passed — not when its command exited zero.** Several commands in this workflow exit clean having done nothing: the traffic-shifting and key-revocation commands no-op when their confirmation prompt goes unanswered, and providers return from create and update calls while the resource is still settling. Check an item off against state you read back, not against an exit code. When a step's verification fails, say which step you are on and what it is blocked on rather than moving down the list.

1. **Scope the task.** Identify the SDK language (Go, Python, TypeScript, or Java), the deployment target (Temporal Cloud or self-hosted — self-hosted has its own server prerequisites), the compute provider, and whether this is a new setup, a configuration change, or troubleshooting. Confirm the deployment target is compatible with the chosen provider — see "A Namespace on the target cloud provider is required" under Provider-neutral principles. Ensure a Temporal client/CLI is available and authenticated to the target. Each changes the specifics. → `references/concepts.md` for what the user is building; `references/<provider>/setup.md` for the compatibility and client-setup details.
1. **Scope the task.** Identify the SDK language (Go, Python, TypeScript, Java, or .NET), the deployment target (Temporal Cloud or self-hosted — self-hosted has its own server prerequisites), the compute provider, and whether this is a new setup, a configuration change, or troubleshooting. Confirm the deployment target is compatible with the chosen provider — see "A Namespace on the target cloud provider is required" under Provider-neutral principles. Ensure a Temporal client/CLI is available and authenticated to the target. Each changes the specifics. → `references/concepts.md` for what the user is building; `references/<provider>/setup.md` for the compatibility and client-setup details.

**Put the compute provider in that batch of questions as a confirmable default, not a free choice.** Pre-select the supported provider from the table above and carry its support status in the option's description. The user confirms rather than chooses, so it costs no extra turn, but the provider is never something they were assumed into. Skip the question only when the request already names a provider. Do not restate any of this in a paragraph before the questions; the option description is where it belongs.

Expand Down Expand Up @@ -229,6 +230,7 @@ Most questions need 2–3 reference files.
| Python SDK-specific options and tuned defaults, package and import, API inspection, handler, build and packaging, runtime and deployment values, versioning-behavior configuration, connection config, OpenTelemetry integration, diagnostic signatures. | `references/<provider>/sdk-python.md` |
| TypeScript SDK-specific options and tuned defaults, package and import, API inspection, handler, build and packaging, runtime and deployment values, versioning-behavior configuration, connection config, pre-bundled Workflow code, OpenTelemetry integration. | `references/<provider>/sdk-typescript.md` |
| Java SDK-specific options and tuned defaults, artifact and imports, API inspection, handler, build and packaging, runtime and deployment values, versioning-behavior configuration, connection config, OpenTelemetry integration, logging and diagnostic signatures. | `references/<provider>/sdk-java.md` |
| .NET SDK-specific options and tuned defaults, package and imports, API inspection, handler, RID-specific publish and packaging, runtime and deployment values, versioning-behavior configuration, connection config and `SSL_CERT_FILE`, OpenTelemetry integration, logging and diagnostic signatures. | `references/<provider>/sdk-dotnet.md` |
| Add OpenTelemetry observability, Collector config, X-Ray, and IAM. | `references/<provider>/observability.md` + the selected `references/<provider>/sdk-<language>.md` |
| Worker not invoked, Workflows not progressing, inspect the WCI. | `references/<provider>/diagnostics.md` + the selected `references/<provider>/sdk-<language>.md` (+ `references/concepts.md`) |
| Long-running Activities and timeout relationships. Isolate Activities from resource exhaustion. | `references/concepts.md` (+ the selected `references/<provider>/sdk-<language>.md`) |
Expand Down
4 changes: 2 additions & 2 deletions references/aws-lambda/diagnostics.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,9 @@ Common errors include: <!-- docs/troubleshooting/serverless-workers.mdx:136 -->

### Language-specific signatures

**No application logs at all, but the Worker clearly ran.** Two different SDKs produce this same misleading silence by unrelated mechanisms, and in both cases the Worker is healthy — only the logging is broken. Diagnose invocation health from Lambda's own runtime markers (`INIT_START`/`START`/`END`/`REPORT`) and CloudWatch metrics instead, then fix the binding.
**No application logs at all, but the Worker clearly ran.** SDK-specific logging configuration can suppress application logs even when the Worker is healthy. Diagnose invocation health from Lambda's runtime markers (`INIT_START`/`START`/`END`/`REPORT`) and CloudWatch metrics.

For SDK-specific diagnostics, see the selected SDK reference.
For the exact logging cause and fix, see the selected SDK reference.

### Check for Lambda timeout

Expand Down
1 change: 1 addition & 0 deletions references/aws-lambda/observability.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Load the selected SDK reference's **Observability** section:
| Python | `sdk-python.md` → Observability |
| TypeScript | `sdk-typescript.md` → Observability |
| Java | `sdk-java.md` → Observability |
| .NET | `sdk-dotnet.md` → Observability |

The remaining steps in this file are shared across SDKs.

Expand Down
Loading