terraconstructs 0.0.11 → 0.0.13

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 (411) hide show
  1. package/.jsii +105205 -35113
  2. package/lib/aws/arn.js +1 -1
  3. package/lib/aws/aws-construct.d.ts +1 -1
  4. package/lib/aws/aws-construct.js +28 -2
  5. package/lib/aws/aws-stack.d.ts +2 -4
  6. package/lib/aws/aws-stack.js +21 -8
  7. package/lib/aws/aws-tags.d.ts +58 -0
  8. package/lib/aws/aws-tags.js +77 -0
  9. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  10. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  11. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  12. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  13. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  14. package/lib/aws/cloudwatch/alarm.js +1 -1
  15. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  16. package/lib/aws/cloudwatch/dashboard.js +1 -1
  17. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  18. package/lib/aws/cloudwatch/graph.js +8 -8
  19. package/lib/aws/cloudwatch/layout.js +3 -3
  20. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  21. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  22. package/lib/aws/cloudwatch/log-group.js +1 -1
  23. package/lib/aws/cloudwatch/log-query.js +1 -1
  24. package/lib/aws/cloudwatch/log-stream.js +1 -1
  25. package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
  26. package/lib/aws/cloudwatch/metric-filter.js +4 -4
  27. package/lib/aws/cloudwatch/metric.js +2 -2
  28. package/lib/aws/cloudwatch/pattern.js +3 -3
  29. package/lib/aws/cloudwatch/policy.js +1 -1
  30. package/lib/aws/cloudwatch/private/env-tokens.js +5 -6
  31. package/lib/aws/cloudwatch/private/metric-util.js +4 -5
  32. package/lib/aws/cloudwatch/private/object.js +2 -3
  33. package/lib/aws/cloudwatch/private/rendering.js +3 -3
  34. package/lib/aws/cloudwatch/private/statistic.js +6 -7
  35. package/lib/aws/cloudwatch/query-definition.js +2 -2
  36. package/lib/aws/cloudwatch/stats.js +1 -1
  37. package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
  38. package/lib/aws/cloudwatch/subscription-filter.js +4 -4
  39. package/lib/aws/cloudwatch/text.js +1 -1
  40. package/lib/aws/cloudwatch/variable.js +3 -3
  41. package/lib/aws/cloudwatch/widget.d.ts +1 -1
  42. package/lib/aws/cloudwatch/widget.js +4 -4
  43. package/lib/aws/compute/activity.js +3 -2
  44. package/lib/aws/compute/alb/application-listener-action.d.ts +334 -0
  45. package/lib/aws/compute/alb/application-listener-action.js +281 -0
  46. package/lib/aws/compute/alb/application-listener-certificate.d.ts +35 -0
  47. package/lib/aws/compute/alb/application-listener-certificate.js +35 -0
  48. package/lib/aws/compute/alb/application-listener-rule.d.ts +233 -0
  49. package/lib/aws/compute/alb/application-listener-rule.js +220 -0
  50. package/lib/aws/compute/alb/application-listener.d.ts +574 -0
  51. package/lib/aws/compute/alb/application-listener.js +538 -0
  52. package/lib/aws/compute/alb/application-load-balancer.d.ts +715 -0
  53. package/lib/aws/compute/alb/application-load-balancer.js +780 -0
  54. package/lib/aws/compute/alb/application-target-group.d.ts +339 -0
  55. package/lib/aws/compute/alb/application-target-group.js +427 -0
  56. package/lib/aws/compute/alb/conditions.d.ts +61 -0
  57. package/lib/aws/compute/alb/conditions.js +164 -0
  58. package/lib/aws/compute/alb/trust-store-revocation.d.ts +59 -0
  59. package/lib/aws/compute/alb/trust-store-revocation.js +46 -0
  60. package/lib/aws/compute/alb/trust-store.d.ts +86 -0
  61. package/lib/aws/compute/alb/trust-store.js +79 -0
  62. package/lib/aws/compute/architecture.js +1 -1
  63. package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +75 -0
  64. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +106 -0
  65. package/lib/aws/compute/bastion-host.d.ts +172 -0
  66. package/lib/aws/compute/bastion-host.js +114 -0
  67. package/lib/aws/compute/chain.js +1 -1
  68. package/lib/aws/compute/cidr-splits.d.ts +49 -0
  69. package/lib/aws/compute/cidr-splits.js +59 -0
  70. package/lib/aws/compute/client-vpn-authorization-rule.d.ts +43 -0
  71. package/lib/aws/compute/client-vpn-authorization-rule.js +30 -0
  72. package/lib/aws/compute/client-vpn-endpoint-types.d.ts +62 -0
  73. package/lib/aws/compute/client-vpn-endpoint-types.js +25 -0
  74. package/lib/aws/compute/client-vpn-endpoint.d.ts +239 -0
  75. package/lib/aws/compute/client-vpn-endpoint.js +259 -0
  76. package/lib/aws/compute/client-vpn-route.d.ts +67 -0
  77. package/lib/aws/compute/client-vpn-route.js +57 -0
  78. package/lib/aws/compute/condition.js +1 -1
  79. package/lib/aws/compute/connections.d.ts +137 -0
  80. package/lib/aws/compute/connections.js +208 -0
  81. package/lib/aws/compute/ec2-augmentations.generated.d.ts +53 -0
  82. package/lib/aws/compute/ec2-augmentations.generated.js +35 -0
  83. package/lib/aws/compute/ec2-canned-metrics.generated.d.ts +555 -0
  84. package/lib/aws/compute/ec2-canned-metrics.generated.js +681 -0
  85. package/lib/aws/compute/ec2-util-v2.d.ts +141 -0
  86. package/lib/aws/compute/ec2-util-v2.js +286 -0
  87. package/lib/aws/compute/ec2-util.d.ts +52 -0
  88. package/lib/aws/compute/ec2-util.js +138 -0
  89. package/lib/aws/compute/elasticloadbalancing-canned-metrics.generated.d.ts +176 -0
  90. package/lib/aws/compute/elasticloadbalancing-canned-metrics.generated.js +119 -0
  91. package/lib/aws/compute/elasticloadbalancingv2-canned-metrics.generated.d.ts +860 -0
  92. package/lib/aws/compute/elasticloadbalancingv2-canned-metrics.generated.js +597 -0
  93. package/lib/aws/compute/event-invoke-config.js +1 -1
  94. package/lib/aws/compute/event-source-filter.js +2 -2
  95. package/lib/aws/compute/event-source-mapping.js +1 -1
  96. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  97. package/lib/aws/compute/event-sources/s3.js +1 -1
  98. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  99. package/lib/aws/compute/event-sources/sqs.js +1 -1
  100. package/lib/aws/compute/fields.js +4 -4
  101. package/lib/aws/compute/function-alias.js +1 -1
  102. package/lib/aws/compute/function-base.js +2 -2
  103. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  104. package/lib/aws/compute/function-destinations/function.js +1 -1
  105. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  106. package/lib/aws/compute/function-nodejs.js +1 -1
  107. package/lib/aws/compute/function-url.js +1 -1
  108. package/lib/aws/compute/function-vpc-config.generated.d.ts +3 -3
  109. package/lib/aws/compute/function-vpc-config.generated.js +1 -1
  110. package/lib/aws/compute/function.d.ts +1 -1
  111. package/lib/aws/compute/function.js +5 -5
  112. package/lib/aws/compute/index-alpha.d.ts +5 -0
  113. package/lib/aws/compute/index-alpha.js +22 -0
  114. package/lib/aws/compute/index.d.ts +60 -0
  115. package/lib/aws/compute/index.js +70 -2
  116. package/lib/aws/compute/instance-types.d.ts +1354 -0
  117. package/lib/aws/compute/instance-types.js +1683 -0
  118. package/lib/aws/compute/instance.d.ts +436 -0
  119. package/lib/aws/compute/instance.js +262 -0
  120. package/lib/aws/compute/ip-addresses.d.ts +249 -0
  121. package/lib/aws/compute/ip-addresses.js +248 -0
  122. package/lib/aws/compute/ipam.d.ts +309 -0
  123. package/lib/aws/compute/ipam.js +306 -0
  124. package/lib/aws/compute/key-pair.d.ts +178 -0
  125. package/lib/aws/compute/key-pair.js +194 -0
  126. package/lib/aws/compute/lambda-augmentations.generated.d.ts +65 -0
  127. package/lib/aws/compute/lambda-augmentations.generated.js +41 -0
  128. package/lib/aws/compute/lambda-canned-metrics.generated.d.ts +316 -0
  129. package/lib/aws/compute/lambda-canned-metrics.generated.js +119 -0
  130. package/lib/aws/compute/launch-template.d.ts +540 -0
  131. package/lib/aws/compute/launch-template.js +468 -0
  132. package/lib/aws/compute/lb-shared/access-logs-accounts.d.ts +7 -0
  133. package/lib/aws/compute/lb-shared/access-logs-accounts.js +46 -0
  134. package/lib/aws/compute/lb-shared/base-listener.d.ts +113 -0
  135. package/lib/aws/compute/lb-shared/base-listener.js +181 -0
  136. package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +212 -0
  137. package/lib/aws/compute/lb-shared/base-load-balancer.js +290 -0
  138. package/lib/aws/compute/lb-shared/base-target-group.d.ts +382 -0
  139. package/lib/aws/compute/lb-shared/base-target-group.js +364 -0
  140. package/lib/aws/compute/lb-shared/enums.d.ts +282 -0
  141. package/lib/aws/compute/lb-shared/enums.js +301 -0
  142. package/lib/aws/compute/lb-shared/grid-lookup-types.d.ts +42 -0
  143. package/lib/aws/compute/lb-shared/grid-lookup-types.js +53 -0
  144. package/lib/aws/compute/lb-shared/imported.d.ts +24 -0
  145. package/lib/aws/compute/lb-shared/imported.js +27 -0
  146. package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +194 -0
  147. package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +3 -0
  148. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +56 -0
  149. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +3 -0
  150. package/lib/aws/compute/lb-shared/listener-action.d.ts +14 -0
  151. package/lib/aws/compute/lb-shared/listener-action.js +4 -0
  152. package/lib/aws/compute/lb-shared/listener-certificate.d.ts +28 -0
  153. package/lib/aws/compute/lb-shared/listener-certificate.js +29 -0
  154. package/lib/aws/compute/lb-shared/load-balancer-targets.d.ts +93 -0
  155. package/lib/aws/compute/lb-shared/load-balancer-targets.js +127 -0
  156. package/lib/aws/compute/lb-shared/util.d.ts +113 -0
  157. package/lib/aws/compute/lb-shared/util.js +264 -0
  158. package/lib/aws/compute/lb-targets/alb-target.d.ts +67 -0
  159. package/lib/aws/compute/lb-targets/alb-target.js +100 -0
  160. package/lib/aws/compute/lb-targets/index.d.ts +4 -0
  161. package/lib/aws/compute/lb-targets/index.js +22 -0
  162. package/lib/aws/compute/lb-targets/instance-target.d.ts +42 -0
  163. package/lib/aws/compute/lb-targets/instance-target.js +67 -0
  164. package/lib/aws/compute/lb-targets/ip-target.d.ts +55 -0
  165. package/lib/aws/compute/lb-targets/ip-target.js +79 -0
  166. package/lib/aws/compute/lb-targets/lambda-target.d.ts +25 -0
  167. package/lib/aws/compute/lb-targets/lambda-target.js +50 -0
  168. package/lib/aws/compute/load-balancer.d.ts +336 -0
  169. package/lib/aws/compute/load-balancer.js +287 -0
  170. package/lib/aws/compute/machine-image/amazon-linux-2022.d.ts +63 -0
  171. package/lib/aws/compute/machine-image/amazon-linux-2022.js +84 -0
  172. package/lib/aws/compute/machine-image/amazon-linux-2023.d.ts +63 -0
  173. package/lib/aws/compute/machine-image/amazon-linux-2023.js +84 -0
  174. package/lib/aws/compute/machine-image/amazon-linux2.d.ts +76 -0
  175. package/lib/aws/compute/machine-image/amazon-linux2.js +87 -0
  176. package/lib/aws/compute/machine-image/common.d.ts +181 -0
  177. package/lib/aws/compute/machine-image/common.js +122 -0
  178. package/lib/aws/compute/machine-image/index.d.ts +5 -0
  179. package/lib/aws/compute/machine-image/index.js +22 -0
  180. package/lib/aws/compute/machine-image/machine-image.d.ts +463 -0
  181. package/lib/aws/compute/machine-image/machine-image.js +566 -0
  182. package/lib/aws/compute/machine-image/utils.d.ts +2 -0
  183. package/lib/aws/compute/machine-image/utils.js +17 -0
  184. package/lib/aws/compute/nat.d.ts +325 -0
  185. package/lib/aws/compute/nat.js +455 -0
  186. package/lib/aws/compute/network-acl-types.d.ts +152 -0
  187. package/lib/aws/compute/network-acl-types.js +156 -0
  188. package/lib/aws/compute/network-acl.d.ts +285 -0
  189. package/lib/aws/compute/network-acl.js +207 -0
  190. package/lib/aws/compute/network-util.d.ts +116 -0
  191. package/lib/aws/compute/network-util.js +241 -0
  192. package/lib/aws/compute/nlb/network-listener-action.d.ts +92 -0
  193. package/lib/aws/compute/nlb/network-listener-action.js +146 -0
  194. package/lib/aws/compute/nlb/network-listener-certificate.d.ts +24 -0
  195. package/lib/aws/compute/nlb/network-listener-certificate.js +25 -0
  196. package/lib/aws/compute/nlb/network-listener.d.ts +248 -0
  197. package/lib/aws/compute/nlb/network-listener.js +217 -0
  198. package/lib/aws/compute/nlb/network-load-balancer.d.ts +315 -0
  199. package/lib/aws/compute/nlb/network-load-balancer.js +360 -0
  200. package/lib/aws/compute/nlb/network-target-group.d.ts +153 -0
  201. package/lib/aws/compute/nlb/network-target-group.js +223 -0
  202. package/lib/aws/compute/peer.d.ts +64 -0
  203. package/lib/aws/compute/peer.js +235 -0
  204. package/lib/aws/compute/placement-group.d.ts +161 -0
  205. package/lib/aws/compute/placement-group.js +133 -0
  206. package/lib/aws/compute/port.d.ts +287 -0
  207. package/lib/aws/compute/port.js +390 -0
  208. package/lib/aws/compute/prefix-list.d.ts +131 -0
  209. package/lib/aws/compute/prefix-list.js +114 -0
  210. package/lib/aws/compute/private/context-stub.d.ts +7 -0
  211. package/lib/aws/compute/private/context-stub.js +43 -0
  212. package/lib/aws/compute/private/ebs-util.d.ts +14 -0
  213. package/lib/aws/compute/private/ebs-util.js +145 -0
  214. package/lib/aws/compute/private/intrinstics.js +2 -1
  215. package/lib/aws/compute/private/json-path.js +8 -8
  216. package/lib/aws/compute/private/util.js +2 -3
  217. package/lib/aws/compute/route.d.ts +547 -0
  218. package/lib/aws/compute/route.js +469 -0
  219. package/lib/aws/compute/security-group.d.ts +414 -0
  220. package/lib/aws/compute/security-group.js +538 -0
  221. package/lib/aws/compute/state-graph.js +1 -1
  222. package/lib/aws/compute/state-machine-fragment.js +1 -1
  223. package/lib/aws/compute/state-machine.d.ts +2 -2
  224. package/lib/aws/compute/state-machine.js +14 -12
  225. package/lib/aws/compute/states/choice.js +1 -1
  226. package/lib/aws/compute/states/custom-state.js +1 -1
  227. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  228. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  229. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  230. package/lib/aws/compute/states/distributed-map.js +1 -1
  231. package/lib/aws/compute/states/fail.js +1 -1
  232. package/lib/aws/compute/states/map-base.js +1 -1
  233. package/lib/aws/compute/states/map.js +1 -1
  234. package/lib/aws/compute/states/parallel.js +1 -1
  235. package/lib/aws/compute/states/pass.js +2 -2
  236. package/lib/aws/compute/states/state.js +5 -5
  237. package/lib/aws/compute/states/succeed.js +1 -1
  238. package/lib/aws/compute/states/task-base.js +2 -2
  239. package/lib/aws/compute/states/task.js +1 -1
  240. package/lib/aws/compute/states/wait.js +2 -2
  241. package/lib/aws/compute/stepfunctions-canned-metrics.generated.d.ts +83 -0
  242. package/lib/aws/compute/stepfunctions-canned-metrics.generated.js +127 -0
  243. package/lib/aws/compute/subnet-v2.d.ts +213 -0
  244. package/lib/aws/compute/subnet-v2.js +405 -0
  245. package/lib/aws/compute/subnet.d.ts +37 -0
  246. package/lib/aws/compute/subnet.js +181 -0
  247. package/lib/aws/compute/task-credentials.js +1 -1
  248. package/lib/aws/compute/task-input.js +1 -1
  249. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  250. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  251. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  252. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  253. package/lib/aws/compute/tasks/private/task-utils.js +3 -4
  254. package/lib/aws/compute/tasks/resource-arn-suffix.js +2 -3
  255. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  256. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  257. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  258. package/lib/aws/compute/types.js +2 -2
  259. package/lib/aws/compute/user-data.d.ts +270 -0
  260. package/lib/aws/compute/user-data.js +487 -0
  261. package/lib/aws/compute/util.d.ts +1 -1
  262. package/lib/aws/compute/util.js +4 -5
  263. package/lib/aws/compute/volume.d.ts +480 -0
  264. package/lib/aws/compute/volume.js +426 -0
  265. package/lib/aws/compute/vpc-endpoint-service.d.ts +149 -0
  266. package/lib/aws/compute/vpc-endpoint-service.js +90 -0
  267. package/lib/aws/compute/vpc-endpoint.d.ts +742 -0
  268. package/lib/aws/compute/vpc-endpoint.js +811 -0
  269. package/lib/aws/compute/vpc-flow-logs.d.ts +551 -0
  270. package/lib/aws/compute/vpc-flow-logs.js +693 -0
  271. package/lib/aws/compute/vpc-lookup.d.ts +73 -0
  272. package/lib/aws/compute/vpc-lookup.js +3 -0
  273. package/lib/aws/compute/vpc-v2-base.d.ts +353 -0
  274. package/lib/aws/compute/vpc-v2-base.js +493 -0
  275. package/lib/aws/compute/vpc-v2.d.ts +385 -0
  276. package/lib/aws/compute/vpc-v2.js +408 -0
  277. package/lib/aws/compute/vpc.d.ts +1448 -0
  278. package/lib/aws/compute/vpc.js +1495 -0
  279. package/lib/aws/compute/vpn.d.ts +443 -0
  280. package/lib/aws/compute/vpn.js +397 -0
  281. package/lib/aws/compute/windows-versions.d.ts +418 -0
  282. package/lib/aws/compute/windows-versions.js +426 -0
  283. package/lib/aws/edge/certificate-base.d.ts +20 -0
  284. package/lib/aws/edge/certificate-base.js +28 -0
  285. package/lib/aws/edge/certificate.d.ts +23 -2
  286. package/lib/aws/edge/certificate.js +54 -4
  287. package/lib/aws/edge/distribution.js +3 -3
  288. package/lib/aws/edge/dns-alias-record-targets.js +2 -2
  289. package/lib/aws/edge/dns-record.js +16 -16
  290. package/lib/aws/edge/dns-zone.d.ts +20 -2
  291. package/lib/aws/edge/dns-zone.js +25 -10
  292. package/lib/aws/edge/function.js +2 -2
  293. package/lib/aws/edge/index.d.ts +1 -0
  294. package/lib/aws/edge/index.js +2 -1
  295. package/lib/aws/edge/key-value-store.js +4 -4
  296. package/lib/aws/edge/origin.js +7 -5
  297. package/lib/aws/edge/response-headers-policy.js +1 -1
  298. package/lib/aws/encryption/alias.js +1 -1
  299. package/lib/aws/encryption/key.js +1 -1
  300. package/lib/aws/encryption/via-service-principal.js +1 -1
  301. package/lib/aws/iam/grant.js +2 -2
  302. package/lib/aws/iam/index.d.ts +1 -0
  303. package/lib/aws/iam/index.js +2 -1
  304. package/lib/aws/iam/instance-profile.d.ts +155 -0
  305. package/lib/aws/iam/instance-profile.js +124 -0
  306. package/lib/aws/iam/managed-policy.js +1 -1
  307. package/lib/aws/iam/oidc-provider.js +1 -1
  308. package/lib/aws/iam/policy-document-config.generated.d.ts +8 -8
  309. package/lib/aws/iam/policy-document-config.generated.js +1 -1
  310. package/lib/aws/iam/policy-document.js +1 -1
  311. package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
  312. package/lib/aws/iam/policy-statement-props.generated.js +1 -1
  313. package/lib/aws/iam/policy-statement.js +9 -9
  314. package/lib/aws/iam/policy.js +1 -1
  315. package/lib/aws/iam/principals.js +26 -26
  316. package/lib/aws/iam/private/assume-role-policy.js +2 -3
  317. package/lib/aws/iam/private/comparable-principal.js +2 -3
  318. package/lib/aws/iam/private/immutable-role.d.ts +2 -1
  319. package/lib/aws/iam/private/immutable-role.js +3 -3
  320. package/lib/aws/iam/private/imported-role.d.ts +1 -1
  321. package/lib/aws/iam/private/imported-role.js +3 -3
  322. package/lib/aws/iam/private/merge-statements.js +2 -3
  323. package/lib/aws/iam/private/util.js +4 -4
  324. package/lib/aws/iam/role.js +1 -1
  325. package/lib/aws/iam/saml-provider.d.ts +1 -1
  326. package/lib/aws/iam/saml-provider.js +6 -6
  327. package/lib/aws/iam/unknown-principal.js +1 -1
  328. package/lib/aws/iam/utils.js +2 -3
  329. package/lib/aws/index.d.ts +1 -0
  330. package/lib/aws/index.js +4 -1
  331. package/lib/aws/network/simple-ipv4-vpc.js +5 -5
  332. package/lib/aws/network/subnet-group.js +3 -3
  333. package/lib/aws/network/subnet.d.ts +1 -1
  334. package/lib/aws/network/subnet.js +7 -7
  335. package/lib/aws/notify/archive.js +3 -2
  336. package/lib/aws/notify/connection.js +5 -4
  337. package/lib/aws/notify/event-bus.js +5 -4
  338. package/lib/aws/notify/event-pattern.d.ts +26 -1
  339. package/lib/aws/notify/event-pattern.js +49 -5
  340. package/lib/aws/notify/index.js +3 -1
  341. package/lib/aws/notify/input.js +4 -3
  342. package/lib/aws/notify/kinesis-stream.js +3 -2
  343. package/lib/aws/notify/on-event-options.js +2 -1
  344. package/lib/aws/notify/queue-config.generated.d.ts +18 -11
  345. package/lib/aws/notify/queue-config.generated.js +1 -1
  346. package/lib/aws/notify/queue-policy.js +1 -1
  347. package/lib/aws/notify/queue.js +1 -1
  348. package/lib/aws/notify/resource-policy.js +1 -1
  349. package/lib/aws/notify/rule.js +3 -2
  350. package/lib/aws/notify/schedule.js +2 -2
  351. package/lib/aws/notify/sqs-augmentations.generated.d.ts +125 -0
  352. package/lib/aws/notify/sqs-augmentations.generated.js +74 -0
  353. package/lib/aws/notify/target.js +2 -1
  354. package/lib/aws/notify/targets/event-bus.js +1 -1
  355. package/lib/aws/notify/targets/function.js +1 -1
  356. package/lib/aws/notify/targets/log-group.js +2 -2
  357. package/lib/aws/notify/targets/sqs.js +1 -1
  358. package/lib/aws/notify/targets/state-machine.js +1 -1
  359. package/lib/aws/notify/targets/util.d.ts +1 -1
  360. package/lib/aws/notify/targets/util.js +10 -11
  361. package/lib/aws/notify/util.js +4 -4
  362. package/lib/aws/provider-config.generated.d.ts +33 -33
  363. package/lib/aws/provider-config.generated.js +1 -1
  364. package/lib/aws/storage/bucket-notifications.js +1 -1
  365. package/lib/aws/storage/bucket-policy.js +1 -1
  366. package/lib/aws/storage/bucket-source.js +1 -1
  367. package/lib/aws/storage/bucket.d.ts +298 -65
  368. package/lib/aws/storage/bucket.js +548 -225
  369. package/lib/aws/storage/cors-config.generated.d.ts +3 -3
  370. package/lib/aws/storage/cors-config.generated.js +1 -1
  371. package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
  372. package/lib/aws/storage/cors-rule-config.generated.js +1 -1
  373. package/lib/aws/storage/index.d.ts +1 -0
  374. package/lib/aws/storage/index.js +2 -1
  375. package/lib/aws/storage/lifecycle-config.generated.d.ts +11 -11
  376. package/lib/aws/storage/lifecycle-config.generated.js +1 -1
  377. package/lib/aws/storage/notification-targets/function.js +6 -6
  378. package/lib/aws/storage/notification-targets/queue.js +1 -1
  379. package/lib/aws/storage/origin-access-identity.d.ts +1 -1
  380. package/lib/aws/storage/origin-access-identity.js +5 -4
  381. package/lib/aws/storage/parameter-util.d.ts +12 -0
  382. package/lib/aws/storage/parameter-util.js +65 -0
  383. package/lib/aws/storage/parameter.d.ts +526 -0
  384. package/lib/aws/storage/parameter.js +606 -0
  385. package/lib/aws/storage/s3-canned-metrics.generated.d.ts +22 -0
  386. package/lib/aws/storage/s3-canned-metrics.generated.js +23 -0
  387. package/lib/aws/storage/util.d.ts +25 -3
  388. package/lib/aws/storage/util.js +84 -17
  389. package/lib/aws/storage/website-config.generated.d.ts +5 -5
  390. package/lib/aws/storage/website-config.generated.js +1 -1
  391. package/lib/aws/util.js +2 -3
  392. package/lib/construct-base.d.ts +10 -1
  393. package/lib/construct-base.js +9 -6
  394. package/lib/duration.js +1 -1
  395. package/lib/expiration.d.ts +48 -0
  396. package/lib/expiration.js +68 -0
  397. package/lib/helpers-internal/index.d.ts +1 -0
  398. package/lib/helpers-internal/index.js +7 -0
  399. package/lib/index.d.ts +2 -0
  400. package/lib/index.js +3 -1
  401. package/lib/private/md5.d.ts +4 -0
  402. package/lib/private/md5.js +14 -0
  403. package/lib/private/unique-resource-name.js +3 -4
  404. package/lib/size.js +2 -2
  405. package/lib/stack-base.d.ts +4 -23
  406. package/lib/stack-base.js +9 -30
  407. package/lib/terra-func.d.ts +103 -0
  408. package/lib/terra-func.js +170 -0
  409. package/lib/token.js +5 -5
  410. package/package.json +15 -8
  411. package/bun.lockb +0 -0
