Hello All, I am new to Pulumi. I use Python and AW...
# getting-started
c
Hello All, I am new to Pulumi. I use Python and AWS. Is it advisable to start building prod infra with Pulumi AWSX or to stick to Classic AWS? I see that cloudwatch or RDS are not included in the list of AWSX docs, which makes me think that AWSX has limited coverage of AWS services at this point.
s
AWSX isn’t intended to provide full coverage of all AWS services; it’s intended to supply some useful high-level components to simplify certain parts of working with AWS infrastructure (like creating a VPC and all the associated pieces). You can freely mix AWS and AWSX in the same program with no concerns.
c
Thanks. I realised that I mixed up aws-native and awsx. Should I skip classic aws and start building a new project with aws native or should I start with aws classic first?
l
They're also usable together: IDs from resources created with one library work fine with resources created by the other. If you're very familiar with the AWS console and not Terraform, prefer aws-native. If you're very familiar with Terraform's AWS provider, you'll probably like aws-classic better. Also, there's a lot more docs and examples using aws-classic.
Also, aws-native doesn't offer as many resources as classic, yet, I think? It didn't a few months ago when I last used it, anyway.
r
The AWS Classic provider is a bridged provider and has AWS resources that may or may not be in CloudFormation. AWS Classic is currently and will continue to be fully supported going forward. The AWS Native provider includes resources that are available in AWS Cloud Control API and is currently still in preview. You can use either or both together. If you can't find a resource in Classic, check Native, and vice versa.
g
@creamy-hamburger-70712 I found this confusing when I first started too, here's what helped me. Disclaimer: I'm just an average guy not an expert. There are three different AWS flavours with Pulumi • AWS native: this is pulumi developing their own code to integrate with AWS API directly. This doesn't have full coverage yet. • AWS classic: this is bridged from Terraform provider open source code under the hood. You can do pretty much anything in AWS (afaik). • AWS Crosswalk: (awsx) This is higher level that abstracts some of the underlying bits to make it quicker and easier to do things. Think of it like a wrapper. Creating an awsx resource will create some underlying aws classic and/or aws native resources, which you can usually reference as sub objects. As far as I know you can use combinations of them all within the same stack. But you may like to stick to one at the start, because it takes a bit of mental power remembering which ones have which properties and attributes. If your main focus is learning Pulumi, I'd probably recommend going with AWS Classic to start off with. You'll be able to do everything you need to do without getting confused why some things are not available (like you would with AWS Native) or why things aren't visible (because AWSX hides them). If your main focus is learning AWS features, then AWSX (Crosswalk) is most useful since it gets you up and running with a working solution (Such as deploying a website using a load balancer in front of an ECS deployed container) with minimum effort.
c
Thanks everyone. This helped to make more sense from all (some of) the different packages.
s
@gifted-gigabyte-53859 One small point of clarification: the AWS Classic provider doesn’t use Terraform modules. It’s “bridged” from the Terraform provider source code, which means we used the schema definitions in the open source Terraform provider to generate a Pulumi provider. It’s a small but important distinction. 🙂
g
@salmon-account-74572 thank you, I'll correct my post.