From c858813af552a034b807e4961177f51c2c7274bf Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 12 May 2020 14:58:15 +1200 Subject: [PATCH] Updated to use local version of Pams project --- .env | 3 + PamsVpc.ts | 115 ++++++ Pulumi.stack_transforms.yaml | 1 + autotag.ts | 3 +- docker-compose.yml | 57 +++ index.ts | 35 +- package-lock.json | 737 +---------------------------------- package.json | 10 +- pulumi.code-workspace | 12 + tsconfig.json | 6 +- 10 files changed, 240 insertions(+), 739 deletions(-) create mode 100644 .env create mode 100644 PamsVpc.ts create mode 100644 docker-compose.yml create mode 100644 pulumi.code-workspace diff --git a/.env b/.env new file mode 100644 index 0000000..2ba84de --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +PROJECT=puulumi_examples +DESCRIPTION=Demo code +STACK=stack_transforms \ No newline at end of file diff --git a/PamsVpc.ts b/PamsVpc.ts new file mode 100644 index 0000000..5d2117d --- /dev/null +++ b/PamsVpc.ts @@ -0,0 +1,115 @@ +import * as pulumi from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import * as awsx from "@pulumi/awsx"; +import { CidrBlock } from "@pulumi/awsx/ec2"; + +export interface PamsVpcArgs { + cidrBlock: CidrBlock; // The VPC CIDR block. /18 to /23 only. + ingressCidrBlocks: Map; // Named CIDR blocks to allow ingress from. + // For example, [ ["93tt", "158.140.232.61/32"], ["ccl", "10.8.0.0/24"] ] +} + +export interface PamsVpcSubnets { + bastion: awsx.ec2.Subnet; + isolated: awsx.ec2.Subnet; +} + +export class PamsVpc extends pulumi.ComponentResource { + // These are rarely needed; consider making these local variables in the constructor. + public vpc: awsx.ec2.Vpc; + public publicNacl: aws.ec2.DefaultNetworkAcl; + public isolatedNacl: Promise; + private readonly cidrBlock: CidrBlock; + private readonly ingressCidrBlocks: Map; + private readonly opts: Object; + + private parentOpts(parent: pulumi.Resource): any { + return { ...this.opts, parent }; + } + + /** + * One of the two pairs of subnets containing the PAMS instances. + */ + public async blue(): Promise { + return { + bastion: (await this.vpc.publicSubnets)[0], + isolated: (await this.vpc.isolatedSubnets)[0] + } + } + + /** + * One of the two pairs of subnets containing the PAMS instances. + */ + public async green(): Promise { + return { + bastion: (await this.vpc.publicSubnets)[1], + isolated: (await this.vpc.isolatedSubnets)[1] + } + } + + /** + * The public subnets (`blue().bastion` and `green().bastion`) allow + * access only from the CIDRs passed in to the class constructor as the + * "ingressCidrBlocks" parameter. + */ + private configurePublicNacl(name: string, ingressCidrBlocks: Map): aws.ec2.DefaultNetworkAcl { + var nacl = new aws.ec2.DefaultNetworkAcl(`${name}-public`, { + defaultNetworkAclId: this.vpc.vpc.defaultNetworkAclId, + subnetIds: this.vpc.publicSubnetIds + }, this.parentOpts(this)); + let ruleNum = 200; + ingressCidrBlocks.forEach((cidrBlock, key) => + new aws.ec2.NetworkAclRule(`${name}-${key}`, { + ruleNumber: ruleNum++, + ruleAction: "allow", protocol: "-1", + networkAclId: nacl.id, + cidrBlock: cidrBlock + }, this.parentOpts(nacl)) + ); + return nacl; + } + + private async createIsolatedNacl(name: string, ingressCidrBlocks: Map): Promise { + // The isolated subnets allow access only from the public subnets. + var nacl = new aws.ec2.NetworkAcl(`${name}-isolated`, { + vpcId: this.vpc.id, + subnetIds: this.vpc.isolatedSubnetIds + }, this.parentOpts(this)); + + new aws.ec2.NetworkAclRule(`${name}-blue`, { + ruleNumber: 200, + ruleAction: "allow", protocol: "-1", + networkAclId: nacl.id, + cidrBlock: (await this.blue()).bastion.subnet.cidrBlock + }, this.parentOpts(nacl)); + new aws.ec2.NetworkAclRule(`${name}-green`, { + ruleNumber: 201, + ruleAction: "allow", protocol: "-1", + networkAclId: nacl.id, + cidrBlock: (await this.green()).bastion.subnet.cidrBlock + }, this.parentOpts(nacl)); + + return nacl; + } + + constructor(name: string, args: PamsVpcArgs, opts: pulumi.ComponentResourceOptions = {}) { + super("pams:vpc:PamsVpc", name, args, opts); + this.opts = opts; + this.cidrBlock = args.cidrBlock; + this.ingressCidrBlocks = args.ingressCidrBlocks; + + this.vpc = new awsx.ec2.Vpc(name, { + cidrBlock: args.cidrBlock, + numberOfAvailabilityZones: 2, + numberOfNatGateways: 0, + subnets: [ + { type: "public", name: "bastion" }, + { type: "isolated", name: "pams" } + ] + }, { ...opts, parent: this }); + + this.publicNacl = this.configurePublicNacl(name, args.ingressCidrBlocks); + this.isolatedNacl = this.createIsolatedNacl(name, args.ingressCidrBlocks); + this.registerOutputs(); + } +} diff --git a/Pulumi.stack_transforms.yaml b/Pulumi.stack_transforms.yaml index f3216b2..3c1833e 100644 --- a/Pulumi.stack_transforms.yaml +++ b/Pulumi.stack_transforms.yaml @@ -1,2 +1,3 @@ config: + aws:profile: gsfa-sandbox aws:region: ap-southeast-2 diff --git a/autotag.ts b/autotag.ts index 7e9cf22..6ea7086 100644 --- a/autotag.ts +++ b/autotag.ts @@ -244,9 +244,8 @@ function isTaggable(t: string): boolean { */ export function registerAutoTags(autoTags: Record): void { pulumi.runtime.registerStackTransformation((args) => { - pulumi.log.info(`Attempting to add tag to ${args.props["tags"]}`); if (isTaggable(args.type)) { - pulumi.log.info(`Tagging with ${autoTags}`); + pulumi.log.info(`Tagging a ${args.type} with ${autoTags}`); args.props["tags"] = { ...autoTags, ...args.props["tags"] }; return { props: args.props, opts: args.opts }; } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..33ba9fa --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,57 @@ +version: "3.7" +services: + login: + image: pams/pulumi + environment: + - PULUMI_ACCESS_TOKEN + volumes: + - type: bind + source: . + target: /app + command: login + + npm: + image: pams/pulumi + volumes: + - type: bind + source: . + target: /app + entrypoint: npm + + sh: + image: pams/pulumi + volumes: + - type: bind + source: . + target: /app + entrypoint: sh + + pulumi: + image: pams/pulumi + volumes: + - type: bind + source: . + target: /app + - type: bind + source: ~/.aws + target: /app/.aws + working_dir: /app + + new: + image: pams/pulumi + volumes: + - type: bind + source: . + target: /app + command: + - new + - -c + - "aws:region=ap-southeast-2" + - aws-typescript + - -n + - ${PROJECT} + - -d + - ${DESCRIPTION} + - -s + - ${STACK} + - --force diff --git a/index.ts b/index.ts index c7ad455..230f891 100644 --- a/index.ts +++ b/index.ts @@ -3,6 +3,7 @@ import * as aws from "@pulumi/aws"; import * as awsx from "@pulumi/awsx"; import { registerAutoTags } from "./autotag"; +import { PamsVpc } from "./PamsVpc"; // Automatically inject tags. registerAutoTags({ @@ -11,16 +12,28 @@ registerAutoTags({ "Env": "PoC", }); -const vpc = new awsx.ec2.Vpc("PoC", { +// const vpc = new awsx.ec2.Vpc("PoC", { +// cidrBlock: "192.168.96.0/23", +// numberOfAvailabilityZones: 2, +// numberOfNatGateways: 0, +// subnets: [ +// { type: "public", name: "bastion" }, +// { type: "isolated", name: "private" } +// ] +// }); +const vpc = new PamsVpc("VpcPoc", { cidrBlock: "192.168.96.0/23", - numberOfAvailabilityZones: 2, - numberOfNatGateways: 0, - subnets: [ - { type: "public", name: "bastion" }, - { type: "isolated", name: "private" } - ] -}); + ingressCidrBlocks: new Map([ + ["datacom", "10.8.0.0/24"], + ["ccl", "120.136.4.242/32"], + ["93tt", "158.140.232.61/32"], + ["paul-vodafone", "27.252.192.0/19"], + ["glen", "101.98.188.0/24"], + ["daniel", "203.109.197.0/24"] + ]) +}, {}) -export const vpc_poc_id = vpc.id; -export const vpc_poc_PrivateSubnetIds = vpc.privateSubnetIds; -export const vpc_poc_PublicSubnetIds = vpc.publicSubnetIds; \ No newline at end of file +export { } +export const vpc_poc_id = vpc.vpc.id; +export const vpc_poc_PrivateSubnetIds = vpc.isolatedNacl.then(nacl => nacl.subnetIds); +export const vpc_poc_PublicSubnetIds = vpc.publicNacl.subnetIds; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a340391..4d9dfb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,9 +66,9 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, "@pulumi/aws": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-2.3.0.tgz", - "integrity": "sha512-ceCGKGg2qG2MgIddxAflvND2W1Gko03Usnc0nMnK42LzRn82gbkblLKVaSDmN1aw1cSMVGYDWo8eX7yPz3wkzA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-2.4.0.tgz", + "integrity": "sha512-DsTlZEUY2tuovBPmJHfGA58l3E/PLWvjzs7F0lEH15uNO7UgWocU/dgPYSOy25yzePuNreeei0EJqGZwIK8NzQ==", "requires": { "@pulumi/pulumi": "^2.0.0", "aws-sdk": "^2.0.0", @@ -79,91 +79,24 @@ } }, "@pulumi/awsx": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@pulumi/awsx/-/awsx-0.18.14.tgz", - "integrity": "sha512-2etPn1fCPSk+xpIow9vqS398SVmNZlmJe3gP7icWSZeaON8ActfYE/89JEWLSSkWkzc7h8P+LavkLg2sYWmGnw==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@pulumi/awsx/-/awsx-0.20.0.tgz", + "integrity": "sha512-ZYe3aH4hsxWPbjh9fgvZg3iExNDdEBBWXC1tpfuZgaU4+oxKixo9vZ74cb5N9DUH7AKf4H4ZTRApF32WsDa5xw==", "requires": { - "@pulumi/aws": "^1.0.0", - "@pulumi/docker": "^0.17.3", - "@pulumi/pulumi": "^1.0.0", + "@pulumi/docker": "^1.0.0 || ^2.0.0", "@types/aws-lambda": "^8.10.23", - "deasync": "^0.1.15", "mime": "^2.0.0" - }, - "dependencies": { - "@pulumi/aws": { - "version": "1.31.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-1.31.0.tgz", - "integrity": "sha512-/ZOh8Q6OVZaMpfPlcF57l/ONyZaoDI1e2cr8S/rU+K0F3z20ZOBTN3eippKkUzQ6AKN9rfszIjt4B/q7fhyH3g==", - "requires": { - "@pulumi/pulumi": "^1.0.0", - "aws-sdk": "^2.0.0", - "builtin-modules": "3.0.0", - "mime": "^2.0.0", - "read-package-tree": "^5.2.1", - "resolve": "^1.7.1" - } - }, - "@pulumi/pulumi": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-1.14.1.tgz", - "integrity": "sha512-5Cw7llLGI9PhFj5zhPMYI5WH2+cqMnlFUqIQwBRNJt72ZBGuaPj8g7CE0sHZWbypQoXPkW4PGBMFKTllbd5WJA==", - "requires": { - "@pulumi/query": "^0.3.0", - "deasync": "^0.1.15", - "google-protobuf": "^3.5.0", - "grpc": "1.24.2", - "minimist": "^1.2.0", - "normalize-package-data": "^2.4.0", - "protobufjs": "^6.8.6", - "read-package-tree": "^5.3.1", - "require-from-string": "^2.0.1", - "semver": "^6.1.0", - "source-map-support": "^0.4.16", - "ts-node": "^7.0.1", - "typescript": "~3.7.3", - "upath": "^1.1.0" - } - } } }, "@pulumi/docker": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@pulumi/docker/-/docker-0.17.4.tgz", - "integrity": "sha512-uGnt9VEGXxCFTpIkCrULP2XTbSEJMH3vQrOq9Q+ATTnIxswlG0z/LkpuktEB6YmvnQqEUtTPPEM+p/RmLkqLrA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@pulumi/docker/-/docker-2.1.0.tgz", + "integrity": "sha512-hTQ1HbdMjCDJr35OdzFnzlgnAitrb7XknDJBsLUpYfx51QaBJQhoEhypw55dwDtShxzVI/kMzrDp5Nwk5CiSDA==", "requires": { - "@pulumi/pulumi": "^1.0.0", + "@pulumi/pulumi": "^2.0.0", "semver": "^5.4.0" }, "dependencies": { - "@pulumi/pulumi": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-1.14.1.tgz", - "integrity": "sha512-5Cw7llLGI9PhFj5zhPMYI5WH2+cqMnlFUqIQwBRNJt72ZBGuaPj8g7CE0sHZWbypQoXPkW4PGBMFKTllbd5WJA==", - "requires": { - "@pulumi/query": "^0.3.0", - "deasync": "^0.1.15", - "google-protobuf": "^3.5.0", - "grpc": "1.24.2", - "minimist": "^1.2.0", - "normalize-package-data": "^2.4.0", - "protobufjs": "^6.8.6", - "read-package-tree": "^5.3.1", - "require-from-string": "^2.0.1", - "semver": "^6.1.0", - "source-map-support": "^0.4.16", - "ts-node": "^7.0.1", - "typescript": "~3.7.3", - "upath": "^1.1.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -172,9 +105,9 @@ } }, "@pulumi/pulumi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-2.1.0.tgz", - "integrity": "sha512-0ZW19bugxqTFHWBSVpybNpIUugzCsyOq5xaFM6Z2PJn+G8HPKLebHPIaFCfsARxzOERG6xFN1a9lc++x13/2fw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-2.1.1.tgz", + "integrity": "sha512-LBryBIAMkwRc0hpjlZoEzYYJGZHhqFX/LqVnpqv2WQT99+ZUgAPYX8ediEYXPG4i/6neoxNrNhKGe8hvdQpqlg==", "requires": { "@grpc/grpc-js": "^0.6.15", "@pulumi/query": "^0.3.0", @@ -201,22 +134,6 @@ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.51.tgz", "integrity": "sha512-XK7RerpXj4r+IO0r7qIeNqUSU6L4qhPMwNhISxozJJiUX/jdXj9WYzTShRVisEcUQHXgJ4TTBqTArM8f9Mjb8g==" }, - "@types/bytebuffer": { - "version": "5.0.41", - "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.41.tgz", - "integrity": "sha512-Mdrv4YcaHvpkx25ksqqFaezktx3yZRcd51GZY0rY/9avyaqZdiT/GiWRhfrJhMpgzXqTOSHgGvsumGxJFNiZZA==", - "requires": { - "@types/long": "*", - "@types/node": "*" - }, - "dependencies": { - "@types/node": { - "version": "13.13.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz", - "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g==" - } - } - }, "@types/long": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", @@ -228,11 +145,6 @@ "integrity": "sha512-PQKsydPxYxF1DsAFWmunaxd3sOi3iMt6Zmx/tgaagHYmwJ/9cRH91hQkeJZaUGWbvn0K5HlSVEXkn5U/llWPpQ==", "dev": true }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -243,19 +155,10 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, "aws-sdk": { - "version": "2.670.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.670.0.tgz", - "integrity": "sha512-hGRnZtp1wDUh6hZRBHO0Ki7thx/xbRlIEiTKlWes+f/0E1Nhm3KpelsBZ3L/Q6y1ragwkQd4Q720AmWEqemLyA==", + "version": "2.674.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.674.0.tgz", + "integrity": "sha512-C0hBwsA779y3xbS1AClDcsg8ZBJE+BJC4vt1eHpI2mEbr0/qIwOcR2hl1DjXyp3RwHKoa/LPOTHRSSHDq01PxA==", "requires": { "buffer": "4.9.1", "events": "1.1.1", @@ -278,14 +181,6 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -315,70 +210,16 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.0.0.tgz", "integrity": "sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg==" }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - } - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "deasync": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", - "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - } - }, "debuglog": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=" }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -434,11 +275,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -472,435 +308,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, - "grpc": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.24.2.tgz", - "integrity": "sha512-EG3WH6AWMVvAiV15d+lr+K77HJ/KV/3FvMpjKjulXHbTwgDZkhkcWbwhxFAoTdxTkQvy0WFcO3Nog50QBbHZWw==", - "requires": { - "@types/bytebuffer": "^5.0.40", - "lodash.camelcase": "^4.3.0", - "lodash.clone": "^4.5.0", - "nan": "^2.13.2", - "node-pre-gyp": "^0.14.0", - "protobufjs": "^5.0.3" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.4", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "ms": { - "version": "2.1.2", - "bundled": true - }, - "needle": { - "version": "2.4.0", - "bundled": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true - }, - "npm-packlist": { - "version": "1.4.6", - "bundled": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.7.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true - } - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -938,11 +345,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, "is-callable": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", @@ -953,14 +355,6 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-regex": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", @@ -992,24 +386,6 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" - }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -1046,16 +422,6 @@ "minimist": "^1.2.5" } }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" - }, - "node-addon-api": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", - "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==" - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -1079,11 +445,6 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, "object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", @@ -1122,19 +483,6 @@ "wrappy": "1" } }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1279,16 +627,6 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -1327,14 +665,6 @@ "es-abstract": "^1.17.5" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", @@ -1407,20 +737,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -1440,25 +756,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", diff --git a/package.json b/package.json index f687d3c..7cc9a88 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,15 @@ { "name": "pulumi_examples", + "description": "Pulumi examples", + "repository": {}, + "license": "UNLICENSED", + "private": true, "devDependencies": { "@types/node": "^10.0.0" }, "dependencies": { - "@pulumi/pulumi": "^2.0.0", - "@pulumi/aws": "^2.0.0", - "@pulumi/awsx": "^0.18.10" + "@pulumi/pulumi": "^2.1.1", + "@pulumi/aws": "^2.4.0", + "@pulumi/awsx": "^0.20.0" } } diff --git a/pulumi.code-workspace b/pulumi.code-workspace new file mode 100644 index 0000000..fa57385 --- /dev/null +++ b/pulumi.code-workspace @@ -0,0 +1,12 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "../pams/infrastructure/src" + } + ], + "remoteAuthority": "wsl+Ubuntu-18.04", + "settings": {} +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index ab65afa..2f147b1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,8 +2,8 @@ "compilerOptions": { "strict": true, "outDir": "bin", - "target": "es2016", - "module": "commonjs", + "target": "es2017", + "module": "esnext", "moduleResolution": "node", "sourceMap": true, "experimentalDecorators": true, @@ -15,4 +15,4 @@ "files": [ "index.ts" ] -} +} \ No newline at end of file