pypi package 'zxkane-cdk-construct-simple-nat'

Popularity: Low
Description: A CDK construct to build Simple NAT instance on AWS.
Installation: pip install zxkane-cdk-construct-simple-nat
Last version: 0.2.388 (Download)
Homepage: https://github.com/zxkane/snat
Size: 250.6 kB
License: Apache-2.0

Activity

Last modified: February 22, 2023 12:17 AM (a month ago)
Versions released in one year: 259
Weekly downloads: 25
03/27/202206/12/202208/28/202211/13/202201/29/2023015030045060002468released versions / week
  • Versions released
  • Weekly downloads

What's new in version 0.2.304

Delta between version 0.2.303 and version 0.2.304

Source: Github
Commits:
  • 161ba57cfc1013160ab12646efd317a8aef5c44e, November 19, 2022 12:15 AM:
    chore(deps): upgrade dependencies (#507)
    
    Upgrades project dependencies. See details in [workflow run].
    
    [Workflow Run]: https://github.com/zxkane/snat/actions/runs/3501133072
    
    ------
    
    *Automatically created by projen via the "upgrade-main" workflow*
Files changed:
example/test/__snapshots__/main.test.ts.snap CHANGED
@@ -22,17 +22,7 @@ Object {
22
  "Action": "sts:AssumeRole",
23
  "Effect": "Allow",
24
  "Principal": Object {
25
- "Service": Object {
26
- "Fn::Join": Array [
27
- "",
28
- Array [
29
- "ec2.",
30
- Object {
31
- "Ref": "AWS::URLSuffix",
32
- },
33
- ],
34
- ],
35
- },
36
  },
37
  },
38
  ],
22
  "Action": "sts:AssumeRole",
23
  "Effect": "Allow",
24
  "Principal": Object {
25
+ "Service": "ec2.amazonaws.com",
 
 
 
 
 
 
 
 
 
 
26
  },
27
  },
28
  ],
example/yarn.lock CHANGED
@@ -10,6 +10,21 @@
10
  "@jridgewell/gen-mapping" "^0.1.0"
11
  "@jridgewell/trace-mapping" "^0.3.9"
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6":
14
  version "7.18.6"
15
  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
@@ -1161,10 +1176,13 @@ at-least-node@^1.0.0:
1161
  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
1162
 
1163
  aws-cdk-lib@^2.0.0:
1164
- version "2.50.0"
1165
- resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.50.0.tgz#2b3a9ba4c1c4c56fd32e3e4f57eea8bf9fa3dbba"
1166
- integrity sha512-deDbZTI7oyu3rqUyqjwhP6tnUO8MD70lE98yR65xiYty4yXBpsWKbeH3s1wNLpLAWS3hWJYyMtjZ4ZfC35NtVg==
1167
  dependencies:
 
 
 
1168
  "@balena/dockerignore" "^1.0.2"
1169
  case "1.6.3"
1170
  fs-extra "^9.1.0"
@@ -1176,9 +1194,9 @@ aws-cdk-lib@^2.0.0:
1176
  yaml "1.10.2"
1177
 
1178
  aws-cdk@^2.0.0:
1179
- version "2.50.0"
1180
- resolved "https://registry.yarnpkg.com/aws-cdk/-/aws-cdk-2.50.0.tgz#6c6d723ba66b24245f58c363071ce20a17eabbed"
1181
- integrity sha512-55vmKTf2DZRqioumVfXn+S0H9oAbpRK3HFHY8EjZ5ykR5tq2+XiMWEZkYduX2HJhVAeHJJIS6h+Okk3smZjeqw==
1182
  optionalDependencies:
1183
  fsevents "2.3.2"
1184
 
@@ -1438,9 +1456,9 @@ case@1.6.3:
1438
  integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==
1439
 
1440
  cdk-construct-simple-nat@^0.2:
