Migrating from Serverless Framework v3 to Pulumi — Best practices for large-scale Lambda projects?
Hi everyone! I'm a backend developer relatively new to infrastructure management. I'd appreciate any guidance on my migration journey.
Background:
We're running Serverless Framework v3, which is hitting Node.js version compatibility issues. While evaluating alternatives, we found Pulumi and decided to give it a try.
Our setup:
- ~100 Lambda functions
- Heavily interconnected AWS resources: SQS, SNS, SES, EventBridge, DynamoDB, API Gateway, VPC, etc.
What we tried:
We used Claude Code (AI coding assistant) to convert our serverless.yml definitions into Pulumi code and deployed to our dev environment — but ran into errors.
Root cause:
Serverless Framework implicitly creates a significant number of resources behind the scenes (IAM roles/policies, CloudWatch Log Groups, Lambda permissions, API Gateway integrations, SQS/SNS subscriptions, DLQ
configurations, etc.) that aren't explicitly defined in serverless.yml. Claude Code had no way to know about these implicit resources, so they were missing from the generated Pulumi code. This led to
deployment failures and highlighted a reliability concern — relying on AI to fully capture infrastructure definitions it can't fully "see."
The challenge:
With ~100 Lambdas and dozens of interconnected event sources, manually auditing and defining every implicit resource that Serverless Framework auto-generates feels impractical.
What I'm looking for:
- Are there any best practices or established migration paths from Serverless Framework to Pulumi for projects of this scale?
- Does anyone know of a tool or approach that can introspect the actual deployed CloudFormation stack and generate corresponding Pulumi code (e.g., pulumi import, cf2pulumi, or similar)?
- Has anyone successfully migrated a large Serverless Framework project and can share their strategy for handling the implicit resource gap?
Any advice, tooling recommendations, or lessons learned would be greatly appreciated. Thanks!