Open source projects

The Rust crates, upstream contributions, and reference applications I develop for the AWS serverless community.

Crates

lambda-appsync

Crate 2025

A Rust framework for implementing AWS AppSync Direct Lambda resolvers with complete type safety and compile-time validation. Automatically generates Rust types from your GraphQL schema, routes operations to the correct handlers, and enforces the AppSync error contract.

  • Type generation from GraphQL schema via procedural macro
  • Automatic operation routing (Query, Mutation, Subscription)
  • Typed error handling conforming to the AppSync protocol
  • Multi-mode authentication support (API key, Cognito, IAM, OIDC)
  • Compatible with the official Rust Lambda runtime (aws-lambda-rust-runtime)

awssdk-instrumentation

Crate 2026

Out-of-the-box OpenTelemetry instrumentation for AWS Lambda functions using the AWS SDK for Rust. Automatically emits traces, metrics, and structured logs for every AWS API call. When paired with the X-Ray exporter I contributed to opentelemetry-rust-contrib, traces flow natively into the AWS observability ecosystem.

  • Automatic OpenTelemetry traces for all AWS SDK calls
  • Latency and error rate metrics per service and operation
  • Optional AWS X-Ray exporter (via my opentelemetry-rust-contrib contribution)
  • Zero-config: a single macro instruments everything
  • Compatible with any Rust Lambda runtime

dynamodb-facade

Crate 2026

An ergonomic, typed facade over the AWS SDK DynamoDB client for Rust. Eliminates manual key maps, expression strings, pagination loops, and batch chunking — while enforcing correct usage at compile time through typestate builders and a schema encoded in the type system.

  • Zero-boilerplate item wiring via declarative macros (table, attribute, and index definitions as zero-sized types)
  • Composable, typed condition and update expression builders — no `#name` / `:value` juggling
  • Typestate operation builders: supplying a sort key to a table without one, setting a condition twice, and similar misuses are compile-time errors
  • Auto-paginating query & scan (collect or stream) and auto-chunked, retrying batch writes
  • First-class single-table (mono-table) design support

Contributions

opentelemetry-rust-contrib

Contribution 2026

A ~18k-line upstream contribution to the OpenTelemetry Rust Contrib project, adding AWS X-Ray support to the OpenTelemetry Rust ecosystem. This work is what awssdk-instrumentation's X-Ray exporter is built on; it currently ships via a temporary published crate (opentelemetry-aws-temporary-fork) pending upstream merge of PR #549.

  • X-Ray span and trace exporter, mapping OpenTelemetry semantics to the X-Ray data model
  • X-Ray daemon client for UDP delivery to the local X-Ray agent
  • Stdout client for tracing from environments without a daemon (CloudWatch Logs ingestion, local debugging)

Demos

yak-mania

Demo 2026

A multiplayer economy game showcasing the full RustySL stack end-to-end on AWS. Built on AppSync with Rust Lambda direct resolvers powered by lambda-appsync, a single-table DynamoDB backend accessed through dynamodb-facade, and instrumented with awssdk-instrumentation — all fronted by a SvelteKit static site on CloudFront and deployed through CodePipeline V2.

  • Rust Lambda direct resolvers on AppSync with batching and subscriptions
  • Dedicated sub-stack comparing six Lambda instrumentation strategies side by side (4 Python, 2 Rust)
  • Single-table DynamoDB design with Cognito auth and X-Ray tracing
Uses: lambda-appsyncdynamodb-facadeawssdk-instrumentation

benchmark-game

Demo 2025

An interactive clicking game that benchmarks four AppSync resolver implementations in real time: Rust Lambda, Python Lambda, JavaScript resolver, and VTL resolver. The Rust resolver is built with lambda-appsync and dynamodb-facade, and the project doubles as a reference deployment for both crates.

  • Four-way resolver benchmark (Rust / Python / JS / VTL) driven by player clicks
  • Vue.js frontend on CloudFront, CodePipeline deployment, Cognito auth
  • Load-test CLI (simulate_players) for synthetic benchmarking
Uses: lambda-appsyncdynamodb-facade

demo-rust-lambda

Demo 2024

The first demo: a head-to-head comparison of Rust and Python AWS Lambda functions exposed through parallel API Gateways, benchmarked on CPU-bound workloads (Ackermann, prime numbers). The published results show Rust at roughly 50× faster, 33× cheaper, and 4× less memory-hungry than Python on the same tasks.

  • Two parallel API Gateways, one Rust runtime and one Python, sharing a DynamoDB backend
  • CPU workloads designed to stress cold-start and warm-execution paths
  • CloudWatch Log Insights queries for reproducible measurement, results published as a public spreadsheet