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
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ // https://github.com/aws/aws-cdk/blob/v2.175.1/packages/aws-cdk-lib/region-info/build-tools/fact-tables.ts#L120
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ELBV2_ACCOUNTS = void 0;
5
+ exports.getElbv2Account = getElbv2Account;
6
+ // https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#access-logging-bucket-permissions
7
+ // https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy
8
+ // Any not listed regions use the service principal "logdelivery.elasticloadbalancing.amazonaws.com"
9
+ exports.ELBV2_ACCOUNTS = {
10
+ "af-south-1": "098369216593",
11
+ "ap-east-1": "754344448648",
12
+ "ap-northeast-1": "582318560864",
13
+ "ap-northeast-2": "600734575887",
14
+ "ap-northeast-3": "383597477331",
15
+ "ap-south-1": "718504428378",
16
+ "ap-southeast-1": "114774131450",
17
+ "ap-southeast-2": "783225319266",
18
+ "ap-southeast-3": "589379963580",
19
+ "ca-central-1": "985666609251",
20
+ "cn-north-1": "638102146993",
21
+ "cn-northwest-1": "037604701340",
22
+ "eu-central-1": "054676820928",
23
+ "eu-north-1": "897822967062",
24
+ "eu-south-1": "635631232127",
25
+ "eu-west-1": "156460612806",
26
+ "eu-west-2": "652711504416",
27
+ "eu-west-3": "009996457667",
28
+ "me-south-1": "076674570225",
29
+ "sa-east-1": "507241528517",
30
+ "us-east-1": "127311923021",
31
+ "us-east-2": "033677994240",
32
+ "us-gov-east-1": "190560391635",
33
+ "us-gov-west-1": "048591011584",
34
+ "us-iso-east-1": "770363063475",
35
+ "us-isob-east-1": "740734521339",
36
+ "us-iso-west-1": "121062877647",
37
+ "us-west-1": "027434742980",
38
+ "us-west-2": "797873946194",
39
+ };
40
+ /**
41
+ * The account ID for ELBv2 in this region
42
+ */
43
+ function getElbv2Account(region) {
44
+ return exports.ELBV2_ACCOUNTS[region];
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWxvZ3MtYWNjb3VudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvbGItc2hhcmVkL2FjY2Vzcy1sb2dzLWFjY291bnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxnSEFBZ0g7OztBQXdDaEgsMENBRUM7QUF4Q0QsdUlBQXVJO0FBQ3ZJLCtHQUErRztBQUMvRyxvR0FBb0c7QUFDdkYsUUFBQSxjQUFjLEdBQWlDO0lBQzFELFlBQVksRUFBRSxjQUFjO0lBQzVCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsZ0JBQWdCLEVBQUUsY0FBYztJQUNoQyxnQkFBZ0IsRUFBRSxjQUFjO0lBQ2hDLFlBQVksRUFBRSxjQUFjO0lBQzVCLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsZ0JBQWdCLEVBQUUsY0FBYztJQUNoQyxnQkFBZ0IsRUFBRSxjQUFjO0lBQ2hDLGNBQWMsRUFBRSxjQUFjO0lBQzlCLFlBQVksRUFBRSxjQUFjO0lBQzVCLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsY0FBYyxFQUFFLGNBQWM7SUFDOUIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsWUFBWSxFQUFFLGNBQWM7SUFDNUIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsZ0JBQWdCLEVBQUUsY0FBYztJQUNoQyxlQUFlLEVBQUUsY0FBYztJQUMvQixXQUFXLEVBQUUsY0FBYztJQUMzQixXQUFXLEVBQUUsY0FBYztDQUM1QixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsTUFBYztJQUM1QyxPQUFPLHNCQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL3JlZ2lvbi1pbmZvL2J1aWxkLXRvb2xzL2ZhY3QtdGFibGVzLnRzI0wxMjBcblxuLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9hcHBsaWNhdGlvbi9sb2FkLWJhbGFuY2VyLWFjY2Vzcy1sb2dzLmh0bWwjYWNjZXNzLWxvZ2dpbmctYnVja2V0LXBlcm1pc3Npb25zXG4vLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L2NsYXNzaWMvZW5hYmxlLWFjY2Vzcy1sb2dzLmh0bWwjYXR0YWNoLWJ1Y2tldC1wb2xpY3lcbi8vIEFueSBub3QgbGlzdGVkIHJlZ2lvbnMgdXNlIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBcImxvZ2RlbGl2ZXJ5LmVsYXN0aWNsb2FkYmFsYW5jaW5nLmFtYXpvbmF3cy5jb21cIlxuZXhwb3J0IGNvbnN0IEVMQlYyX0FDQ09VTlRTOiB7IFtyZWdpb246IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICBcImFmLXNvdXRoLTFcIjogXCIwOTgzNjkyMTY1OTNcIixcbiAgXCJhcC1lYXN0LTFcIjogXCI3NTQzNDQ0NDg2NDhcIixcbiAgXCJhcC1ub3J0aGVhc3QtMVwiOiBcIjU4MjMxODU2MDg2NFwiLFxuICBcImFwLW5vcnRoZWFzdC0yXCI6IFwiNjAwNzM0NTc1ODg3XCIsXG4gIFwiYXAtbm9ydGhlYXN0LTNcIjogXCIzODM1OTc0NzczMzFcIixcbiAgXCJhcC1zb3V0aC0xXCI6IFwiNzE4NTA0NDI4Mzc4XCIsXG4gIFwiYXAtc291dGhlYXN0LTFcIjogXCIxMTQ3NzQxMzE0NTBcIixcbiAgXCJhcC1zb3V0aGVhc3QtMlwiOiBcIjc4MzIyNTMxOTI2NlwiLFxuICBcImFwLXNvdXRoZWFzdC0zXCI6IFwiNTg5Mzc5OTYzNTgwXCIsXG4gIFwiY2EtY2VudHJhbC0xXCI6IFwiOTg1NjY2NjA5MjUxXCIsXG4gIFwiY24tbm9ydGgtMVwiOiBcIjYzODEwMjE0Njk5M1wiLFxuICBcImNuLW5vcnRod2VzdC0xXCI6IFwiMDM3NjA0NzAxMzQwXCIsXG4gIFwiZXUtY2VudHJhbC0xXCI6IFwiMDU0Njc2ODIwOTI4XCIsXG4gIFwiZXUtbm9ydGgtMVwiOiBcIjg5NzgyMjk2NzA2MlwiLFxuICBcImV1LXNvdXRoLTFcIjogXCI2MzU2MzEyMzIxMjdcIixcbiAgXCJldS13ZXN0LTFcIjogXCIxNTY0NjA2MTI4MDZcIixcbiAgXCJldS13ZXN0LTJcIjogXCI2NTI3MTE1MDQ0MTZcIixcbiAgXCJldS13ZXN0LTNcIjogXCIwMDk5OTY0NTc2NjdcIixcbiAgXCJtZS1zb3V0aC0xXCI6IFwiMDc2Njc0NTcwMjI1XCIsXG4gIFwic2EtZWFzdC0xXCI6IFwiNTA3MjQxNTI4NTE3XCIsXG4gIFwidXMtZWFzdC0xXCI6IFwiMTI3MzExOTIzMDIxXCIsXG4gIFwidXMtZWFzdC0yXCI6IFwiMDMzNjc3OTk0MjQwXCIsXG4gIFwidXMtZ292LWVhc3QtMVwiOiBcIjE5MDU2MDM5MTYzNVwiLFxuICBcInVzLWdvdi13ZXN0LTFcIjogXCIwNDg1OTEwMTE1ODRcIixcbiAgXCJ1cy1pc28tZWFzdC0xXCI6IFwiNzcwMzYzMDYzNDc1XCIsXG4gIFwidXMtaXNvYi1lYXN0LTFcIjogXCI3NDA3MzQ1MjEzMzlcIixcbiAgXCJ1cy1pc28td2VzdC0xXCI6IFwiMTIxMDYyODc3NjQ3XCIsXG4gIFwidXMtd2VzdC0xXCI6IFwiMDI3NDM0NzQyOTgwXCIsXG4gIFwidXMtd2VzdC0yXCI6IFwiNzk3ODczOTQ2MTk0XCIsXG59O1xuXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIGZvciBFTEJ2MiBpbiB0aGlzIHJlZ2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxidjJBY2NvdW50KHJlZ2lvbjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIEVMQlYyX0FDQ09VTlRTW3JlZ2lvbl07XG59XG4iXX0=
@@ -0,0 +1,113 @@
1
+ import { Construct } from "constructs";
2
+ import { LoadBalancerType, LoadBalancerListenerProtocol } from "./grid-lookup-types";
3
+ import { LbListenerConfig } from "./lb-listener-config.generated";
4
+ import { IListenerAction } from "./listener-action";
5
+ import { IAwsConstruct, AwsConstructBase } from "../../aws-construct";
6
+ /**
7
+ * Options for listener lookup
8
+ */
9
+ export interface BaseListenerLookupOptions {
10
+ /**
11
+ * Filter listeners by associated load balancer arn
12
+ * @default - does not filter by load balancer arn
13
+ */
14
+ readonly loadBalancerArn?: string;
15
+ /**
16
+ * Filter listeners by associated load balancer tags
17
+ * @default - does not filter by load balancer tags
18
+ */
19
+ readonly loadBalancerTags?: Record<string, string>;
20
+ /**
21
+ * Filter listeners by listener port
22
+ * @default - does not filter by listener port
23
+ */
24
+ readonly listenerPort?: number;
25
+ }
26
+ /**
27
+ * Options for querying the load balancer listener context provider
28
+ * @internal
29
+ */
30
+ export interface ListenerQueryContextProviderOptions {
31
+ /**
32
+ * User's provided options
33
+ */
34
+ readonly userOptions: BaseListenerLookupOptions;
35
+ /**
36
+ * Type of load balancer expected
37
+ */
38
+ readonly loadBalancerType: LoadBalancerType;
39
+ /**
40
+ * ARN of the listener to look up
41
+ * @default - does not filter by listener arn
42
+ */
43
+ readonly listenerArn?: string;
44
+ /**
45
+ * Optional protocol of the listener to look up
46
+ */
47
+ readonly listenerProtocol?: LoadBalancerListenerProtocol;
48
+ }
49
+ /**
50
+ * Outputs which may be registered for output via the Grid.
51
+ */
52
+ export interface ListenerOutputs {
53
+ /**
54
+ * ARN of the listener
55
+ * @attribute
56
+ */
57
+ readonly listenerArn: string;
58
+ }
59
+ /**
60
+ * Base interface for listeners
61
+ */
62
+ export interface IListener extends IAwsConstruct {
63
+ /** Strongly typed outputs */
64
+ readonly listenerOutputs: ListenerOutputs;
65
+ /**
66
+ * ARN of the listener
67
+ * @attribute
68
+ */
69
+ readonly listenerArn: string;
70
+ }
71
+ /**
72
+ * Base class for listeners
73
+ */
74
+ export declare abstract class BaseListener extends AwsConstructBase implements IListener {
75
+ /**
76
+ * Strongly typed outputs
77
+ */
78
+ get listenerOutputs(): ListenerOutputs;
79
+ get outputs(): Record<string, any>;
80
+ /**
81
+ * @attribute
82
+ */
83
+ readonly listenerArn: string;
84
+ /**
85
+ * Attributes set on this listener
86
+ */
87
+ private readonly attributes;
88
+ private defaultAction?;
89
+ constructor(scope: Construct, id: string, additionalProps: LbListenerConfig);
90
+ /**
91
+ * Set a non-standard attribute on the listener
92
+ *
93
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-listenerattribute.html
94
+ */
95
+ setAttribute(key: string, value: string | undefined): void;
96
+ /**
97
+ * Remove an attribute from the listener
98
+ */
99
+ removeAttribute(key: string): void;
100
+ private lazyStringAttr;
101
+ private lazyBoolAttr;
102
+ private lazyNumberAttr;
103
+ /**
104
+ * Validate this listener
105
+ */
106
+ protected validateListener(): string[];
107
+ /**
108
+ * Configure the default action
109
+ *
110
+ * @internal
111
+ */
112
+ protected _setDefaultAction(action: IListenerAction): void;
113
+ }
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BaseListener = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/v2.175.1/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/shared/base-listener.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const cdktf_1 = require("cdktf");
9
+ const util_1 = require("./util");
10
+ const aws_construct_1 = require("../../aws-construct");
11
+ /**
12
+ * Base class for listeners
13
+ */
14
+ class BaseListener extends aws_construct_1.AwsConstructBase {
15
+ // /**
16
+ // * Queries the load balancer listener context provider for load balancer
17
+ // * listener info.
18
+ // * @internal
19
+ // */
20
+ // protected static _queryContextProvider(
21
+ // scope: Construct,
22
+ // options: ListenerQueryContextProviderOptions,
23
+ // ) {
24
+ // if (
25
+ // Token.isUnresolved(options.userOptions.loadBalancerArn) ||
26
+ // Object.values(options.userOptions.loadBalancerTags ?? {}).some(
27
+ // Token.isUnresolved,
28
+ // ) ||
29
+ // Token.isUnresolved(options.userOptions.listenerPort)
30
+ // ) {
31
+ // throw new Error(
32
+ // "All arguments to look up a load balancer listener must be concrete (no Tokens)",
33
+ // );
34
+ // }
35
+ // let cxschemaTags: cxschema.Tag[] | undefined;
36
+ // if (options.userOptions.loadBalancerTags) {
37
+ // cxschemaTags = mapTagMapToCxschema(options.userOptions.loadBalancerTags);
38
+ // }
39
+ // const props: cxapi.LoadBalancerListenerContextResponse =
40
+ // ContextProvider.getValue(scope, {
41
+ // provider: cxschema.ContextProvider.LOAD_BALANCER_LISTENER_PROVIDER,
42
+ // props: {
43
+ // listenerArn: options.listenerArn,
44
+ // listenerPort: options.userOptions.listenerPort,
45
+ // listenerProtocol: options.listenerProtocol,
46
+ // loadBalancerArn: options.userOptions.loadBalancerArn,
47
+ // loadBalancerTags: cxschemaTags,
48
+ // loadBalancerType: options.loadBalancerType,
49
+ // } as cxschema.LoadBalancerListenerContextQuery,
50
+ // dummyValue: {
51
+ // // eslint-disable-next-line @cdklabs/no-literal-partition
52
+ // listenerArn: `arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/${options.loadBalancerType}/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2`,
53
+ // listenerPort: 80,
54
+ // securityGroupIds: ["sg-123456789012"],
55
+ // } as cxapi.LoadBalancerListenerContextResponse,
56
+ // }).value;
57
+ // return props;
58
+ // }
59
+ /**
60
+ * Strongly typed outputs
61
+ */
62
+ get listenerOutputs() {
63
+ return {
64
+ listenerArn: this.listenerArn,
65
+ };
66
+ }
67
+ get outputs() {
68
+ return this.listenerOutputs;
69
+ }
70
+ constructor(scope, id, additionalProps) {
71
+ super(scope, id);
72
+ /**
73
+ * Attributes set on this listener
74
+ */
75
+ this.attributes = {};
76
+ const resource = new provider_aws_1.lbListener.LbListener(this, "Resource", {
77
+ // Reverse CFN LoadBalancerAttributes to Terraform Resource properties
78
+ // https://github.com/hashicorp/terraform-provider-aws/blob/v5.88.0/internal/service/elbv2/listener.go#L880
79
+ // https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-listenerattribute.html
80
+ // notice: https://github.com/hashicorp/terraform-provider-aws/issues/40986
81
+ routingHttpRequestXAmznMtlsClientcertHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznMtlsClientcertHeaderName),
82
+ routingHttpRequestXAmznMtlsClientcertIssuerHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznMtlsClientcertIssuerHeaderName),
83
+ routingHttpRequestXAmznMtlsClientcertLeafHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznMtlsClientcertLeafHeaderName),
84
+ routingHttpRequestXAmznMtlsClientcertSerialNumberHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznMtlsClientcertSerialNumberHeaderName),
85
+ routingHttpRequestXAmznMtlsClientcertSubjectHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznMtlsClientcertSubjectHeaderName),
86
+ routingHttpRequestXAmznMtlsClientcertValidityHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznMtlsClientcertValidityHeaderName),
87
+ routingHttpRequestXAmznTlsCipherSuiteHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznTlsCipherSuiteHeaderName),
88
+ routingHttpRequestXAmznTlsVersionHeaderName: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPRequestXAmznTlsVersionHeaderName),
89
+ routingHttpResponseAccessControlAllowCredentialsHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseAccessControlAllowCredentialsHeaderValue),
90
+ routingHttpResponseAccessControlAllowHeadersHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseAccessControlAllowHeadersHeaderValue),
91
+ routingHttpResponseAccessControlAllowMethodsHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseAccessControlAllowMethodsHeaderValue),
92
+ routingHttpResponseAccessControlAllowOriginHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseAccessControlAllowOriginHeaderValue),
93
+ routingHttpResponseAccessControlExposeHeadersHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseAccessControlExposeHeadersHeaderValue),
94
+ routingHttpResponseAccessControlMaxAgeHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseAccessControlMaxAgeHeaderValue),
95
+ routingHttpResponseContentSecurityPolicyHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseContentSecurityPolicyHeaderValue),
96
+ routingHttpResponseServerEnabled: this.lazyBoolAttr(util_1.ListenerAttribute.routingHTTPResponseServerEnabled),
97
+ routingHttpResponseStrictTransportSecurityHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseStrictTransportSecurityHeaderValue),
98
+ routingHttpResponseXContentTypeOptionsHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseXContentTypeOptionsHeaderValue),
99
+ routingHttpResponseXFrameOptionsHeaderValue: this.lazyStringAttr(util_1.ListenerAttribute.routingHTTPResponseXFrameOptionsHeaderValue),
100
+ tcpIdleTimeoutSeconds: this.lazyNumberAttr(util_1.ListenerAttribute.tcpIdleTimeoutSeconds),
101
+ ...additionalProps,
102
+ defaultAction: cdktf_1.Lazy.anyValue({
103
+ produce: () => {
104
+ const rendered = this.defaultAction?.renderActions() ?? [];
105
+ return rendered.map(provider_aws_1.lbListener.lbListenerDefaultActionToTerraform);
106
+ },
107
+ }),
108
+ // listenerAttributes: Lazy.anyValue(
109
+ // { produce: () => renderAttributes(this.attributes) },
110
+ // { omitEmptyArray: true },
111
+ // ),
112
+ });
113
+ this.listenerArn = resource.arn;
114
+ this.node.addValidation({ validate: () => this.validateListener() });
115
+ }
116
+ /**
117
+ * Set a non-standard attribute on the listener
118
+ *
119
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-listenerattribute.html
120
+ */
121
+ setAttribute(key, value) {
122
+ this.attributes[key] = value;
123
+ }
124
+ /**
125
+ * Remove an attribute from the listener
126
+ */
127
+ removeAttribute(key) {
128
+ this.setAttribute(key, undefined);
129
+ }
130
+ lazyStringAttr(key) {
131
+ return cdktf_1.Lazy.stringValue({
132
+ produce: () => this.attributes[key],
133
+ });
134
+ }
135
+ lazyBoolAttr(key) {
136
+ return cdktf_1.Lazy.anyValue({
137
+ produce: () => (0, util_1.lookupBoolAttribute)(this.attributes, key),
138
+ });
139
+ }
140
+ lazyNumberAttr(key) {
141
+ return cdktf_1.Lazy.numberValue({
142
+ produce: () => (0, util_1.lookupNumberAttribute)(this.attributes, key),
143
+ });
144
+ }
145
+ /**
146
+ * Validate this listener
147
+ */
148
+ validateListener() {
149
+ if (!this.defaultAction) {
150
+ return [
151
+ "Listener needs at least one default action or target group (call addTargetGroups or addAction)",
152
+ ];
153
+ }
154
+ return [];
155
+ }
156
+ /**
157
+ * Configure the default action
158
+ *
159
+ * @internal
160
+ */
161
+ _setDefaultAction(action) {
162
+ // It might make sense to 'throw' here.
163
+ //
164
+ // However, programs may already exist out there which configured an action twice,
165
+ // in which case the second action accidentally overwrite the initial action, and in some
166
+ // way ended up with a program that did what the author intended. If we were to add throw now,
167
+ // the previously working program would be broken.
168
+ //
169
+ // Instead, signal this through a warning.
170
+ // @deprecate: upon the next major version bump, replace this with a `throw`
171
+ if (this.defaultAction) {
172
+ // "@aws-cdk/aws-elbv2:listenerExistingDefaultActionReplaced",
173
+ cdktf_1.Annotations.of(this).addWarning("A default Action already existed on this Listener and was replaced. Configure exactly one default Action.");
174
+ }
175
+ this.defaultAction = action;
176
+ }
177
+ }
178
+ exports.BaseListener = BaseListener;
179
+ _a = JSII_RTTI_SYMBOL_1;
180
+ BaseListener[_a] = { fqn: "terraconstructs.aws.compute.BaseListener", version: "0.0.12" };
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1saXN0ZW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9sYi1zaGFyZWQvYmFzZS1saXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJIQUEySDtBQUUzSCxzREFBK0Q7QUFDL0QsaUNBS2U7QUFRZixpQ0FPZ0I7QUFDaEIsdURBQXNFO0FBMkV0RTs7R0FFRztBQUNILE1BQXNCLFlBQ3BCLFNBQVEsZ0NBQWdCO0lBR3hCLE1BQU07SUFDTiwyRUFBMkU7SUFDM0Usb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixNQUFNO0lBQ04sMENBQTBDO0lBQzFDLHNCQUFzQjtJQUN0QixrREFBa0Q7SUFDbEQsTUFBTTtJQUNOLFNBQVM7SUFDVCxpRUFBaUU7SUFDakUsc0VBQXNFO0lBQ3RFLDRCQUE0QjtJQUM1QixXQUFXO0lBQ1gsMkRBQTJEO0lBQzNELFFBQVE7SUFDUix1QkFBdUI7SUFDdkIsMEZBQTBGO0lBQzFGLFNBQVM7SUFDVCxNQUFNO0lBRU4sa0RBQWtEO0lBQ2xELGdEQUFnRDtJQUNoRCxnRkFBZ0Y7SUFDaEYsTUFBTTtJQUVOLDZEQUE2RDtJQUM3RCx3Q0FBd0M7SUFDeEMsNEVBQTRFO0lBQzVFLGlCQUFpQjtJQUNqQiw0Q0FBNEM7SUFDNUMsMERBQTBEO0lBQzFELHNEQUFzRDtJQUN0RCxnRUFBZ0U7SUFDaEUsMENBQTBDO0lBQzFDLHNEQUFzRDtJQUN0RCx3REFBd0Q7SUFDeEQsc0JBQXNCO0lBQ3RCLG9FQUFvRTtJQUNwRSxzS0FBc0s7SUFDdEssNEJBQTRCO0lBQzVCLGlEQUFpRDtJQUNqRCx3REFBd0Q7SUFDeEQsZ0JBQWdCO0lBRWhCLGtCQUFrQjtJQUNsQixJQUFJO0lBRUo7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDeEIsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztR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QkFDTCxnR0FBZ0c7YUFDakcsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ08saUJBQWlCLENBQUMsTUFBdUI7UUFDakQsdUNBQXVDO1FBQ3ZDLEVBQUU7UUFDRixrRkFBa0Y7UUFDbEYseUZBQXlGO1FBQ3pGLDhGQUE4RjtRQUM5RixrREFBa0Q7UUFDbEQsRUFBRTtRQUNGLDBDQUEwQztRQUMxQyw0RUFBNEU7UUFDNUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsOERBQThEO1lBQzlELG1CQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FDN0IsMkdBQTJHLENBQzVHLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDOUIsQ0FBQzs7QUE5T0gsb0NBK09DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjIvbGliL3NoYXJlZC9iYXNlLWxpc3RlbmVyLnRzXG5cbmltcG9ydCB7IGxiTGlzdGVuZXIgYXMgdGZMaXN0ZW5lciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQge1xuICBBbm5vdGF0aW9ucyxcbiAgLy8gQ29udGV4dFByb3ZpZGVyLFxuICBMYXp5LFxuICAvLyBUb2tlbixcbn0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgTG9hZEJhbGFuY2VyVHlwZSxcbiAgTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCxcbn0gZnJvbSBcIi4vZ3JpZC1sb29rdXAtdHlwZXNcIjtcbmltcG9ydCB7IExiTGlzdGVuZXJDb25maWcgfSBmcm9tIFwiLi9sYi1saXN0ZW5lci1jb25maWcuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyBJTGlzdGVuZXJBY3Rpb24gfSBmcm9tIFwiLi9saXN0ZW5lci1hY3Rpb25cIjtcbmltcG9ydCB7XG4gIEF0dHJpYnV0ZXMsXG4gIC8vIG1hcFRhZ01hcFRvQ3hzY2hlbWEsXG4gIC8vIHJlbmRlckF0dHJpYnV0ZXMsXG4gIExpc3RlbmVyQXR0cmlidXRlIGFzIEF0dHJpYnV0ZSxcbiAgbG9va3VwQm9vbEF0dHJpYnV0ZSxcbiAgbG9va3VwTnVtYmVyQXR0cmlidXRlLFxufSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBJQXdzQ29uc3RydWN0LCBBd3NDb25zdHJ1Y3RCYXNlIH0gZnJvbSBcIi4uLy4uL2F3cy1jb25zdHJ1Y3RcIjtcbi8qKlxuICogT3B0aW9ucyBmb3IgbGlzdGVuZXIgbG9va3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUxpc3RlbmVyTG9va3VwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBGaWx0ZXIgbGlzdGVuZXJzIGJ5IGFzc29jaWF0ZWQgbG9hZCBiYWxhbmNlciBhcm5cbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbG9hZCBiYWxhbmNlciBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlckFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsdGVyIGxpc3RlbmVycyBieSBhc3NvY2lhdGVkIGxvYWQgYmFsYW5jZXIgdGFnc1xuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbHRlciBieSBsb2FkIGJhbGFuY2VyIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgbGlzdGVuZXJzIGJ5IGxpc3RlbmVyIHBvcnRcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbGlzdGVuZXIgcG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQb3J0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHF1ZXJ5aW5nIHRoZSBsb2FkIGJhbGFuY2VyIGxpc3RlbmVyIGNvbnRleHQgcHJvdmlkZXJcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RlbmVyUXVlcnlDb250ZXh0UHJvdmlkZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVzZXIncyBwcm92aWRlZCBvcHRpb25zXG4gICAqL1xuICByZWFkb25seSB1c2VyT3B0aW9uczogQmFzZUxpc3RlbmVyTG9va3VwT3B0aW9ucztcblxuICAvKipcbiAgICogVHlwZSBvZiBsb2FkIGJhbGFuY2VyIGV4cGVjdGVkXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhlIGxpc3RlbmVyIHRvIGxvb2sgdXBcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaWx0ZXIgYnkgbGlzdGVuZXIgYXJuXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lckFybj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgcHJvdG9jb2wgb2YgdGhlIGxpc3RlbmVyIHRvIGxvb2sgdXBcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUHJvdG9jb2w/OiBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sO1xufVxuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXJPdXRwdXRzIHtcbiAgLyoqXG4gICAqIEFSTiBvZiB0aGUgbGlzdGVuZXJcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgbGlzdGVuZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RlbmVyIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyT3V0cHV0czogTGlzdGVuZXJPdXRwdXRzO1xuICAvKipcbiAgICogQVJOIG9mIHRoZSBsaXN0ZW5lclxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lckFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGxpc3RlbmVyc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUxpc3RlbmVyXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElMaXN0ZW5lclxue1xuICAvLyAvKipcbiAgLy8gICogUXVlcmllcyB0aGUgbG9hZCBiYWxhbmNlciBsaXN0ZW5lciBjb250ZXh0IHByb3ZpZGVyIGZvciBsb2FkIGJhbGFuY2VyXG4gIC8vICAqIGxpc3RlbmVyIGluZm8uXG4gIC8vICAqIEBpbnRlcm5hbFxuICAvLyAgKi9cbiAgLy8gcHJvdGVjdGVkIHN0YXRpYyBfcXVlcnlDb250ZXh0UHJvdmlkZXIoXG4gIC8vICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgLy8gICBvcHRpb25zOiBMaXN0ZW5lclF1ZXJ5Q29udGV4dFByb3ZpZGVyT3B0aW9ucyxcbiAgLy8gKSB7XG4gIC8vICAgaWYgKFxuICAvLyAgICAgVG9rZW4uaXNVbnJlc29sdmVkKG9wdGlvbnMudXNlck9wdGlvbnMubG9hZEJhbGFuY2VyQXJuKSB8fFxuICAvLyAgICAgT2JqZWN0LnZhbHVlcyhvcHRpb25zLnVzZXJPcHRpb25zLmxvYWRCYWxhbmNlclRhZ3MgPz8ge30pLnNvbWUoXG4gIC8vICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZCxcbiAgLy8gICAgICkgfHxcbiAgLy8gICAgIFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLnVzZXJPcHRpb25zLmxpc3RlbmVyUG9ydClcbiAgLy8gICApIHtcbiAgLy8gICAgIHRocm93IG5ldyBFcnJvcihcbiAgLy8gICAgICAgXCJBbGwgYXJndW1lbnRzIHRvIGxvb2sgdXAgYSBsb2FkIGJhbGFuY2VyIGxpc3RlbmVyIG11c3QgYmUgY29uY3JldGUgKG5vIFRva2VucylcIixcbiAgLy8gICAgICk7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IGN4c2NoZW1hVGFnczogY3hzY2hlbWEuVGFnW10gfCB1bmRlZmluZWQ7XG4gIC8vICAgaWYgKG9wdGlvbnMudXNlck9wdGlvbnMubG9hZEJhbGFuY2VyVGFncykge1xuICAvLyAgICAgY3hzY2hlbWFUYWdzID0gbWFwVGFnTWFwVG9DeHNjaGVtYShvcHRpb25zLnVzZXJPcHRpb25zLmxvYWRCYWxhbmNlclRhZ3MpO1xuICAvLyAgIH1cblxuICAvLyAgIGNvbnN0IHByb3BzOiBjeGFwaS5Mb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRSZXNwb25zZSA9XG4gIC8vICAgICBDb250ZXh0UHJvdmlkZXIuZ2V0VmFsdWUoc2NvcGUsIHtcbiAgLy8gICAgICAgcHJvdmlkZXI6IGN4c2NoZW1hLkNvbnRleHRQcm92aWRlci5MT0FEX0JBTEFOQ0VSX0xJU1RFTkVSX1BST1ZJREVSLFxuICAvLyAgICAgICBwcm9wczoge1xuICAvLyAgICAgICAgIGxpc3RlbmVyQXJuOiBvcHRpb25zLmxpc3RlbmVyQXJuLFxuICAvLyAgICAgICAgIGxpc3RlbmVyUG9ydDogb3B0aW9ucy51c2VyT3B0aW9ucy5saXN0ZW5lclBvcnQsXG4gIC8vICAgICAgICAgbGlzdGVuZXJQcm90b2NvbDogb3B0aW9ucy5saXN0ZW5lclByb3RvY29sLFxuICAvLyAgICAgICAgIGxvYWRCYWxhbmNlckFybjogb3B0aW9ucy51c2VyT3B0aW9ucy5sb2FkQmFsYW5jZXJBcm4sXG4gIC8vICAgICAgICAgbG9hZEJhbGFuY2VyVGFnczogY3hzY2hlbWFUYWdzLFxuICAvLyAgICAgICAgIGxvYWRCYWxhbmNlclR5cGU6IG9wdGlvbnMubG9hZEJhbGFuY2VyVHlwZSxcbiAgLy8gICAgICAgfSBhcyBjeHNjaGVtYS5Mb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSxcbiAgLy8gICAgICAgZHVtbXlWYWx1ZToge1xuICAvLyAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9uby1saXRlcmFsLXBhcnRpdGlvblxuICAvLyAgICAgICAgIGxpc3RlbmVyQXJuOiBgYXJuOmF3czplbGFzdGljbG9hZGJhbGFuY2luZzp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOmxpc3RlbmVyLyR7b3B0aW9ucy5sb2FkQmFsYW5jZXJUeXBlfS9teS1sb2FkLWJhbGFuY2VyLzUwZGM2YzQ5NWMwYzkxODgvZjJmN2RjOGVmYzUyMmFiMmAsXG4gIC8vICAgICAgICAgbGlzdGVuZXJQb3J0OiA4MCxcbiAgLy8gICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBbXCJzZy0xMjM0NTY3ODkwMTJcIl0sXG4gIC8vICAgICAgIH0gYXMgY3hhcGkuTG9hZEJhbGFuY2VyTGlzdGVuZXJDb250ZXh0UmVzcG9uc2UsXG4gIC8vICAgICB9KS52YWx1ZTtcblxuICAvLyAgIHJldHVybiBwcm9wcztcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpc3RlbmVyT3V0cHV0cygpOiBMaXN0ZW5lck91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICBsaXN0ZW5lckFybjogdGhpcy5saXN0ZW5lckFybixcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lck91dHB1dHM7XG4gIH1cblxuICAvKipcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxpc3RlbmVyQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZXMgc2V0IG9uIHRoaXMgbGlzdGVuZXJcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlcyA9IHt9O1xuXG4gIHByaXZhdGUgZGVmYXVsdEFjdGlvbj86IElMaXN0ZW5lckFjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhZGRpdGlvbmFsUHJvcHM6IExiTGlzdGVuZXJDb25maWcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgdGZMaXN0ZW5lci5MYkxpc3RlbmVyKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgLy8gUmV2ZXJzZSBDRk4gTG9hZEJhbGFuY2VyQXR0cmlidXRlcyB0byBUZXJyYWZvcm0gUmVzb3VyY2UgcHJvcGVydGllc1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2Jsb2IvdjUuODguMC9pbnRlcm5hbC9zZXJ2aWNlL2VsYnYyL2xpc3RlbmVyLmdvI0w4ODBcbiAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXItbGlzdGVuZXJhdHRyaWJ1dGUuaHRtbFxuICAgICAgLy8gbm90aWNlOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwOTg2XG4gICAgICByb3V0aW5nSHR0cFJlcXVlc3RYQW16bk10bHNDbGllbnRjZXJ0SGVhZGVyTmFtZTogdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRIZWFkZXJOYW1lLFxuICAgICAgKSxcbiAgICAgIHJvdXRpbmdIdHRwUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRJc3N1ZXJIZWFkZXJOYW1lOlxuICAgICAgICB0aGlzLmxhenlTdHJpbmdBdHRyKFxuICAgICAgICAgIEF0dHJpYnV0ZS5yb3V0aW5nSFRUUFJlcXVlc3RYQW16bk10bHNDbGllbnRjZXJ0SXNzdWVySGVhZGVyTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIHJvdXRpbmdIdHRwUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRMZWFmSGVhZGVyTmFtZTogdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRMZWFmSGVhZGVyTmFtZSxcbiAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlcXVlc3RYQW16bk10bHNDbGllbnRjZXJ0U2VyaWFsTnVtYmVySGVhZGVyTmFtZTpcbiAgICAgICAgdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgICBBdHRyaWJ1dGUucm91dGluZ0hUVFBSZXF1ZXN0WEFtem5NdGxzQ2xpZW50Y2VydFNlcmlhbE51bWJlckhlYWRlck5hbWUsXG4gICAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlcXVlc3RYQW16bk10bHNDbGllbnRjZXJ0U3ViamVjdEhlYWRlck5hbWU6XG4gICAgICAgIHRoaXMubGF6eVN0cmluZ0F0dHIoXG4gICAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRTdWJqZWN0SGVhZGVyTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIHJvdXRpbmdIdHRwUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRWYWxpZGl0eUhlYWRlck5hbWU6XG4gICAgICAgIHRoaXMubGF6eVN0cmluZ0F0dHIoXG4gICAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVxdWVzdFhBbXpuTXRsc0NsaWVudGNlcnRWYWxpZGl0eUhlYWRlck5hbWUsXG4gICAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlcXVlc3RYQW16blRsc0NpcGhlclN1aXRlSGVhZGVyTmFtZTogdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVxdWVzdFhBbXpuVGxzQ2lwaGVyU3VpdGVIZWFkZXJOYW1lLFxuICAgICAgKSxcbiAgICAgIHJvdXRpbmdIdHRwUmVxdWVzdFhBbXpuVGxzVmVyc2lvbkhlYWRlck5hbWU6IHRoaXMubGF6eVN0cmluZ0F0dHIoXG4gICAgICAgIEF0dHJpYnV0ZS5yb3V0aW5nSFRUUFJlcXVlc3RYQW16blRsc1ZlcnNpb25IZWFkZXJOYW1lLFxuICAgICAgKSxcbiAgICAgIHJvdXRpbmdIdHRwUmVzcG9uc2VBY2Nlc3NDb250cm9sQWxsb3dDcmVkZW50aWFsc0hlYWRlclZhbHVlOlxuICAgICAgICB0aGlzLmxhenlTdHJpbmdBdHRyKFxuICAgICAgICAgIEF0dHJpYnV0ZS5yb3V0aW5nSFRUUFJlc3BvbnNlQWNjZXNzQ29udHJvbEFsbG93Q3JlZGVudGlhbHNIZWFkZXJWYWx1ZSxcbiAgICAgICAgKSxcbiAgICAgIHJvdXRpbmdIdHRwUmVzcG9uc2VBY2Nlc3NDb250cm9sQWxsb3dIZWFkZXJzSGVhZGVyVmFsdWU6XG4gICAgICAgIHRoaXMubGF6eVN0cmluZ0F0dHIoXG4gICAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVzcG9uc2VBY2Nlc3NDb250cm9sQWxsb3dIZWFkZXJzSGVhZGVyVmFsdWUsXG4gICAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlc3BvbnNlQWNjZXNzQ29udHJvbEFsbG93TWV0aG9kc0hlYWRlclZhbHVlOlxuICAgICAgICB0aGlzLmxhenlTdHJpbmdBdHRyKFxuICAgICAgICAgIEF0dHJpYnV0ZS5yb3V0aW5nSFRUUFJlc3BvbnNlQWNjZXNzQ29udHJvbEFsbG93TWV0aG9kc0hlYWRlclZhbHVlLFxuICAgICAgICApLFxuICAgICAgcm91dGluZ0h0dHBSZXNwb25zZUFjY2Vzc0NvbnRyb2xBbGxvd09yaWdpbkhlYWRlclZhbHVlOlxuICAgICAgICB0aGlzLmxhenlTdHJpbmdBdHRyKFxuICAgICAgICAgIEF0dHJpYnV0ZS5yb3V0aW5nSFRUUFJlc3BvbnNlQWNjZXNzQ29udHJvbEFsbG93T3JpZ2luSGVhZGVyVmFsdWUsXG4gICAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlc3BvbnNlQWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnNIZWFkZXJWYWx1ZTpcbiAgICAgICAgdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgICBBdHRyaWJ1dGUucm91dGluZ0hUVFBSZXNwb25zZUFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzSGVhZGVyVmFsdWUsXG4gICAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlc3BvbnNlQWNjZXNzQ29udHJvbE1heEFnZUhlYWRlclZhbHVlOiB0aGlzLmxhenlTdHJpbmdBdHRyKFxuICAgICAgICBBdHRyaWJ1dGUucm91dGluZ0hUVFBSZXNwb25zZUFjY2Vzc0NvbnRyb2xNYXhBZ2VIZWFkZXJWYWx1ZSxcbiAgICAgICksXG4gICAgICByb3V0aW5nSHR0cFJlc3BvbnNlQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVmFsdWU6IHRoaXMubGF6eVN0cmluZ0F0dHIoXG4gICAgICAgIEF0dHJpYnV0ZS5yb3V0aW5nSFRUUFJlc3BvbnNlQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVmFsdWUsXG4gICAgICApLFxuICAgICAgcm91dGluZ0h0dHBSZXNwb25zZVNlcnZlckVuYWJsZWQ6IHRoaXMubGF6eUJvb2xBdHRyKFxuICAgICAgICBBdHRyaWJ1dGUucm91dGluZ0hUVFBSZXNwb25zZVNlcnZlckVuYWJsZWQsXG4gICAgICApLFxuICAgICAgcm91dGluZ0h0dHBSZXNwb25zZVN0cmljdFRyYW5zcG9ydFNlY3VyaXR5SGVhZGVyVmFsdWU6XG4gICAgICAgIHRoaXMubGF6eVN0cmluZ0F0dHIoXG4gICAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVzcG9uc2VTdHJpY3RUcmFuc3BvcnRTZWN1cml0eUhlYWRlclZhbHVlLFxuICAgICAgICApLFxuICAgICAgcm91dGluZ0h0dHBSZXNwb25zZVhDb250ZW50VHlwZU9wdGlvbnNIZWFkZXJWYWx1ZTogdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVzcG9uc2VYQ29udGVudFR5cGVPcHRpb25zSGVhZGVyVmFsdWUsXG4gICAgICApLFxuICAgICAgcm91dGluZ0h0dHBSZXNwb25zZVhGcmFtZU9wdGlvbnNIZWFkZXJWYWx1ZTogdGhpcy5sYXp5U3RyaW5nQXR0cihcbiAgICAgICAgQXR0cmlidXRlLnJvdXRpbmdIVFRQUmVzcG9uc2VYRnJhbWVPcHRpb25zSGVhZGVyVmFsdWUsXG4gICAgICApLFxuICAgICAgdGNwSWRsZVRpbWVvdXRTZWNvbmRzOiB0aGlzLmxhenlOdW1iZXJBdHRyKFxuICAgICAgICBBdHRyaWJ1dGUudGNwSWRsZVRpbWVvdXRTZWNvbmRzLFxuICAgICAgKSxcbiAgICAgIC4uLmFkZGl0aW9uYWxQcm9wcyxcbiAgICAgIGRlZmF1bHRBY3Rpb246IExhenkuYW55VmFsdWUoe1xuICAgICAgICBwcm9kdWNlOiAoKTogdGZMaXN0ZW5lci5MYkxpc3RlbmVyRGVmYXVsdEFjdGlvbltdID0+IHtcbiAgICAgICAgICBjb25zdCByZW5kZXJlZCA9IHRoaXMuZGVmYXVsdEFjdGlvbj8ucmVuZGVyQWN0aW9ucygpID8/IFtdO1xuICAgICAgICAgIHJldHVybiByZW5kZXJlZC5tYXAodGZMaXN0ZW5lci5sYkxpc3RlbmVyRGVmYXVsdEFjdGlvblRvVGVycmFmb3JtKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLy8gbGlzdGVuZXJBdHRyaWJ1dGVzOiBMYXp5LmFueVZhbHVlKFxuICAgICAgLy8gICB7IHByb2R1Y2U6ICgpID0+IHJlbmRlckF0dHJpYnV0ZXModGhpcy5hdHRyaWJ1dGVzKSB9LFxuICAgICAgLy8gICB7IG9taXRFbXB0eUFycmF5OiB0cnVlIH0sXG4gICAgICAvLyApLFxuICAgIH0pO1xuXG4gICAgdGhpcy5saXN0ZW5lckFybiA9IHJlc291cmNlLmFybjtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7IHZhbGlkYXRlOiAoKSA9PiB0aGlzLnZhbGlkYXRlTGlzdGVuZXIoKSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBub24tc3RhbmRhcmQgYXR0cmlidXRlIG9uIHRoZSBsaXN0ZW5lclxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXItbGlzdGVuZXJhdHRyaWJ1dGUuaHRtbFxuICAgKi9cbiAgcHVibGljIHNldEF0dHJpYnV0ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuYXR0cmlidXRlc1trZXldID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuIGF0dHJpYnV0ZSBmcm9tIHRoZSBsaXN0ZW5lclxuICAgKi9cbiAgcHVibGljIHJlbW92ZUF0dHJpYnV0ZShrZXk6IHN0cmluZykge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKGtleSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgbGF6eVN0cmluZ0F0dHIoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICBwcm9kdWNlOiAoKSA9PiB0aGlzLmF0dHJpYnV0ZXNba2V5XSxcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGxhenlCb29sQXR0cihrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBMYXp5LmFueVZhbHVlKHtcbiAgICAgIHByb2R1Y2U6ICgpID0+IGxvb2t1cEJvb2xBdHRyaWJ1dGUodGhpcy5hdHRyaWJ1dGVzLCBrZXkpLFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgbGF6eU51bWJlckF0dHIoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gTGF6eS5udW1iZXJWYWx1ZSh7XG4gICAgICBwcm9kdWNlOiAoKSA9PiBsb29rdXBOdW1iZXJBdHRyaWJ1dGUodGhpcy5hdHRyaWJ1dGVzLCBrZXkpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoaXMgbGlzdGVuZXJcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUxpc3RlbmVyKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEFjdGlvbikge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgXCJMaXN0ZW5lciBuZWVkcyBhdCBsZWFzdCBvbmUgZGVmYXVsdCBhY3Rpb24gb3IgdGFyZ2V0IGdyb3VwIChjYWxsIGFkZFRhcmdldEdyb3VwcyBvciBhZGRBY3Rpb24pXCIsXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBkZWZhdWx0IGFjdGlvblxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfc2V0RGVmYXVsdEFjdGlvbihhY3Rpb246IElMaXN0ZW5lckFjdGlvbikge1xuICAgIC8vIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gJ3Rocm93JyBoZXJlLlxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgcHJvZ3JhbXMgbWF5IGFscmVhZHkgZXhpc3Qgb3V0IHRoZXJlIHdoaWNoIGNvbmZpZ3VyZWQgYW4gYWN0aW9uIHR3aWNlLFxuICAgIC8vIGluIHdoaWNoIGNhc2UgdGhlIHNlY29uZCBhY3Rpb24gYWNjaWRlbnRhbGx5IG92ZXJ3cml0ZSB0aGUgaW5pdGlhbCBhY3Rpb24sIGFuZCBpbiBzb21lXG4gICAgLy8gd2F5IGVuZGVkIHVwIHdpdGggYSBwcm9ncmFtIHRoYXQgZGlkIHdoYXQgdGhlIGF1dGhvciBpbnRlbmRlZC4gSWYgd2Ugd2VyZSB0byBhZGQgdGhyb3cgbm93LFxuICAgIC8vIHRoZSBwcmV2aW91c2x5IHdvcmtpbmcgcHJvZ3JhbSB3b3VsZCBiZSBicm9rZW4uXG4gICAgLy9cbiAgICAvLyBJbnN0ZWFkLCBzaWduYWwgdGhpcyB0aHJvdWdoIGEgd2FybmluZy5cbiAgICAvLyBAZGVwcmVjYXRlOiB1cG9uIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gYnVtcCwgcmVwbGFjZSB0aGlzIHdpdGggYSBgdGhyb3dgXG4gICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbikge1xuICAgICAgLy8gXCJAYXdzLWNkay9hd3MtZWxidjI6bGlzdGVuZXJFeGlzdGluZ0RlZmF1bHRBY3Rpb25SZXBsYWNlZFwiLFxuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZyhcbiAgICAgICAgXCJBIGRlZmF1bHQgQWN0aW9uIGFscmVhZHkgZXhpc3RlZCBvbiB0aGlzIExpc3RlbmVyIGFuZCB3YXMgcmVwbGFjZWQuIENvbmZpZ3VyZSBleGFjdGx5IG9uZSBkZWZhdWx0IEFjdGlvbi5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWZhdWx0QWN0aW9uID0gYWN0aW9uO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,212 @@
1
+ import { lb as tfLoadBalancer } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import * as ec2 from "../";
4
+ import { LoadBalancerType } from "./grid-lookup-types";
5
+ import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../../aws-construct";
6
+ import * as iam from "../../iam";
7
+ import * as s3 from "../../storage";
8
+ /**
9
+ * Shared properties of both Application and Network Load Balancers
10
+ */
11
+ export interface BaseLoadBalancerProps extends AwsConstructProps {
12
+ /**
13
+ * Name of the load balancer
14
+ *
15
+ * @default - Automatically generated name.
16
+ */
17
+ readonly loadBalancerName?: string;
18
+ /**
19
+ * The VPC network to place the load balancer in
20
+ */
21
+ readonly vpc: ec2.IVpc;
22
+ /**
23
+ * Whether the load balancer has an internet-routable address
24
+ *
25
+ * @default false
26
+ */
27
+ readonly internetFacing?: boolean;
28
+ /**
29
+ * Which subnets place the load balancer in
30
+ *
31
+ * @default - the Vpc default strategy.
32
+ *
33
+ */
34
+ readonly vpcSubnets?: ec2.SubnetSelection;
35
+ /**
36
+ * Indicates whether deletion protection is enabled.
37
+ *
38
+ * @default false
39
+ */
40
+ readonly deletionProtection?: boolean;
41
+ /**
42
+ * Indicates whether cross-zone load balancing is enabled.
43
+ *
44
+ * @default - false for Network Load Balancers and true for Application Load Balancers.
45
+ * This can not be `false` for Application Load Balancers.
46
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-loadbalancer-loadbalancerattribute.html
47
+ */
48
+ readonly crossZoneEnabled?: boolean;
49
+ /**
50
+ * Indicates whether the load balancer blocks traffic through the Internet Gateway (IGW).
51
+ *
52
+ * @default - false for internet-facing load balancers and true for internal load balancers
53
+ */
54
+ readonly denyAllIgwTraffic?: boolean;
55
+ }
56
+ /**
57
+ * Outputs which may be registered for output via the Grid.
58
+ */
59
+ export interface LoadBalancerV2Outputs {
60
+ /**
61
+ * The canonical hosted zone ID of this load balancer
62
+ *
63
+ * Example value: `Z2P70J7EXAMPLE`
64
+ *
65
+ * @attribute
66
+ */
67
+ readonly loadBalancerCanonicalHostedZoneId: string;
68
+ /**
69
+ * The DNS name of this load balancer
70
+ *
71
+ * Example value: `my-load-balancer-424835706.us-west-2.elb.amazonaws.com`
72
+ *
73
+ * @attribute
74
+ */
75
+ readonly loadBalancerDnsName: string;
76
+ }
77
+ export interface ILoadBalancerV2 extends IAwsConstruct {
78
+ /** Strongly typed outputs */
79
+ readonly loadBalancerV2Outputs: LoadBalancerV2Outputs;
80
+ /**
81
+ * The canonical hosted zone ID of this load balancer
82
+ *
83
+ * Example value: `Z2P70J7EXAMPLE`
84
+ *
85
+ * @attribute
86
+ */
87
+ readonly loadBalancerCanonicalHostedZoneId: string;
88
+ /**
89
+ * The DNS name of this load balancer
90
+ *
91
+ * Example value: `my-load-balancer-424835706.us-west-2.elb.amazonaws.com`
92
+ *
93
+ * @attribute
94
+ */
95
+ readonly loadBalancerDnsName: string;
96
+ }
97
+ /**
98
+ * Options for looking up load balancers
99
+ */
100
+ export interface BaseLoadBalancerLookupOptions {
101
+ /**
102
+ * Find by load balancer's ARN
103
+ * @default - does not search by load balancer arn
104
+ */
105
+ readonly loadBalancerArn?: string;
106
+ /**
107
+ * Match load balancer tags.
108
+ * @default - does not match load balancers by tags
109
+ */
110
+ readonly loadBalancerTags?: Record<string, string>;
111
+ }
112
+ /**
113
+ * Options for query context provider
114
+ * @internal
115
+ */
116
+ export interface LoadBalancerQueryContextProviderOptions {
117
+ /**
118
+ * User's lookup options
119
+ */
120
+ readonly userOptions: BaseLoadBalancerLookupOptions;
121
+ /**
122
+ * Type of load balancer
123
+ */
124
+ readonly loadBalancerType: LoadBalancerType;
125
+ }
126
+ /**
127
+ * Base class for both Application and Network Load Balancers
128
+ */
129
+ export declare abstract class BaseLoadBalancer extends AwsConstructBase {
130
+ get loadBalancerV2Outputs(): LoadBalancerV2Outputs;
131
+ get outputs(): Record<string, any>;
132
+ /**
133
+ * The canonical hosted zone ID of this load balancer
134
+ *
135
+ * Example value: `Z2P70J7EXAMPLE`
136
+ *
137
+ * @attribute
138
+ */
139
+ readonly loadBalancerCanonicalHostedZoneId: string;
140
+ /**
141
+ * The DNS name of this load balancer
142
+ *
143
+ * Example value: `my-load-balancer-424835706.us-west-2.elb.amazonaws.com`
144
+ *
145
+ * @attribute
146
+ */
147
+ readonly loadBalancerDnsName: string;
148
+ /**
149
+ * The full name of this load balancer
150
+ *
151
+ * Example value: `app/my-load-balancer/50dc6c495c0c9188`
152
+ *
153
+ * @attribute
154
+ */
155
+ readonly loadBalancerFullName: string;
156
+ /**
157
+ * The name of this load balancer
158
+ *
159
+ * Example value: `my-load-balancer`
160
+ *
161
+ * @attribute
162
+ */
163
+ readonly loadBalancerName: string;
164
+ /**
165
+ * The ARN of this load balancer
166
+ *
167
+ * Example value: `arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-internal-load-balancer/50dc6c495c0c9188`
168
+ *
169
+ * @attribute
170
+ */
171
+ readonly loadBalancerArn: string;
172
+ /**
173
+ * @attribute
174
+ */
175
+ readonly loadBalancerSecurityGroups: string[];
176
+ /**
177
+ * The VPC this load balancer has been created in.
178
+ *
179
+ * This property is always defined (not `null` or `undefined`) for sub-classes of `BaseLoadBalancer`.
180
+ */
181
+ readonly vpc?: ec2.IVpc;
182
+ /**
183
+ * Attributes set on this load balancer
184
+ */
185
+ private readonly attributes;
186
+ private readonly physicalName;
187
+ constructor(scope: Construct, id: string, baseProps: BaseLoadBalancerProps, additionalProps: tfLoadBalancer.LbConfig);
188
+ /**
189
+ * Enable access logging for this load balancer.
190
+ *
191
+ * A region must be specified on the stack containing the load balancer; you cannot enable logging on
192
+ * environment-agnostic stacks. See https://docs.aws.amazon.com/cdk/latest/guide/environments.html
193
+ */
194
+ logAccessLogs(bucket: s3.IBucket, prefix?: string): void;
195
+ /**
196
+ * Set a non-standard attribute on the load balancer
197
+ *
198
+ * Use the dedicated logAccessLogs() method intead of setAttribute if you want to setup access logging.
199
+ *
200
+ * @see https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#load-balancer-attributes
201
+ */
202
+ setAttribute(key: string, value: string | undefined): void;
203
+ /**
204
+ * Remove an attribute from the load balancer
205
+ */
206
+ removeAttribute(key: string): void;
207
+ protected lazyStringAttr(key: string): string;
208
+ protected lazyBoolAttr(key: string): import("cdktf").IResolvable;
209
+ protected lazyNumberAttr(key: string): number;
210
+ protected resourcePolicyPrincipal(): iam.IPrincipal;
211
+ protected validateLoadBalancer(): string[];
212
+ }