terraconstructs 0.0.11 → 0.0.12

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 (410) hide show
  1. package/.jsii +104486 -34582
  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.js +3 -3
  339. package/lib/aws/notify/index.js +3 -1
  340. package/lib/aws/notify/input.js +4 -3
  341. package/lib/aws/notify/kinesis-stream.js +3 -2
  342. package/lib/aws/notify/on-event-options.js +2 -1
  343. package/lib/aws/notify/queue-config.generated.d.ts +18 -11
  344. package/lib/aws/notify/queue-config.generated.js +1 -1
  345. package/lib/aws/notify/queue-policy.js +1 -1
  346. package/lib/aws/notify/queue.js +1 -1
  347. package/lib/aws/notify/resource-policy.js +1 -1
  348. package/lib/aws/notify/rule.js +3 -2
  349. package/lib/aws/notify/schedule.js +2 -2
  350. package/lib/aws/notify/sqs-augmentations.generated.d.ts +125 -0
  351. package/lib/aws/notify/sqs-augmentations.generated.js +74 -0
  352. package/lib/aws/notify/target.js +2 -1
  353. package/lib/aws/notify/targets/event-bus.js +1 -1
  354. package/lib/aws/notify/targets/function.js +1 -1
  355. package/lib/aws/notify/targets/log-group.js +2 -2
  356. package/lib/aws/notify/targets/sqs.js +1 -1
  357. package/lib/aws/notify/targets/state-machine.js +1 -1
  358. package/lib/aws/notify/targets/util.d.ts +1 -1
  359. package/lib/aws/notify/targets/util.js +10 -11
  360. package/lib/aws/notify/util.js +4 -4
  361. package/lib/aws/provider-config.generated.d.ts +33 -33
  362. package/lib/aws/provider-config.generated.js +1 -1
  363. package/lib/aws/storage/bucket-notifications.js +1 -1
  364. package/lib/aws/storage/bucket-policy.js +1 -1
  365. package/lib/aws/storage/bucket-source.js +1 -1
  366. package/lib/aws/storage/bucket.d.ts +298 -65
  367. package/lib/aws/storage/bucket.js +548 -225
  368. package/lib/aws/storage/cors-config.generated.d.ts +3 -3
  369. package/lib/aws/storage/cors-config.generated.js +1 -1
  370. package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
  371. package/lib/aws/storage/cors-rule-config.generated.js +1 -1
  372. package/lib/aws/storage/index.d.ts +1 -0
  373. package/lib/aws/storage/index.js +2 -1
  374. package/lib/aws/storage/lifecycle-config.generated.d.ts +11 -11
  375. package/lib/aws/storage/lifecycle-config.generated.js +1 -1
  376. package/lib/aws/storage/notification-targets/function.js +6 -6
  377. package/lib/aws/storage/notification-targets/queue.js +1 -1
  378. package/lib/aws/storage/origin-access-identity.d.ts +1 -1
  379. package/lib/aws/storage/origin-access-identity.js +5 -4
  380. package/lib/aws/storage/parameter-util.d.ts +12 -0
  381. package/lib/aws/storage/parameter-util.js +65 -0
  382. package/lib/aws/storage/parameter.d.ts +526 -0
  383. package/lib/aws/storage/parameter.js +606 -0
  384. package/lib/aws/storage/s3-canned-metrics.generated.d.ts +22 -0
  385. package/lib/aws/storage/s3-canned-metrics.generated.js +23 -0
  386. package/lib/aws/storage/util.d.ts +25 -3
  387. package/lib/aws/storage/util.js +84 -17
  388. package/lib/aws/storage/website-config.generated.d.ts +5 -5
  389. package/lib/aws/storage/website-config.generated.js +1 -1
  390. package/lib/aws/util.js +2 -3
  391. package/lib/construct-base.d.ts +10 -1
  392. package/lib/construct-base.js +9 -6
  393. package/lib/duration.js +1 -1
  394. package/lib/expiration.d.ts +48 -0
  395. package/lib/expiration.js +68 -0
  396. package/lib/helpers-internal/index.d.ts +1 -0
  397. package/lib/helpers-internal/index.js +7 -0
  398. package/lib/index.d.ts +2 -0
  399. package/lib/index.js +3 -1
  400. package/lib/private/md5.d.ts +4 -0
  401. package/lib/private/md5.js +14 -0
  402. package/lib/private/unique-resource-name.js +3 -4
  403. package/lib/size.js +2 -2
  404. package/lib/stack-base.d.ts +4 -23
  405. package/lib/stack-base.js +9 -30
  406. package/lib/terra-func.d.ts +103 -0
  407. package/lib/terra-func.js +170 -0
  408. package/lib/token.js +5 -5
  409. package/package.json +15 -8
  410. package/bun.lockb +0 -0