1441
- version "0.2.302"
1442
- resolved "https://registry.yarnpkg.com/cdk-construct-simple-nat/-/cdk-construct-simple-nat-0.2.302.tgz#186e321607dcb9493a9c8943338f8057a0460c84"
1443
- integrity sha512-byNkFukltD60CL7TX45AiMGYdK1VjdrqgugmWTGykamjoCC1rERutmNvvh3ZXyy5mX8I0d5661qGDUis49S5HA==
1444
  dependencies:
1445
  mustache "^4.2.0"
1446
  sync-fetch "^0.3.0"
@@ -1616,9 +1634,9 @@ console-control-strings@^1.1.0:
1616
  integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
1617
 
1618
  constructs@^10.0.5:
1619
- version "10.1.161"
1620
- resolved "https://registry.yarnpkg.com/constructs/-/constructs-10.1.161.tgz#91b9e4ae78ec3421437a12150dfa1395db9b4de5"
1621
- integrity sha512-+g6J5m6iAdrflfdbKlL1+5/RNyPvOmI+Quua/q85Ak65XuvrGGOTujAXcbQxYGNhwWJj4TCje6SsrJMcVpLfNQ==
1622
 
1623
  convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
1624
  version "1.9.0"
@@ -2173,9 +2191,9 @@ eslint-visitor-keys@^3.3.0:
2173
  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
2174
 
2175
  eslint@^8:
2176
- version "8.27.0"
2177
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.27.0.tgz#d547e2f7239994ad1faa4bb5d84e5d809db7cf64"
2178
- integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==
2179
  dependencies:
2180
  "@eslint/eslintrc" "^1.3.3"
2181
  "@humanwhocodes/config-array" "^0.11.6"
@@ -2566,9 +2584,9 @@ globals@^11.1.0:
2566
  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2567
 
2568
  globals@^13.15.0:
2569
- version "13.17.0"
2570
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4"
2571
- integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==
2572
  dependencies:
2573
  type-fest "^0.20.2"
2574
 
10
  "@jridgewell/gen-mapping" "^0.1.0"
11
  "@jridgewell/trace-mapping" "^0.3.9"
12
 
13
+ "@aws-cdk/asset-awscli-v1@^2.2.9":
14
+ version "2.2.11"
15
+ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.11.tgz#3cc0dac68846cf9b89c6faa3d42f350cb4a1b818"
16
+ integrity sha512-4H4rOb1NoU3Gv+stKZLsFIQbBHfUIQOkRYZdInZ8+c42MoMXuIF+Q0Bj7toFtkpYoeMO85Q/PobKcB9j2LNohw==
17
+
18
+ "@aws-cdk/asset-kubectl-v20@^2.1.1":
19
+ version "2.1.1"
20
+ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz#d01c1efb867fb7f2cfd8c8b230b8eae16447e156"
21
+ integrity sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==
22
+
23
+ "@aws-cdk/asset-node-proxy-agent-v5@^2.0.15":
24
+ version "2.0.17"
25
+ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.17.tgz#af9dca1861651d9921600924ed67583f82dcb1d1"
26
+ integrity sha512-vmiecgpYfDoItXwT7yW0cySJWwOvb6DwnScOOAyAjR5Qq3yD13kJmyD45ZtnSwPkmAay/rBNIHkPBNuFeIQVPg==
27
+
28
  "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6":
29
  version "7.18.6"
30
  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
1176
  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
1177
 
1178
  aws-cdk-lib@^2.0.0:
1179
+ version "2.51.1"
1180
+ resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.51.1.tgz#951402ea0b867043596d84170a567d7b9f6f1e80"
1181
+ integrity sha512-88HC6giHaShsP1z7z1+7gdY3bmHUrp77hWefutE1JcH3O2nzCpFnd6exDQLjFyzauJa+uEFo1u5ToXynfQi2zg==
1182
  dependencies:
1183
+ "@aws-cdk/asset-awscli-v1" "^2.2.9"
1184
+ "@aws-cdk/asset-kubectl-v20" "^2.1.1"
1185
+ "@aws-cdk/asset-node-proxy-agent-v5" "^2.0.15"
1186
  "@balena/dockerignore" "^1.0.2"