@@ -0,0 +1,414 @@
1
+ import { Construct } from "constructs";
2
+ import { Connections } from "./connections";
3
+ import { IPeer } from "./peer";
4
+ import { Port } from "./port";
5
+ import { IVpc } from "./vpc";
6
+ import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "../aws-construct";
7
+ /**
8
+ * Outputs which may be registered for output via the Grid.
9
+ */
10
+ export interface SecurityGroupOutputs {
11
+ /**
12
+ * ID for the current security group
13
+ * @attribute
14
+ */
15
+ readonly securityGroupId: string;
16
+ }
17
+ /**
18
+ * Interface for security group-like objects
19
+ */
20
+ export interface ISecurityGroup extends IAwsConstruct, IPeer {
21
+ /** Strongly typed outputs */
22
+ readonly securityGroupOutputs: SecurityGroupOutputs;
23
+ /**
24
+ * ID for the current security group
25
+ * @attribute
26
+ */
27
+ readonly securityGroupId: string;
28
+ /**
29
+ * Whether the SecurityGroup has been configured to allow all outbound traffic
30
+ */
31
+ readonly allowAllOutbound: boolean;
32
+ /**
33
+ * Add an ingress rule for the current security group
34
+ *
35
+ * `remoteRule` controls where the Rule object is created if the peer is also a
36
+ * securityGroup and they are in different stack. If false (default) the
37
+ * rule object is created under the current SecurityGroup object. If true and the
38
+ * peer is also a SecurityGroup, the rule object is created under the remote
39
+ * SecurityGroup object.
40
+ */
41
+ addIngressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean): void;
42
+ /**
43
+ * Add an egress rule for the current security group
44
+ *
45
+ * `remoteRule` controls where the Rule object is created if the peer is also a
46
+ * securityGroup and they are in different stack. If false (default) the
47
+ * rule object is created under the current SecurityGroup object. If true and the
48
+ * peer is also a SecurityGroup, the rule object is created under the remote
49
+ * SecurityGroup object.
50
+ */
51
+ addEgressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean): void;
52
+ }
53
+ /**
54
+ * A SecurityGroup that is not created in this template
55
+ */
56
+ declare abstract class SecurityGroupBase extends AwsConstructBase implements ISecurityGroup {
57
+ /**
58
+ * Return whether the indicated object is a security group
59
+ */
60
+ static isSecurityGroup(x: any): x is SecurityGroupBase;
61
+ abstract readonly securityGroupId: string;
62
+ get securityGroupOutputs(): SecurityGroupOutputs;
63
+ get outputs(): Record<string, any>;
64
+ abstract readonly allowAllOutbound: boolean;
65
+ abstract readonly allowAllIpv6Outbound: boolean;
66
+ readonly canInlineRule = false;
67
+ readonly connections: Connections;
68
+ readonly defaultPort?: Port;
69
+ private peerAsTokenCount;
70
+ constructor(scope: Construct, id: string, props?: AwsConstructProps);
71
+ get uniqueId(): string;
72
+ addIngressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean): void;
73
+ addEgressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean): void;
74
+ toIngressRuleConfig(): any;
75
+ toEgressRuleConfig(): any;
76
+ private toRuleConfig;
77
+ /**
78
+ * Determine where to parent a new ingress/egress rule
79
+ *
80
+ * A SecurityGroup rule is parented under the group it's related to, UNLESS
81
+ * we're in a cross-stack scenario with another Security Group. In that case,
82
+ * we respect the 'remoteRule' flag and will parent under the other security
83
+ * group.
84
+ *
85
+ * This is necessary to avoid cyclic dependencies between stacks, since both
86
+ * ingress and egress rules will reference both security groups, and a naive
87
+ * parenting will lead to the following situation:
88
+ *
89
+ * ╔════════════════════╗ ╔════════════════════╗
90
+ * ║ ┌───────────┐ ║ ║ ┌───────────┐ ║
91
+ * ║ │ GroupA │◀────╬─┐ ┌───╬───▶│ GroupB │ ║
92
+ * ║ └───────────┘ ║ │ │ ║ └───────────┘ ║
93
+ * ║ ▲ ║ │ │ ║ ▲ ║
94
+ * ║ │ ║ │ │ ║ │ ║
95
+ * ║ │ ║ │ │ ║ │ ║
96
+ * ║ ┌───────────┐ ║ └───┼───╬────┌───────────┐ ║
97
+ * ║ │ EgressA │─────╬─────┘ ║ │ IngressB │ ║
98
+ * ║ └───────────┘ ║ ║ └───────────┘ ║
99
+ * ║ ║ ║ ║
100
+ * ╚════════════════════╝ ╚════════════════════╝
101
+ *
102
+ * By having the ability to switch the parent, we avoid the cyclic reference by
103
+ * keeping all rules in a single stack.
104
+ *
105
+ * If this happens, we also have to change the construct ID, because
106
+ * otherwise we might have two objects with the same ID if we have
107
+ * multiple reversed security group relationships.
108
+ *
109
+ * ╔═══════════════════════════════════╗
110
+ * ║┌───────────┐ ║
111
+ * ║│ GroupB │ ║
112
+ * ║└───────────┘ ║
113
+ * ║ ▲ ║
114
+ * ║ │ ┌───────────┐ ║
115
+ * ║ ├────"from A"──│ IngressB │ ║
116
+ * ║ │ └───────────┘ ║
117
+ * ║ │ ┌───────────┐ ║
118
+ * ║ ├─────"to B"───│ EgressA │ ║
119
+ * ║ │ └───────────┘ ║
120
+ * ║ │ ┌───────────┐ ║
121
+ * ║ └─────"to B"───│ EgressC │ ║ <-- oops
122
+ * ║ └───────────┘ ║
123
+ * ╚═══════════════════════════════════╝
124
+ */
125
+ protected determineRuleScope(peer: IPeer, connection: Port, fromTo: "from" | "to", remoteRule?: boolean): RuleScope;
126
+ private renderPeer;
127
+ }
128
+ /**
129
+ * The scope and id in which a given SecurityGroup rule should be defined.
130
+ */
131
+ export interface RuleScope {
132
+ /**
133
+ * The SecurityGroup in which a rule should be scoped.
134
+ */
135
+ readonly scope: ISecurityGroup;
136
+ /**
137
+ * The construct ID to use for the rule.
138
+ */
139
+ readonly id: string;
140
+ }
141
+ export interface SecurityGroupProps extends AwsConstructProps {
142
+ /**
143
+ * The name of the security group. For valid values, see the GroupName
144
+ * parameter of the CreateSecurityGroup action in the Amazon EC2 API
145
+ * Reference.
146
+ *
147
+ * It is not recommended to use an explicit group name.
148
+ *
149
+ * @default If you don't specify a GroupName, AWS CloudFormation generates a
150
+ * unique physical ID and uses that ID for the group name.
151
+ */
152
+ readonly securityGroupName?: string;
153
+ /**
154
+ * A description of the security group.
155
+ *
156
+ * Forces new resource
157
+ *
158
+ * Security group description. Defaults to `Managed by Terraform`. Cannot be `""`.
159
+ *
160
+ * NOTE: This field maps to the AWS `GroupDescription` attribute, for which there is no Update API.
161
+ * If you'd like to classify your security groups in a way that can be updated, use tags.
162
+ *
163
+ * @default The default name will be the construct's CDK path.
164
+ */
165
+ readonly description?: string;
166
+ /**
167
+ * The VPC in which to create the security group.
168
+ */
169
+ readonly vpc: IVpc;
170
+ /**
171
+ * Whether to allow all outbound traffic by default.
172
+ *
173
+ * If this is set to true, there will only be a single egress rule which allows all
174
+ * outbound traffic. If this is set to false, no outbound traffic will be allowed by
175
+ * default and all egress traffic must be explicitly authorized.
176
+ *
177
+ * To allow all ipv6 traffic use allowAllIpv6Outbound
178
+ *
179
+ * @default true
180
+ */
181
+ readonly allowAllOutbound?: boolean;
182
+ /**
183
+ * Whether to allow all outbound ipv6 traffic by default.
184
+ *
185
+ * If this is set to true, there will only be a single egress rule which allows all
186
+ * outbound ipv6 traffic. If this is set to false, no outbound traffic will be allowed by
187
+ * default and all egress ipv6 traffic must be explicitly authorized.
188
+ *
189
+ * To allow all ipv4 traffic use allowAllOutbound
190
+ *
191
+ * @default false
192
+ */
193
+ readonly allowAllIpv6Outbound?: boolean;
194
+ /**
195
+ * Whether to disable inline ingress and egress rule optimization.
196
+ *
197
+ * If this is set to true, ingress and egress rules will not be declared under the
198
+ * SecurityGroup in cloudformation, but will be separate elements.
199
+ *
200
+ * Inlining rules is an optimization for producing smaller stack templates. Sometimes
201
+ * this is not desirable, for example when security group access is managed via tags.
202
+ *
203
+ * The default value can be overriden globally by setting the context variable
204
+ * '@aws-cdk/aws-ec2.securityGroupDisableInlineRules'.
205
+ *
206
+ * @default false
207
+ */
208
+ readonly disableInlineRules?: boolean;
209
+ }
210
+ /**
211
+ * Additional options for imported security groups
212
+ */
213
+ export interface SecurityGroupImportOptions {
214
+ /**
215
+ * Mark the SecurityGroup as having been created allowing all outbound traffic
216
+ *
217
+ * Only if this is set to false will egress rules be added to this security
218
+ * group. Be aware, this would undo any potential "all outbound traffic"
219
+ * default.
220
+ *
221
+ *
222
+ * @default true
223
+ */
224
+ readonly allowAllOutbound?: boolean;
225
+ /**
226
+ * Mark the SecurityGroup as having been created allowing all outbound ipv6 traffic
227
+ *
228
+ * Only if this is set to false will egress rules for ipv6 be added to this security
229
+ * group. Be aware, this would undo any potential "all outbound traffic"
230
+ * default.
231
+ *
232
+ * @default false
233
+ */
234
+ readonly allowAllIpv6Outbound?: boolean;
235
+ /**
236
+ * If a SecurityGroup is mutable CDK can add rules to existing groups
237
+ *
238
+ * Beware that making a SecurityGroup immutable might lead to issue
239
+ * due to missing ingress/egress rules for new resources.
240
+ *
241
+ *
242
+ * @default true
243
+ */
244
+ readonly mutable?: boolean;
245
+ }
246
+ /**
247
+ * Creates an Amazon EC2 security group within a VPC.
248
+ *
249
+ * Security Groups act like a firewall with a set of rules, and are associated
250
+ * with any AWS resource that has or creates Elastic Network Interfaces (ENIs).
251
+ * A typical example of a resource that has a security group is an Instance (or
252
+ * Auto Scaling Group of instances)
253
+ *
254
+ * If you are defining new infrastructure in CDK, there is a good chance you
255
+ * won't have to interact with this class at all. Like IAM Roles, Security
256
+ * Groups need to exist to control access between AWS resources, but CDK will
257
+ * automatically generate and populate them with least-privilege permissions
258
+ * for you so you can concentrate on your business logic.
259
+ *
260
+ * All Constructs that require Security Groups will create one for you if you
261
+ * don't specify one at construction. After construction, you can selectively
262
+ * allow connections to and between constructs via--for example-- the `instance.connections`
263
+ * object. Think of it as "allowing connections to your instance", rather than
264
+ * "adding ingress rules a security group". See the [Allowing
265
+ * Connections](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-cdk-lib.aws_ec2-readme.html#allowing-connections)
266
+ * section in the library documentation for examples.
267
+ *
268
+ * Direct manipulation of the Security Group through `addIngressRule` and
269
+ * `addEgressRule` is possible, but mutation through the `.connections` object
270
+ * is recommended. If you peer two constructs with security groups this way,
271
+ * appropriate rules will be created in both.
272
+ *
273
+ * If you have an existing security group you want to use in your CDK application,
274
+ * you would import it like this:
275
+ *
276
+ * ```ts
277
+ * const securityGroup = compute.SecurityGroup.fromSecurityGroupId(this, 'SG', 'sg-12345', {
278
+ * mutable: false
279
+ * });
280
+ * ```
281
+ */
282
+ export declare class SecurityGroup extends SecurityGroupBase {
283
+ /**
284
+ * Look up a security group by id.
285
+ */
286
+ static fromLookupById(scope: Construct, id: string, securityGroupId: string, allowAllOutbound?: boolean): ISecurityGroup;
287
+ /**
288
+ * Look up a security group by name.
289
+ */
290
+ static fromLookupByName(scope: Construct, id: string, securityGroupName: string, vpc: IVpc, allowAllOutbound?: boolean): ISecurityGroup;
291
+ /**
292
+ * Import an existing security group into this app.
293
+ *
294
+ * This method will assume that the Security Group has a rule in it which allows
295
+ * all outbound traffic, and so will not add egress rules to the imported Security
296
+ * Group (only ingress rules).
297
+ *
298
+ * If your existing Security Group needs to have egress rules added, pass the
299
+ * `allowAllOutbound: false` option on import.
300
+ */
301
+ static fromSecurityGroupId(scope: Construct, id: string, securityGroupId: string, options?: SecurityGroupImportOptions): ISecurityGroup;
302
+ /**
303
+ * Look up a security group.
304
+ */
305
+ private static fromLookupAttributes;
306
+ /**
307
+ * The ID of the security group
308
+ *
309
+ * @attribute
310
+ */
311
+ readonly securityGroupId: string;
312
+ /**
313
+ * The VPC ID this security group is part of.
314
+ *
315
+ * @attribute
316
+ */
317
+ readonly securityGroupVpcId: string;
318
+ /**
319
+ * Whether the SecurityGroup has been configured to allow all outbound traffic
320
+ */
321
+ readonly allowAllOutbound: boolean;
322
+ /**
323
+ * Whether the SecurityGroup has been configured to allow all outbound ipv6 traffic
324
+ */
325
+ readonly allowAllIpv6Outbound: boolean;
326
+ private readonly securityGroup;
327
+ private readonly directIngressRules;
328
+ private readonly directEgressRules;
329
+ /**
330
+ * Whether to disable optimization for inline security group rules.
331
+ */
332
+ private readonly disableInlineRules;
333
+ constructor(scope: Construct, id: string, props: SecurityGroupProps);
334
+ addIngressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean): void;
335
+ addEgressRule(peer: IPeer, connection: Port, description?: string, remoteRule?: boolean): void;
336
+ /**
337
+ * Add a direct ingress rule
338
+ */
339
+ private addDirectIngressRule;
340
+ /**
341
+ * Return whether the given ingress rule exists on the group
342
+ */
343
+ private hasIngressRule;
344
+ /**
345
+ * Add a direct egress rule
346
+ */
347
+ private addDirectEgressRule;
348
+ /**
349
+ * Return whether the given egress rule exists on the group
350
+ */
351
+ private hasEgressRule;
352
+ /**
353
+ * Add the default egress rule to the securityGroup
354
+ *
355
+ * By default, AWS creates an `ALLOW ALL` egress rule when creating a new Security Group inside of a VPC.
356
+ * When creating a new Security Group inside a VPC, Terraform will remove this default rule, and require
357
+ * you specifically re-create it if you desire that rule.
358
+ *
359
+ * This depends on allowAllOutbound
360
+ *
361
+ * - If allowAllOutbound is true, we will add an allow all rule.
362
+ * - If allowAllOutbound is false, we don't do anything since TF does not add
363
+ * a default allow all ipv4 rule.
364
+ */
365
+ private addDefaultEgressRule;
366
+ /**
367
+ * Add a allow all ipv6 egress rule to the securityGroup
368
+ *
369
+ * This depends on allowAllIpv6Outbound:
370
+ *
371
+ * - If allowAllIpv6Outbound is true, we will add an allow all rule.
372
+ * - If allowAllOutbound is false, we don't do anything since EC2 does not add
373
+ * a default allow all ipv6 rule.
374
+ */
375
+ private addDefaultIpv6EgressRule;
376
+ }
377
+ export interface ConnectionRule {
378
+ /**
379
+ * The IP protocol name (tcp, udp, icmp) or number (see Protocol Numbers).
380
+ * Use -1 to specify all protocols. If you specify -1, or a protocol number
381
+ * other than tcp, udp, icmp, or 58 (ICMPv6), traffic on all ports is
382
+ * allowed, regardless of any ports you specify. For tcp, udp, and icmp, you
383
+ * must specify a port range. For protocol 58 (ICMPv6), you can optionally
384
+ * specify a port range; if you don't, traffic for all types and codes is
385
+ * allowed.
386
+ *
387
+ * @default tcp
388
+ */
389
+ readonly protocol?: string;
390
+ /**
391
+ * Start of port range for the TCP and UDP protocols, or an ICMP type number.
392
+ *
393
+ * If you specify icmp for the IpProtocol property, you can specify
394
+ * -1 as a wildcard (i.e., any ICMP type number).
395
+ */
396
+ readonly fromPort: number;
397
+ /**
398
+ * End of port range for the TCP and UDP protocols, or an ICMP code.
399
+ *
400
+ * If you specify icmp for the IpProtocol property, you can specify -1 as a
401
+ * wildcard (i.e., any ICMP code).
402
+ *
403
+ * @default If toPort is not specified, it will be the same as fromPort.
404
+ */
405
+ readonly toPort?: number;
406
+ /**
407
+ * Description of this connection. It is applied to both the ingress rule
408
+ * and the egress rule.
409
+ *
410
+ * @default No description
411
+ */
412
+ readonly description?: string;
413
+ }
414
+ export {};