6 ms·
Stelvio: Ship Python to AWS
- fxwin 9mo ago1) The first 2 links in the readme are 404s 2) I feel like the very first question this project needs to answer is: "Why should i use this over the official AWS CDK?" (assuming you want other people to use this). Besides maybe some nicer syntax I don't really see a reason to use this and lose all the (sometimes lacking) documentation, examples + community support that exists for CDK. 2.1) The listed benefits include "Use your favorite [...] type checker", but the example uses strings for specifying field types (vs. AWS CDK which would use enums, and is also "pure python") which immediately throws that out of the window
- michal-stlv 9mo agoThanks for having a look. 1. Links are fixed now. 2. We try to answer that hopefully better at our website https://stelvio.dev https://stelvio.dev but you're right we should do it better in readme too! - Can you please be more specific regarding syntax? What you don't like or what you'd like to see? We try to have - Whole point of Stelvio is that you need to write much less code to define your infra, e.g. almost none IAM code due to our linking system. We also have "dev mode" which let's you to test/debug your lambdas locally without re-deployment - We try to have comprehensive documentation and guide covering each component. If you see something missing please can you be more specific? - Regarding community support we can't do much here other than grow community which we're trying to do. Having said that we're happy to support our users personally and answer any question or help you onboard. Just shoot email to team@stelvio.dev 2.1 many parameters/fields/properties in Stelvio have option to use either enum or string. If it's string with specific supported values it's defined as e.g. ` Literal["keys-only", "new-image", "old-image", "new-and-old-images"]` so you'll get help of IDE for auto complete as well as type-checker/linter if you use wrong value. Thank you again for your valuable feedback. Happy to talk anytime. If you want to try Stelvio just shoot us an email and we'll help you along the way.
- raw_anon_1111 9mo agoWe also have "dev mode" which let's you to test/debug your lambdas locally without re-deployment As does both SAM and the CDK. https://docs.aws.amazon.com/cdk/v2/guide/testing-locally-getting-started.html https://docs.aws.amazon.com/cdk/v2/guide/testing-locally-get... But this is 2026. You should be deploying Docker containers to Lambda and those are really easy to test locally
- SamuelAdams 9mo agoDocker has a large cold start time usually, sometimes it can take up to 10 seconds for a dockerized Python lambda to invoke. Are there solutions for that, that include docker?
- raw_anon_1111 9mo agoFair point, I’m working on a project now that doesn’t require responsiveness - it’s not user facing. We were burned so bad by Lambda cold starts for user facing lambdas that were backing websites we said forget it and just used ECS/fargate. This is my go to template - I didn’t write it. I found it 7 years ago. https://github.com/1Strategy/fargate-cloudformation-example/blob/master/fargate.yaml https://github.com/1Strategy/fargate-cloudformation-example/... You just update the parameter for your container image and redeploy. Of course you have provisioned concurrency that can help. But the easiest way to test Python lambdas locally is just to run it like any other Python script and call your event handler with the event you want to test
- yunwal 9mo agoThe manifesto link in the README still points to https://stelvio.dev/manifesto/ https://stelvio.dev/manifesto/, which should be about/manifesto/
- michal-stlv 9mo agothanks for taking time to let us know. not sure what's going on I checked on multiple devices and it links correctly.
- raw_anon_1111 9mo agoWhy would I ever use this instead of just using the CDK with Python? There is plenty of documentation and my experience is I can one shot my entire IAC with a well defined spec with ChatGPT to generate CDK code. Yes I know AWS well enough to know whether it is correct
- moribvndvs 9mo agoAlso where is this idea that it takes days to ship Python in CDK coming from? Edit: great, getting downvoted for daring to ask the author to explain a claim. I’m noticing other people asking questions getting downvoted, too. Brigading isn’t a good look.
- sebst 9mo agoStelvio's main selling point here is that you can use our higher-level components for different services and have them automatically configured. So, you don't have to configure IAM roles, or Env vars manually, as this is handled for you through a concept called linking. https://stelvio.dev/concepts/linking/ https://stelvio.dev/concepts/linking/ In our experience, that alone adds a lot of productivity gains for teams.
- raw_anon_1111 9mo agoHigher level CDK constructs do the same thing. But honestly, IAC is one of the easiest thing for LLMs to do and there is plenty of documentation to troubleshoot. There is no reason to introduce this into a company instead of using the official CDK.
- sebst 9mo agoTrue, and there's nothing wrong with them. We still believe to have a more flexible solution that also adds some features, including combining multiple cloud providers which at the moment we use to enable cloudflare DNS in front of AWS infra. Feel free to give it a try!
- insane_dreamer 9mo agoIt's unlikely to cover the AWS API's with 100% certainty, and I don't want to spend time trying to work out the kinks, so honestly, I'd rather just use the AWS CDK and CloudFormation.
- sebst 9mo agoCo-Author here. As long as you have trust in the underlying API of the Pulumi resources that Stelvio creates on your behalf, we have a mechanism in place that let's you fine-tune every parameter if you like. See: https://stelvio.dev/concepts/customization/ https://stelvio.dev/concepts/customization/ Otherwise, you can stick with Stelvio's sensible defaults if you wish.
- raw_anon_1111 9mo agoYou know you aren’t making a great case for yourself right? This is a solution looking for a problem.
- sebst 9mo agoWe believe that we're creating a solution for problems that we fought with during a combined 40 years of experience in the team. ymmv, but you are invited to give it a try. Happy to show you a demo ;)
- raw_anon_1111 9mo agoYet I have never had those problems in 8 years of working with AWS including almost 4 working at AWS ProServe (no longer there). I would never depend on a third party IAC package aside from Terraform knowing the surface area of AWS services and nit knowing if this is still going to be supported a decade from now.
- michal-stlv 9mo agoIt's not unlikely, I guarantee it will never happen. Because that's not the point. Point is to cover most of the common cases (with escape hatch for fine-tuning in special case) and make those super easy and short to do so devs can focus on code and not infrastructure. It's standard higher level abstraction play of doing more with less (code and time spent). Thank you for the feedback.
- jekude 9mo agoHow does this compare to https://encore.dev/ https://encore.dev/ or other infrastructure-inside-application-code solutions?
- sebst 9mo agoConceptually similar, maybe other opinions baked in. encore focusses on TypeScript and Python. Stelvio is a solution for Python.
- coronapl 9mo agoI’ve used SST, Pulumi, CDK, and Terraform. I decided to stick with SST because it offers a far superior development experience. Sure, I could write IAM policies with plain CDK, but it’s more error-prone and harder to maintain. Features like linking and live lambdas just make development so much easier. I actually think this project makes a lot of sense. It lets you get started in minutes without dealing with unnecessary details. Furthermore, you can always access the low-level Pulumi component and override whatever you need. Keep doing what you’re doing! Your project makes IaC more accessible to everyone, and that’s a good thing. I’ll be happy to try it.
- sebst 9mo agoAppreciate it! Let me know if you’d like to chat about your experience at some point in time!
- tuhgdetzhh 9mo agoTerraform in combination with Claude Code is actually quiet managable. Yes it generates much code, but you have great detail of what is actually going on, there is no hidden abstraction layers on top.
- antonymoose 9mo agoWe have a handful of legacy SST Lambdas at work. We literally just use it to build a ZIP which we publish to an S3 Bucket, not much different than publishing an ECR image. It’s all Terraform from there.
- sebst 9mo agoCurious why you’d go from sst (back?) to terraform? Are there services or features missing in sst or is it about terraforms ergonomics that fits your case better?
- yowlingcat 9mo agoJust came across SST the other day and it looks very interesting. It looks like it's based on Pulumi, so it begs the question for me of why does it exist? Structurally it doesn't seem to be that different in capabilities. Perhaps it is more that it is a more opinionated subset that has better ergonomics. Is that correct, or is the reason different for you?
- tonymet 9mo agoThere are way too many apps for converting config into code. I'd much rather see more like this that convert code into unnecessary config.
- sebst 9mo agoThis is exactly what we had in mind as a first principle
- s5fs 9mo agoInteresting product! Not sure if I'm getting this right, docs seem pretty sparse so please forgive me. Here are a couple questions: 1. Do you support tagging resources? 2. You mention provisioning Pulumi resources, are you "simply" a wrapper around Pulumi? If so, are you relying on Pulumi for state management or does Stelvio have it's own state manager? 3. Do you support cloudfront? Imo this is a vital service for building even small production apps, esp if you are serving static assets out of S3. 4. I saw references to API Gateway v1, do you also support v2? 5. One of the cool features is that you're able to handle all the IAM stuff, but can that also be easily modified? Like, if I want to create a new lambda that interacts with an existing dynamodb table, how would I describe that with Stelvio? Sorry for the pile of questions lol but you got my attention :) You have a lot of competition in this space and I'm curious to see how your project will evolve. Best of luck!
- raw_anon_1111 9mo agoEven if he does, how kind will it take him to add new functionality? For instance AWS both announced durable lambda functions and CFT support the same day
- sebst 9mo agoYou could always use the plain vanilla resources that pulumi provides if there is no stelvio provided component for that.
- raw_anon_1111 9mo agoI just checked, pulumi does have a good track record of keeping up with AWS. But using a non industry standard framework (Stevio) just doesn’t make any sense from a long term portable career perspective. While I’m not a fanatic about which one I use out of the major ones. My last three projects were CDK/Typescript, Terraform and CloudFormation with my own collection of utility scripts I’ve used over 5 years to make it act more like TF. But the CFTs are standard.
- michal-stlv 9mo ago
- waterTanuki 9mo agoI don't understand why I would use this over aws CDK in python. cdk is already an abstraction over the javascript cdk, which is an abstraction over cloudformation, which is an abstraction over the api.. I just want to navigate some of the claims made by Stelvio and others in this thread and see if maybe I'm missing something after reading the docs: - Ship Python to AWS in minutes, not days: I can already do this with cdk? It's highly dependent on the project requirements. AWS already provides a sleuth of high level constructs with sensible defaults. - great for really small apps where you want your resource definitions colocated with the code using them: CDK is just code? You can put it all in one place or split it into files. I don't get how this is new. - easier to manage IAM permissions this is the bread and butter of cdk. I can simply do Resource.grantRead(lambdaFunction) without touching IAM. Who was complaining about this? The only advantage I see here over CDK is using Pulumi as the underlying resource engine, which I admit performs better on deployment speed. But then we arrive to the question: Why not just use Pulumi, which already gives me IaC in python?
- sebst 9mo agoOur goal with Stelvio is bringing these two together: Using Pulumi (for performance and multi-cloud capatbilities) with the convenience of some parts of CDK.