The `@pulumi/cloud` library in particular is desig...
# general
w
The
@pulumi/cloud
library in particular is designed to be high-level abstractions which could be created on multiple different cloud platforms. But that's just one kind of library that can be built. Things like
@pulumi/aws-serverlesss
and
@pulumi/aws-infra
provide helpful higher level abstractions that are still specific to AWS but making common patterns much easier to use.
b
So I guess the scripts know which cloud they are running on and branch based on the cloud?
w
That's right - there is a
cloud:provider
config variable which can be set to decide which provider it will target. This is ultimately not entirely unlike deciding which
aws:region
you want to target - but just an even bigger switch. See https://github.com/pulumi/pulumi-cloud/blob/master/api/index.ts#L31 for the details.
b
I also think of them as simpler abstractions to use, and not just LCD. Think .NET filesystem APIs versus Win32. Sure sometimes you need
kernel32!CreateFile
and
FILE_FLAG_OPEN_REPARSE_POINT
and so on, but usually
File.Open
does the job just fine. Just as in .NET, where you have P/invoke, in those cases where the high level primitives don't work, you can always drop down to the lower level cloud-specific APIs, even mixing them in the same program.
b
Yeah, totally. Seems like it could be awesome.
I would love to see a cloud object that created a Kubernetes cluster that just magically worked for each cloud provider and then you could easily add plugins like the dashboard through a line or 2 of code. Then people could have NPM packages for things like Elasticsearch and Postgres that would make adding them to your cluster super simple.
s
Hi Eric, for using NPM packages do you mean like adding postgres/ES clients or the servers themselves?
b
For packages that make it easy for app developers to use those things in their stack.