@@ -1,7 +1,8 @@
1
- import { s3Bucket, s3BucketCorsConfiguration, s3BucketWebsiteConfiguration } from "@cdktf/provider-aws";
1
+ import { s3Bucket, s3BucketCorsConfiguration, s3BucketWebsiteConfiguration, dataAwsS3Bucket } from "@cdktf/provider-aws";
2
2
  import { Construct } from "constructs";
3
- import { WebsiteConfig, CorsConfig, LifecycleConfigurationRule, BucketPolicy, IBucketNotificationDestination } from ".";
4
- import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "..";
3
+ import { WebsiteConfig, CorsConfig, LifecycleConfigurationRule, OriginAccessIdentity, BucketPolicy, IBucketNotificationDestination } from ".";
4
+ import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "../aws-construct";
5
+ import * as kms from "../encryption";
5
6
  import * as iam from "../iam";
6
7
  export interface CloudfrontAccessConfig {
7
8
  /**
@@ -15,7 +16,129 @@ export interface CloudfrontAccessConfig {
15
16
  */
16
17
  readonly keyPatterns?: string[];
17
18
  }
19
+ /**
20
+ * A reference to a bucket outside this stack
21
+ */
22
+ export interface BucketAttributes {
23
+ /**
24
+ * The ARN of the bucket. At least one of bucketArn or bucketName must be
25
+ * defined in order to initialize a bucket ref.
26
+ */
27
+ readonly bucketArn?: string;
28
+ /**
29
+ * The name of the bucket. If the underlying value of ARN is a string, the
30
+ * name will be parsed from the ARN. Otherwise, the name is optional, but
31
+ * some features that require the bucket name such as auto-creating a bucket
32
+ * policy, won't work.
33
+ */
34
+ readonly bucketName?: string;
35
+ /**
36
+ * The domain name of the bucket.
37
+ *
38
+ * @default - Inferred from bucket name
39
+ */
40
+ readonly bucketDomainName?: string;
41
+ /**
42
+ * The website URL of the bucket (if static web hosting is enabled).
43
+ *
44
+ * @default - Inferred from bucket name and region
45
+ */
46
+ readonly bucketWebsiteUrl?: string;
47
+ /**
48
+ * The regional domain name of the specified bucket.
49
+ */
50
+ readonly bucketRegionalDomainName?: string;
51
+ /**
52
+ * The IPv6 DNS name of the specified bucket.
53
+ */
54
+ readonly bucketDualStackDomainName?: string;
55
+ /**
56
+ * KMS encryption key associated with this bucket.
57
+ *
58
+ * @default - no encryption key
59
+ */
60
+ readonly encryptionKey?: kms.IKey;
61
+ /**
62
+ * If this bucket has been configured for static website hosting.
63
+ *
64
+ * @default false
65
+ */
66
+ readonly isWebsite?: boolean;
67
+ /**
68
+ * The account this existing bucket belongs to.
69
+ *
70
+ * @default - it's assumed the bucket belongs to the same account as the scope it's being imported into
71
+ */
72
+ readonly account?: string;
73
+ /**
74
+ * The region this existing bucket is in.
75
+ * Features that require the region (e.g. `bucketWebsiteUrl`) won't fully work
76
+ * if the region cannot be correctly inferred.
77
+ *
78
+ * @default - it's assumed the bucket is in the same region as the scope it's being imported into
79
+ */
80
+ readonly region?: string;
81
+ /**
82
+ * Whether the bucket is public or not.
83
+ *
84
+ * @default false
85
+ */
86
+ readonly public?: boolean;
87
+ /**
88
+ * Whether the bucket has versioning enabled
89
+ *
90
+ * If you are enabling versioning on the bucket for the first time, AWS recommends that
91
+ * you wait for 15 minutes after enabling versioning before issuing write operations
92
+ * (PUT or DELETE) on objects in the bucket.
93
+ *
94
+ * This will cause 15m delay if `path` is configured.
95
+ *
96
+ * @default false
97
+ */
98
+ readonly versioned?: boolean;
99
+ /**
100
+ * Special CloudFront user that you can associate with Amazon S3 origins, so that you can secure all or just some of
101
+ * your Amazon S3 content.
102
+ *
103
+ * Required to use the imported bucket in a CloudFront distribution.
104
+ */
105
+ readonly originAccessIdentity?: OriginAccessIdentity;
106
+ }
18
107
  export interface BucketProps extends AwsConstructProps {
108
+ /**
109
+ * The kind of server-side encryption to apply to this bucket.
110
+ *
111
+ * If you choose KMS, you can specify a KMS key via `encryptionKey`. If
112
+ * encryption key is not specified, a key will automatically be created.
113
+ *
114
+ * @default - `KMS` if `encryptionKey` is specified, or `UNENCRYPTED` otherwise.
115
+ * But if `UNENCRYPTED` is specified, the bucket will be encrypted as `S3_MANAGED` automatically.
116
+ */
117
+ readonly encryption?: BucketEncryption;
118
+ /**
119
+ * External KMS key to use for bucket encryption.
120
+ *
121
+ * The `encryption` property must be either not specified or set to `KMS` or `DSSE`.
122
+ * An error will be emitted if `encryption` is set to `UNENCRYPTED` or `S3_MANAGED`.
123
+ *
124
+ * @default - If `encryption` is set to `KMS` and this property is undefined,
125
+ * a new KMS key will be created and associated with this bucket.
126
+ */
127
+ readonly encryptionKey?: kms.IKey;
128
+ /**
129
+ * Whether Amazon S3 should use its own intermediary key to generate data keys.
130
+ *
131
+ * Only relevant when using KMS for encryption.
132
+ *
133
+ * - If not enabled, every object GET and PUT will cause an API call to KMS (with the
134
+ * attendant cost implications of that).
135
+ * - If enabled, S3 will use its own time-limited key instead.
136
+ *
137
+ * Only relevant, when Encryption is not set to `BucketEncryption.UNENCRYPTED`.
138
+ *
139
+ * @default - false
140
+ */
141
+ readonly bucketKeyEnabled?: boolean;
19
142
  /**
20
143
  * The path(s) to static directories or files to upload, relative to the Stack file.
21
144
  *
@@ -190,6 +313,11 @@ export interface BucketOutputs {
190
313
  * @attribute
191
314
  */
192
315
  readonly originAccessIdentity?: string;
316
+ /**
317
+ * Kms Key outputs, if bucket has encryption.
318
+ * @attribute
319
+ */
320
+ readonly encryptionKey?: kms.KeyOutputs;
193
321
  }
194
322
  /**
195
323
  * Imported or created Bucket attributes
@@ -211,20 +339,19 @@ export interface IBucket extends IAwsConstruct {
211
339
  readonly hostedZoneId: string;
212
340
  /**
213
341
  * The Domain name of the static website.
342
+ *
343
+ * This is used to create Route 53 alias records.
214
344
  * @attribute
215
345
  */
216
346
  readonly websiteDomainName?: string;
217
347
  /**
218
- * Enable public read access for all the files in the bucket.
219
- *
220
- * This explicitly disables the default S3 bucket security settings. This
221
- * should be done with caution, as all bucket objects become publicly exposed.
222
- *
223
- * You don't need to enable this if you're using CloudFront to serve files from the bucket.
224
- *
225
- * @default `false`
348
+ * Whether the bucket is public or not.
349
+ */
350
+ readonly public?: boolean;
351
+ /**
352
+ * Optional KMS encryption key associated with this bucket.
226
353
  */
227
- public?: boolean;
354
+ readonly encryptionKey?: kms.IKey;
228
355
  /**
229
356
  * The resource policy associated with this bucket.
230
357
  *
@@ -418,60 +545,44 @@ export interface IBucket extends IAwsConstruct {
418
545
  */
419
546
  enableEventBridgeNotification(): void;
420
547
  }
421
- /**
422
- * The `Bucket` beacon provides an [AWS S3 Bucket](https://aws.amazon.com/s3/).
423
- *
424
- * ```ts
425
- * new storage.Bucket(stack, "MyWebsite", {
426
- * path: path.join(__dirname, "dist"),
427
- * });
428
- * ```
429
- *
430
- * #### Public read access
431
- *
432
- * Enables `public` read access for all the files in the bucket. Dangerous and
433
- * recommended to use edge.Distribution instead.
434
- *
435
- * Useful for hosting public files directly from S3.
436
- *
437
- * ```ts
438
- * new storage.Bucket("MyBucket", {
439
- * public: true
440
- * });
441
- * ```
442
- *
443
- * @resource aws_s3_bucket
444
- * @terraconstruct storage.IBucket
445
- */
446
- export declare class Bucket extends AwsConstructBase implements IBucket {
447
- protected readonly resource: s3Bucket.S3Bucket;
448
- protected readonly websiteConfig?: s3BucketWebsiteConfiguration.S3BucketWebsiteConfiguration;
449
- protected readonly corsConfig?: s3BucketCorsConfiguration.S3BucketCorsConfiguration;
450
- /** @internal */
451
- private readonly sources;
452
- /** @internal */
453
- private readonly _versioned;
454
- get versioned(): boolean;
548
+ export declare abstract class BucketBase extends AwsConstructBase implements IBucket {
549
+ abstract readonly bucketArn: string;
550
+ abstract readonly bucketName: string;
551
+ abstract readonly websiteDomainName?: string;
552
+ abstract readonly websiteEndpoint?: string;
553
+ abstract readonly public?: boolean;
554
+ abstract readonly versioned: boolean;
555
+ abstract readonly hostedZoneId: string;
556
+ /**
557
+ * Optional KMS encryption key associated with this bucket.
558
+ */
559
+ abstract readonly encryptionKey?: kms.IKey;
560
+ get bucketOutputs(): BucketOutputs;
561
+ get outputs(): Record<string, any>;
562
+ protected abstract readonly resource: s3Bucket.S3Bucket | dataAwsS3Bucket.DataAwsS3Bucket;
563
+ protected abstract readonly originAccessIdentity?: OriginAccessIdentity;
455
564
  /** @internal */
456
- private readonly _isWebsite;
565
+ protected abstract readonly _isWebsite: boolean;
457
566
  /** @internal */
458
567
  private sourceSleep?;
459
568
  /** @internal */
460
- private readonly _outputs;
461
- get bucketOutputs(): BucketOutputs;
462
- get outputs(): Record<string, any>;
463
- get bucketName(): string;
464
- get bucketArn(): string;
465
- get hostedZoneId(): string;
466
- get websiteDomainName(): string | undefined;
467
- policy?: BucketPolicy;
569
+ private readonly sources;
468
570
  /**
469
- * Whether the bucket is public or not.
571
+ * The resource policy associated with this bucket.
572
+ *
573
+ * If `autoCreatePolicy` is true, a `BucketPolicy` will be created upon the
574
+ * first call to addToResourcePolicy(s).
575
+ */
576
+ abstract policy?: BucketPolicy;
577
+ /**
578
+ * Indicates if a bucket resource policy should automatically created upon
579
+ * the first call to `addToResourcePolicy`.
470
580
  */
471
- public?: boolean;
581
+ protected abstract autoCreatePolicy: boolean;
472
582
  private notifications?;
473
- private readonly eventBridgeEnabled?;
474
- constructor(scope: Construct, name: string, props?: BucketProps);
583
+ protected notificationsHandlerRole?: iam.IRole;
584
+ protected notificationsSkipDestinationValidation?: boolean;
585
+ constructor(scope: Construct, id: string, props?: AwsConstructProps);
475
586
  /**
476
587
  * Adds a statement to the resource policy for a principal (i.e.
477
588
  * account/role/service) to perform actions on this bucket and/or its
@@ -638,6 +749,100 @@ export declare class Bucket extends AwsConstructBase implements IBucket {
638
749
  */
639
750
  arnForObjects(keyPattern: string): string;
640
751
  private urlJoin;
752
+ /**
753
+ * Adds resource to the Terraform JSON output at Synth time.
754
+ *
755
+ * called by TerraformStack.prepareStack()
756
+ */
757
+ toTerraform(): any;
758
+ }
759
+ /**
760
+ * The `Bucket` provides an [AWS S3 Bucket](https://aws.amazon.com/s3/).
761
+ *
762
+ * ```ts
763
+ * new storage.Bucket(stack, "MyWebsite", {
764
+ * path: path.join(__dirname, "dist"),
765
+ * });
766
+ * ```
767
+ *
768
+ * #### Public read access
769
+ *
770
+ * Enables `public` read access for all the files in the bucket. Dangerous and
771
+ * recommended to use edge.Distribution instead.
772
+ *
773
+ * Useful for hosting public files directly from S3.
774
+ *
775
+ * ```ts
776
+ * new storage.Bucket("MyBucket", {
777
+ * public: true
778
+ * });
779
+ * ```
780
+ *
781
+ * @resource aws_s3_bucket
782
+ * @terraconstruct storage.IBucket
783
+ */
784
+ export declare class Bucket extends BucketBase implements IBucket {
785
+ static fromBucketName(scope: Construct, id: string, bucketName: string): IBucket;
786
+ /**
787
+ * Creates a Bucket construct that represents an external bucket.
788
+ *
789
+ * @param scope The parent creating construct (usually `this`).
790
+ * @param id The construct's name.
791
+ * @param attrs A `BucketAttributes` object. Can be obtained from a call to
792
+ * `bucket.export()` or manually created.
793
+ */
794
+ static fromBucketAttributes(scope: Construct, id: string, attrs: BucketAttributes): IBucket;
795
+ /**
796
+ * Thrown an exception if the given bucket name is not valid.
797
+ *
798
+ * @param physicalName name of the bucket.
799
+ * @param allowLegacyBucketNaming allow legacy bucket naming style, default is false.
800
+ */
801
+ static validateBucketName(physicalName: string, allowLegacyBucketNaming?: boolean): void;
802
+ readonly encryptionKey?: kms.IKey;
803
+ protected readonly resource: s3Bucket.S3Bucket | dataAwsS3Bucket.DataAwsS3Bucket;
804
+ protected readonly websiteConfig?: s3BucketWebsiteConfiguration.S3BucketWebsiteConfiguration;
805
+ protected readonly corsConfig?: s3BucketCorsConfiguration.S3BucketCorsConfiguration;
806
+ protected readonly originAccessIdentity?: OriginAccessIdentity;
807
+ /** @internal */
808
+ protected readonly _isWebsite: boolean;
809
+ /** @internal */
810
+ private readonly _versioned;
811
+ get bucketArn(): string;
812
+ get bucketName(): string;
813
+ get websiteDomainName(): string | undefined;
814
+ get websiteEndpoint(): string | undefined;
815
+ get versioned(): boolean;
816
+ get hostedZoneId(): string;
817
+ policy?: BucketPolicy;
818
+ protected autoCreatePolicy: boolean;
819
+ /**
820
+ * Whether the bucket is public or not.
821
+ */
822
+ readonly public?: boolean;
823
+ private readonly eventBridgeEnabled?;
824
+ constructor(scope: Construct, name: string, props?: BucketProps);
825
+ /**
826
+ * Set up key properties and return the Bucket encryption property from the
827
+ * user's configuration, according to the following table:
828
+ *
829
+ * | props.encryption | props.encryptionKey | props.bucketKeyEnabled | bucketEncryption (return value) | encryptionKey (return value) |
830
+ * |------------------|---------------------|------------------------|---------------------------------|------------------------------|
831
+ * | undefined | undefined | e | undefined | undefined |
832
+ * | UNENCRYPTED | undefined | false | undefined | undefined |
833
+ * | undefined | k | e | SSE-KMS, bucketKeyEnabled = e | k |
834
+ * | KMS | k | e | SSE-KMS, bucketKeyEnabled = e | k |
835
+ * | KMS | undefined | e | SSE-KMS, bucketKeyEnabled = e | new key |
836
+ * | KMS_MANAGED | undefined | e | SSE-KMS, bucketKeyEnabled = e | undefined |
837
+ * | S3_MANAGED | undefined | false | SSE-S3 | undefined |
838
+ * | S3_MANAGED | undefined | e | SSE-S3, bucketKeyEnabled = e | undefined |
839
+ * | UNENCRYPTED | undefined | true | ERROR! | ERROR! |
840
+ * | UNENCRYPTED | k | e | ERROR! | ERROR! |
841
+ * | KMS_MANAGED | k | e | ERROR! | ERROR! |
842
+ * | S3_MANAGED | undefined | true | ERROR! | ERROR! |
843
+ * | S3_MANAGED | k | e | ERROR! | ERROR! |
844
+ */
845
+ private parseEncryption;
641
846
  /**
642
847
  * Adds an iam statement to enforce SSL requests only.
643
848
  */
@@ -647,12 +852,6 @@ export declare class Bucket extends AwsConstructBase implements IBucket {
647
852
  * version only.
648
853
  */
649
854
  private minimumTLSVersionStatement;
650
- /**
651
- * Adds resource to the Terraform JSON output at Synth time.
652
- *
653
- * called by TerraformStack.prepareStack()
654
- */
655
- toTerraform(): any;
656
855
  }
657
856
  export interface AddSourceOptions {
658
857
  /**
@@ -723,6 +922,40 @@ export declare enum StorageClass {
723
922
  */
724
923
  INTELLIGENT_TIERING = "INTELLIGENT_TIERING"
725
924
  }
925
+ /**
926
+ * What kind of server-side encryption to apply to this bucket
927
+ */
928
+ export declare enum BucketEncryption {
929
+ /**
930
+ * Previous option. Buckets can not be unencrypted now.
931
+ * @see https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html
932
+ * @deprecated S3 applies server-side encryption with SSE-S3 for every bucket
933
+ * that default encryption is not configured.
934
+ */
935
+ UNENCRYPTED = "UNENCRYPTED",
936
+ /**
937
+ * Server-side KMS encryption with a master key managed by KMS.
938
+ */
939
+ KMS_MANAGED = "KMS_MANAGED",
940
+ /**
941
+ * Server-side encryption with a master key managed by S3.
942
+ */
943
+ S3_MANAGED = "S3_MANAGED",
944
+ /**
945
+ * Server-side encryption with a KMS key managed by the user.
946
+ * If `encryptionKey` is specified, this key will be used, otherwise, one will be defined.
947
+ */
948
+ KMS = "KMS",
949
+ /**
950
+ * Double server-side KMS encryption with a master key managed by KMS.
951
+ */
952
+ DSSE_MANAGED = "DSSE_MANAGED",
953
+ /**
954
+ * Double server-side encryption with a KMS key managed by the user.
955
+ * If `encryptionKey` is specified, this key will be used, otherwise, one will be defined.
956
+ */
957
+ DSSE = "DSSE"
958
+ }
726
959
  /**
727
960
  * Notification event types.
728
961
  * @link https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html#supported-notification-event-types