A Pulumi NPM library to ease VPC resources setup on AWS
This library is inspired in the current version of the "Create VPC" wizard from the AWS Console:
To install this library you can use eithe npm
or yarn
as your would for any other Node library:
# npm
npm install @vniche/aws-vpc-pulumi
# yarn
yarn add @vniche/aws-vpc-pulumi
To use this library import on your (node-based, of course) Pulumi program code. Here are some example of setups:
import { SubnetType, Network } from "@vniche/aws-vpc-pulumi";
const { vpcId, subnets } = new Network({
cidrBlock: "10.0.0.0/20",
subnets: [
{
cidrBlock: "10.0.0.0/24",
az: "us-east-1b",
type: SubnetType.Public,
},
{
cidrBlock: "10.0.1.0/24",
az: "us-east-1c",
type: SubnetType.Public,
}
]
});
import { SubnetType, Network } from "@vniche/aws-vpc-pulumi";
const { vpcId, subnets } = new Network({
cidrBlock: "10.0.0.0/20",
subnets: [
{
cidrBlock: "10.0.0.0/24",
az: "us-east-1b",
type: SubnetType.Public,
},
{
cidrBlock: "10.0.1.0/24",
az: "us-east-1c",
type: SubnetType.Public,
},
{
cidrBlock: "10.0.2.0/24",
az: "us-east-1a",
type: SubnetType.Private,
},
{
cidrBlock: "10.0.3.0/24",
az: "us-east-1d",
type: SubnetType.Private,
}
]
});
import { NATOptions, SubnetType, Network } from "@vniche/aws-vpc-pulumi";
const { vpcId, subnets } = new Network({
nat: NATOptions.InOneAZ,
cidrBlock: "10.0.0.0/20",
subnets: [
...
]
});
import { NATOptions, SubnetType, Network } from "@vniche/aws-vpc-pulumi";
const { vpcId, subnets } = new Network({
nat: NATOptions.OnePerAZ,
cidrBlock: "10.0.0.0/20",
subnets: [
...
]
});
You can also do the configuration via a Pulumi stack config file:
# Pulumi.<stack>.yaml
...
config:
<pulumi-program-name>:network:
cidrBlock: 10.0.0.0/20
subnets:
- type: public
az: us-east-1b
cidrBlock: 10.0.0.0/24
- type: public
az: us-east-1c
cidrBlock: 10.0.1.0/24
And import it in your program:
import { NetworkConfig, Network } from "@vniche/aws-vpc-pulumi";
const networkConfig: NetworkConfig = config.requireObject("network");
const { vpcId, subnets } = new Network({
...networkConfig
});
For the future, I plan to add support for VPC Endpoints.
Also, let me know if you're missing something, found any bugs or have any questions by creating an issue.