1187
  case "1.6.3"
1188
  fs-extra "^9.1.0"
1194
  yaml "1.10.2"
1195
 
1196
  aws-cdk@^2.0.0:
1197
+ version "2.51.1"
1198
+ resolved "https://registry.yarnpkg.com/aws-cdk/-/aws-cdk-2.51.1.tgz#f836e97b27b3493c2c9c3e36b62f2df6a7d3b946"
1199
+ integrity sha512-c60bIcMfe/gn4qkw/TZvqw+DxVGFn25D624RcciLxIAI/t9v2taaPfIdlCVXDSr3qfy0Oc7GpEh3jL9I/RpVFw==
1200
  optionalDependencies:
1201
  fsevents "2.3.2"
1202
 
1456
  integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==
1457
 
1458
  cdk-construct-simple-nat@^0.2:
1459
+ version "0.2.303"
1460
+ resolved "https://registry.yarnpkg.com/cdk-construct-simple-nat/-/cdk-construct-simple-nat-0.2.303.tgz#1adf50501e9a164bf6eef66f790d606c49dacd48"
1461
+ integrity sha512-VIrxMC3/NAV13uklDhcETFpm2JiEN6oKwChFDXZL/uNJhYgUoGRetUWbYMS3JXkMUC+U4Icn4npimX19s/iqkw==
1462
  dependencies:
1463
  mustache "^4.2.0"
1464
  sync-fetch "^0.3.0"
1634
  integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
1635
 
1636
  constructs@^10.0.5:
1637
+ version "10.1.163"
1638
+ resolved "https://registry.yarnpkg.com/constructs/-/constructs-10.1.163.tgz#4a3e9f4561723220fda9ca900b23adbf71f8a9fe"
1639
+ integrity sha512-UdwRPc1CLyIaytDwmTVjDsCEgSKfy5pZ64f89RfhwB4hJTeAgDRMjHQ4pNBVDRLlPXmzXAaM5UKfr+HeGFRFoQ==
1640
 
1641
  convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
1642
  version "1.9.0"
2191
  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
2192
 
2193
  eslint@^8:
2194
+ version "8.28.0"
2195
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.28.0.tgz#81a680732634677cc890134bcdd9fdfea8e63d6e"
2196
+ integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==
2197
  dependencies:
2198
  "@eslint/eslintrc" "^1.3.3"
2199
  "@humanwhocodes/config-array" "^0.11.6"
2584
  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2585
 
2586
  globals@^13.15.0:
2587
+ version "13.18.0"
2588
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc"
2589
+ integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==
2590
  dependencies:
2591
  type-fest "^0.20.2"
2592
 
package.json CHANGED
@@ -55,7 +55,7 @@
55
  "jsii-pacmak": "^1.71.0",
56
  "json-schema": "^0.4.0",
57
  "npm-check-updates": "^16",
58
- "projen": "^0.65.25",
59
  "standard-version": "^9",
60
  "ts-jest": "^27",
61
  "typescript": "^4.9.3"
55
  "jsii-pacmak": "^1.71.0",
56
  "json-schema": "^0.4.0",
57
  "npm-check-updates": "^16",
58
+ "projen": "^0.65.28",
59
  "standard-version": "^9",
60
  "ts-jest": "^27",
61
  "typescript": "^4.9.3"
yarn.lock CHANGED
@@ -2292,9 +2292,9 @@ eslint-visitor-keys@^3.3.0:
2292
  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
2293
 
2294
  eslint@^8:
2295
- version "8.27.0"
2296
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.27.0.tgz#d547e2f7239994ad1faa4bb5d84e5d809db7cf64"
2297
- integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==
2298
  dependencies:
2299
  "@eslint/eslintrc" "^1.3.3"
2300
  "@humanwhocodes/config-array" "^0.11.6"
@@ -2757,9 +2757,9 @@ globals@^11.1.0:
2757
  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2758
 
2759
  globals@^13.15.0:
2760
- version "13.17.0"
2761
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4"
2762
- integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==
2763
  dependencies:
2764
  type-fest "^0.20.2"
2765
 
@@ -4947,10 +4947,10 @@ progress@^2.0.3:
4947
  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
4948
  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
4949
 
4950
- projen@^0.65.25:
4951
- version "0.65.25"
4952
- resolved "https://registry.yarnpkg.com/projen/-/projen-0.65.25.tgz#eedca3255ddda1f35f07bf10e61ba3dcbfe646e2"
4953
- integrity sha512-i2hgNpvntLyX80awrgili6zherTCDXtDTcK8ctpcIU9/uMEWeBEaPxBpyP8znyfNAiDuC+16edtL12GrA1rqQA==
4954
  dependencies:
4955
  "@iarna/toml" "^2.2.5"
4956
  case "^1.6.3"
2292
  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
2293
 
2294
  eslint@^8:
2295
+ version "8.28.0"
2296
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.28.0.tgz#81a680732634677cc890134bcdd9fdfea8e63d6e"
2297
+ integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==
2298
  dependencies:
2299
  "@eslint/eslintrc" "^1.3.3"
2300
  "@humanwhocodes/config-array" "^0.11.6"
2757
  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2758
 
2759
  globals@^13.15.0:
2760
+ version "13.18.0"
2761
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc"
2762
+ integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==
2763
  dependencies:
2764
  type-fest "^0.20.2"
2765
 
4947
  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
4948
  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
4949
 
4950
+ projen@^0.65.28:
4951
+ version "0.65.28"
4952
+ resolved "https://registry.yarnpkg.com/projen/-/projen-0.65.28.tgz#12edf8ebb259f38b9bd54772193fcfb9bdfa6b16"
4953
+ integrity sha512-ygc9dKLUKe23VlmEmEbE09lcJMmkd64pCxZxtfR7s3c4jNlOSGAMNE/t3mdedUIBnk6D3BNWbCWAJgHrLCSa3A==
4954
  dependencies:
4955
  "@iarna/toml" "^2.2.5"
4956
  case "^1.6.3"

Readme

Simple NAT

It's a CDK construct to create NAT instances on AWS.

It supports adding specific IP CIDRs to route tables of VPC, the network traffic to those IP CIDRs will be forwarded to the NAT instances.

It supports routing to below services out of box,

  • Github git servers
  • Google
  • Cloudflare

Install

TypeScript/JavaScript:

yarn add cdk-construct-simple-nat

or

npm install cdk-construct-simple-nat

Usage

import { SimpleNAT } from 'cdk-construct-simple-nat';

new SimpleNAT(this, 'SimpleNAT', {
  vpc,
  natSubnetsSelection: {
    subnetType: SubnetType.PUBLIC,
    onePerAz: true,
  },
})
.withGithubRoute();

See the complete example and API doc.

FAQ

What's the difference between EC2 NAT instances and NAT instances created by this construct

There are below differences,

  • EC2 NAT instance will route all Internet traffic to itself by default
  • NAT instance uses depracated Amazon Linux AMI, this construct always uses latest Amazon Linux 2 AMI
  • NAT instances created by this construct can work with NAT gateways together, you can have multiple NAT instances in one VPC
  • This construct can help when only routing specific traffic(for example, github/gist) to NAT instances which acts as transit proxy

What's the difference between CDK built-in NAT instances and NAT instances created by this construct

  • CDK built-in NAT instances has to be created with VPC stack, this construct can add NAT instances to any existing VPC
  • You can use this construct multiple NAT instances for different purposes
  • This construct allows you customize the instances how to route the traffic

The deployment fails due to the routes in route table exceeds the limit

The default routes in route table is 50, the deployment will fail if adding routes more than the limit of your account. You can increase the limit up to 1000 routes per route table via service quota.

How to exclude IPv6 CIDR with built-in github/google/cloudflare routes

You can exclude IPv6 CIDR like below,

new SimpleNAT(this, 'SimpleNAT', {
  vpc,
})
.withCloudflareRoute({
  excludeIPv6: true,
});