I’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.
1) 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
Interesting 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!
Why 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
I 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?
There are way too many apps for converting config into code. I'd much rather see more like this that convert code into unnecessary config.
It'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.
How does this compare to https://encore.dev/ or other infrastructure-inside-application-code solutions?