I'm transitioning our TypeScript project from Serverless to AWS CDK and I've hit a snag. Sometimes, I just need to deploy a single Lambda function without having to redeploy the entire stack. I've read that it's not possible to deploy a resource in a CDK stack in isolation, which led me to consider using nested stacks, where each Lambda would be a separate nested stack. However, I couldn't find any guidance on how to deploy just a nested stack, and when I attempt to run a command like `cdk deploy stack1/nestedStack1`, I get an error indicating that no stacks match that name. So, I'm wondering: how can I deploy just a function using CDK? Is using AWS SAM my only alternative? Thanks for any insights!
6 Answers
A good practice is to avoid using nested stacks if possible. Instead, try to split your resources into separate stacks, and pass the dependencies between them through string parameters. For example, if you have a DynamoDB table in a different stack, save its name as a string parameter, then retrieve that name in your Lambda stack where you're creating the function. It makes setup cleaner and helps with access permissions too.
For rapid code deployments, especially after your Lambda is up and running, I zip up the new code and update it directly. It takes just a few seconds—I've automated it with scripts and a file watcher because, well, I'm a bit lazy! It’s not really best practice but works great for my solo projects.
I totally understand your frustration. I found some documentation that might help you out: [CDK Stacks](https://go.aws/4oM1TQu) and [Nested Stacks](https://go.aws/45ZakR4). Check those out for more detailed guidance!
I don't get where you heard you can’t deploy a stack with just one resource. For Lambda functions, remember that you’ll likely also need to create an IAM Role. Make sure your stack is set up to reflect that.
You can actually deploy just a function if your CDK stack consists solely of that function. When you deploy the first time, everything will be deployed, but if you only change the function later, it will update just that specific part. It's not like SAM has to be your only option; I'm curious why you want to deploy just a single function instead of the whole stack.
A simple approach is to create a separate git branch from your current deployed commit with just the modified Lambda. This ensures dependencies are managed correctly—like if you add environment variables that reference resources that don't exist yet, it won't "compile" until all is properly configured.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically