terraconstructs 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) hide show
  1. package/.envrc +5 -0
  2. package/.jsii +79780 -0
  3. package/.mise.toml +8 -0
  4. package/.nvmrc +1 -0
  5. package/.terraform-version +1 -0
  6. package/.terraform.d/plugin-cache/.gitignore +5 -0
  7. package/LICENSE +674 -0
  8. package/NOTICE.txt +12 -0
  9. package/README.md +42 -0
  10. package/bun.lockb +0 -0
  11. package/go.mod +158 -0
  12. package/go.sum +1206 -0
  13. package/lib/aws/arn.d.ts +187 -0
  14. package/lib/aws/arn.js +383 -0
  15. package/lib/aws/aws-construct.d.ts +76 -0
  16. package/lib/aws/aws-construct.js +38 -0
  17. package/lib/aws/aws-stack.d.ts +201 -0
  18. package/lib/aws/aws-stack.js +303 -0
  19. package/lib/aws/cloudwatch/actions/ec2.d.ts +35 -0
  20. package/lib/aws/cloudwatch/actions/ec2.js +48 -0
  21. package/lib/aws/cloudwatch/actions/index.d.ts +2 -0
  22. package/lib/aws/cloudwatch/actions/index.js +24 -0
  23. package/lib/aws/cloudwatch/actions/lambda.d.ts +16 -0
  24. package/lib/aws/cloudwatch/actions/lambda.js +48 -0
  25. package/lib/aws/cloudwatch/alarm-action.d.ts +23 -0
  26. package/lib/aws/cloudwatch/alarm-action.js +4 -0
  27. package/lib/aws/cloudwatch/alarm-base.d.ts +84 -0
  28. package/lib/aws/cloudwatch/alarm-base.js +64 -0
  29. package/lib/aws/cloudwatch/alarm-rule.d.ts +61 -0
  30. package/lib/aws/cloudwatch/alarm-rule.js +116 -0
  31. package/lib/aws/cloudwatch/alarm-status-widget.d.ts +77 -0
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +62 -0
  33. package/lib/aws/cloudwatch/alarm.d.ts +158 -0
  34. package/lib/aws/cloudwatch/alarm.js +410 -0
  35. package/lib/aws/cloudwatch/composite-alarm.d.ts +88 -0
  36. package/lib/aws/cloudwatch/composite-alarm.js +98 -0
  37. package/lib/aws/cloudwatch/dashboard.d.ts +137 -0
  38. package/lib/aws/cloudwatch/dashboard.js +141 -0
  39. package/lib/aws/cloudwatch/data-protection-policy.d.ts +184 -0
  40. package/lib/aws/cloudwatch/data-protection-policy.js +246 -0
  41. package/lib/aws/cloudwatch/graph.d.ts +792 -0
  42. package/lib/aws/cloudwatch/graph.js +537 -0
  43. package/lib/aws/cloudwatch/index.d.ts +26 -0
  44. package/lib/aws/cloudwatch/index.js +49 -0
  45. package/lib/aws/cloudwatch/layout.d.ts +89 -0
  46. package/lib/aws/cloudwatch/layout.js +147 -0
  47. package/lib/aws/cloudwatch/log-destinations/index.d.ts +2 -0
  48. package/lib/aws/cloudwatch/log-destinations/index.js +20 -0
  49. package/lib/aws/cloudwatch/log-destinations/kinesis.d.ts +29 -0
  50. package/lib/aws/cloudwatch/log-destinations/kinesis.js +52 -0
  51. package/lib/aws/cloudwatch/log-destinations/lambda.d.ts +22 -0
  52. package/lib/aws/cloudwatch/log-destinations/lambda.js +46 -0
  53. package/lib/aws/cloudwatch/log-group.d.ts +453 -0
  54. package/lib/aws/cloudwatch/log-group.js +350 -0
  55. package/lib/aws/cloudwatch/log-query.d.ts +91 -0
  56. package/lib/aws/cloudwatch/log-query.js +85 -0
  57. package/lib/aws/cloudwatch/log-stream.d.ts +57 -0
  58. package/lib/aws/cloudwatch/log-stream.js +57 -0
  59. package/lib/aws/cloudwatch/metric-filter.d.ts +30 -0
  60. package/lib/aws/cloudwatch/metric-filter.js +69 -0
  61. package/lib/aws/cloudwatch/metric-types.d.ts +407 -0
  62. package/lib/aws/cloudwatch/metric-types.js +151 -0
  63. package/lib/aws/cloudwatch/metric.d.ts +492 -0
  64. package/lib/aws/cloudwatch/metric.js +493 -0
  65. package/lib/aws/cloudwatch/pattern.d.ts +195 -0
  66. package/lib/aws/cloudwatch/pattern.js +412 -0
  67. package/lib/aws/cloudwatch/policy.d.ts +43 -0
  68. package/lib/aws/cloudwatch/policy.js +50 -0
  69. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +14 -0
  70. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +37 -0
  71. package/lib/aws/cloudwatch/private/env-tokens.d.ts +8 -0
  72. package/lib/aws/cloudwatch/private/env-tokens.js +48 -0
  73. package/lib/aws/cloudwatch/private/metric-util.d.ts +60 -0
  74. package/lib/aws/cloudwatch/private/metric-util.js +132 -0
  75. package/lib/aws/cloudwatch/private/object.d.ts +1 -0
  76. package/lib/aws/cloudwatch/private/object.js +18 -0
  77. package/lib/aws/cloudwatch/private/rendering.d.ts +60 -0
  78. package/lib/aws/cloudwatch/private/rendering.js +181 -0
  79. package/lib/aws/cloudwatch/private/statistic.d.ts +51 -0
  80. package/lib/aws/cloudwatch/private/statistic.js +176 -0
  81. package/lib/aws/cloudwatch/query-definition.d.ts +150 -0
  82. package/lib/aws/cloudwatch/query-definition.js +114 -0
  83. package/lib/aws/cloudwatch/stats.d.ts +150 -0
  84. package/lib/aws/cloudwatch/stats.js +207 -0
  85. package/lib/aws/cloudwatch/subscription-filter.d.ts +75 -0
  86. package/lib/aws/cloudwatch/subscription-filter.js +51 -0
  87. package/lib/aws/cloudwatch/text.d.ts +52 -0
  88. package/lib/aws/cloudwatch/text.js +53 -0
  89. package/lib/aws/cloudwatch/variable.d.ts +156 -0
  90. package/lib/aws/cloudwatch/variable.js +156 -0
  91. package/lib/aws/cloudwatch/widget.d.ts +62 -0
  92. package/lib/aws/cloudwatch/widget.js +45 -0
  93. package/lib/aws/compute/activity.d.ts +81 -0
  94. package/lib/aws/compute/activity.js +132 -0
  95. package/lib/aws/compute/architecture.d.ts +33 -0
  96. package/lib/aws/compute/architecture.js +42 -0
  97. package/lib/aws/compute/chain.d.ts +52 -0
  98. package/lib/aws/compute/chain.js +68 -0
  99. package/lib/aws/compute/condition.d.ts +202 -0
  100. package/lib/aws/compute/condition.js +409 -0
  101. package/lib/aws/compute/event-invoke-config.d.ts +74 -0
  102. package/lib/aws/compute/event-invoke-config.js +63 -0
  103. package/lib/aws/compute/event-source-filter.d.ts +64 -0
  104. package/lib/aws/compute/event-source-filter.js +86 -0
  105. package/lib/aws/compute/event-source-mapping.d.ts +310 -0
  106. package/lib/aws/compute/event-source-mapping.js +267 -0
  107. package/lib/aws/compute/event-sources/index.d.ts +4 -0
  108. package/lib/aws/compute/event-sources/index.js +28 -0
  109. package/lib/aws/compute/event-sources/s3-onfailure-destination.d.ts +13 -0
  110. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +26 -0
  111. package/lib/aws/compute/event-sources/s3.d.ts +24 -0
  112. package/lib/aws/compute/event-sources/s3.js +25 -0
  113. package/lib/aws/compute/event-sources/sqs-dlq.d.ts +13 -0
  114. package/lib/aws/compute/event-sources/sqs-dlq.js +26 -0
  115. package/lib/aws/compute/event-sources/sqs.d.ts +75 -0
  116. package/lib/aws/compute/event-sources/sqs.js +84 -0
  117. package/lib/aws/compute/fields.d.ts +367 -0
  118. package/lib/aws/compute/fields.js +546 -0
  119. package/lib/aws/compute/function-alias.d.ts +148 -0
  120. package/lib/aws/compute/function-alias.js +176 -0
  121. package/lib/aws/compute/function-base.d.ts +314 -0
  122. package/lib/aws/compute/function-base.js +421 -0
  123. package/lib/aws/compute/function-destination.d.ts +42 -0
  124. package/lib/aws/compute/function-destination.js +18 -0
  125. package/lib/aws/compute/function-destinations/event-bridge.d.ts +19 -0
  126. package/lib/aws/compute/function-destinations/event-bridge.js +46 -0
  127. package/lib/aws/compute/function-destinations/function.d.ts +34 -0
  128. package/lib/aws/compute/function-destinations/function.js +55 -0
  129. package/lib/aws/compute/function-destinations/index.d.ts +3 -0
  130. package/lib/aws/compute/function-destinations/index.js +22 -0
  131. package/lib/aws/compute/function-destinations/sqs.d.ts +14 -0
  132. package/lib/aws/compute/function-destinations/sqs.js +27 -0
  133. package/lib/aws/compute/function-nodejs.d.ts +55 -0
  134. package/lib/aws/compute/function-nodejs.js +70 -0
  135. package/lib/aws/compute/function-permission.d.ts +83 -0
  136. package/lib/aws/compute/function-permission.js +3 -0
  137. package/lib/aws/compute/function-url.d.ts +210 -0
  138. package/lib/aws/compute/function-url.js +148 -0
  139. package/lib/aws/compute/function-vpc-config.generated.d.ts +36 -0
  140. package/lib/aws/compute/function-vpc-config.generated.js +3 -0
  141. package/lib/aws/compute/function.d.ts +492 -0
  142. package/lib/aws/compute/function.js +692 -0
  143. package/lib/aws/compute/index.d.ts +42 -0
  144. package/lib/aws/compute/index.js +64 -0
  145. package/lib/aws/compute/private/intrinstics.d.ts +86 -0
  146. package/lib/aws/compute/private/intrinstics.js +220 -0
  147. package/lib/aws/compute/private/json-path.d.ts +57 -0
  148. package/lib/aws/compute/private/json-path.js +351 -0
  149. package/lib/aws/compute/private/util.d.ts +1 -0
  150. package/lib/aws/compute/private/util.js +38 -0
  151. package/lib/aws/compute/state-graph.d.ts +100 -0
  152. package/lib/aws/compute/state-graph.js +177 -0
  153. package/lib/aws/compute/state-machine-fragment.d.ts +61 -0
  154. package/lib/aws/compute/state-machine-fragment.js +56 -0
  155. package/lib/aws/compute/state-machine.d.ts +323 -0
  156. package/lib/aws/compute/state-machine.js +392 -0
  157. package/lib/aws/compute/states/choice.d.ts +94 -0
  158. package/lib/aws/compute/states/choice.js +81 -0
  159. package/lib/aws/compute/states/custom-state.d.ts +55 -0
  160. package/lib/aws/compute/states/custom-state.js +114 -0
  161. package/lib/aws/compute/states/distributed-map/item-batcher.d.ts +64 -0
  162. package/lib/aws/compute/states/distributed-map/item-batcher.js +58 -0
  163. package/lib/aws/compute/states/distributed-map/item-reader.d.ts +256 -0
  164. package/lib/aws/compute/states/distributed-map/item-reader.js +253 -0
  165. package/lib/aws/compute/states/distributed-map/result-writer.d.ts +41 -0
  166. package/lib/aws/compute/states/distributed-map/result-writer.js +66 -0
  167. package/lib/aws/compute/states/distributed-map.d.ts +153 -0
  168. package/lib/aws/compute/states/distributed-map.js +207 -0
  169. package/lib/aws/compute/states/fail.d.ts +74 -0
  170. package/lib/aws/compute/states/fail.js +83 -0
  171. package/lib/aws/compute/states/map-base.d.ts +145 -0
  172. package/lib/aws/compute/states/map-base.js +109 -0
  173. package/lib/aws/compute/states/map.d.ts +76 -0
  174. package/lib/aws/compute/states/map.js +110 -0
  175. package/lib/aws/compute/states/parallel.d.ts +113 -0
  176. package/lib/aws/compute/states/parallel.js +100 -0
  177. package/lib/aws/compute/states/pass.d.ts +122 -0
  178. package/lib/aws/compute/states/pass.js +99 -0
  179. package/lib/aws/compute/states/private/state-type.d.ts +13 -0
  180. package/lib/aws/compute/states/private/state-type.js +19 -0
  181. package/lib/aws/compute/states/state.d.ts +276 -0
  182. package/lib/aws/compute/states/state.js +482 -0
  183. package/lib/aws/compute/states/succeed.d.ts +51 -0
  184. package/lib/aws/compute/states/succeed.js +32 -0
  185. package/lib/aws/compute/states/task-base.d.ts +225 -0
  186. package/lib/aws/compute/states/task-base.js +160 -0
  187. package/lib/aws/compute/states/task.d.ts +127 -0
  188. package/lib/aws/compute/states/task.js +92 -0
  189. package/lib/aws/compute/states/wait.d.ts +78 -0
  190. package/lib/aws/compute/states/wait.js +90 -0
  191. package/lib/aws/compute/step-functions-task.d.ts +78 -0
  192. package/lib/aws/compute/step-functions-task.js +27 -0
  193. package/lib/aws/compute/task-credentials.d.ts +45 -0
  194. package/lib/aws/compute/task-credentials.js +52 -0
  195. package/lib/aws/compute/task-input.d.ts +86 -0
  196. package/lib/aws/compute/task-input.js +107 -0
  197. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.d.ts +73 -0
  198. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +69 -0
  199. package/lib/aws/compute/tasks/eventbridge/put-events.d.ts +74 -0
  200. package/lib/aws/compute/tasks/eventbridge/put-events.js +94 -0
  201. package/lib/aws/compute/tasks/http/invoke.d.ts +104 -0
  202. package/lib/aws/compute/tasks/http/invoke.js +117 -0
  203. package/lib/aws/compute/tasks/index.d.ts +7 -0
  204. package/lib/aws/compute/tasks/index.js +42 -0
  205. package/lib/aws/compute/tasks/lambda/invoke.d.ts +106 -0
  206. package/lib/aws/compute/tasks/lambda/invoke.js +125 -0
  207. package/lib/aws/compute/tasks/private/task-utils.d.ts +8 -0
  208. package/lib/aws/compute/tasks/private/task-utils.js +36 -0
  209. package/lib/aws/compute/tasks/resource-arn-suffix.d.ts +3 -0
  210. package/lib/aws/compute/tasks/resource-arn-suffix.js +25 -0
  211. package/lib/aws/compute/tasks/sqs/send-message.d.ts +62 -0
  212. package/lib/aws/compute/tasks/sqs/send-message.js +70 -0
  213. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.d.ts +36 -0
  214. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +45 -0
  215. package/lib/aws/compute/tasks/stepfunctions/start-execution.d.ts +63 -0
  216. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +123 -0
  217. package/lib/aws/compute/types.d.ts +214 -0
  218. package/lib/aws/compute/types.js +103 -0
  219. package/lib/aws/compute/util.d.ts +12 -0
  220. package/lib/aws/compute/util.js +29 -0
  221. package/lib/aws/edge/certificate.d.ts +144 -0
  222. package/lib/aws/edge/certificate.js +191 -0
  223. package/lib/aws/edge/distribution.d.ts +505 -0
  224. package/lib/aws/edge/distribution.js +444 -0
  225. package/lib/aws/edge/dns-alias-record-targets.d.ts +29 -0
  226. package/lib/aws/edge/dns-alias-record-targets.js +46 -0
  227. package/lib/aws/edge/dns-record.d.ts +536 -0
  228. package/lib/aws/edge/dns-record.js +532 -0
  229. package/lib/aws/edge/dns-zone.d.ts +169 -0
  230. package/lib/aws/edge/dns-zone.js +149 -0
  231. package/lib/aws/edge/function.d.ts +185 -0
  232. package/lib/aws/edge/function.js +141 -0
  233. package/lib/aws/edge/index.d.ts +8 -0
  234. package/lib/aws/edge/index.js +25 -0
  235. package/lib/aws/edge/key-value-store.d.ts +162 -0
  236. package/lib/aws/edge/key-value-store.js +163 -0
  237. package/lib/aws/edge/origin.d.ts +160 -0
  238. package/lib/aws/edge/origin.js +245 -0
  239. package/lib/aws/encryption/alias.d.ts +137 -0
  240. package/lib/aws/encryption/alias.js +216 -0
  241. package/lib/aws/encryption/index.d.ts +4 -0
  242. package/lib/aws/encryption/index.js +21 -0
  243. package/lib/aws/encryption/key-lookup.d.ts +11 -0
  244. package/lib/aws/encryption/key-lookup.js +4 -0
  245. package/lib/aws/encryption/key.d.ts +461 -0
  246. package/lib/aws/encryption/key.js +586 -0
  247. package/lib/aws/encryption/private/perms.d.ts +5 -0
  248. package/lib/aws/encryption/private/perms.js +30 -0
  249. package/lib/aws/encryption/via-service-principal.d.ts +11 -0
  250. package/lib/aws/encryption/via-service-principal.js +39 -0
  251. package/lib/aws/iam/grant.d.ts +221 -0
  252. package/lib/aws/iam/grant.js +239 -0
  253. package/lib/aws/iam/identity-base.d.ts +20 -0
  254. package/lib/aws/iam/identity-base.js +3 -0
  255. package/lib/aws/iam/index.d.ts +16 -0
  256. package/lib/aws/iam/index.js +34 -0
  257. package/lib/aws/iam/managed-policy.d.ts +227 -0
  258. package/lib/aws/iam/managed-policy.js +237 -0
  259. package/lib/aws/iam/oidc-provider.d.ts +120 -0
  260. package/lib/aws/iam/oidc-provider.js +82 -0
  261. package/lib/aws/iam/policy-document-config.generated.d.ts +78 -0
  262. package/lib/aws/iam/policy-document-config.generated.js +3 -0
  263. package/lib/aws/iam/policy-document.d.ts +150 -0
  264. package/lib/aws/iam/policy-document.js +172 -0
  265. package/lib/aws/iam/policy-statement-props.generated.d.ts +55 -0
  266. package/lib/aws/iam/policy-statement-props.generated.js +3 -0
  267. package/lib/aws/iam/policy-statement.d.ts +451 -0
  268. package/lib/aws/iam/policy-statement.js +947 -0
  269. package/lib/aws/iam/policy.d.ts +122 -0
  270. package/lib/aws/iam/policy.js +192 -0
  271. package/lib/aws/iam/principals.d.ts +668 -0
  272. package/lib/aws/iam/principals.js +1032 -0
  273. package/lib/aws/iam/private/adapter.d.ts +21 -0
  274. package/lib/aws/iam/private/adapter.js +51 -0
  275. package/lib/aws/iam/private/assume-role-policy.d.ts +8 -0
  276. package/lib/aws/iam/private/assume-role-policy.js +27 -0
  277. package/lib/aws/iam/private/comparable-principal.d.ts +6 -0
  278. package/lib/aws/iam/private/comparable-principal.js +20 -0
  279. package/lib/aws/iam/private/immutable-role.d.ts +43 -0
  280. package/lib/aws/iam/private/immutable-role.js +76 -0
  281. package/lib/aws/iam/private/imported-role.d.ts +49 -0
  282. package/lib/aws/iam/private/imported-role.js +103 -0
  283. package/lib/aws/iam/private/merge-statements.d.ts +44 -0
  284. package/lib/aws/iam/private/merge-statements.js +214 -0
  285. package/lib/aws/iam/private/postprocess-policy-document.d.ts +15 -0
  286. package/lib/aws/iam/private/postprocess-policy-document.js +102 -0
  287. package/lib/aws/iam/private/util.d.ts +37 -0
  288. package/lib/aws/iam/private/util.js +87 -0
  289. package/lib/aws/iam/role.d.ts +425 -0
  290. package/lib/aws/iam/role.js +407 -0
  291. package/lib/aws/iam/saml-provider.d.ts +79 -0
  292. package/lib/aws/iam/saml-provider.js +79 -0
  293. package/lib/aws/iam/unknown-principal.d.ts +32 -0
  294. package/lib/aws/iam/unknown-principal.js +45 -0
  295. package/lib/aws/iam/utils.d.ts +12 -0
  296. package/lib/aws/iam/utils.js +41 -0
  297. package/lib/aws/index.d.ts +13 -0
  298. package/lib/aws/index.js +34 -0
  299. package/lib/aws/log-retention.d.ts +97 -0
  300. package/lib/aws/log-retention.js +103 -0
  301. package/lib/aws/network/index.d.ts +4 -0
  302. package/lib/aws/network/index.js +21 -0
  303. package/lib/aws/network/network.d.ts +77 -0
  304. package/lib/aws/network/network.js +3 -0
  305. package/lib/aws/network/simple-ipv4-vpc.d.ts +84 -0
  306. package/lib/aws/network/simple-ipv4-vpc.js +236 -0
  307. package/lib/aws/network/subnet-group.d.ts +42 -0
  308. package/lib/aws/network/subnet-group.js +72 -0
  309. package/lib/aws/network/subnet.d.ts +95 -0
  310. package/lib/aws/network/subnet.js +123 -0
  311. package/lib/aws/notify/archive.d.ts +77 -0
  312. package/lib/aws/notify/archive.js +62 -0
  313. package/lib/aws/notify/connection.d.ts +276 -0
  314. package/lib/aws/notify/connection.js +261 -0
  315. package/lib/aws/notify/event-bus.d.ts +298 -0
  316. package/lib/aws/notify/event-bus.js +326 -0
  317. package/lib/aws/notify/event-pattern.d.ts +220 -0
  318. package/lib/aws/notify/event-pattern.js +197 -0
  319. package/lib/aws/notify/index.d.ts +15 -0
  320. package/lib/aws/notify/index.js +35 -0
  321. package/lib/aws/notify/input.d.ts +126 -0
  322. package/lib/aws/notify/input.js +282 -0
  323. package/lib/aws/notify/kinesis-canned-metrics.generated.d.ts +68 -0
  324. package/lib/aws/notify/kinesis-canned-metrics.generated.js +103 -0
  325. package/lib/aws/notify/kinesis-fixed-canned-metrics.d.ts +195 -0
  326. package/lib/aws/notify/kinesis-fixed-canned-metrics.js +155 -0
  327. package/lib/aws/notify/kinesis-stream.d.ts +705 -0
  328. package/lib/aws/notify/kinesis-stream.js +541 -0
  329. package/lib/aws/notify/on-event-options.d.ts +54 -0
  330. package/lib/aws/notify/on-event-options.js +3 -0
  331. package/lib/aws/notify/queue-config.generated.d.ts +85 -0
  332. package/lib/aws/notify/queue-config.generated.js +3 -0
  333. package/lib/aws/notify/queue-policy.d.ts +35 -0
  334. package/lib/aws/notify/queue-policy.js +39 -0
  335. package/lib/aws/notify/queue.d.ts +355 -0
  336. package/lib/aws/notify/queue.js +305 -0
  337. package/lib/aws/notify/resource-policy.d.ts +41 -0
  338. package/lib/aws/notify/resource-policy.js +43 -0
  339. package/lib/aws/notify/rule.d.ts +153 -0
  340. package/lib/aws/notify/rule.js +227 -0
  341. package/lib/aws/notify/schedule.d.ts +83 -0
  342. package/lib/aws/notify/schedule.js +116 -0
  343. package/lib/aws/notify/target.d.ts +102 -0
  344. package/lib/aws/notify/target.js +3 -0
  345. package/lib/aws/notify/targets/event-bus.d.ts +39 -0
  346. package/lib/aws/notify/targets/event-bus.js +40 -0
  347. package/lib/aws/notify/targets/function.d.ts +31 -0
  348. package/lib/aws/notify/targets/function.js +36 -0
  349. package/lib/aws/notify/targets/index.d.ts +6 -0
  350. package/lib/aws/notify/targets/index.js +37 -0
  351. package/lib/aws/notify/targets/log-group.d.ts +89 -0
  352. package/lib/aws/notify/targets/log-group.js +110 -0
  353. package/lib/aws/notify/targets/sqs.d.ts +45 -0
  354. package/lib/aws/notify/targets/sqs.js +73 -0
  355. package/lib/aws/notify/targets/state-machine.d.ts +36 -0
  356. package/lib/aws/notify/targets/state-machine.js +39 -0
  357. package/lib/aws/notify/targets/util.d.ts +71 -0
  358. package/lib/aws/notify/targets/util.js +130 -0
  359. package/lib/aws/notify/util.d.ts +13 -0
  360. package/lib/aws/notify/util.js +69 -0
  361. package/lib/aws/provider-config.generated.d.ts +220 -0
  362. package/lib/aws/provider-config.generated.js +3 -0
  363. package/lib/aws/storage/bucket-destination.d.ts +41 -0
  364. package/lib/aws/storage/bucket-destination.js +13 -0
  365. package/lib/aws/storage/bucket-notifications.d.ts +58 -0
  366. package/lib/aws/storage/bucket-notifications.js +169 -0
  367. package/lib/aws/storage/bucket-perms.d.ts +9 -0
  368. package/lib/aws/storage/bucket-perms.js +33 -0
  369. package/lib/aws/storage/bucket-policy.d.ts +51 -0
  370. package/lib/aws/storage/bucket-policy.js +53 -0
  371. package/lib/aws/storage/bucket-source.d.ts +41 -0
  372. package/lib/aws/storage/bucket-source.js +79 -0
  373. package/lib/aws/storage/bucket.d.ts +941 -0
  374. package/lib/aws/storage/bucket.js +869 -0
  375. package/lib/aws/storage/cors-config.generated.d.ts +57 -0
  376. package/lib/aws/storage/cors-config.generated.js +3 -0
  377. package/lib/aws/storage/cors-rule-config.generated.d.ts +38 -0
  378. package/lib/aws/storage/cors-rule-config.generated.js +3 -0
  379. package/lib/aws/storage/index.d.ts +12 -0
  380. package/lib/aws/storage/index.js +31 -0
  381. package/lib/aws/storage/lifecycle-config.generated.d.ts +55 -0
  382. package/lib/aws/storage/lifecycle-config.generated.js +3 -0
  383. package/lib/aws/storage/notification-targets/function.d.ts +11 -0
  384. package/lib/aws/storage/notification-targets/function.js +48 -0
  385. package/lib/aws/storage/notification-targets/index.d.ts +2 -0
  386. package/lib/aws/storage/notification-targets/index.js +21 -0
  387. package/lib/aws/storage/notification-targets/queue.d.ts +15 -0
  388. package/lib/aws/storage/notification-targets/queue.js +58 -0
  389. package/lib/aws/storage/origin-access-identity.d.ts +91 -0
  390. package/lib/aws/storage/origin-access-identity.js +76 -0
  391. package/lib/aws/storage/util.d.ts +40 -0
  392. package/lib/aws/storage/util.js +85 -0
  393. package/lib/aws/storage/website-config.generated.d.ts +73 -0
  394. package/lib/aws/storage/website-config.generated.js +3 -0
  395. package/lib/aws/util.d.ts +4 -0
  396. package/lib/aws/util.js +25 -0
  397. package/lib/construct-base.d.ts +69 -0
  398. package/lib/construct-base.js +89 -0
  399. package/lib/duration.d.ts +160 -0
  400. package/lib/duration.js +327 -0
  401. package/lib/index.d.ts +5 -0
  402. package/lib/index.js +24 -0
  403. package/lib/private/index.d.ts +2 -0
  404. package/lib/private/index.js +19 -0
  405. package/lib/private/terraform-dependables-aspect.d.ts +20 -0
  406. package/lib/private/terraform-dependables-aspect.js +95 -0
  407. package/lib/private/unique-resource-name.d.ts +9 -0
  408. package/lib/private/unique-resource-name.js +145 -0
  409. package/lib/size.d.ts +146 -0
  410. package/lib/size.js +220 -0
  411. package/lib/stack-base.d.ts +188 -0
  412. package/lib/stack-base.js +183 -0
  413. package/lib/token.d.ts +32 -0
  414. package/lib/token.js +54 -0
  415. package/node_modules/camel-case/LICENSE +21 -0
  416. package/node_modules/camel-case/README.md +47 -0
  417. package/node_modules/camel-case/dist/index.d.ts +5 -0
  418. package/node_modules/camel-case/dist/index.js +23 -0
  419. package/node_modules/camel-case/dist/index.js.map +1 -0
  420. package/node_modules/camel-case/dist/index.spec.d.ts +1 -0
  421. package/node_modules/camel-case/dist/index.spec.js +26 -0
  422. package/node_modules/camel-case/dist/index.spec.js.map +1 -0
  423. package/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
  424. package/node_modules/camel-case/dist.es2015/index.js +17 -0
  425. package/node_modules/camel-case/dist.es2015/index.js.map +1 -0
  426. package/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
  427. package/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
  428. package/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
  429. package/node_modules/camel-case/package.json +89 -0
  430. package/node_modules/capital-case/LICENSE +21 -0
  431. package/node_modules/capital-case/README.md +37 -0
  432. package/node_modules/capital-case/dist/index.d.ts +4 -0
  433. package/node_modules/capital-case/dist/index.js +16 -0
  434. package/node_modules/capital-case/dist/index.js.map +1 -0
  435. package/node_modules/capital-case/dist/index.spec.d.ts +1 -0
  436. package/node_modules/capital-case/dist/index.spec.js +24 -0
  437. package/node_modules/capital-case/dist/index.spec.js.map +1 -0
  438. package/node_modules/capital-case/dist.es2015/index.d.ts +4 -0
  439. package/node_modules/capital-case/dist.es2015/index.js +11 -0
  440. package/node_modules/capital-case/dist.es2015/index.js.map +1 -0
  441. package/node_modules/capital-case/dist.es2015/index.spec.d.ts +1 -0
  442. package/node_modules/capital-case/dist.es2015/index.spec.js +22 -0
  443. package/node_modules/capital-case/dist.es2015/index.spec.js.map +1 -0
  444. package/node_modules/capital-case/package.json +90 -0
  445. package/node_modules/change-case/LICENSE +21 -0
  446. package/node_modules/change-case/README.md +44 -0
  447. package/node_modules/change-case/dist/index.d.ts +11 -0
  448. package/node_modules/change-case/dist/index.js +15 -0
  449. package/node_modules/change-case/dist/index.js.map +1 -0
  450. package/node_modules/change-case/dist/index.spec.d.ts +1 -0
  451. package/node_modules/change-case/dist/index.spec.js +9 -0
  452. package/node_modules/change-case/dist/index.spec.js.map +1 -0
  453. package/node_modules/change-case/dist.es2015/index.d.ts +11 -0
  454. package/node_modules/change-case/dist.es2015/index.js +12 -0
  455. package/node_modules/change-case/dist.es2015/index.js.map +1 -0
  456. package/node_modules/change-case/dist.es2015/index.spec.d.ts +1 -0
  457. package/node_modules/change-case/dist.es2015/index.spec.js +7 -0
  458. package/node_modules/change-case/dist.es2015/index.spec.js.map +1 -0
  459. package/node_modules/change-case/package.json +101 -0
  460. package/node_modules/constant-case/LICENSE +21 -0
  461. package/node_modules/constant-case/README.md +37 -0
  462. package/node_modules/constant-case/dist/index.d.ts +3 -0
  463. package/node_modules/constant-case/dist/index.js +12 -0
  464. package/node_modules/constant-case/dist/index.js.map +1 -0
  465. package/node_modules/constant-case/dist/index.spec.d.ts +1 -0
  466. package/node_modules/constant-case/dist/index.spec.js +26 -0
  467. package/node_modules/constant-case/dist/index.spec.js.map +1 -0
  468. package/node_modules/constant-case/dist.es2015/index.d.ts +3 -0
  469. package/node_modules/constant-case/dist.es2015/index.js +8 -0
  470. package/node_modules/constant-case/dist.es2015/index.js.map +1 -0
  471. package/node_modules/constant-case/dist.es2015/index.spec.d.ts +1 -0
  472. package/node_modules/constant-case/dist.es2015/index.spec.js +24 -0
  473. package/node_modules/constant-case/dist.es2015/index.spec.js.map +1 -0
  474. package/node_modules/constant-case/package.json +90 -0
  475. package/node_modules/dot-case/LICENSE +21 -0
  476. package/node_modules/dot-case/README.md +37 -0
  477. package/node_modules/dot-case/dist/index.d.ts +3 -0
  478. package/node_modules/dot-case/dist/index.js +11 -0
  479. package/node_modules/dot-case/dist/index.js.map +1 -0
  480. package/node_modules/dot-case/dist/index.spec.d.ts +1 -0
  481. package/node_modules/dot-case/dist/index.spec.js +26 -0
  482. package/node_modules/dot-case/dist/index.spec.js.map +1 -0
  483. package/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
  484. package/node_modules/dot-case/dist.es2015/index.js +7 -0
  485. package/node_modules/dot-case/dist.es2015/index.js.map +1 -0
  486. package/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
  487. package/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
  488. package/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
  489. package/node_modules/dot-case/package.json +89 -0
  490. package/node_modules/esbuild-wasm/LICENSE.md +21 -0
  491. package/node_modules/esbuild-wasm/README.md +3 -0
  492. package/node_modules/esbuild-wasm/bin/esbuild +91 -0
  493. package/node_modules/esbuild-wasm/esbuild.wasm +0 -0
  494. package/node_modules/esbuild-wasm/esm/browser.d.ts +705 -0
  495. package/node_modules/esbuild-wasm/esm/browser.js +2370 -0
  496. package/node_modules/esbuild-wasm/esm/browser.min.js +20 -0
  497. package/node_modules/esbuild-wasm/lib/browser.d.ts +705 -0
  498. package/node_modules/esbuild-wasm/lib/browser.js +2415 -0
  499. package/node_modules/esbuild-wasm/lib/browser.min.js +22 -0
  500. package/node_modules/esbuild-wasm/lib/main.d.ts +705 -0
  501. package/node_modules/esbuild-wasm/lib/main.js +2051 -0
  502. package/node_modules/esbuild-wasm/package.json +19 -0
  503. package/node_modules/esbuild-wasm/wasm_exec.js +561 -0
  504. package/node_modules/esbuild-wasm/wasm_exec_node.js +39 -0
  505. package/node_modules/header-case/LICENSE +21 -0
  506. package/node_modules/header-case/README.md +37 -0
  507. package/node_modules/header-case/dist/index.d.ts +3 -0
  508. package/node_modules/header-case/dist/index.js +11 -0
  509. package/node_modules/header-case/dist/index.js.map +1 -0
  510. package/node_modules/header-case/dist/index.spec.d.ts +1 -0
  511. package/node_modules/header-case/dist/index.spec.js +24 -0
  512. package/node_modules/header-case/dist/index.spec.js.map +1 -0
  513. package/node_modules/header-case/dist.es2015/index.d.ts +3 -0
  514. package/node_modules/header-case/dist.es2015/index.js +7 -0
  515. package/node_modules/header-case/dist.es2015/index.js.map +1 -0
  516. package/node_modules/header-case/dist.es2015/index.spec.d.ts +1 -0
  517. package/node_modules/header-case/dist.es2015/index.spec.js +22 -0
  518. package/node_modules/header-case/dist.es2015/index.spec.js.map +1 -0
  519. package/node_modules/header-case/package.json +89 -0
  520. package/node_modules/lower-case/LICENSE +21 -0
  521. package/node_modules/lower-case/README.md +35 -0
  522. package/node_modules/lower-case/dist/index.d.ts +8 -0
  523. package/node_modules/lower-case/dist/index.js +53 -0
  524. package/node_modules/lower-case/dist/index.js.map +1 -0
  525. package/node_modules/lower-case/dist/index.spec.d.ts +1 -0
  526. package/node_modules/lower-case/dist/index.spec.js +36 -0
  527. package/node_modules/lower-case/dist/index.spec.js.map +1 -0
  528. package/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
  529. package/node_modules/lower-case/dist.es2015/index.js +48 -0
  530. package/node_modules/lower-case/dist.es2015/index.js.map +1 -0
  531. package/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
  532. package/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
  533. package/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
  534. package/node_modules/lower-case/package.json +87 -0
  535. package/node_modules/mime-db/HISTORY.md +507 -0
  536. package/node_modules/mime-db/LICENSE +23 -0
  537. package/node_modules/mime-db/README.md +100 -0
  538. package/node_modules/mime-db/db.json +8519 -0
  539. package/node_modules/mime-db/index.js +12 -0
  540. package/node_modules/mime-db/package.json +60 -0
  541. package/node_modules/mime-types/HISTORY.md +397 -0
  542. package/node_modules/mime-types/LICENSE +23 -0
  543. package/node_modules/mime-types/README.md +113 -0
  544. package/node_modules/mime-types/index.js +188 -0
  545. package/node_modules/mime-types/package.json +44 -0
  546. package/node_modules/no-case/LICENSE +21 -0
  547. package/node_modules/no-case/README.md +37 -0
  548. package/node_modules/no-case/dist/index.d.ts +10 -0
  549. package/node_modules/no-case/dist/index.js +35 -0
  550. package/node_modules/no-case/dist/index.js.map +1 -0
  551. package/node_modules/no-case/dist/index.spec.d.ts +1 -0
  552. package/node_modules/no-case/dist/index.spec.js +59 -0
  553. package/node_modules/no-case/dist/index.spec.js.map +1 -0
  554. package/node_modules/no-case/dist.es2015/index.d.ts +10 -0
  555. package/node_modules/no-case/dist.es2015/index.js +31 -0
  556. package/node_modules/no-case/dist.es2015/index.js.map +1 -0
  557. package/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
  558. package/node_modules/no-case/dist.es2015/index.spec.js +57 -0
  559. package/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
  560. package/node_modules/no-case/package.json +85 -0
  561. package/node_modules/param-case/LICENSE +21 -0
  562. package/node_modules/param-case/README.md +37 -0
  563. package/node_modules/param-case/dist/index.d.ts +3 -0
  564. package/node_modules/param-case/dist/index.js +11 -0
  565. package/node_modules/param-case/dist/index.js.map +1 -0
  566. package/node_modules/param-case/dist/index.spec.d.ts +1 -0
  567. package/node_modules/param-case/dist/index.spec.js +24 -0
  568. package/node_modules/param-case/dist/index.spec.js.map +1 -0
  569. package/node_modules/param-case/dist.es2015/index.d.ts +3 -0
  570. package/node_modules/param-case/dist.es2015/index.js +7 -0
  571. package/node_modules/param-case/dist.es2015/index.js.map +1 -0
  572. package/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
  573. package/node_modules/param-case/dist.es2015/index.spec.js +22 -0
  574. package/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
  575. package/node_modules/param-case/package.json +91 -0
  576. package/node_modules/pascal-case/LICENSE +21 -0
  577. package/node_modules/pascal-case/README.md +47 -0
  578. package/node_modules/pascal-case/dist/index.d.ts +5 -0
  579. package/node_modules/pascal-case/dist/index.js +24 -0
  580. package/node_modules/pascal-case/dist/index.js.map +1 -0
  581. package/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
  582. package/node_modules/pascal-case/dist/index.spec.js +25 -0
  583. package/node_modules/pascal-case/dist/index.spec.js.map +1 -0
  584. package/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
  585. package/node_modules/pascal-case/dist.es2015/index.js +18 -0
  586. package/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
  587. package/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
  588. package/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
  589. package/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
  590. package/node_modules/pascal-case/package.json +90 -0
  591. package/node_modules/path-case/LICENSE +21 -0
  592. package/node_modules/path-case/README.md +37 -0
  593. package/node_modules/path-case/dist/index.d.ts +3 -0
  594. package/node_modules/path-case/dist/index.js +11 -0
  595. package/node_modules/path-case/dist/index.js.map +1 -0
  596. package/node_modules/path-case/dist/index.spec.d.ts +1 -0
  597. package/node_modules/path-case/dist/index.spec.js +24 -0
  598. package/node_modules/path-case/dist/index.spec.js.map +1 -0
  599. package/node_modules/path-case/dist.es2015/index.d.ts +3 -0
  600. package/node_modules/path-case/dist.es2015/index.js +7 -0
  601. package/node_modules/path-case/dist.es2015/index.js.map +1 -0
  602. package/node_modules/path-case/dist.es2015/index.spec.d.ts +1 -0
  603. package/node_modules/path-case/dist.es2015/index.spec.js +22 -0
  604. package/node_modules/path-case/dist.es2015/index.spec.js.map +1 -0
  605. package/node_modules/path-case/package.json +88 -0
  606. package/node_modules/sentence-case/LICENSE +21 -0
  607. package/node_modules/sentence-case/README.md +37 -0
  608. package/node_modules/sentence-case/dist/index.d.ts +4 -0
  609. package/node_modules/sentence-case/dist/index.js +19 -0
  610. package/node_modules/sentence-case/dist/index.js.map +1 -0
  611. package/node_modules/sentence-case/dist/index.spec.d.ts +1 -0
  612. package/node_modules/sentence-case/dist/index.spec.js +24 -0
  613. package/node_modules/sentence-case/dist/index.spec.js.map +1 -0
  614. package/node_modules/sentence-case/dist.es2015/index.d.ts +4 -0
  615. package/node_modules/sentence-case/dist.es2015/index.js +14 -0
  616. package/node_modules/sentence-case/dist.es2015/index.js.map +1 -0
  617. package/node_modules/sentence-case/dist.es2015/index.spec.d.ts +1 -0
  618. package/node_modules/sentence-case/dist.es2015/index.spec.js +22 -0
  619. package/node_modules/sentence-case/dist.es2015/index.spec.js.map +1 -0
  620. package/node_modules/sentence-case/package.json +89 -0
  621. package/node_modules/snake-case/LICENSE +21 -0
  622. package/node_modules/snake-case/README.md +37 -0
  623. package/node_modules/snake-case/dist/index.d.ts +3 -0
  624. package/node_modules/snake-case/dist/index.js +11 -0
  625. package/node_modules/snake-case/dist/index.js.map +1 -0
  626. package/node_modules/snake-case/dist/index.spec.d.ts +1 -0
  627. package/node_modules/snake-case/dist/index.spec.js +25 -0
  628. package/node_modules/snake-case/dist/index.spec.js.map +1 -0
  629. package/node_modules/snake-case/dist.es2015/index.d.ts +3 -0
  630. package/node_modules/snake-case/dist.es2015/index.js +7 -0
  631. package/node_modules/snake-case/dist.es2015/index.js.map +1 -0
  632. package/node_modules/snake-case/dist.es2015/index.spec.d.ts +1 -0
  633. package/node_modules/snake-case/dist.es2015/index.spec.js +23 -0
  634. package/node_modules/snake-case/dist.es2015/index.spec.js.map +1 -0
  635. package/node_modules/snake-case/package.json +90 -0
  636. package/node_modules/tslib/CopyrightNotice.txt +15 -0
  637. package/node_modules/tslib/LICENSE.txt +12 -0
  638. package/node_modules/tslib/README.md +164 -0
  639. package/node_modules/tslib/SECURITY.md +41 -0
  640. package/node_modules/tslib/modules/index.d.ts +37 -0
  641. package/node_modules/tslib/modules/index.js +68 -0
  642. package/node_modules/tslib/modules/package.json +3 -0
  643. package/node_modules/tslib/package.json +47 -0
  644. package/node_modules/tslib/tslib.d.ts +453 -0
  645. package/node_modules/tslib/tslib.es6.html +1 -0
  646. package/node_modules/tslib/tslib.es6.js +374 -0
  647. package/node_modules/tslib/tslib.es6.mjs +373 -0
  648. package/node_modules/tslib/tslib.html +1 -0
  649. package/node_modules/tslib/tslib.js +424 -0
  650. package/node_modules/upper-case/README.md +34 -0
  651. package/node_modules/upper-case/dist/index.d.ts +8 -0
  652. package/node_modules/upper-case/dist/index.js +49 -0
  653. package/node_modules/upper-case/dist/index.js.map +1 -0
  654. package/node_modules/upper-case/dist/index.spec.d.ts +1 -0
  655. package/node_modules/upper-case/dist/index.spec.js +34 -0
  656. package/node_modules/upper-case/dist/index.spec.js.map +1 -0
  657. package/node_modules/upper-case/dist.es2015/index.d.ts +8 -0
  658. package/node_modules/upper-case/dist.es2015/index.js +44 -0
  659. package/node_modules/upper-case/dist.es2015/index.js.map +1 -0
  660. package/node_modules/upper-case/dist.es2015/index.spec.d.ts +1 -0
  661. package/node_modules/upper-case/dist.es2015/index.spec.js +32 -0
  662. package/node_modules/upper-case/dist.es2015/index.spec.js.map +1 -0
  663. package/node_modules/upper-case/package.json +86 -0
  664. package/node_modules/upper-case-first/LICENSE +21 -0
  665. package/node_modules/upper-case-first/README.md +32 -0
  666. package/node_modules/upper-case-first/dist/index.d.ts +4 -0
  667. package/node_modules/upper-case-first/dist/index.js +11 -0
  668. package/node_modules/upper-case-first/dist/index.js.map +1 -0
  669. package/node_modules/upper-case-first/dist/index.spec.d.ts +1 -0
  670. package/node_modules/upper-case-first/dist/index.spec.js +20 -0
  671. package/node_modules/upper-case-first/dist/index.spec.js.map +1 -0
  672. package/node_modules/upper-case-first/dist.es2015/index.d.ts +4 -0
  673. package/node_modules/upper-case-first/dist.es2015/index.js +7 -0
  674. package/node_modules/upper-case-first/dist.es2015/index.js.map +1 -0
  675. package/node_modules/upper-case-first/dist.es2015/index.spec.d.ts +1 -0
  676. package/node_modules/upper-case-first/dist.es2015/index.spec.js +18 -0
  677. package/node_modules/upper-case-first/dist.es2015/index.spec.js.map +1 -0
  678. package/node_modules/upper-case-first/package.json +87 -0
  679. package/package.json +152 -0
  680. package/setup.js +2 -0
@@ -0,0 +1,84 @@
1
+ import { Construct } from "constructs";
2
+ import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
3
+ import { INetwork, NetworkOutputs } from "./network";
4
+ import { ISubnet } from "./subnet";
5
+ import { ISubnetGroup } from "./subnet-group";
6
+ export declare enum NatGatewayOption {
7
+ SINGLE_NAT_GATEWAY = "single-nat-gateway",
8
+ NAT_PER_AVAILABILITY_ZONE = "nat-per-availability-zone"
9
+ }
10
+ export interface SimpleIPv4Props extends AwsConstructProps {
11
+ /**
12
+ * The number of availability zones to use.
13
+ *
14
+ * @default 2
15
+ */
16
+ readonly azCount?: number;
17
+ /**
18
+ * The IPv4 CIDR block for the VPC.
19
+ */
20
+ readonly ipv4CidrBlock: string;
21
+ /**
22
+ * The NAT Gateway set up.
23
+ *
24
+ * @default NatGatewayOption.NAT_PER_AVAILABILITY_ZONE
25
+ */
26
+ readonly natGatewayOption?: NatGatewayOption;
27
+ /**
28
+ * Provisions a Service Discovery Private DNS Namespace resource.
29
+ */
30
+ readonly internalDomain: string;
31
+ }
32
+ /**
33
+ * Define an AWS Virtual Private Cloud simple IPv4 network.
34
+ *
35
+ * See the package-level documentation of this package for an overview
36
+ * of the various dimensions in which you can configure your VPC.
37
+ *
38
+ * For example:
39
+ *
40
+ * ```ts
41
+ * const network = new network.SimpleIPv4(awsStack, "network", {
42
+ * ipv4CidrBlock: "10.0.0.0/16",
43
+ * internalDomain: "example.local",
44
+ * });
45
+ *
46
+ * // Add a subnet group for RDS
47
+ * network.enableDbSubnetGroup();
48
+ * ```
49
+ *
50
+ * @resource aws_vpc
51
+ * @beacon-class network.SimpleIPv4Vpc
52
+ */
53
+ export declare class SimpleIPv4Vpc extends AwsConstructBase implements INetwork {
54
+ private readonly _props;
55
+ private readonly _outputs;
56
+ get networkOutputs(): NetworkOutputs;
57
+ get outputs(): Record<string, any>;
58
+ private readonly ipv4CidrBlock;
59
+ private readonly natGatewayOption;
60
+ private readonly natGateways;
61
+ private readonly privateRouteTables;
62
+ private readonly azCount;
63
+ private readonly availabilityZones;
64
+ private readonly vpc;
65
+ get vpcId(): string;
66
+ private readonly _publicSubnets;
67
+ get publicSubnets(): ISubnet[];
68
+ private readonly _privateSubnets;
69
+ get privateSubnets(): ISubnet[];
70
+ private readonly _dataSubnets;
71
+ get dataSubnets(): ISubnet[];
72
+ private _dbSubnetGroup?;
73
+ get dbSubnetGroup(): ISubnetGroup | undefined;
74
+ private _elastiCacheSubnetGroup?;
75
+ get elastiCacheSubnetGroup(): ISubnetGroup | undefined;
76
+ private readonly serviceDiscoveryNamespace;
77
+ get serviceDiscoveryNamespaceArn(): string;
78
+ constructor(scope: Construct, id: string, props: SimpleIPv4Props);
79
+ enableDbSubnetGroup(): void;
80
+ enableElastiCacheSubnetGroup(): void;
81
+ private createPublicSubnets;
82
+ private createPrivateSubnets;
83
+ private createDataSubnets;
84
+ }
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SimpleIPv4Vpc = exports.NatGatewayOption = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const cdktf_1 = require("cdktf");
8
+ const aws_construct_1 = require("../aws-construct");
9
+ const subnet_1 = require("./subnet");
10
+ const subnet_group_1 = require("./subnet-group");
11
+ var NatGatewayOption;
12
+ (function (NatGatewayOption) {
13
+ NatGatewayOption["SINGLE_NAT_GATEWAY"] = "single-nat-gateway";
14
+ NatGatewayOption["NAT_PER_AVAILABILITY_ZONE"] = "nat-per-availability-zone";
15
+ })(NatGatewayOption || (exports.NatGatewayOption = NatGatewayOption = {}));
16
+ /**
17
+ * Define an AWS Virtual Private Cloud simple IPv4 network.
18
+ *
19
+ * See the package-level documentation of this package for an overview
20
+ * of the various dimensions in which you can configure your VPC.
21
+ *
22
+ * For example:
23
+ *
24
+ * ```ts
25
+ * const network = new network.SimpleIPv4(awsStack, "network", {
26
+ * ipv4CidrBlock: "10.0.0.0/16",
27
+ * internalDomain: "example.local",
28
+ * });
29
+ *
30
+ * // Add a subnet group for RDS
31
+ * network.enableDbSubnetGroup();
32
+ * ```
33
+ *
34
+ * @resource aws_vpc
35
+ * @beacon-class network.SimpleIPv4Vpc
36
+ */
37
+ class SimpleIPv4Vpc extends aws_construct_1.AwsConstructBase {
38
+ get networkOutputs() {
39
+ return this._outputs;
40
+ }
41
+ get outputs() {
42
+ return this._outputs;
43
+ }
44
+ get vpcId() {
45
+ return this.vpc.id;
46
+ }
47
+ get publicSubnets() {
48
+ return this._publicSubnets;
49
+ }
50
+ get privateSubnets() {
51
+ return this._privateSubnets;
52
+ }
53
+ get dataSubnets() {
54
+ return this._dataSubnets;
55
+ }
56
+ get dbSubnetGroup() {
57
+ return this._dbSubnetGroup;
58
+ }
59
+ get elastiCacheSubnetGroup() {
60
+ return this._elastiCacheSubnetGroup;
61
+ }
62
+ get serviceDiscoveryNamespaceArn() {
63
+ return this.serviceDiscoveryNamespace.arn;
64
+ }
65
+ constructor(scope, id, props) {
66
+ super(scope, id, props);
67
+ this.natGateways = [];
68
+ this.privateRouteTables = [];
69
+ this._publicSubnets = [];
70
+ this._privateSubnets = [];
71
+ this._dataSubnets = [];
72
+ this._props = props;
73
+ this.azCount = this._props.azCount ?? 2;
74
+ if (this.azCount > 4) {
75
+ throw new Error("azCount must be less than or equal to 4");
76
+ }
77
+ this.availabilityZones = this.stack.availabilityZones(this.azCount);
78
+ this.ipv4CidrBlock = this._props.ipv4CidrBlock;
79
+ this.vpc = new provider_aws_1.vpc.Vpc(this, "Resource", {
80
+ cidrBlock: this.ipv4CidrBlock,
81
+ enableDnsSupport: true,
82
+ enableDnsHostnames: true,
83
+ });
84
+ const igw = new provider_aws_1.internetGateway.InternetGateway(this, "igw", {
85
+ vpcId: this.vpc.id,
86
+ tags: {
87
+ Name: `${this.friendlyName}-igw`,
88
+ },
89
+ });
90
+ // adopt default route table and add tags
91
+ new provider_aws_1.defaultRouteTable.DefaultRouteTable(this, "DefaultRouteTable", {
92
+ defaultRouteTableId: this.vpc.defaultRouteTableId,
93
+ tags: {
94
+ Name: `${this.friendlyName}-default-route-table`,
95
+ },
96
+ route: [
97
+ {
98
+ cidrBlock: "0.0.0.0/0",
99
+ gatewayId: igw.id,
100
+ },
101
+ ],
102
+ });
103
+ this.natGatewayOption =
104
+ this._props.natGatewayOption ??
105
+ NatGatewayOption.NAT_PER_AVAILABILITY_ZONE;
106
+ this.createPublicSubnets(cdktf_1.Fn.cidrsubnet(this.ipv4CidrBlock, 2, 0));
107
+ this.createPrivateSubnets(cdktf_1.Fn.cidrsubnet(this.ipv4CidrBlock, 2, 1));
108
+ this.createDataSubnets(cdktf_1.Fn.cidrsubnet(this.ipv4CidrBlock, 2, 2));
109
+ this.serviceDiscoveryNamespace =
110
+ new provider_aws_1.serviceDiscoveryPrivateDnsNamespace.ServiceDiscoveryPrivateDnsNamespace(this, "ServiceDiscoveryNamespace", {
111
+ name: this._props.internalDomain,
112
+ vpc: this.vpc.id,
113
+ description: `Private DNS namespace for ${this.friendlyName}`,
114
+ tags: {
115
+ Name: `${this.friendlyName}-service-discovery-namespace`,
116
+ },
117
+ });
118
+ this._outputs = {
119
+ vpcId: this.vpc.id,
120
+ publicSubnetIds: this.publicSubnets.map((subnet) => subnet.subnetId),
121
+ privateSubnetIds: this.privateSubnets.map((subnet) => subnet.subnetId),
122
+ dataSubnetIds: this.dataSubnets.map((subnet) => subnet.subnetId),
123
+ // only known at synth time
124
+ // explicit `null` required to avoid syntax errors when using stringValue && "undefined"
125
+ dbSubnetGroup: cdktf_1.Lazy.anyValue({
126
+ produce: () => this.dbSubnetGroup?.gridUUID ?? null,
127
+ }),
128
+ elastiCacheSubnetGroup: cdktf_1.Lazy.anyValue({
129
+ produce: () => this.elastiCacheSubnetGroup?.gridUUID ?? null,
130
+ }),
131
+ serviceDiscoveryNamespaceName: this.serviceDiscoveryNamespace.name,
132
+ };
133
+ }
134
+ enableDbSubnetGroup() {
135
+ if (this._dbSubnetGroup) {
136
+ return;
137
+ }
138
+ this._dbSubnetGroup = new subnet_group_1.DbSubnetGroup(this, "DbSubnetGroup", {
139
+ subnets: this._dataSubnets,
140
+ tags: {
141
+ Name: `${this.friendlyName}-db-default-subnet-group`,
142
+ },
143
+ });
144
+ }
145
+ enableElastiCacheSubnetGroup() {
146
+ if (this._elastiCacheSubnetGroup) {
147
+ return;
148
+ }
149
+ this._elastiCacheSubnetGroup = new subnet_group_1.ElastiCacheSubnetGroup(this, "ElastiCacheSubnetGroup", {
150
+ subnets: this._dataSubnets,
151
+ tags: {
152
+ Name: `${this.friendlyName}-elasticache-default-subnet-group`,
153
+ },
154
+ });
155
+ }
156
+ createPublicSubnets(publicIpv4CidrBlock) {
157
+ for (let i = 0; i < this.azCount; i++) {
158
+ // if SingleNatGateway, only create NAT Gateway for first public subnet
159
+ const createNatGateway = this.natGatewayOption !== NatGatewayOption.SINGLE_NAT_GATEWAY ||
160
+ i === 0;
161
+ const availabilityZone = cdktf_1.Fn.element(this.availabilityZones, i);
162
+ const publicSubnet = new subnet_1.PublicSubnet(this, `PublicSubnet${i}`, {
163
+ vpc: this.vpc,
164
+ availabilityZone,
165
+ ipv4CidrBlock: cdktf_1.Fn.cidrsubnet(publicIpv4CidrBlock, 2, i),
166
+ defaultRouteTableId: this.vpc.defaultRouteTableId,
167
+ tags: {
168
+ Name: `${this.friendlyName}-public-subnet-${availabilityZone}`,
169
+ },
170
+ createNatGateway,
171
+ });
172
+ if (createNatGateway) {
173
+ const gw = publicSubnet.natgateway;
174
+ // create route table per NAT gateway
175
+ this.privateRouteTables.push(new provider_aws_1.routeTable.RouteTable(this, `PrivateRouteTable${i}`, {
176
+ vpcId: this.vpc.id,
177
+ route: [
178
+ {
179
+ cidrBlock: "0.0.0.0/0",
180
+ natGatewayId: gw.id,
181
+ },
182
+ ],
183
+ tags: {
184
+ Name: `${this.friendlyName}-private-route-table-${availabilityZone}`,
185
+ "aws-cdk:subnet-name": "Public",
186
+ "aws-cdk:subnet-type": "Public",
187
+ "kubernetes.io/role/elb": "1",
188
+ },
189
+ }));
190
+ this.natGateways.push(gw);
191
+ }
192
+ this._publicSubnets.push(publicSubnet);
193
+ }
194
+ }
195
+ createPrivateSubnets(privateIpv4CidrBlock) {
196
+ for (let i = 0; i < this.azCount; i++) {
197
+ const availabilityZone = cdktf_1.Fn.element(this.availabilityZones, i);
198
+ const rtbIdx = this.privateRouteTables.length >= this.azCount ? i : 0;
199
+ const privateSubnet = new subnet_1.PrivateSubnet(this, `PrivateSubnet${i}`, {
200
+ vpc: this.vpc,
201
+ availabilityZone,
202
+ ipv4CidrBlock: cdktf_1.Fn.cidrsubnet(privateIpv4CidrBlock, 2, i),
203
+ routeTable: this.privateRouteTables[rtbIdx],
204
+ tags: {
205
+ Name: `${this.friendlyName}-private-subnet-${availabilityZone}`,
206
+ "aws-cdk:subnet-name": "Private",
207
+ "aws-cdk:subnet-type": "Private",
208
+ "kubernetes.io/role/internal-elb": "1",
209
+ },
210
+ });
211
+ this._privateSubnets.push(privateSubnet);
212
+ }
213
+ }
214
+ createDataSubnets(dataIpv4CidrBlock) {
215
+ for (let i = 0; i < this.azCount; i++) {
216
+ const availabilityZone = cdktf_1.Fn.element(this.availabilityZones, i);
217
+ const rtbIdx = this.privateRouteTables.length >= this.azCount ? i : 0;
218
+ const dataSubnet = new subnet_1.DataSubnet(this, `DataSubnet${i}`, {
219
+ vpc: this.vpc,
220
+ availabilityZone,
221
+ ipv4CidrBlock: cdktf_1.Fn.cidrsubnet(dataIpv4CidrBlock, 2, i),
222
+ routeTable: this.privateRouteTables[rtbIdx],
223
+ tags: {
224
+ Name: `${this.friendlyName}-data-subnet-${availabilityZone}`,
225
+ "aws-cdk:subnet-name": "Data",
226
+ "aws-cdk:subnet-type": "Isolated",
227
+ },
228
+ });
229
+ this._dataSubnets.push(dataSubnet);
230
+ }
231
+ }
232
+ }
233
+ exports.SimpleIPv4Vpc = SimpleIPv4Vpc;
234
+ _a = JSII_RTTI_SYMBOL_1;
235
+ SimpleIPv4Vpc[_a] = { fqn: "terraconstructs.aws.network.SimpleIPv4Vpc", version: "0.0.8" };
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWlwdjQtdnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9uZXR3b3JrL3NpbXBsZS1pcHY0LXZwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQU82QjtBQUM3QixpQ0FBaUM7QUFFakMsb0RBQXVFO0FBRXZFLHFDQUE0RTtBQUM1RSxpREFJd0I7QUFFeEIsSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLDZEQUF5QyxDQUFBO0lBQ3pDLDJFQUF1RCxDQUFBO0FBQ3pELENBQUMsRUFIVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUczQjtBQXlCRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFhLGFBQWMsU0FBUSxnQ0FBZ0I7SUFHakQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBUUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBR0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQUdELElBQVcsNEJBQTRCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdB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R0FBRyxJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixnQkFBZ0I7Z0JBQ2hCLGFBQWEsRUFBRSxVQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JELFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO2dCQUMzQyxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksZ0JBQWdCLGdCQUFnQixFQUFFO29CQUM1RCxxQkFBcUIsRUFBRSxNQUFNO29CQUM3QixxQkFBcUIsRUFBRSxVQUFVO2lCQUNsQzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDOztBQXhPSCxzQ0F5T0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB2cGMsXG4gIG5hdEdhdGV3YXksXG4gIHJvdXRlVGFibGUsXG4gIGludGVybmV0R2F0ZXdheSxcbiAgZGVmYXVsdFJvdXRlVGFibGUsXG4gIHNlcnZpY2VEaXNjb3ZlcnlQcml2YXRlRG5zTmFtZXNwYWNlLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgRm4sIExhenkgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RCYXNlLCBBd3NDb25zdHJ1Y3RQcm9wcyB9IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBJTmV0d29yaywgTmV0d29ya091dHB1dHMgfSBmcm9tIFwiLi9uZXR3b3JrXCI7XG5pbXBvcnQgeyBQdWJsaWNTdWJuZXQsIFByaXZhdGVTdWJuZXQsIERhdGFTdWJuZXQsIElTdWJuZXQgfSBmcm9tIFwiLi9zdWJuZXRcIjtcbmltcG9ydCB7XG4gIElTdWJuZXRHcm91cCxcbiAgRGJTdWJuZXRHcm91cCxcbiAgRWxhc3RpQ2FjaGVTdWJuZXRHcm91cCxcbn0gZnJvbSBcIi4vc3VibmV0LWdyb3VwXCI7XG5cbmV4cG9ydCBlbnVtIE5hdEdhdGV3YXlPcHRpb24ge1xuICBTSU5HTEVfTkFUX0dBVEVXQVkgPSBcInNpbmdsZS1uYXQtZ2F0ZXdheVwiLFxuICBOQVRfUEVSX0FWQUlMQUJJTElUWV9aT05FID0gXCJuYXQtcGVyLWF2YWlsYWJpbGl0eS16b25lXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSVB2NFByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBhdmFpbGFiaWxpdHkgem9uZXMgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSBhekNvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIElQdjQgQ0lEUiBibG9jayBmb3IgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBOQVQgR2F0ZXdheSBzZXQgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5hdEdhdGV3YXlPcHRpb24uTkFUX1BFUl9BVkFJTEFCSUxJVFlfWk9ORVxuICAgKi9cbiAgcmVhZG9ubHkgbmF0R2F0ZXdheU9wdGlvbj86IE5hdEdhdGV3YXlPcHRpb247XG4gIC8qKlxuICAgKiBQcm92aXNpb25zIGEgU2VydmljZSBEaXNjb3ZlcnkgUHJpdmF0ZSBETlMgTmFtZXNwYWNlIHJlc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJuYWxEb21haW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmUgYW4gQVdTIFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCBzaW1wbGUgSVB2NCBuZXR3b3JrLlxuICpcbiAqIFNlZSB0aGUgcGFja2FnZS1sZXZlbCBkb2N1bWVudGF0aW9uIG9mIHRoaXMgcGFja2FnZSBmb3IgYW4gb3ZlcnZpZXdcbiAqIG9mIHRoZSB2YXJpb3VzIGRpbWVuc2lvbnMgaW4gd2hpY2ggeW91IGNhbiBjb25maWd1cmUgeW91ciBWUEMuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG5ldHdvcmsgPSBuZXcgbmV0d29yay5TaW1wbGVJUHY0KGF3c1N0YWNrLCBcIm5ldHdvcmtcIiwge1xuICogIGlwdjRDaWRyQmxvY2s6IFwiMTAuMC4wLjAvMTZcIixcbiAqICBpbnRlcm5hbERvbWFpbjogXCJleGFtcGxlLmxvY2FsXCIsXG4gKiB9KTtcbiAqXG4gKiAvLyBBZGQgYSBzdWJuZXQgZ3JvdXAgZm9yIFJEU1xuICogbmV0d29yay5lbmFibGVEYlN1Ym5ldEdyb3VwKCk7XG4gKiBgYGBcbiAqXG4gKiBAcmVzb3VyY2UgYXdzX3ZwY1xuICogQGJlYWNvbi1jbGFzcyBuZXR3b3JrLlNpbXBsZUlQdjRWcGNcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUlQdjRWcGMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSU5ldHdvcmsge1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wczogU2ltcGxlSVB2NFByb3BzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBOZXR3b3JrT3V0cHV0cztcbiAgcHVibGljIGdldCBuZXR3b3JrT3V0cHV0cygpOiBOZXR3b3JrT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXRzO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG5hdEdhdGV3YXlPcHRpb246IE5hdEdhdGV3YXlPcHRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgbmF0R2F0ZXdheXM6IG5hdEdhdGV3YXkuTmF0R2F0ZXdheVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJpdmF0ZVJvdXRlVGFibGVzOiByb3V0ZVRhYmxlLlJvdXRlVGFibGVbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGF6Q291bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107IC8vIFRva2VuIGFzIFN0cmluZ0xpc3RcbiAgcHJpdmF0ZSByZWFkb25seSB2cGM6IHZwYy5WcGM7XG4gIHB1YmxpYyBnZXQgdnBjSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy52cGMuaWQ7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfcHVibGljU3VibmV0czogUHVibGljU3VibmV0W10gPSBbXTtcbiAgcHVibGljIGdldCBwdWJsaWNTdWJuZXRzKCk6IElTdWJuZXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3B1YmxpY1N1Ym5ldHM7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfcHJpdmF0ZVN1Ym5ldHM6IFByaXZhdGVTdWJuZXRbXSA9IFtdO1xuICBwdWJsaWMgZ2V0IHByaXZhdGVTdWJuZXRzKCk6IElTdWJuZXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByaXZhdGVTdWJuZXRzO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFTdWJuZXRzOiBEYXRhU3VibmV0W10gPSBbXTtcbiAgcHVibGljIGdldCBkYXRhU3VibmV0cygpOiBJU3VibmV0W10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU3VibmV0cztcbiAgfVxuXG4gIHByaXZhdGUgX2RiU3VibmV0R3JvdXA/OiBJU3VibmV0R3JvdXA7XG4gIHB1YmxpYyBnZXQgZGJTdWJuZXRHcm91cCgpOiBJU3VibmV0R3JvdXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYlN1Ym5ldEdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWxhc3RpQ2FjaGVTdWJuZXRHcm91cD86IElTdWJuZXRHcm91cDtcbiAgcHVibGljIGdldCBlbGFzdGlDYWNoZVN1Ym5ldEdyb3VwKCk6IElTdWJuZXRHcm91cCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsYXN0aUNhY2hlU3VibmV0R3JvdXA7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VEaXNjb3ZlcnlOYW1lc3BhY2U6IHNlcnZpY2VEaXNjb3ZlcnlQcml2YXRlRG5zTmFtZXNwYWNlLlNlcnZpY2VEaXNjb3ZlcnlQcml2YXRlRG5zTmFtZXNwYWNlO1xuICBwdWJsaWMgZ2V0IHNlcnZpY2VEaXNjb3ZlcnlOYW1lc3BhY2VBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlRGlzY292ZXJ5TmFtZXNwYWNlLmFybjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTaW1wbGVJUHY0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLl9wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuYXpDb3VudCA9IHRoaXMuX3Byb3BzLmF6Q291bnQgPz8gMjtcbiAgICBpZiAodGhpcy5hekNvdW50ID4gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXpDb3VudCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA0XCIpO1xuICAgIH1cblxuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMgPSB0aGlzLnN0YWNrLmF2YWlsYWJpbGl0eVpvbmVzKHRoaXMuYXpDb3VudCk7XG4gICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gdGhpcy5fcHJvcHMuaXB2NENpZHJCbG9jaztcbiAgICB0aGlzLnZwYyA9IG5ldyB2cGMuVnBjKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgY2lkckJsb2NrOiB0aGlzLmlwdjRDaWRyQmxvY2ssXG4gICAgICBlbmFibGVEbnNTdXBwb3J0OiB0cnVlLFxuICAgICAgZW5hYmxlRG5zSG9zdG5hbWVzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaWd3ID0gbmV3IGludGVybmV0R2F0ZXdheS5JbnRlcm5ldEdhdGV3YXkodGhpcywgXCJpZ3dcIiwge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjLmlkLFxuICAgICAgdGFnczoge1xuICAgICAgICBOYW1lOiBgJHt0aGlzLmZyaWVuZGx5TmFtZX0taWd3YCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBhZG9wdCBkZWZhdWx0IHJvdXRlIHRhYmxlIGFuZCBhZGQgdGFnc1xuICAgIG5ldyBkZWZhdWx0Um91dGVUYWJsZS5EZWZhdWx0Um91dGVUYWJsZSh0aGlzLCBcIkRlZmF1bHRSb3V0ZVRhYmxlXCIsIHtcbiAgICAgIGRlZmF1bHRSb3V0ZVRhYmxlSWQ6IHRoaXMudnBjLmRlZmF1bHRSb3V0ZVRhYmxlSWQsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIE5hbWU6IGAke3RoaXMuZnJpZW5kbHlOYW1lfS1kZWZhdWx0LXJvdXRlLXRhYmxlYCxcbiAgICAgIH0sXG4gICAgICByb3V0ZTogW1xuICAgICAgICB7XG4gICAgICAgICAgY2lkckJsb2NrOiBcIjAuMC4wLjAvMFwiLFxuICAgICAgICAgIGdhdGV3YXlJZDogaWd3LmlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMubmF0R2F0ZXdheU9wdGlvbiA9XG4gICAgICB0aGlzLl9wcm9wcy5uYXRHYXRld2F5T3B0aW9uID8/XG4gICAgICBOYXRHYXRld2F5T3B0aW9uLk5BVF9QRVJfQVZBSUxBQklMSVRZX1pPTkU7XG5cbiAgICB0aGlzLmNyZWF0ZVB1YmxpY1N1Ym5ldHMoRm4uY2lkcnN1Ym5ldCh0aGlzLmlwdjRDaWRyQmxvY2ssIDIsIDApKTtcbiAgICB0aGlzLmNyZWF0ZVByaXZhdGVTdWJuZXRzKEZuLmNpZHJzdWJuZXQodGhpcy5pcHY0Q2lkckJsb2NrLCAyLCAxKSk7XG4gICAgdGhpcy5jcmVhdGVEYXRhU3VibmV0cyhGbi5jaWRyc3VibmV0KHRoaXMuaXB2NENpZHJCbG9jaywgMiwgMikpO1xuXG4gICAgdGhpcy5zZXJ2aWNlRGlzY292ZXJ5TmFtZXNwYWNlID1cbiAgICAgIG5ldyBzZXJ2aWNlRGlzY292ZXJ5UHJpdmF0ZURuc05hbWVzcGFjZS5TZXJ2aWNlRGlzY292ZXJ5UHJpdmF0ZURuc05hbWVzcGFjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJTZXJ2aWNlRGlzY292ZXJ5TmFtZXNwYWNlXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiB0aGlzLl9wcm9wcy5pbnRlcm5hbERvbWFpbixcbiAgICAgICAgICB2cGM6IHRoaXMudnBjLmlkLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgUHJpdmF0ZSBETlMgbmFtZXNwYWNlIGZvciAke3RoaXMuZnJpZW5kbHlOYW1lfWAsXG4gICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgTmFtZTogYCR7dGhpcy5mcmllbmRseU5hbWV9LXNlcnZpY2UtZGlzY292ZXJ5LW5hbWVzcGFjZWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICB0aGlzLl9vdXRwdXRzID0ge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjLmlkLFxuICAgICAgcHVibGljU3VibmV0SWRzOiB0aGlzLnB1YmxpY1N1Ym5ldHMubWFwKChzdWJuZXQpID0+IHN1Ym5ldC5zdWJuZXRJZCksXG4gICAgICBwcml2YXRlU3VibmV0SWRzOiB0aGlzLnByaXZhdGVTdWJuZXRzLm1hcCgoc3VibmV0KSA9PiBzdWJuZXQuc3VibmV0SWQpLFxuICAgICAgZGF0YVN1Ym5ldElkczogdGhpcy5kYXRhU3VibmV0cy5tYXAoKHN1Ym5ldCkgPT4gc3VibmV0LnN1Ym5ldElkKSxcbiAgICAgIC8vIG9ubHkga25vd24gYXQgc3ludGggdGltZVxuICAgICAgLy8gZXhwbGljaXQgYG51bGxgIHJlcXVpcmVkIHRvIGF2b2lkIHN5bnRheCBlcnJvcnMgd2hlbiB1c2luZyBzdHJpbmdWYWx1ZSAmJiBcInVuZGVmaW5lZFwiXG4gICAgICBkYlN1Ym5ldEdyb3VwOiBMYXp5LmFueVZhbHVlKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5kYlN1Ym5ldEdyb3VwPy5ncmlkVVVJRCA/PyBudWxsLFxuICAgICAgfSksXG4gICAgICBlbGFzdGlDYWNoZVN1Ym5ldEdyb3VwOiBMYXp5LmFueVZhbHVlKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5lbGFzdGlDYWNoZVN1Ym5ldEdyb3VwPy5ncmlkVVVJRCA/PyBudWxsLFxuICAgICAgfSksXG4gICAgICBzZXJ2aWNlRGlzY292ZXJ5TmFtZXNwYWNlTmFtZTogdGhpcy5zZXJ2aWNlRGlzY292ZXJ5TmFtZXNwYWNlLm5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVEYlN1Ym5ldEdyb3VwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kYlN1Ym5ldEdyb3VwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2RiU3VibmV0R3JvdXAgPSBuZXcgRGJTdWJuZXRHcm91cCh0aGlzLCBcIkRiU3VibmV0R3JvdXBcIiwge1xuICAgICAgc3VibmV0czogdGhpcy5fZGF0YVN1Ym5ldHMsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIE5hbWU6IGAke3RoaXMuZnJpZW5kbHlOYW1lfS1kYi1kZWZhdWx0LXN1Ym5ldC1ncm91cGAsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZUVsYXN0aUNhY2hlU3VibmV0R3JvdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2VsYXN0aUNhY2hlU3VibmV0R3JvdXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZWxhc3RpQ2FjaGVTdWJuZXRHcm91cCA9IG5ldyBFbGFzdGlDYWNoZVN1Ym5ldEdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRWxhc3RpQ2FjaGVTdWJuZXRHcm91cFwiLFxuICAgICAge1xuICAgICAgICBzdWJuZXRzOiB0aGlzLl9kYXRhU3VibmV0cyxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIE5hbWU6IGAke3RoaXMuZnJpZW5kbHlOYW1lfS1lbGFzdGljYWNoZS1kZWZhdWx0LXN1Ym5ldC1ncm91cGAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVB1YmxpY1N1Ym5ldHMocHVibGljSXB2NENpZHJCbG9jazogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmF6Q291bnQ7IGkrKykge1xuICAgICAgLy8gaWYgU2luZ2xlTmF0R2F0ZXdheSwgb25seSBjcmVhdGUgTkFUIEdhdGV3YXkgZm9yIGZpcnN0IHB1YmxpYyBzdWJuZXRcbiAgICAgIGNvbnN0IGNyZWF0ZU5hdEdhdGV3YXkgPVxuICAgICAgICB0aGlzLm5hdEdhdGV3YXlPcHRpb24gIT09IE5hdEdhdGV3YXlPcHRpb24uU0lOR0xFX05BVF9HQVRFV0FZIHx8XG4gICAgICAgIGkgPT09IDA7XG4gICAgICBjb25zdCBhdmFpbGFiaWxpdHlab25lID0gRm4uZWxlbWVudCh0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLCBpKTtcbiAgICAgIGNvbnN0IHB1YmxpY1N1Ym5ldCA9IG5ldyBQdWJsaWNTdWJuZXQodGhpcywgYFB1YmxpY1N1Ym5ldCR7aX1gLCB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIGlwdjRDaWRyQmxvY2s6IEZuLmNpZHJzdWJuZXQocHVibGljSXB2NENpZHJCbG9jaywgMiwgaSksXG4gICAgICAgIGRlZmF1bHRSb3V0ZVRhYmxlSWQ6IHRoaXMudnBjLmRlZmF1bHRSb3V0ZVRhYmxlSWQsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBOYW1lOiBgJHt0aGlzLmZyaWVuZGx5TmFtZX0tcHVibGljLXN1Ym5ldC0ke2F2YWlsYWJpbGl0eVpvbmV9YCxcbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlTmF0R2F0ZXdheSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY3JlYXRlTmF0R2F0ZXdheSkge1xuICAgICAgICBjb25zdCBndyA9IHB1YmxpY1N1Ym5ldC5uYXRnYXRld2F5ITtcbiAgICAgICAgLy8gY3JlYXRlIHJvdXRlIHRhYmxlIHBlciBOQVQgZ2F0ZXdheVxuICAgICAgICB0aGlzLnByaXZhdGVSb3V0ZVRhYmxlcy5wdXNoKFxuICAgICAgICAgIG5ldyByb3V0ZVRhYmxlLlJvdXRlVGFibGUodGhpcywgYFByaXZhdGVSb3V0ZVRhYmxlJHtpfWAsIHtcbiAgICAgICAgICAgIHZwY0lkOiB0aGlzLnZwYy5pZCxcbiAgICAgICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjaWRyQmxvY2s6IFwiMC4wLjAuMC8wXCIsXG4gICAgICAgICAgICAgICAgbmF0R2F0ZXdheUlkOiBndy5pZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgIE5hbWU6IGAke3RoaXMuZnJpZW5kbHlOYW1lfS1wcml2YXRlLXJvdXRlLXRhYmxlLSR7YXZhaWxhYmlsaXR5Wm9uZX1gLFxuICAgICAgICAgICAgICBcImF3cy1jZGs6c3VibmV0LW5hbWVcIjogXCJQdWJsaWNcIixcbiAgICAgICAgICAgICAgXCJhd3MtY2RrOnN1Ym5ldC10eXBlXCI6IFwiUHVibGljXCIsXG4gICAgICAgICAgICAgIFwia3ViZXJuZXRlcy5pby9yb2xlL2VsYlwiOiBcIjFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubmF0R2F0ZXdheXMucHVzaChndyk7XG4gICAgICB9XG4gICAgICB0aGlzLl9wdWJsaWNTdWJuZXRzLnB1c2gocHVibGljU3VibmV0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVByaXZhdGVTdWJuZXRzKHByaXZhdGVJcHY0Q2lkckJsb2NrOiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXpDb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBhdmFpbGFiaWxpdHlab25lID0gRm4uZWxlbWVudCh0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLCBpKTtcbiAgICAgIGNvbnN0IHJ0YklkeCA9IHRoaXMucHJpdmF0ZVJvdXRlVGFibGVzLmxlbmd0aCA+PSB0aGlzLmF6Q291bnQgPyBpIDogMDtcbiAgICAgIGNvbnN0IHByaXZhdGVTdWJuZXQgPSBuZXcgUHJpdmF0ZVN1Ym5ldCh0aGlzLCBgUHJpdmF0ZVN1Ym5ldCR7aX1gLCB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIGlwdjRDaWRyQmxvY2s6IEZuLmNpZHJzdWJuZXQocHJpdmF0ZUlwdjRDaWRyQmxvY2ssIDIsIGkpLFxuICAgICAgICByb3V0ZVRhYmxlOiB0aGlzLnByaXZhdGVSb3V0ZVRhYmxlc1tydGJJZHhdLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgTmFtZTogYCR7dGhpcy5mcmllbmRseU5hbWV9LXByaXZhdGUtc3VibmV0LSR7YXZhaWxhYmlsaXR5Wm9uZX1gLFxuICAgICAgICAgIFwiYXdzLWNkazpzdWJuZXQtbmFtZVwiOiBcIlByaXZhdGVcIixcbiAgICAgICAgICBcImF3cy1jZGs6c3VibmV0LXR5cGVcIjogXCJQcml2YXRlXCIsXG4gICAgICAgICAgXCJrdWJlcm5ldGVzLmlvL3JvbGUvaW50ZXJuYWwtZWxiXCI6IFwiMVwiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9wcml2YXRlU3VibmV0cy5wdXNoKHByaXZhdGVTdWJuZXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGF0YVN1Ym5ldHMoZGF0YUlwdjRDaWRyQmxvY2s6IHN0cmluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hekNvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IGF2YWlsYWJpbGl0eVpvbmUgPSBGbi5lbGVtZW50KHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMsIGkpO1xuICAgICAgY29uc3QgcnRiSWR4ID0gdGhpcy5wcml2YXRlUm91dGVUYWJsZXMubGVuZ3RoID49IHRoaXMuYXpDb3VudCA/IGkgOiAwO1xuICAgICAgY29uc3QgZGF0YVN1Ym5ldCA9IG5ldyBEYXRhU3VibmV0KHRoaXMsIGBEYXRhU3VibmV0JHtpfWAsIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgaXB2NENpZHJCbG9jazogRm4uY2lkcnN1Ym5ldChkYXRhSXB2NENpZHJCbG9jaywgMiwgaSksXG4gICAgICAgIHJvdXRlVGFibGU6IHRoaXMucHJpdmF0ZVJvdXRlVGFibGVzW3J0YklkeF0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBOYW1lOiBgJHt0aGlzLmZyaWVuZGx5TmFtZX0tZGF0YS1zdWJuZXQtJHthdmFpbGFiaWxpdHlab25lfWAsXG4gICAgICAgICAgXCJhd3MtY2RrOnN1Ym5ldC1uYW1lXCI6IFwiRGF0YVwiLFxuICAgICAgICAgIFwiYXdzLWNkazpzdWJuZXQtdHlwZVwiOiBcIklzb2xhdGVkXCIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2RhdGFTdWJuZXRzLnB1c2goZGF0YVN1Ym5ldCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { dbSubnetGroup, elasticacheSubnetGroup } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { AwsConstructBase, AwsConstructProps, IAwsConstruct } from "../aws-construct";
4
+ import { ISubnet } from "./subnet";
5
+ export declare enum SubnetGroupType {
6
+ /**
7
+ * RDS and DocDb SubnetGroup
8
+ */
9
+ DB = "DB",
10
+ /**
11
+ * ElastiCache SubnetGroup
12
+ */
13
+ ELASTICACHE = "ELASTICACHE"
14
+ }
15
+ export interface SubnetGroupProps extends AwsConstructProps {
16
+ readonly subnets: ISubnet[];
17
+ readonly tags?: Record<string, string>;
18
+ }
19
+ export interface ISubnetGroup extends IAwsConstruct {
20
+ readonly type: SubnetGroupType;
21
+ readonly arn: string;
22
+ readonly subnets: ISubnet[];
23
+ }
24
+ export declare abstract class BaseSubnetGroup extends AwsConstructBase implements ISubnetGroup {
25
+ readonly type: SubnetGroupType;
26
+ readonly tags?: Record<string, string>;
27
+ private readonly _subnets;
28
+ get subnets(): ISubnet[];
29
+ abstract get arn(): string;
30
+ get outputs(): Record<string, any>;
31
+ constructor(scope: Construct, id: string, type: SubnetGroupType, props: SubnetGroupProps);
32
+ }
33
+ export declare class DbSubnetGroup extends BaseSubnetGroup {
34
+ readonly resource: dbSubnetGroup.DbSubnetGroup;
35
+ get arn(): string;
36
+ constructor(scope: Construct, id: string, props: SubnetGroupProps);
37
+ }
38
+ export declare class ElastiCacheSubnetGroup extends BaseSubnetGroup {
39
+ readonly resource: elasticacheSubnetGroup.ElasticacheSubnetGroup;
40
+ get arn(): string;
41
+ constructor(scope: Construct, id: string, props: SubnetGroupProps);
42
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var _a, _b, _c;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ElastiCacheSubnetGroup = exports.DbSubnetGroup = exports.BaseSubnetGroup = exports.SubnetGroupType = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const aws_construct_1 = require("../aws-construct");
8
+ var SubnetGroupType;
9
+ (function (SubnetGroupType) {
10
+ /**
11
+ * RDS and DocDb SubnetGroup
12
+ */
13
+ SubnetGroupType["DB"] = "DB";
14
+ /**
15
+ * ElastiCache SubnetGroup
16
+ */
17
+ SubnetGroupType["ELASTICACHE"] = "ELASTICACHE";
18
+ })(SubnetGroupType || (exports.SubnetGroupType = SubnetGroupType = {}));
19
+ class BaseSubnetGroup extends aws_construct_1.AwsConstructBase {
20
+ get subnets() {
21
+ return this._subnets;
22
+ }
23
+ get outputs() {
24
+ return {
25
+ type: this.type,
26
+ arn: this.arn,
27
+ subnets: this.subnets.map((subnet) => subnet.outputs),
28
+ };
29
+ }
30
+ constructor(scope, id, type, props) {
31
+ super(scope, id, props);
32
+ this.type = type;
33
+ this.tags = props.tags;
34
+ this._subnets = props.subnets;
35
+ }
36
+ }
37
+ exports.BaseSubnetGroup = BaseSubnetGroup;
38
+ _a = JSII_RTTI_SYMBOL_1;
39
+ BaseSubnetGroup[_a] = { fqn: "terraconstructs.aws.network.BaseSubnetGroup", version: "0.0.8" };
40
+ class DbSubnetGroup extends BaseSubnetGroup {
41
+ get arn() {
42
+ return this.resource.arn;
43
+ }
44
+ constructor(scope, id, props) {
45
+ super(scope, id, SubnetGroupType.DB, props);
46
+ this.resource = new provider_aws_1.dbSubnetGroup.DbSubnetGroup(this, "Resource", {
47
+ name: this.gridUUID,
48
+ subnetIds: this.subnets.map((subnet) => subnet.subnetId),
49
+ tags: this.tags,
50
+ });
51
+ }
52
+ }
53
+ exports.DbSubnetGroup = DbSubnetGroup;
54
+ _b = JSII_RTTI_SYMBOL_1;
55
+ DbSubnetGroup[_b] = { fqn: "terraconstructs.aws.network.DbSubnetGroup", version: "0.0.8" };
56
+ class ElastiCacheSubnetGroup extends BaseSubnetGroup {
57
+ get arn() {
58
+ return this.resource.arn;
59
+ }
60
+ constructor(scope, id, props) {
61
+ super(scope, id, SubnetGroupType.ELASTICACHE, props);
62
+ this.resource = new provider_aws_1.elasticacheSubnetGroup.ElasticacheSubnetGroup(this, "Resource", {
63
+ name: this.gridUUID,
64
+ subnetIds: this.subnets.map((subnet) => subnet.subnetId),
65
+ tags: this.tags,
66
+ });
67
+ }
68
+ }
69
+ exports.ElastiCacheSubnetGroup = ElastiCacheSubnetGroup;
70
+ _c = JSII_RTTI_SYMBOL_1;
71
+ ElastiCacheSubnetGroup[_c] = { fqn: "terraconstructs.aws.network.ElastiCacheSubnetGroup", version: "0.0.8" };
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9uZXR3b3JrL3N1Ym5ldC1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQUk2QjtBQUU3QixvREFJMEI7QUFHMUIsSUFBWSxlQVNYO0FBVEQsV0FBWSxlQUFlO0lBQ3pCOztPQUVHO0lBQ0gsNEJBQVMsQ0FBQTtJQUNUOztPQUVHO0lBQ0gsOENBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVRXLGVBQWUsK0JBQWYsZUFBZSxRQVMxQjtBQWFELE1BQXNCLGVBQ3BCLFNBQVEsZ0NBQWdCO0lBT3hCLElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsSUFBcUIsRUFDckIsS0FBdUI7UUFFdkIsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDOztBQTlCSCwwQ0ErQkM7OztBQUVELE1BQWEsYUFBYyxTQUFRLGVBQWU7SUFFaEQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBQ0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw0QkFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDeEQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBWkgsc0NBYUM7OztBQUVELE1BQWEsc0JBQXVCLFNBQVEsZUFBZTtJQUV6RCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFDRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHFDQUFzQixDQUFDLHNCQUFzQixDQUMvRCxJQUFJLEVBQ0osVUFBVSxFQUNWO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUN4RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7QUFoQkgsd0RBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGJTdWJuZXRHcm91cCxcbiAgZWxhc3RpY2FjaGVTdWJuZXRHcm91cCxcbiAgLy8gZG9jZGJTdWJuZXRHcm91cCwgLy8gbm90IG5lZWRlZCwgcmRzIGFuZCBkb2NkYiBzaGFyZSBzdWJuZXQgZ3JvdXBzXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG4gIElBd3NDb25zdHJ1Y3QsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBJU3VibmV0IH0gZnJvbSBcIi4vc3VibmV0XCI7XG5cbmV4cG9ydCBlbnVtIFN1Ym5ldEdyb3VwVHlwZSB7XG4gIC8qKlxuICAgKiBSRFMgYW5kIERvY0RiIFN1Ym5ldEdyb3VwXG4gICAqL1xuICBEQiA9IFwiREJcIixcbiAgLyoqXG4gICAqIEVsYXN0aUNhY2hlIFN1Ym5ldEdyb3VwXG4gICAqL1xuICBFTEFTVElDQUNIRSA9IFwiRUxBU1RJQ0FDSEVcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRHcm91cFByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICByZWFkb25seSBzdWJuZXRzOiBJU3VibmV0W107XG4gIHJlYWRvbmx5IHRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJuZXRHcm91cCBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICByZWFkb25seSB0eXBlOiBTdWJuZXRHcm91cFR5cGU7XG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuICByZWFkb25seSBzdWJuZXRzOiBJU3VibmV0W107XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU3VibmV0R3JvdXBcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSVN1Ym5ldEdyb3VwXG57XG4gIHB1YmxpYyByZWFkb25seSB0eXBlOiBTdWJuZXRHcm91cFR5cGU7XG4gIHB1YmxpYyByZWFkb25seSB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJuZXRzOiBJU3VibmV0W107XG4gIHB1YmxpYyBnZXQgc3VibmV0cygpOiBJU3VibmV0W10ge1xuICAgIHJldHVybiB0aGlzLl9zdWJuZXRzO1xuICB9XG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgYXJuKCk6IHN0cmluZztcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcm46IHRoaXMuYXJuLFxuICAgICAgc3VibmV0czogdGhpcy5zdWJuZXRzLm1hcCgoc3VibmV0KSA9PiBzdWJuZXQub3V0cHV0cyksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB0eXBlOiBTdWJuZXRHcm91cFR5cGUsXG4gICAgcHJvcHM6IFN1Ym5ldEdyb3VwUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy50YWdzID0gcHJvcHMudGFncztcbiAgICB0aGlzLl9zdWJuZXRzID0gcHJvcHMuc3VibmV0cztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGJTdWJuZXRHcm91cCBleHRlbmRzIEJhc2VTdWJuZXRHcm91cCB7XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogZGJTdWJuZXRHcm91cC5EYlN1Ym5ldEdyb3VwO1xuICBwdWJsaWMgZ2V0IGFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmFybjtcbiAgfVxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3VibmV0R3JvdXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgU3VibmV0R3JvdXBUeXBlLkRCLCBwcm9wcyk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBkYlN1Ym5ldEdyb3VwLkRiU3VibmV0R3JvdXAodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiB0aGlzLmdyaWRVVUlELFxuICAgICAgc3VibmV0SWRzOiB0aGlzLnN1Ym5ldHMubWFwKChzdWJuZXQpID0+IHN1Ym5ldC5zdWJuZXRJZCksXG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVsYXN0aUNhY2hlU3VibmV0R3JvdXAgZXh0ZW5kcyBCYXNlU3VibmV0R3JvdXAge1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGVsYXN0aWNhY2hlU3VibmV0R3JvdXAuRWxhc3RpY2FjaGVTdWJuZXRHcm91cDtcbiAgcHVibGljIGdldCBhcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hcm47XG4gIH1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN1Ym5ldEdyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIFN1Ym5ldEdyb3VwVHlwZS5FTEFTVElDQUNIRSwgcHJvcHMpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgZWxhc3RpY2FjaGVTdWJuZXRHcm91cC5FbGFzdGljYWNoZVN1Ym5ldEdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy5ncmlkVVVJRCxcbiAgICAgICAgc3VibmV0SWRzOiB0aGlzLnN1Ym5ldHMubWFwKChzdWJuZXQpID0+IHN1Ym5ldC5zdWJuZXRJZCksXG4gICAgICAgIHRhZ3M6IHRoaXMudGFncyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,95 @@
1
+ import { vpc, subnet, natGateway, routeTable } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { AwsConstructBase, AwsConstructProps, IAwsConstruct } from "../";
4
+ export declare enum SubnetType {
5
+ PUBLIC = "PUBLIC",
6
+ PRIVATE = "PRIVATE",
7
+ DATA = "DATA"
8
+ }
9
+ export interface BaseSubnetProps extends AwsConstructProps {
10
+ /**
11
+ * The VPC to create the subnet into
12
+ */
13
+ readonly vpc: vpc.Vpc;
14
+ /**
15
+ * The IPv4 CIDR block for the subnet.
16
+ */
17
+ readonly ipv4CidrBlock: string;
18
+ /**
19
+ * The availability zone for the subnet.
20
+ */
21
+ readonly availabilityZone: string;
22
+ /**
23
+ * Additional tags for the subnet.
24
+ *
25
+ * @default - No additional tags
26
+ */
27
+ readonly tags?: Record<string, string>;
28
+ }
29
+ export interface ISubnet extends IAwsConstruct {
30
+ /**
31
+ * The VPC ID of the subnet.
32
+ */
33
+ readonly vpcId: string;
34
+ /**
35
+ * The IPv4 CIDR block for the subnet.
36
+ */
37
+ readonly ipv4CidrBlock: string;
38
+ /**
39
+ * The availability zone for the subnet.
40
+ */
41
+ readonly availabilityZone: string;
42
+ /**
43
+ * The subnet ID of the subnet.
44
+ */
45
+ readonly subnetId: string;
46
+ }
47
+ export declare abstract class BaseSubnet extends AwsConstructBase implements ISubnet {
48
+ private readonly type;
49
+ private readonly _availabilityZone;
50
+ get availabilityZone(): string;
51
+ private readonly _subnetId;
52
+ get subnetId(): string;
53
+ protected readonly vpc: vpc.Vpc;
54
+ get vpcId(): string;
55
+ protected readonly cidr: string;
56
+ get ipv4CidrBlock(): string;
57
+ get outputs(): Record<string, any>;
58
+ readonly resource: subnet.Subnet;
59
+ constructor(scope: Construct, id: string, type: SubnetType, props: BaseSubnetProps);
60
+ }
61
+ export interface PublicSubnetProps extends BaseSubnetProps {
62
+ /**
63
+ * Whether to create a NAT gateway in the subnet.
64
+ */
65
+ readonly createNatGateway?: boolean;
66
+ /**
67
+ * The EIP allocation ID to use for the NAT gateway.
68
+ *
69
+ * @default - A new EIP is created
70
+ */
71
+ readonly eipAllocationId?: string;
72
+ /**
73
+ * The Route Table ID to associate with the subnet.
74
+ */
75
+ readonly defaultRouteTableId: string;
76
+ }
77
+ export declare class PublicSubnet extends BaseSubnet {
78
+ private readonly natGateway?;
79
+ private readonly eip?;
80
+ constructor(scope: Construct, id: string, props: PublicSubnetProps);
81
+ get natgateway(): natGateway.NatGateway | undefined;
82
+ }
83
+ export interface PrivateSubnetProps extends BaseSubnetProps {
84
+ readonly routeTable: routeTable.RouteTable;
85
+ }
86
+ export declare class PrivateSubnet extends BaseSubnet {
87
+ private readonly routeTable;
88
+ constructor(scope: Construct, id: string, props: PrivateSubnetProps);
89
+ get routeTableId(): string;
90
+ }
91
+ export declare class DataSubnet extends BaseSubnet {
92
+ private readonly routeTable;
93
+ constructor(scope: Construct, id: string, props: PrivateSubnetProps);
94
+ get routeTableId(): string;
95
+ }