terraconstructs 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (680) hide show
  1. package/.envrc +5 -0
  2. package/.jsii +79780 -0
  3. package/.mise.toml +8 -0
  4. package/.nvmrc +1 -0
  5. package/.terraform-version +1 -0
  6. package/.terraform.d/plugin-cache/.gitignore +5 -0
  7. package/LICENSE +674 -0
  8. package/NOTICE.txt +12 -0
  9. package/README.md +42 -0
  10. package/bun.lockb +0 -0
  11. package/go.mod +158 -0
  12. package/go.sum +1206 -0
  13. package/lib/aws/arn.d.ts +187 -0
  14. package/lib/aws/arn.js +383 -0
  15. package/lib/aws/aws-construct.d.ts +76 -0
  16. package/lib/aws/aws-construct.js +38 -0
  17. package/lib/aws/aws-stack.d.ts +201 -0
  18. package/lib/aws/aws-stack.js +303 -0
  19. package/lib/aws/cloudwatch/actions/ec2.d.ts +35 -0
  20. package/lib/aws/cloudwatch/actions/ec2.js +48 -0
  21. package/lib/aws/cloudwatch/actions/index.d.ts +2 -0
  22. package/lib/aws/cloudwatch/actions/index.js +24 -0
  23. package/lib/aws/cloudwatch/actions/lambda.d.ts +16 -0
  24. package/lib/aws/cloudwatch/actions/lambda.js +48 -0
  25. package/lib/aws/cloudwatch/alarm-action.d.ts +23 -0
  26. package/lib/aws/cloudwatch/alarm-action.js +4 -0
  27. package/lib/aws/cloudwatch/alarm-base.d.ts +84 -0
  28. package/lib/aws/cloudwatch/alarm-base.js +64 -0
  29. package/lib/aws/cloudwatch/alarm-rule.d.ts +61 -0
  30. package/lib/aws/cloudwatch/alarm-rule.js +116 -0
  31. package/lib/aws/cloudwatch/alarm-status-widget.d.ts +77 -0
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +62 -0
  33. package/lib/aws/cloudwatch/alarm.d.ts +158 -0
  34. package/lib/aws/cloudwatch/alarm.js +410 -0
  35. package/lib/aws/cloudwatch/composite-alarm.d.ts +88 -0
  36. package/lib/aws/cloudwatch/composite-alarm.js +98 -0
  37. package/lib/aws/cloudwatch/dashboard.d.ts +137 -0
  38. package/lib/aws/cloudwatch/dashboard.js +141 -0
  39. package/lib/aws/cloudwatch/data-protection-policy.d.ts +184 -0
  40. package/lib/aws/cloudwatch/data-protection-policy.js +246 -0
  41. package/lib/aws/cloudwatch/graph.d.ts +792 -0
  42. package/lib/aws/cloudwatch/graph.js +537 -0
  43. package/lib/aws/cloudwatch/index.d.ts +26 -0
  44. package/lib/aws/cloudwatch/index.js +49 -0
  45. package/lib/aws/cloudwatch/layout.d.ts +89 -0
  46. package/lib/aws/cloudwatch/layout.js +147 -0
  47. package/lib/aws/cloudwatch/log-destinations/index.d.ts +2 -0
  48. package/lib/aws/cloudwatch/log-destinations/index.js +20 -0
  49. package/lib/aws/cloudwatch/log-destinations/kinesis.d.ts +29 -0
  50. package/lib/aws/cloudwatch/log-destinations/kinesis.js +52 -0
  51. package/lib/aws/cloudwatch/log-destinations/lambda.d.ts +22 -0
  52. package/lib/aws/cloudwatch/log-destinations/lambda.js +46 -0
  53. package/lib/aws/cloudwatch/log-group.d.ts +453 -0
  54. package/lib/aws/cloudwatch/log-group.js +350 -0
  55. package/lib/aws/cloudwatch/log-query.d.ts +91 -0
  56. package/lib/aws/cloudwatch/log-query.js +85 -0
  57. package/lib/aws/cloudwatch/log-stream.d.ts +57 -0
  58. package/lib/aws/cloudwatch/log-stream.js +57 -0
  59. package/lib/aws/cloudwatch/metric-filter.d.ts +30 -0
  60. package/lib/aws/cloudwatch/metric-filter.js +69 -0
  61. package/lib/aws/cloudwatch/metric-types.d.ts +407 -0
  62. package/lib/aws/cloudwatch/metric-types.js +151 -0
  63. package/lib/aws/cloudwatch/metric.d.ts +492 -0
  64. package/lib/aws/cloudwatch/metric.js +493 -0
  65. package/lib/aws/cloudwatch/pattern.d.ts +195 -0
  66. package/lib/aws/cloudwatch/pattern.js +412 -0
  67. package/lib/aws/cloudwatch/policy.d.ts +43 -0
  68. package/lib/aws/cloudwatch/policy.js +50 -0
  69. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +14 -0
  70. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +37 -0
  71. package/lib/aws/cloudwatch/private/env-tokens.d.ts +8 -0
  72. package/lib/aws/cloudwatch/private/env-tokens.js +48 -0
  73. package/lib/aws/cloudwatch/private/metric-util.d.ts +60 -0
  74. package/lib/aws/cloudwatch/private/metric-util.js +132 -0
  75. package/lib/aws/cloudwatch/private/object.d.ts +1 -0
  76. package/lib/aws/cloudwatch/private/object.js +18 -0
  77. package/lib/aws/cloudwatch/private/rendering.d.ts +60 -0
  78. package/lib/aws/cloudwatch/private/rendering.js +181 -0
  79. package/lib/aws/cloudwatch/private/statistic.d.ts +51 -0
  80. package/lib/aws/cloudwatch/private/statistic.js +176 -0
  81. package/lib/aws/cloudwatch/query-definition.d.ts +150 -0
  82. package/lib/aws/cloudwatch/query-definition.js +114 -0
  83. package/lib/aws/cloudwatch/stats.d.ts +150 -0
  84. package/lib/aws/cloudwatch/stats.js +207 -0
  85. package/lib/aws/cloudwatch/subscription-filter.d.ts +75 -0
  86. package/lib/aws/cloudwatch/subscription-filter.js +51 -0
  87. package/lib/aws/cloudwatch/text.d.ts +52 -0
  88. package/lib/aws/cloudwatch/text.js +53 -0
  89. package/lib/aws/cloudwatch/variable.d.ts +156 -0
  90. package/lib/aws/cloudwatch/variable.js +156 -0
  91. package/lib/aws/cloudwatch/widget.d.ts +62 -0
  92. package/lib/aws/cloudwatch/widget.js +45 -0
  93. package/lib/aws/compute/activity.d.ts +81 -0
  94. package/lib/aws/compute/activity.js +132 -0
  95. package/lib/aws/compute/architecture.d.ts +33 -0
  96. package/lib/aws/compute/architecture.js +42 -0
  97. package/lib/aws/compute/chain.d.ts +52 -0
  98. package/lib/aws/compute/chain.js +68 -0
  99. package/lib/aws/compute/condition.d.ts +202 -0
  100. package/lib/aws/compute/condition.js +409 -0
  101. package/lib/aws/compute/event-invoke-config.d.ts +74 -0
  102. package/lib/aws/compute/event-invoke-config.js +63 -0
  103. package/lib/aws/compute/event-source-filter.d.ts +64 -0
  104. package/lib/aws/compute/event-source-filter.js +86 -0
  105. package/lib/aws/compute/event-source-mapping.d.ts +310 -0
  106. package/lib/aws/compute/event-source-mapping.js +267 -0
  107. package/lib/aws/compute/event-sources/index.d.ts +4 -0
  108. package/lib/aws/compute/event-sources/index.js +28 -0
  109. package/lib/aws/compute/event-sources/s3-onfailure-destination.d.ts +13 -0
  110. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +26 -0
  111. package/lib/aws/compute/event-sources/s3.d.ts +24 -0
  112. package/lib/aws/compute/event-sources/s3.js +25 -0
  113. package/lib/aws/compute/event-sources/sqs-dlq.d.ts +13 -0
  114. package/lib/aws/compute/event-sources/sqs-dlq.js +26 -0
  115. package/lib/aws/compute/event-sources/sqs.d.ts +75 -0
  116. package/lib/aws/compute/event-sources/sqs.js +84 -0
  117. package/lib/aws/compute/fields.d.ts +367 -0
  118. package/lib/aws/compute/fields.js +546 -0
  119. package/lib/aws/compute/function-alias.d.ts +148 -0
  120. package/lib/aws/compute/function-alias.js +176 -0
  121. package/lib/aws/compute/function-base.d.ts +314 -0
  122. package/lib/aws/compute/function-base.js +421 -0
  123. package/lib/aws/compute/function-destination.d.ts +42 -0
  124. package/lib/aws/compute/function-destination.js +18 -0
  125. package/lib/aws/compute/function-destinations/event-bridge.d.ts +19 -0
  126. package/lib/aws/compute/function-destinations/event-bridge.js +46 -0
  127. package/lib/aws/compute/function-destinations/function.d.ts +34 -0
  128. package/lib/aws/compute/function-destinations/function.js +55 -0
  129. package/lib/aws/compute/function-destinations/index.d.ts +3 -0
  130. package/lib/aws/compute/function-destinations/index.js +22 -0
  131. package/lib/aws/compute/function-destinations/sqs.d.ts +14 -0
  132. package/lib/aws/compute/function-destinations/sqs.js +27 -0
  133. package/lib/aws/compute/function-nodejs.d.ts +55 -0
  134. package/lib/aws/compute/function-nodejs.js +70 -0
  135. package/lib/aws/compute/function-permission.d.ts +83 -0
  136. package/lib/aws/compute/function-permission.js +3 -0
  137. package/lib/aws/compute/function-url.d.ts +210 -0
  138. package/lib/aws/compute/function-url.js +148 -0
  139. package/lib/aws/compute/function-vpc-config.generated.d.ts +36 -0
  140. package/lib/aws/compute/function-vpc-config.generated.js +3 -0
  141. package/lib/aws/compute/function.d.ts +492 -0
  142. package/lib/aws/compute/function.js +692 -0
  143. package/lib/aws/compute/index.d.ts +42 -0
  144. package/lib/aws/compute/index.js +64 -0
  145. package/lib/aws/compute/private/intrinstics.d.ts +86 -0
  146. package/lib/aws/compute/private/intrinstics.js +220 -0
  147. package/lib/aws/compute/private/json-path.d.ts +57 -0
  148. package/lib/aws/compute/private/json-path.js +351 -0
  149. package/lib/aws/compute/private/util.d.ts +1 -0
  150. package/lib/aws/compute/private/util.js +38 -0
  151. package/lib/aws/compute/state-graph.d.ts +100 -0
  152. package/lib/aws/compute/state-graph.js +177 -0
  153. package/lib/aws/compute/state-machine-fragment.d.ts +61 -0
  154. package/lib/aws/compute/state-machine-fragment.js +56 -0
  155. package/lib/aws/compute/state-machine.d.ts +323 -0
  156. package/lib/aws/compute/state-machine.js +392 -0
  157. package/lib/aws/compute/states/choice.d.ts +94 -0
  158. package/lib/aws/compute/states/choice.js +81 -0
  159. package/lib/aws/compute/states/custom-state.d.ts +55 -0
  160. package/lib/aws/compute/states/custom-state.js +114 -0
  161. package/lib/aws/compute/states/distributed-map/item-batcher.d.ts +64 -0
  162. package/lib/aws/compute/states/distributed-map/item-batcher.js +58 -0
  163. package/lib/aws/compute/states/distributed-map/item-reader.d.ts +256 -0
  164. package/lib/aws/compute/states/distributed-map/item-reader.js +253 -0
  165. package/lib/aws/compute/states/distributed-map/result-writer.d.ts +41 -0
  166. package/lib/aws/compute/states/distributed-map/result-writer.js +66 -0
  167. package/lib/aws/compute/states/distributed-map.d.ts +153 -0
  168. package/lib/aws/compute/states/distributed-map.js +207 -0
  169. package/lib/aws/compute/states/fail.d.ts +74 -0
  170. package/lib/aws/compute/states/fail.js +83 -0
  171. package/lib/aws/compute/states/map-base.d.ts +145 -0
  172. package/lib/aws/compute/states/map-base.js +109 -0
  173. package/lib/aws/compute/states/map.d.ts +76 -0
  174. package/lib/aws/compute/states/map.js +110 -0
  175. package/lib/aws/compute/states/parallel.d.ts +113 -0
  176. package/lib/aws/compute/states/parallel.js +100 -0
  177. package/lib/aws/compute/states/pass.d.ts +122 -0
  178. package/lib/aws/compute/states/pass.js +99 -0
  179. package/lib/aws/compute/states/private/state-type.d.ts +13 -0
  180. package/lib/aws/compute/states/private/state-type.js +19 -0
  181. package/lib/aws/compute/states/state.d.ts +276 -0
  182. package/lib/aws/compute/states/state.js +482 -0
  183. package/lib/aws/compute/states/succeed.d.ts +51 -0
  184. package/lib/aws/compute/states/succeed.js +32 -0
  185. package/lib/aws/compute/states/task-base.d.ts +225 -0
  186. package/lib/aws/compute/states/task-base.js +160 -0
  187. package/lib/aws/compute/states/task.d.ts +127 -0
  188. package/lib/aws/compute/states/task.js +92 -0
  189. package/lib/aws/compute/states/wait.d.ts +78 -0
  190. package/lib/aws/compute/states/wait.js +90 -0
  191. package/lib/aws/compute/step-functions-task.d.ts +78 -0
  192. package/lib/aws/compute/step-functions-task.js +27 -0
  193. package/lib/aws/compute/task-credentials.d.ts +45 -0
  194. package/lib/aws/compute/task-credentials.js +52 -0
  195. package/lib/aws/compute/task-input.d.ts +86 -0
  196. package/lib/aws/compute/task-input.js +107 -0
  197. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.d.ts +73 -0
  198. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +69 -0
  199. package/lib/aws/compute/tasks/eventbridge/put-events.d.ts +74 -0
  200. package/lib/aws/compute/tasks/eventbridge/put-events.js +94 -0
  201. package/lib/aws/compute/tasks/http/invoke.d.ts +104 -0
  202. package/lib/aws/compute/tasks/http/invoke.js +117 -0
  203. package/lib/aws/compute/tasks/index.d.ts +7 -0
  204. package/lib/aws/compute/tasks/index.js +42 -0
  205. package/lib/aws/compute/tasks/lambda/invoke.d.ts +106 -0
  206. package/lib/aws/compute/tasks/lambda/invoke.js +125 -0
  207. package/lib/aws/compute/tasks/private/task-utils.d.ts +8 -0
  208. package/lib/aws/compute/tasks/private/task-utils.js +36 -0
  209. package/lib/aws/compute/tasks/resource-arn-suffix.d.ts +3 -0
  210. package/lib/aws/compute/tasks/resource-arn-suffix.js +25 -0
  211. package/lib/aws/compute/tasks/sqs/send-message.d.ts +62 -0
  212. package/lib/aws/compute/tasks/sqs/send-message.js +70 -0
  213. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.d.ts +36 -0
  214. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +45 -0
  215. package/lib/aws/compute/tasks/stepfunctions/start-execution.d.ts +63 -0
  216. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +123 -0
  217. package/lib/aws/compute/types.d.ts +214 -0
  218. package/lib/aws/compute/types.js +103 -0
  219. package/lib/aws/compute/util.d.ts +12 -0
  220. package/lib/aws/compute/util.js +29 -0
  221. package/lib/aws/edge/certificate.d.ts +144 -0
  222. package/lib/aws/edge/certificate.js +191 -0
  223. package/lib/aws/edge/distribution.d.ts +505 -0
  224. package/lib/aws/edge/distribution.js +444 -0
  225. package/lib/aws/edge/dns-alias-record-targets.d.ts +29 -0
  226. package/lib/aws/edge/dns-alias-record-targets.js +46 -0
  227. package/lib/aws/edge/dns-record.d.ts +536 -0
  228. package/lib/aws/edge/dns-record.js +532 -0
  229. package/lib/aws/edge/dns-zone.d.ts +169 -0
  230. package/lib/aws/edge/dns-zone.js +149 -0
  231. package/lib/aws/edge/function.d.ts +185 -0
  232. package/lib/aws/edge/function.js +141 -0
  233. package/lib/aws/edge/index.d.ts +8 -0
  234. package/lib/aws/edge/index.js +25 -0
  235. package/lib/aws/edge/key-value-store.d.ts +162 -0
  236. package/lib/aws/edge/key-value-store.js +163 -0
  237. package/lib/aws/edge/origin.d.ts +160 -0
  238. package/lib/aws/edge/origin.js +245 -0
  239. package/lib/aws/encryption/alias.d.ts +137 -0
  240. package/lib/aws/encryption/alias.js +216 -0
  241. package/lib/aws/encryption/index.d.ts +4 -0
  242. package/lib/aws/encryption/index.js +21 -0
  243. package/lib/aws/encryption/key-lookup.d.ts +11 -0
  244. package/lib/aws/encryption/key-lookup.js +4 -0
  245. package/lib/aws/encryption/key.d.ts +461 -0
  246. package/lib/aws/encryption/key.js +586 -0
  247. package/lib/aws/encryption/private/perms.d.ts +5 -0
  248. package/lib/aws/encryption/private/perms.js +30 -0
  249. package/lib/aws/encryption/via-service-principal.d.ts +11 -0
  250. package/lib/aws/encryption/via-service-principal.js +39 -0
  251. package/lib/aws/iam/grant.d.ts +221 -0
  252. package/lib/aws/iam/grant.js +239 -0
  253. package/lib/aws/iam/identity-base.d.ts +20 -0
  254. package/lib/aws/iam/identity-base.js +3 -0
  255. package/lib/aws/iam/index.d.ts +16 -0
  256. package/lib/aws/iam/index.js +34 -0
  257. package/lib/aws/iam/managed-policy.d.ts +227 -0
  258. package/lib/aws/iam/managed-policy.js +237 -0
  259. package/lib/aws/iam/oidc-provider.d.ts +120 -0
  260. package/lib/aws/iam/oidc-provider.js +82 -0
  261. package/lib/aws/iam/policy-document-config.generated.d.ts +78 -0
  262. package/lib/aws/iam/policy-document-config.generated.js +3 -0
  263. package/lib/aws/iam/policy-document.d.ts +150 -0
  264. package/lib/aws/iam/policy-document.js +172 -0
  265. package/lib/aws/iam/policy-statement-props.generated.d.ts +55 -0
  266. package/lib/aws/iam/policy-statement-props.generated.js +3 -0
  267. package/lib/aws/iam/policy-statement.d.ts +451 -0
  268. package/lib/aws/iam/policy-statement.js +947 -0
  269. package/lib/aws/iam/policy.d.ts +122 -0
  270. package/lib/aws/iam/policy.js +192 -0
  271. package/lib/aws/iam/principals.d.ts +668 -0
  272. package/lib/aws/iam/principals.js +1032 -0
  273. package/lib/aws/iam/private/adapter.d.ts +21 -0
  274. package/lib/aws/iam/private/adapter.js +51 -0
  275. package/lib/aws/iam/private/assume-role-policy.d.ts +8 -0
  276. package/lib/aws/iam/private/assume-role-policy.js +27 -0
  277. package/lib/aws/iam/private/comparable-principal.d.ts +6 -0
  278. package/lib/aws/iam/private/comparable-principal.js +20 -0
  279. package/lib/aws/iam/private/immutable-role.d.ts +43 -0
  280. package/lib/aws/iam/private/immutable-role.js +76 -0
  281. package/lib/aws/iam/private/imported-role.d.ts +49 -0
  282. package/lib/aws/iam/private/imported-role.js +103 -0
  283. package/lib/aws/iam/private/merge-statements.d.ts +44 -0
  284. package/lib/aws/iam/private/merge-statements.js +214 -0
  285. package/lib/aws/iam/private/postprocess-policy-document.d.ts +15 -0
  286. package/lib/aws/iam/private/postprocess-policy-document.js +102 -0
  287. package/lib/aws/iam/private/util.d.ts +37 -0
  288. package/lib/aws/iam/private/util.js +87 -0
  289. package/lib/aws/iam/role.d.ts +425 -0
  290. package/lib/aws/iam/role.js +407 -0
  291. package/lib/aws/iam/saml-provider.d.ts +79 -0
  292. package/lib/aws/iam/saml-provider.js +79 -0
  293. package/lib/aws/iam/unknown-principal.d.ts +32 -0
  294. package/lib/aws/iam/unknown-principal.js +45 -0
  295. package/lib/aws/iam/utils.d.ts +12 -0
  296. package/lib/aws/iam/utils.js +41 -0
  297. package/lib/aws/index.d.ts +13 -0
  298. package/lib/aws/index.js +34 -0
  299. package/lib/aws/log-retention.d.ts +97 -0
  300. package/lib/aws/log-retention.js +103 -0
  301. package/lib/aws/network/index.d.ts +4 -0
  302. package/lib/aws/network/index.js +21 -0
  303. package/lib/aws/network/network.d.ts +77 -0
  304. package/lib/aws/network/network.js +3 -0
  305. package/lib/aws/network/simple-ipv4-vpc.d.ts +84 -0
  306. package/lib/aws/network/simple-ipv4-vpc.js +236 -0
  307. package/lib/aws/network/subnet-group.d.ts +42 -0
  308. package/lib/aws/network/subnet-group.js +72 -0
  309. package/lib/aws/network/subnet.d.ts +95 -0
  310. package/lib/aws/network/subnet.js +123 -0
  311. package/lib/aws/notify/archive.d.ts +77 -0
  312. package/lib/aws/notify/archive.js +62 -0
  313. package/lib/aws/notify/connection.d.ts +276 -0
  314. package/lib/aws/notify/connection.js +261 -0
  315. package/lib/aws/notify/event-bus.d.ts +298 -0
  316. package/lib/aws/notify/event-bus.js +326 -0
  317. package/lib/aws/notify/event-pattern.d.ts +220 -0
  318. package/lib/aws/notify/event-pattern.js +197 -0
  319. package/lib/aws/notify/index.d.ts +15 -0
  320. package/lib/aws/notify/index.js +35 -0
  321. package/lib/aws/notify/input.d.ts +126 -0
  322. package/lib/aws/notify/input.js +282 -0
  323. package/lib/aws/notify/kinesis-canned-metrics.generated.d.ts +68 -0
  324. package/lib/aws/notify/kinesis-canned-metrics.generated.js +103 -0
  325. package/lib/aws/notify/kinesis-fixed-canned-metrics.d.ts +195 -0
  326. package/lib/aws/notify/kinesis-fixed-canned-metrics.js +155 -0
  327. package/lib/aws/notify/kinesis-stream.d.ts +705 -0
  328. package/lib/aws/notify/kinesis-stream.js +541 -0
  329. package/lib/aws/notify/on-event-options.d.ts +54 -0
  330. package/lib/aws/notify/on-event-options.js +3 -0
  331. package/lib/aws/notify/queue-config.generated.d.ts +85 -0
  332. package/lib/aws/notify/queue-config.generated.js +3 -0
  333. package/lib/aws/notify/queue-policy.d.ts +35 -0
  334. package/lib/aws/notify/queue-policy.js +39 -0
  335. package/lib/aws/notify/queue.d.ts +355 -0
  336. package/lib/aws/notify/queue.js +305 -0
  337. package/lib/aws/notify/resource-policy.d.ts +41 -0
  338. package/lib/aws/notify/resource-policy.js +43 -0
  339. package/lib/aws/notify/rule.d.ts +153 -0
  340. package/lib/aws/notify/rule.js +227 -0
  341. package/lib/aws/notify/schedule.d.ts +83 -0
  342. package/lib/aws/notify/schedule.js +116 -0
  343. package/lib/aws/notify/target.d.ts +102 -0
  344. package/lib/aws/notify/target.js +3 -0
  345. package/lib/aws/notify/targets/event-bus.d.ts +39 -0
  346. package/lib/aws/notify/targets/event-bus.js +40 -0
  347. package/lib/aws/notify/targets/function.d.ts +31 -0
  348. package/lib/aws/notify/targets/function.js +36 -0
  349. package/lib/aws/notify/targets/index.d.ts +6 -0
  350. package/lib/aws/notify/targets/index.js +37 -0
  351. package/lib/aws/notify/targets/log-group.d.ts +89 -0
  352. package/lib/aws/notify/targets/log-group.js +110 -0
  353. package/lib/aws/notify/targets/sqs.d.ts +45 -0
  354. package/lib/aws/notify/targets/sqs.js +73 -0
  355. package/lib/aws/notify/targets/state-machine.d.ts +36 -0
  356. package/lib/aws/notify/targets/state-machine.js +39 -0
  357. package/lib/aws/notify/targets/util.d.ts +71 -0
  358. package/lib/aws/notify/targets/util.js +130 -0
  359. package/lib/aws/notify/util.d.ts +13 -0
  360. package/lib/aws/notify/util.js +69 -0
  361. package/lib/aws/provider-config.generated.d.ts +220 -0
  362. package/lib/aws/provider-config.generated.js +3 -0
  363. package/lib/aws/storage/bucket-destination.d.ts +41 -0
  364. package/lib/aws/storage/bucket-destination.js +13 -0
  365. package/lib/aws/storage/bucket-notifications.d.ts +58 -0
  366. package/lib/aws/storage/bucket-notifications.js +169 -0
  367. package/lib/aws/storage/bucket-perms.d.ts +9 -0
  368. package/lib/aws/storage/bucket-perms.js +33 -0
  369. package/lib/aws/storage/bucket-policy.d.ts +51 -0
  370. package/lib/aws/storage/bucket-policy.js +53 -0
  371. package/lib/aws/storage/bucket-source.d.ts +41 -0
  372. package/lib/aws/storage/bucket-source.js +79 -0
  373. package/lib/aws/storage/bucket.d.ts +941 -0
  374. package/lib/aws/storage/bucket.js +869 -0
  375. package/lib/aws/storage/cors-config.generated.d.ts +57 -0
  376. package/lib/aws/storage/cors-config.generated.js +3 -0
  377. package/lib/aws/storage/cors-rule-config.generated.d.ts +38 -0
  378. package/lib/aws/storage/cors-rule-config.generated.js +3 -0
  379. package/lib/aws/storage/index.d.ts +12 -0
  380. package/lib/aws/storage/index.js +31 -0
  381. package/lib/aws/storage/lifecycle-config.generated.d.ts +55 -0
  382. package/lib/aws/storage/lifecycle-config.generated.js +3 -0
  383. package/lib/aws/storage/notification-targets/function.d.ts +11 -0
  384. package/lib/aws/storage/notification-targets/function.js +48 -0
  385. package/lib/aws/storage/notification-targets/index.d.ts +2 -0
  386. package/lib/aws/storage/notification-targets/index.js +21 -0
  387. package/lib/aws/storage/notification-targets/queue.d.ts +15 -0
  388. package/lib/aws/storage/notification-targets/queue.js +58 -0
  389. package/lib/aws/storage/origin-access-identity.d.ts +91 -0
  390. package/lib/aws/storage/origin-access-identity.js +76 -0
  391. package/lib/aws/storage/util.d.ts +40 -0
  392. package/lib/aws/storage/util.js +85 -0
  393. package/lib/aws/storage/website-config.generated.d.ts +73 -0
  394. package/lib/aws/storage/website-config.generated.js +3 -0
  395. package/lib/aws/util.d.ts +4 -0
  396. package/lib/aws/util.js +25 -0
  397. package/lib/construct-base.d.ts +69 -0
  398. package/lib/construct-base.js +89 -0
  399. package/lib/duration.d.ts +160 -0
  400. package/lib/duration.js +327 -0
  401. package/lib/index.d.ts +5 -0
  402. package/lib/index.js +24 -0
  403. package/lib/private/index.d.ts +2 -0
  404. package/lib/private/index.js +19 -0
  405. package/lib/private/terraform-dependables-aspect.d.ts +20 -0
  406. package/lib/private/terraform-dependables-aspect.js +95 -0
  407. package/lib/private/unique-resource-name.d.ts +9 -0
  408. package/lib/private/unique-resource-name.js +145 -0
  409. package/lib/size.d.ts +146 -0
  410. package/lib/size.js +220 -0
  411. package/lib/stack-base.d.ts +188 -0
  412. package/lib/stack-base.js +183 -0
  413. package/lib/token.d.ts +32 -0
  414. package/lib/token.js +54 -0
  415. package/node_modules/camel-case/LICENSE +21 -0
  416. package/node_modules/camel-case/README.md +47 -0
  417. package/node_modules/camel-case/dist/index.d.ts +5 -0
  418. package/node_modules/camel-case/dist/index.js +23 -0
  419. package/node_modules/camel-case/dist/index.js.map +1 -0
  420. package/node_modules/camel-case/dist/index.spec.d.ts +1 -0
  421. package/node_modules/camel-case/dist/index.spec.js +26 -0
  422. package/node_modules/camel-case/dist/index.spec.js.map +1 -0
  423. package/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
  424. package/node_modules/camel-case/dist.es2015/index.js +17 -0
  425. package/node_modules/camel-case/dist.es2015/index.js.map +1 -0
  426. package/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
  427. package/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
  428. package/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
  429. package/node_modules/camel-case/package.json +89 -0
  430. package/node_modules/capital-case/LICENSE +21 -0
  431. package/node_modules/capital-case/README.md +37 -0
  432. package/node_modules/capital-case/dist/index.d.ts +4 -0
  433. package/node_modules/capital-case/dist/index.js +16 -0
  434. package/node_modules/capital-case/dist/index.js.map +1 -0
  435. package/node_modules/capital-case/dist/index.spec.d.ts +1 -0
  436. package/node_modules/capital-case/dist/index.spec.js +24 -0
  437. package/node_modules/capital-case/dist/index.spec.js.map +1 -0
  438. package/node_modules/capital-case/dist.es2015/index.d.ts +4 -0
  439. package/node_modules/capital-case/dist.es2015/index.js +11 -0
  440. package/node_modules/capital-case/dist.es2015/index.js.map +1 -0
  441. package/node_modules/capital-case/dist.es2015/index.spec.d.ts +1 -0
  442. package/node_modules/capital-case/dist.es2015/index.spec.js +22 -0
  443. package/node_modules/capital-case/dist.es2015/index.spec.js.map +1 -0
  444. package/node_modules/capital-case/package.json +90 -0
  445. package/node_modules/change-case/LICENSE +21 -0
  446. package/node_modules/change-case/README.md +44 -0
  447. package/node_modules/change-case/dist/index.d.ts +11 -0
  448. package/node_modules/change-case/dist/index.js +15 -0
  449. package/node_modules/change-case/dist/index.js.map +1 -0
  450. package/node_modules/change-case/dist/index.spec.d.ts +1 -0
  451. package/node_modules/change-case/dist/index.spec.js +9 -0
  452. package/node_modules/change-case/dist/index.spec.js.map +1 -0
  453. package/node_modules/change-case/dist.es2015/index.d.ts +11 -0
  454. package/node_modules/change-case/dist.es2015/index.js +12 -0
  455. package/node_modules/change-case/dist.es2015/index.js.map +1 -0
  456. package/node_modules/change-case/dist.es2015/index.spec.d.ts +1 -0
  457. package/node_modules/change-case/dist.es2015/index.spec.js +7 -0
  458. package/node_modules/change-case/dist.es2015/index.spec.js.map +1 -0
  459. package/node_modules/change-case/package.json +101 -0
  460. package/node_modules/constant-case/LICENSE +21 -0
  461. package/node_modules/constant-case/README.md +37 -0
  462. package/node_modules/constant-case/dist/index.d.ts +3 -0
  463. package/node_modules/constant-case/dist/index.js +12 -0
  464. package/node_modules/constant-case/dist/index.js.map +1 -0
  465. package/node_modules/constant-case/dist/index.spec.d.ts +1 -0
  466. package/node_modules/constant-case/dist/index.spec.js +26 -0
  467. package/node_modules/constant-case/dist/index.spec.js.map +1 -0
  468. package/node_modules/constant-case/dist.es2015/index.d.ts +3 -0
  469. package/node_modules/constant-case/dist.es2015/index.js +8 -0
  470. package/node_modules/constant-case/dist.es2015/index.js.map +1 -0
  471. package/node_modules/constant-case/dist.es2015/index.spec.d.ts +1 -0
  472. package/node_modules/constant-case/dist.es2015/index.spec.js +24 -0
  473. package/node_modules/constant-case/dist.es2015/index.spec.js.map +1 -0
  474. package/node_modules/constant-case/package.json +90 -0
  475. package/node_modules/dot-case/LICENSE +21 -0
  476. package/node_modules/dot-case/README.md +37 -0
  477. package/node_modules/dot-case/dist/index.d.ts +3 -0
  478. package/node_modules/dot-case/dist/index.js +11 -0
  479. package/node_modules/dot-case/dist/index.js.map +1 -0
  480. package/node_modules/dot-case/dist/index.spec.d.ts +1 -0
  481. package/node_modules/dot-case/dist/index.spec.js +26 -0
  482. package/node_modules/dot-case/dist/index.spec.js.map +1 -0
  483. package/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
  484. package/node_modules/dot-case/dist.es2015/index.js +7 -0
  485. package/node_modules/dot-case/dist.es2015/index.js.map +1 -0
  486. package/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
  487. package/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
  488. package/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
  489. package/node_modules/dot-case/package.json +89 -0
  490. package/node_modules/esbuild-wasm/LICENSE.md +21 -0
  491. package/node_modules/esbuild-wasm/README.md +3 -0
  492. package/node_modules/esbuild-wasm/bin/esbuild +91 -0
  493. package/node_modules/esbuild-wasm/esbuild.wasm +0 -0
  494. package/node_modules/esbuild-wasm/esm/browser.d.ts +705 -0
  495. package/node_modules/esbuild-wasm/esm/browser.js +2370 -0
  496. package/node_modules/esbuild-wasm/esm/browser.min.js +20 -0
  497. package/node_modules/esbuild-wasm/lib/browser.d.ts +705 -0
  498. package/node_modules/esbuild-wasm/lib/browser.js +2415 -0
  499. package/node_modules/esbuild-wasm/lib/browser.min.js +22 -0
  500. package/node_modules/esbuild-wasm/lib/main.d.ts +705 -0
  501. package/node_modules/esbuild-wasm/lib/main.js +2051 -0
  502. package/node_modules/esbuild-wasm/package.json +19 -0
  503. package/node_modules/esbuild-wasm/wasm_exec.js +561 -0
  504. package/node_modules/esbuild-wasm/wasm_exec_node.js +39 -0
  505. package/node_modules/header-case/LICENSE +21 -0
  506. package/node_modules/header-case/README.md +37 -0
  507. package/node_modules/header-case/dist/index.d.ts +3 -0
  508. package/node_modules/header-case/dist/index.js +11 -0
  509. package/node_modules/header-case/dist/index.js.map +1 -0
  510. package/node_modules/header-case/dist/index.spec.d.ts +1 -0
  511. package/node_modules/header-case/dist/index.spec.js +24 -0
  512. package/node_modules/header-case/dist/index.spec.js.map +1 -0
  513. package/node_modules/header-case/dist.es2015/index.d.ts +3 -0
  514. package/node_modules/header-case/dist.es2015/index.js +7 -0
  515. package/node_modules/header-case/dist.es2015/index.js.map +1 -0
  516. package/node_modules/header-case/dist.es2015/index.spec.d.ts +1 -0
  517. package/node_modules/header-case/dist.es2015/index.spec.js +22 -0
  518. package/node_modules/header-case/dist.es2015/index.spec.js.map +1 -0
  519. package/node_modules/header-case/package.json +89 -0
  520. package/node_modules/lower-case/LICENSE +21 -0
  521. package/node_modules/lower-case/README.md +35 -0
  522. package/node_modules/lower-case/dist/index.d.ts +8 -0
  523. package/node_modules/lower-case/dist/index.js +53 -0
  524. package/node_modules/lower-case/dist/index.js.map +1 -0
  525. package/node_modules/lower-case/dist/index.spec.d.ts +1 -0
  526. package/node_modules/lower-case/dist/index.spec.js +36 -0
  527. package/node_modules/lower-case/dist/index.spec.js.map +1 -0
  528. package/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
  529. package/node_modules/lower-case/dist.es2015/index.js +48 -0
  530. package/node_modules/lower-case/dist.es2015/index.js.map +1 -0
  531. package/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
  532. package/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
  533. package/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
  534. package/node_modules/lower-case/package.json +87 -0
  535. package/node_modules/mime-db/HISTORY.md +507 -0
  536. package/node_modules/mime-db/LICENSE +23 -0
  537. package/node_modules/mime-db/README.md +100 -0
  538. package/node_modules/mime-db/db.json +8519 -0
  539. package/node_modules/mime-db/index.js +12 -0
  540. package/node_modules/mime-db/package.json +60 -0
  541. package/node_modules/mime-types/HISTORY.md +397 -0
  542. package/node_modules/mime-types/LICENSE +23 -0
  543. package/node_modules/mime-types/README.md +113 -0
  544. package/node_modules/mime-types/index.js +188 -0
  545. package/node_modules/mime-types/package.json +44 -0
  546. package/node_modules/no-case/LICENSE +21 -0
  547. package/node_modules/no-case/README.md +37 -0
  548. package/node_modules/no-case/dist/index.d.ts +10 -0
  549. package/node_modules/no-case/dist/index.js +35 -0
  550. package/node_modules/no-case/dist/index.js.map +1 -0
  551. package/node_modules/no-case/dist/index.spec.d.ts +1 -0
  552. package/node_modules/no-case/dist/index.spec.js +59 -0
  553. package/node_modules/no-case/dist/index.spec.js.map +1 -0
  554. package/node_modules/no-case/dist.es2015/index.d.ts +10 -0
  555. package/node_modules/no-case/dist.es2015/index.js +31 -0
  556. package/node_modules/no-case/dist.es2015/index.js.map +1 -0
  557. package/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
  558. package/node_modules/no-case/dist.es2015/index.spec.js +57 -0
  559. package/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
  560. package/node_modules/no-case/package.json +85 -0
  561. package/node_modules/param-case/LICENSE +21 -0
  562. package/node_modules/param-case/README.md +37 -0
  563. package/node_modules/param-case/dist/index.d.ts +3 -0
  564. package/node_modules/param-case/dist/index.js +11 -0
  565. package/node_modules/param-case/dist/index.js.map +1 -0
  566. package/node_modules/param-case/dist/index.spec.d.ts +1 -0
  567. package/node_modules/param-case/dist/index.spec.js +24 -0
  568. package/node_modules/param-case/dist/index.spec.js.map +1 -0
  569. package/node_modules/param-case/dist.es2015/index.d.ts +3 -0
  570. package/node_modules/param-case/dist.es2015/index.js +7 -0
  571. package/node_modules/param-case/dist.es2015/index.js.map +1 -0
  572. package/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
  573. package/node_modules/param-case/dist.es2015/index.spec.js +22 -0
  574. package/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
  575. package/node_modules/param-case/package.json +91 -0
  576. package/node_modules/pascal-case/LICENSE +21 -0
  577. package/node_modules/pascal-case/README.md +47 -0
  578. package/node_modules/pascal-case/dist/index.d.ts +5 -0
  579. package/node_modules/pascal-case/dist/index.js +24 -0
  580. package/node_modules/pascal-case/dist/index.js.map +1 -0
  581. package/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
  582. package/node_modules/pascal-case/dist/index.spec.js +25 -0
  583. package/node_modules/pascal-case/dist/index.spec.js.map +1 -0
  584. package/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
  585. package/node_modules/pascal-case/dist.es2015/index.js +18 -0
  586. package/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
  587. package/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
  588. package/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
  589. package/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
  590. package/node_modules/pascal-case/package.json +90 -0
  591. package/node_modules/path-case/LICENSE +21 -0
  592. package/node_modules/path-case/README.md +37 -0
  593. package/node_modules/path-case/dist/index.d.ts +3 -0
  594. package/node_modules/path-case/dist/index.js +11 -0
  595. package/node_modules/path-case/dist/index.js.map +1 -0
  596. package/node_modules/path-case/dist/index.spec.d.ts +1 -0
  597. package/node_modules/path-case/dist/index.spec.js +24 -0
  598. package/node_modules/path-case/dist/index.spec.js.map +1 -0
  599. package/node_modules/path-case/dist.es2015/index.d.ts +3 -0
  600. package/node_modules/path-case/dist.es2015/index.js +7 -0
  601. package/node_modules/path-case/dist.es2015/index.js.map +1 -0
  602. package/node_modules/path-case/dist.es2015/index.spec.d.ts +1 -0
  603. package/node_modules/path-case/dist.es2015/index.spec.js +22 -0
  604. package/node_modules/path-case/dist.es2015/index.spec.js.map +1 -0
  605. package/node_modules/path-case/package.json +88 -0
  606. package/node_modules/sentence-case/LICENSE +21 -0
  607. package/node_modules/sentence-case/README.md +37 -0
  608. package/node_modules/sentence-case/dist/index.d.ts +4 -0
  609. package/node_modules/sentence-case/dist/index.js +19 -0
  610. package/node_modules/sentence-case/dist/index.js.map +1 -0
  611. package/node_modules/sentence-case/dist/index.spec.d.ts +1 -0
  612. package/node_modules/sentence-case/dist/index.spec.js +24 -0
  613. package/node_modules/sentence-case/dist/index.spec.js.map +1 -0
  614. package/node_modules/sentence-case/dist.es2015/index.d.ts +4 -0
  615. package/node_modules/sentence-case/dist.es2015/index.js +14 -0
  616. package/node_modules/sentence-case/dist.es2015/index.js.map +1 -0
  617. package/node_modules/sentence-case/dist.es2015/index.spec.d.ts +1 -0
  618. package/node_modules/sentence-case/dist.es2015/index.spec.js +22 -0
  619. package/node_modules/sentence-case/dist.es2015/index.spec.js.map +1 -0
  620. package/node_modules/sentence-case/package.json +89 -0
  621. package/node_modules/snake-case/LICENSE +21 -0
  622. package/node_modules/snake-case/README.md +37 -0
  623. package/node_modules/snake-case/dist/index.d.ts +3 -0
  624. package/node_modules/snake-case/dist/index.js +11 -0
  625. package/node_modules/snake-case/dist/index.js.map +1 -0
  626. package/node_modules/snake-case/dist/index.spec.d.ts +1 -0
  627. package/node_modules/snake-case/dist/index.spec.js +25 -0
  628. package/node_modules/snake-case/dist/index.spec.js.map +1 -0
  629. package/node_modules/snake-case/dist.es2015/index.d.ts +3 -0
  630. package/node_modules/snake-case/dist.es2015/index.js +7 -0
  631. package/node_modules/snake-case/dist.es2015/index.js.map +1 -0
  632. package/node_modules/snake-case/dist.es2015/index.spec.d.ts +1 -0
  633. package/node_modules/snake-case/dist.es2015/index.spec.js +23 -0
  634. package/node_modules/snake-case/dist.es2015/index.spec.js.map +1 -0
  635. package/node_modules/snake-case/package.json +90 -0
  636. package/node_modules/tslib/CopyrightNotice.txt +15 -0
  637. package/node_modules/tslib/LICENSE.txt +12 -0
  638. package/node_modules/tslib/README.md +164 -0
  639. package/node_modules/tslib/SECURITY.md +41 -0
  640. package/node_modules/tslib/modules/index.d.ts +37 -0
  641. package/node_modules/tslib/modules/index.js +68 -0
  642. package/node_modules/tslib/modules/package.json +3 -0
  643. package/node_modules/tslib/package.json +47 -0
  644. package/node_modules/tslib/tslib.d.ts +453 -0
  645. package/node_modules/tslib/tslib.es6.html +1 -0
  646. package/node_modules/tslib/tslib.es6.js +374 -0
  647. package/node_modules/tslib/tslib.es6.mjs +373 -0
  648. package/node_modules/tslib/tslib.html +1 -0
  649. package/node_modules/tslib/tslib.js +424 -0
  650. package/node_modules/upper-case/README.md +34 -0
  651. package/node_modules/upper-case/dist/index.d.ts +8 -0
  652. package/node_modules/upper-case/dist/index.js +49 -0
  653. package/node_modules/upper-case/dist/index.js.map +1 -0
  654. package/node_modules/upper-case/dist/index.spec.d.ts +1 -0
  655. package/node_modules/upper-case/dist/index.spec.js +34 -0
  656. package/node_modules/upper-case/dist/index.spec.js.map +1 -0
  657. package/node_modules/upper-case/dist.es2015/index.d.ts +8 -0
  658. package/node_modules/upper-case/dist.es2015/index.js +44 -0
  659. package/node_modules/upper-case/dist.es2015/index.js.map +1 -0
  660. package/node_modules/upper-case/dist.es2015/index.spec.d.ts +1 -0
  661. package/node_modules/upper-case/dist.es2015/index.spec.js +32 -0
  662. package/node_modules/upper-case/dist.es2015/index.spec.js.map +1 -0
  663. package/node_modules/upper-case/package.json +86 -0
  664. package/node_modules/upper-case-first/LICENSE +21 -0
  665. package/node_modules/upper-case-first/README.md +32 -0
  666. package/node_modules/upper-case-first/dist/index.d.ts +4 -0
  667. package/node_modules/upper-case-first/dist/index.js +11 -0
  668. package/node_modules/upper-case-first/dist/index.js.map +1 -0
  669. package/node_modules/upper-case-first/dist/index.spec.d.ts +1 -0
  670. package/node_modules/upper-case-first/dist/index.spec.js +20 -0
  671. package/node_modules/upper-case-first/dist/index.spec.js.map +1 -0
  672. package/node_modules/upper-case-first/dist.es2015/index.d.ts +4 -0
  673. package/node_modules/upper-case-first/dist.es2015/index.js +7 -0
  674. package/node_modules/upper-case-first/dist.es2015/index.js.map +1 -0
  675. package/node_modules/upper-case-first/dist.es2015/index.spec.d.ts +1 -0
  676. package/node_modules/upper-case-first/dist.es2015/index.spec.js +18 -0
  677. package/node_modules/upper-case-first/dist.es2015/index.spec.js.map +1 -0
  678. package/node_modules/upper-case-first/package.json +87 -0
  679. package/package.json +152 -0
  680. package/setup.js +2 -0
@@ -0,0 +1,58 @@
1
+ import { s3BucketNotification } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
4
+ import { IBucket, EventType, NotificationKeyFilter } from "./bucket";
5
+ import { IBucketNotificationDestination } from "./bucket-destination";
6
+ export interface NotificationsProps extends AwsConstructProps {
7
+ /**
8
+ * The bucket to manage notifications for.
9
+ */
10
+ readonly bucket: IBucket;
11
+ }
12
+ /**
13
+ * A custom CloudFormation resource that updates bucket notifications for a
14
+ * bucket. The reason we need it is because the AWS::S3::Bucket notification
15
+ * configuration is defined on the bucket itself, which makes it impossible to
16
+ * provision notifications at the same time as the target (since
17
+ * PutBucketNotifications validates the targets).
18
+ *
19
+ * Since only a single BucketNotifications resource is allowed for each Bucket,
20
+ * this construct is not exported in the public API of this module. Instead, it
21
+ * is created just-in-time by `s3.Bucket.onEvent`, so a 1:1 relationship is
22
+ * ensured.
23
+ *
24
+ * @see
25
+ * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html
26
+ */
27
+ export declare class BucketNotifications extends AwsConstructBase {
28
+ resource?: s3BucketNotification.S3BucketNotification;
29
+ get outputs(): Record<string, any>;
30
+ private eventBridgeEnabled;
31
+ private readonly lambdaNotifications;
32
+ private readonly queueNotifications;
33
+ private readonly topicNotifications;
34
+ private readonly bucket;
35
+ constructor(scope: Construct, id: string, props: NotificationsProps);
36
+ /**
37
+ * Adds a notification subscription for this bucket.
38
+ * If this is the first notification, a BucketNotification resource is added to the stack.
39
+ *
40
+ * @param event The type of event
41
+ * @param target The target construct
42
+ * @param filters A set of S3 key filters
43
+ */
44
+ addNotification(event: EventType, target: IBucketNotificationDestination, ...filters: NotificationKeyFilter[]): void;
45
+ enableEventBridgeNotification(): void;
46
+ /**
47
+ * Defines the bucket notifications resources in the stack only once.
48
+ * This is called lazily as we add notifications, so that if notifications are not added,
49
+ * there is no notifications resource.
50
+ */
51
+ private createResourceOnce;
52
+ /**
53
+ * Adds resource to the Terraform JSON output at Synth time.
54
+ *
55
+ * called by TerraformStack.prepareStack()
56
+ */
57
+ toTerraform(): any;
58
+ }
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BucketNotifications = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const cdktf_1 = require("cdktf");
8
+ const aws_construct_1 = require("../aws-construct");
9
+ const bucket_destination_1 = require("./bucket-destination");
10
+ /**
11
+ * A custom CloudFormation resource that updates bucket notifications for a
12
+ * bucket. The reason we need it is because the AWS::S3::Bucket notification
13
+ * configuration is defined on the bucket itself, which makes it impossible to
14
+ * provision notifications at the same time as the target (since
15
+ * PutBucketNotifications validates the targets).
16
+ *
17
+ * Since only a single BucketNotifications resource is allowed for each Bucket,
18
+ * this construct is not exported in the public API of this module. Instead, it
19
+ * is created just-in-time by `s3.Bucket.onEvent`, so a 1:1 relationship is
20
+ * ensured.
21
+ *
22
+ * @see
23
+ * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html
24
+ */
25
+ class BucketNotifications extends aws_construct_1.AwsConstructBase {
26
+ get outputs() {
27
+ return {};
28
+ }
29
+ constructor(scope, id, props) {
30
+ super(scope, id);
31
+ this.eventBridgeEnabled = false;
32
+ this.lambdaNotifications = new Array();
33
+ this.queueNotifications = new Array();
34
+ this.topicNotifications = new Array();
35
+ this.bucket = props.bucket;
36
+ }
37
+ /**
38
+ * Adds a notification subscription for this bucket.
39
+ * If this is the first notification, a BucketNotification resource is added to the stack.
40
+ *
41
+ * @param event The type of event
42
+ * @param target The target construct
43
+ * @param filters A set of S3 key filters
44
+ */
45
+ addNotification(event, target, ...filters) {
46
+ const resource = this.createResourceOnce();
47
+ // TODO: Seems Terraform provider does not have limitations on prefix and suffix?
48
+ // let hasPrefix = false;
49
+ // let hasSuffix = false;
50
+ for (const filter of filters) {
51
+ // if (!filter.suffix && !filter.prefix) {
52
+ // throw new Error(
53
+ // "NotificationKeyFilter must specify `prefix` and/or `suffix`",
54
+ // );
55
+ // }
56
+ // if (filter.suffix) {
57
+ // if (hasSuffix) {
58
+ // throw new Error(
59
+ // "Cannot specify more than one suffix rule in a filter.",
60
+ // );
61
+ // }
62
+ // hasSuffix = true;
63
+ // }
64
+ // if (filter.prefix) {
65
+ // if (hasPrefix) {
66
+ // throw new Error(
67
+ // "Cannot specify more than one prefix rule in a filter.",
68
+ // );
69
+ // }
70
+ // hasPrefix = true;
71
+ // }
72
+ // resolve target. this also provides an opportunity for the target to e.g. update
73
+ // policies to allow this notification to happen.
74
+ const targetProps = target.bind(this, this.bucket);
75
+ const commonConfig = {
76
+ events: [event],
77
+ id: filter.id,
78
+ filterPrefix: filter.prefix,
79
+ filterSuffix: filter.suffix,
80
+ };
81
+ // if the target specifies any dependencies, add them here.
82
+ // for example, the SNS topic policy must be created /before/ the notification resource.
83
+ // otherwise, S3 won't be able to confirm the subscription.
84
+ if (targetProps.dependencies) {
85
+ resource.node.addDependency(...targetProps.dependencies);
86
+ }
87
+ // based on the target type, add the the correct configurations array
88
+ switch (targetProps.type) {
89
+ case bucket_destination_1.BucketNotificationDestinationType.LAMBDA:
90
+ this.lambdaNotifications.push({
91
+ ...commonConfig,
92
+ lambdaFunctionArn: targetProps.arn,
93
+ });
94
+ break;
95
+ case bucket_destination_1.BucketNotificationDestinationType.QUEUE:
96
+ this.queueNotifications.push({
97
+ ...commonConfig,
98
+ queueArn: targetProps.arn,
99
+ });
100
+ break;
101
+ // TODO: re-add SNS support
102
+ case bucket_destination_1.BucketNotificationDestinationType.TOPIC:
103
+ this.topicNotifications.push({
104
+ ...commonConfig,
105
+ topicArn: targetProps.arn,
106
+ });
107
+ break;
108
+ default:
109
+ throw new Error("Unsupported notification target type:" +
110
+ bucket_destination_1.BucketNotificationDestinationType[targetProps.type]);
111
+ }
112
+ }
113
+ }
114
+ enableEventBridgeNotification() {
115
+ this.createResourceOnce();
116
+ this.eventBridgeEnabled = true;
117
+ }
118
+ /**
119
+ * Defines the bucket notifications resources in the stack only once.
120
+ * This is called lazily as we add notifications, so that if notifications are not added,
121
+ * there is no notifications resource.
122
+ */
123
+ createResourceOnce() {
124
+ if (!this.resource) {
125
+ this.resource = new provider_aws_1.s3BucketNotification.S3BucketNotification(this, "Resource", {
126
+ bucket: this.bucket.bucketName,
127
+ eventbridge: cdktf_1.Lazy.anyValue({
128
+ produce: () => this.eventBridgeEnabled,
129
+ }),
130
+ lambdaFunction: cdktf_1.Lazy.anyValue({
131
+ produce: () => this.lambdaNotifications.length > 0
132
+ ? this.lambdaNotifications.map((l) => provider_aws_1.s3BucketNotification.s3BucketNotificationLambdaFunctionToTerraform(l))
133
+ : undefined,
134
+ }),
135
+ queue: cdktf_1.Lazy.anyValue({
136
+ produce: () => this.queueNotifications.length > 0
137
+ ? this.queueNotifications.map((q) => provider_aws_1.s3BucketNotification.s3BucketNotificationQueueToTerraform(q))
138
+ : undefined,
139
+ }),
140
+ topic: cdktf_1.Lazy.anyValue({
141
+ produce: () => this.topicNotifications.length > 0
142
+ ? this.topicNotifications.map((t) => provider_aws_1.s3BucketNotification.s3BucketNotificationTopicToTerraform(t))
143
+ : undefined,
144
+ }),
145
+ });
146
+ }
147
+ return this.resource;
148
+ }
149
+ /**
150
+ * Adds resource to the Terraform JSON output at Synth time.
151
+ *
152
+ * called by TerraformStack.prepareStack()
153
+ */
154
+ toTerraform() {
155
+ // Add dependency on bucket policy if it exists to avoid race conditions
156
+ // S3 does not allow calling PutBucketPolicy and PutBucketNotification APIs at the same time
157
+ // See https://github.com/aws/aws-cdk/issues/27600
158
+ // prepareStack are used here because bucket policy maybe added to construct after addition of notification resource.
159
+ // but we need this defined before stack Aspect maps construct dependencies to Terraform dependsOn
160
+ if (this.bucket.policy) {
161
+ this.node.addDependency(this.bucket.policy);
162
+ }
163
+ return {};
164
+ }
165
+ }
166
+ exports.BucketNotifications = BucketNotifications;
167
+ _a = JSII_RTTI_SYMBOL_1;
168
+ BucketNotifications[_a] = { fqn: "terraconstructs.aws.storage.BucketNotifications", version: "0.0.8" };
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL3N0b3JhZ2UvYnVja2V0LW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBMkQ7QUFDM0QsaUNBQTZCO0FBRTdCLG9EQUF1RTtBQUV2RSw2REFHOEI7QUFTOUI7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFhLG1CQUFvQixTQUFRLGdDQUFnQjtJQUV2RCxJQUFXLE9BQU87UUFDaEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBV0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBVlgsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHdCQUFtQixHQUNsQyxJQUFJLEtBQUssRUFBMkQsQ0FBQztRQUN0RCx1QkFBa0IsR0FDakMsSUFBSSxLQUFLLEVBQWtELENBQUM7UUFDN0MsdUJBQWtCLEdBQ2pDLElBQUksS0FBSyxFQUFrRCxDQUFDO1FBSzVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGVBQWUsQ0FDcEIsS0FBZ0IsRUFDaEIsTUFBc0MsRUFDdEMsR0FBRyxPQUFnQztRQUVuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQyxpRkFBaUY7UUFDakYseUJBQXlCO1FBQ3pCLHlCQUF5QjtRQUN6QixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLDBDQUEwQztZQUMxQyxxQkFBcUI7WUFDckIscUVBQXFFO1lBQ3JFLE9BQU87WUFDUCxJQUFJO1lBQ0osdUJBQXVCO1lBQ3ZCLHFCQUFxQjtZQUNyQix1QkFBdUI7WUFDdkIsaUVBQWlFO1lBQ2pFLFNBQVM7WUFDVCxNQUFNO1lBQ04sc0JBQXNCO1lBQ3RCLElBQUk7WUFDSix1QkFBdUI7WUFDdkIscUJBQXFCO1lBQ3JCLHVCQUF1QjtZQUN2QixpRUFBaUU7WUFDakUsU0FBUztZQUNULE1BQU07WUFDTixzQkFBc0I7WUFDdEIsSUFBSTtZQUNKLGtGQUFrRjtZQUNsRixpREFBaUQ7WUFDakQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25ELE1BQU0sWUFBWSxHQUF3QjtnQkFDeEMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO2dCQUNmLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQzNCLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTTthQUM1QixDQUFDO1lBRUYsMkRBQTJEO1lBQzNELHdGQUF3RjtZQUN4RiwyREFBMkQ7WUFDM0QsSUFBSSxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxxRUFBcUU7WUFDckUsUUFBUSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLEtBQUssc0RBQWlDLENBQUMsTUFBTTtvQkFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQzt3QkFDNUIsR0FBRyxZQUFZO3dCQUNmLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxHQUFHO3FCQUNuQyxDQUFDLENBQUM7b0JBQ0gsTUFBTTtnQkFFUixLQUFLLHNEQUFpQyxDQUFDLEtBQUs7b0JBQzFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7d0JBQzNCLEdBQUcsWUFBWTt3QkFDZixRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUc7cUJBQzFCLENBQUMsQ0FBQztvQkFDSCxNQUFNO2dCQUVSLDJCQUEyQjtnQkFDM0IsS0FBSyxzREFBaUMsQ0FBQyxLQUFLO29CQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO3dCQUMzQixHQUFHLFlBQVk7d0JBQ2YsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHO3FCQUMxQixDQUFDLENBQUM7b0JBQ0gsTUFBTTtnQkFFUjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUNiLHVDQUF1Qzt3QkFDckMsc0RBQWlDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUN0RCxDQUFDO1lBQ04sQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sNkJBQTZCO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUNBQW9CLENBQUMsb0JBQW9CLENBQzNELElBQUksRUFDSixVQUFVLEVBQ1Y7Z0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDOUIsV0FBVyxFQUFFLFlBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO2lCQUN2QyxDQUFDO2dCQUNGLGNBQWMsRUFBRSxZQUFJLENBQUMsUUFBUSxDQUFDO29CQUM1QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2pDLG1DQUFvQixDQUFDLDZDQUE2QyxDQUNoRSxDQUFDLENBQ0YsQ0FDRjt3QkFDSCxDQUFDLENBQUMsU0FBUztpQkFDaEIsQ0FBQztnQkFDRixLQUFLLEVBQUUsWUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQzt3QkFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNoQyxtQ0FBb0IsQ0FBQyxvQ0FBb0MsQ0FDdkQsQ0FBQyxDQUNGLENBQ0Y7d0JBQ0gsQ0FBQyxDQUFDLFNBQVM7aUJBQ2hCLENBQUM7Z0JBQ0YsS0FBSyxFQUFFLFlBQUksQ0FBQyxRQUFRLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDaEMsbUNBQW9CLENBQUMsb0NBQW9DLENBQ3ZELENBQUMsQ0FDRixDQUNGO3dCQUNILENBQUMsQ0FBQyxTQUFTO2lCQUNoQixDQUFDO2FBQ0gsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7UUFDaEIsd0VBQXdFO1FBQ3hFLDRGQUE0RjtRQUM1RixrREFBa0Q7UUFDbEQscUhBQXFIO1FBQ3JILGtHQUFrRztRQUNsRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOztBQXBMSCxrREFxTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzM0J1Y2tldE5vdGlmaWNhdGlvbiB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBMYXp5IH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSUJ1Y2tldCwgRXZlbnRUeXBlLCBOb3RpZmljYXRpb25LZXlGaWx0ZXIgfSBmcm9tIFwiLi9idWNrZXRcIjtcbmltcG9ydCB7XG4gIEJ1Y2tldE5vdGlmaWNhdGlvbkRlc3RpbmF0aW9uVHlwZSxcbiAgSUJ1Y2tldE5vdGlmaWNhdGlvbkRlc3RpbmF0aW9uLFxufSBmcm9tIFwiLi9idWNrZXQtZGVzdGluYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25zUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHRvIG1hbmFnZSBub3RpZmljYXRpb25zIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbn1cblxuLyoqXG4gKiBBIGN1c3RvbSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0aGF0IHVwZGF0ZXMgYnVja2V0IG5vdGlmaWNhdGlvbnMgZm9yIGFcbiAqIGJ1Y2tldC4gVGhlIHJlYXNvbiB3ZSBuZWVkIGl0IGlzIGJlY2F1c2UgdGhlIEFXUzo6UzM6OkJ1Y2tldCBub3RpZmljYXRpb25cbiAqIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5lZCBvbiB0aGUgYnVja2V0IGl0c2VsZiwgd2hpY2ggbWFrZXMgaXQgaW1wb3NzaWJsZSB0b1xuICogcHJvdmlzaW9uIG5vdGlmaWNhdGlvbnMgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgdGFyZ2V0IChzaW5jZVxuICogUHV0QnVja2V0Tm90aWZpY2F0aW9ucyB2YWxpZGF0ZXMgdGhlIHRhcmdldHMpLlxuICpcbiAqIFNpbmNlIG9ubHkgYSBzaW5nbGUgQnVja2V0Tm90aWZpY2F0aW9ucyByZXNvdXJjZSBpcyBhbGxvd2VkIGZvciBlYWNoIEJ1Y2tldCxcbiAqIHRoaXMgY29uc3RydWN0IGlzIG5vdCBleHBvcnRlZCBpbiB0aGUgcHVibGljIEFQSSBvZiB0aGlzIG1vZHVsZS4gSW5zdGVhZCwgaXRcbiAqIGlzIGNyZWF0ZWQganVzdC1pbi10aW1lIGJ5IGBzMy5CdWNrZXQub25FdmVudGAsIHNvIGEgMToxIHJlbGF0aW9uc2hpcCBpc1xuICogZW5zdXJlZC5cbiAqXG4gKiBAc2VlXG4gKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQtbm90aWZpY2F0aW9uY29uZmlnLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIEJ1Y2tldE5vdGlmaWNhdGlvbnMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgcHVibGljIHJlc291cmNlPzogczNCdWNrZXROb3RpZmljYXRpb24uUzNCdWNrZXROb3RpZmljYXRpb247XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBwcml2YXRlIGV2ZW50QnJpZGdlRW5hYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGxhbWJkYU5vdGlmaWNhdGlvbnMgPVxuICAgIG5ldyBBcnJheTxzM0J1Y2tldE5vdGlmaWNhdGlvbi5TM0J1Y2tldE5vdGlmaWNhdGlvbkxhbWJkYUZ1bmN0aW9uPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXVlTm90aWZpY2F0aW9ucyA9XG4gICAgbmV3IEFycmF5PHMzQnVja2V0Tm90aWZpY2F0aW9uLlMzQnVja2V0Tm90aWZpY2F0aW9uUXVldWU+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9waWNOb3RpZmljYXRpb25zID1cbiAgICBuZXcgQXJyYXk8czNCdWNrZXROb3RpZmljYXRpb24uUzNCdWNrZXROb3RpZmljYXRpb25Ub3BpYz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5vdGlmaWNhdGlvbnNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5idWNrZXQgPSBwcm9wcy5idWNrZXQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5vdGlmaWNhdGlvbiBzdWJzY3JpcHRpb24gZm9yIHRoaXMgYnVja2V0LlxuICAgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBub3RpZmljYXRpb24sIGEgQnVja2V0Tm90aWZpY2F0aW9uIHJlc291cmNlIGlzIGFkZGVkIHRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IFRoZSB0eXBlIG9mIGV2ZW50XG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGZpbHRlcnMgQSBzZXQgb2YgUzMga2V5IGZpbHRlcnNcbiAgICovXG4gIHB1YmxpYyBhZGROb3RpZmljYXRpb24oXG4gICAgZXZlbnQ6IEV2ZW50VHlwZSxcbiAgICB0YXJnZXQ6IElCdWNrZXROb3RpZmljYXRpb25EZXN0aW5hdGlvbixcbiAgICAuLi5maWx0ZXJzOiBOb3RpZmljYXRpb25LZXlGaWx0ZXJbXVxuICApIHtcbiAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuY3JlYXRlUmVzb3VyY2VPbmNlKCk7XG4gICAgLy8gVE9ETzogU2VlbXMgVGVycmFmb3JtIHByb3ZpZGVyIGRvZXMgbm90IGhhdmUgbGltaXRhdGlvbnMgb24gcHJlZml4IGFuZCBzdWZmaXg/XG4gICAgLy8gbGV0IGhhc1ByZWZpeCA9IGZhbHNlO1xuICAgIC8vIGxldCBoYXNTdWZmaXggPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJzKSB7XG4gICAgICAvLyBpZiAoIWZpbHRlci5zdWZmaXggJiYgIWZpbHRlci5wcmVmaXgpIHtcbiAgICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgLy8gICAgIFwiTm90aWZpY2F0aW9uS2V5RmlsdGVyIG11c3Qgc3BlY2lmeSBgcHJlZml4YCBhbmQvb3IgYHN1ZmZpeGBcIixcbiAgICAgIC8vICAgKTtcbiAgICAgIC8vIH1cbiAgICAgIC8vIGlmIChmaWx0ZXIuc3VmZml4KSB7XG4gICAgICAvLyAgIGlmIChoYXNTdWZmaXgpIHtcbiAgICAgIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAvLyAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgc3VmZml4IHJ1bGUgaW4gYSBmaWx0ZXIuXCIsXG4gICAgICAvLyAgICAgKTtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICBoYXNTdWZmaXggPSB0cnVlO1xuICAgICAgLy8gfVxuICAgICAgLy8gaWYgKGZpbHRlci5wcmVmaXgpIHtcbiAgICAgIC8vICAgaWYgKGhhc1ByZWZpeCkge1xuICAgICAgLy8gICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIC8vICAgICAgIFwiQ2Fubm90IHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBwcmVmaXggcnVsZSBpbiBhIGZpbHRlci5cIixcbiAgICAgIC8vICAgICApO1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIGhhc1ByZWZpeCA9IHRydWU7XG4gICAgICAvLyB9XG4gICAgICAvLyByZXNvbHZlIHRhcmdldC4gdGhpcyBhbHNvIHByb3ZpZGVzIGFuIG9wcG9ydHVuaXR5IGZvciB0aGUgdGFyZ2V0IHRvIGUuZy4gdXBkYXRlXG4gICAgICAvLyBwb2xpY2llcyB0byBhbGxvdyB0aGlzIG5vdGlmaWNhdGlvbiB0byBoYXBwZW4uXG4gICAgICBjb25zdCB0YXJnZXRQcm9wcyA9IHRhcmdldC5iaW5kKHRoaXMsIHRoaXMuYnVja2V0KTtcbiAgICAgIGNvbnN0IGNvbW1vbkNvbmZpZzogQ29tbW9uQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgZXZlbnRzOiBbZXZlbnRdLFxuICAgICAgICBpZDogZmlsdGVyLmlkLFxuICAgICAgICBmaWx0ZXJQcmVmaXg6IGZpbHRlci5wcmVmaXgsXG4gICAgICAgIGZpbHRlclN1ZmZpeDogZmlsdGVyLnN1ZmZpeCxcbiAgICAgIH07XG5cbiAgICAgIC8vIGlmIHRoZSB0YXJnZXQgc3BlY2lmaWVzIGFueSBkZXBlbmRlbmNpZXMsIGFkZCB0aGVtIGhlcmUuXG4gICAgICAvLyBmb3IgZXhhbXBsZSwgdGhlIFNOUyB0b3BpYyBwb2xpY3kgbXVzdCBiZSBjcmVhdGVkIC9iZWZvcmUvIHRoZSBub3RpZmljYXRpb24gcmVzb3VyY2UuXG4gICAgICAvLyBvdGhlcndpc2UsIFMzIHdvbid0IGJlIGFibGUgdG8gY29uZmlybSB0aGUgc3Vic2NyaXB0aW9uLlxuICAgICAgaWYgKHRhcmdldFByb3BzLmRlcGVuZGVuY2llcykge1xuICAgICAgICByZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3koLi4udGFyZ2V0UHJvcHMuZGVwZW5kZW5jaWVzKTtcbiAgICAgIH1cblxuICAgICAgLy8gYmFzZWQgb24gdGhlIHRhcmdldCB0eXBlLCBhZGQgdGhlIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb25zIGFycmF5XG4gICAgICBzd2l0Y2ggKHRhcmdldFByb3BzLnR5cGUpIHtcbiAgICAgICAgY2FzZSBCdWNrZXROb3RpZmljYXRpb25EZXN0aW5hdGlvblR5cGUuTEFNQkRBOlxuICAgICAgICAgIHRoaXMubGFtYmRhTm90aWZpY2F0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vbkNvbmZpZyxcbiAgICAgICAgICAgIGxhbWJkYUZ1bmN0aW9uQXJuOiB0YXJnZXRQcm9wcy5hcm4sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBCdWNrZXROb3RpZmljYXRpb25EZXN0aW5hdGlvblR5cGUuUVVFVUU6XG4gICAgICAgICAgdGhpcy5xdWV1ZU5vdGlmaWNhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAuLi5jb21tb25Db25maWcsXG4gICAgICAgICAgICBxdWV1ZUFybjogdGFyZ2V0UHJvcHMuYXJuLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8vIFRPRE86IHJlLWFkZCBTTlMgc3VwcG9ydFxuICAgICAgICBjYXNlIEJ1Y2tldE5vdGlmaWNhdGlvbkRlc3RpbmF0aW9uVHlwZS5UT1BJQzpcbiAgICAgICAgICB0aGlzLnRvcGljTm90aWZpY2F0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vbkNvbmZpZyxcbiAgICAgICAgICAgIHRvcGljQXJuOiB0YXJnZXRQcm9wcy5hcm4sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIlVuc3VwcG9ydGVkIG5vdGlmaWNhdGlvbiB0YXJnZXQgdHlwZTpcIiArXG4gICAgICAgICAgICAgIEJ1Y2tldE5vdGlmaWNhdGlvbkRlc3RpbmF0aW9uVHlwZVt0YXJnZXRQcm9wcy50eXBlXSxcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVFdmVudEJyaWRnZU5vdGlmaWNhdGlvbigpIHtcbiAgICB0aGlzLmNyZWF0ZVJlc291cmNlT25jZSgpO1xuICAgIHRoaXMuZXZlbnRCcmlkZ2VFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBidWNrZXQgbm90aWZpY2F0aW9ucyByZXNvdXJjZXMgaW4gdGhlIHN0YWNrIG9ubHkgb25jZS5cbiAgICogVGhpcyBpcyBjYWxsZWQgbGF6aWx5IGFzIHdlIGFkZCBub3RpZmljYXRpb25zLCBzbyB0aGF0IGlmIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBhZGRlZCxcbiAgICogdGhlcmUgaXMgbm8gbm90aWZpY2F0aW9ucyByZXNvdXJjZS5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlUmVzb3VyY2VPbmNlKCkge1xuICAgIGlmICghdGhpcy5yZXNvdXJjZSkge1xuICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBzM0J1Y2tldE5vdGlmaWNhdGlvbi5TM0J1Y2tldE5vdGlmaWNhdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICB7XG4gICAgICAgICAgYnVja2V0OiB0aGlzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgIGV2ZW50YnJpZGdlOiBMYXp5LmFueVZhbHVlKHtcbiAgICAgICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMuZXZlbnRCcmlkZ2VFbmFibGVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGxhbWJkYUZ1bmN0aW9uOiBMYXp5LmFueVZhbHVlKHtcbiAgICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICAgIHRoaXMubGFtYmRhTm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmxhbWJkYU5vdGlmaWNhdGlvbnMubWFwKChsKSA9PlxuICAgICAgICAgICAgICAgICAgICBzM0J1Y2tldE5vdGlmaWNhdGlvbi5zM0J1Y2tldE5vdGlmaWNhdGlvbkxhbWJkYUZ1bmN0aW9uVG9UZXJyYWZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgbCxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBxdWV1ZTogTGF6eS5hbnlWYWx1ZSh7XG4gICAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgICB0aGlzLnF1ZXVlTm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyB0aGlzLnF1ZXVlTm90aWZpY2F0aW9ucy5tYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgIHMzQnVja2V0Tm90aWZpY2F0aW9uLnMzQnVja2V0Tm90aWZpY2F0aW9uUXVldWVUb1RlcnJhZm9ybShcbiAgICAgICAgICAgICAgICAgICAgICBxLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRvcGljOiBMYXp5LmFueVZhbHVlKHtcbiAgICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICAgIHRoaXMudG9waWNOb3RpZmljYXRpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IHRoaXMudG9waWNOb3RpZmljYXRpb25zLm1hcCgodCkgPT5cbiAgICAgICAgICAgICAgICAgICAgczNCdWNrZXROb3RpZmljYXRpb24uczNCdWNrZXROb3RpZmljYXRpb25Ub3BpY1RvVGVycmFmb3JtKFxuICAgICAgICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHJlc291cmNlIHRvIHRoZSBUZXJyYWZvcm0gSlNPTiBvdXRwdXQgYXQgU3ludGggdGltZS5cbiAgICpcbiAgICogY2FsbGVkIGJ5IFRlcnJhZm9ybVN0YWNrLnByZXBhcmVTdGFjaygpXG4gICAqL1xuICBwdWJsaWMgdG9UZXJyYWZvcm0oKTogYW55IHtcbiAgICAvLyBBZGQgZGVwZW5kZW5jeSBvbiBidWNrZXQgcG9saWN5IGlmIGl0IGV4aXN0cyB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnNcbiAgICAvLyBTMyBkb2VzIG5vdCBhbGxvdyBjYWxsaW5nIFB1dEJ1Y2tldFBvbGljeSBhbmQgUHV0QnVja2V0Tm90aWZpY2F0aW9uIEFQSXMgYXQgdGhlIHNhbWUgdGltZVxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzI3NjAwXG4gICAgLy8gcHJlcGFyZVN0YWNrIGFyZSB1c2VkIGhlcmUgYmVjYXVzZSBidWNrZXQgcG9saWN5IG1heWJlIGFkZGVkIHRvIGNvbnN0cnVjdCBhZnRlciBhZGRpdGlvbiBvZiBub3RpZmljYXRpb24gcmVzb3VyY2UuXG4gICAgLy8gYnV0IHdlIG5lZWQgdGhpcyBkZWZpbmVkIGJlZm9yZSBzdGFjayBBc3BlY3QgbWFwcyBjb25zdHJ1Y3QgZGVwZW5kZW5jaWVzIHRvIFRlcnJhZm9ybSBkZXBlbmRzT25cbiAgICBpZiAodGhpcy5idWNrZXQucG9saWN5KSB7XG4gICAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmJ1Y2tldC5wb2xpY3kpO1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuaW50ZXJmYWNlIENvbW1vbkNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvczNfYnVja2V0X25vdGlmaWNhdGlvbiNpZCBTM0J1Y2tldE5vdGlmaWNhdGlvbiNpZH1cbiAgICpcbiAgICogUGxlYXNlIGJlIGF3YXJlIHRoYXQgdGhlIGlkIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxsIHJlc291cmNlcyBpbiBUZXJyYWZvcm0gcHJvdmlkZXJzIHVzaW5nIGEgVGVycmFmb3JtIHByb3ZpZGVyIFNESyB2ZXJzaW9uIGJlbG93IDIuXG4gICAqIElmIHlvdSBleHBlcmllbmNlIHByb2JsZW1zIHNldHRpbmcgdGhpcyB2YWx1ZSBpdCBtaWdodCBub3QgYmUgc2V0dGFibGUuIFBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgcHJvdmlkZXIgZG9jdW1lbnRhdGlvbiB0byBlbnN1cmUgaXQgc2hvdWxkIGJlIHNldHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV2ZW50czogc3RyaW5nW107XG4gIC8qKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9zM19idWNrZXRfbm90aWZpY2F0aW9uI2ZpbHRlcl9wcmVmaXggUzNCdWNrZXROb3RpZmljYXRpb24jZmlsdGVyX3ByZWZpeH1cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlclByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42OC4wL2RvY3MvcmVzb3VyY2VzL3MzX2J1Y2tldF9ub3RpZmljYXRpb24jZmlsdGVyX3N1ZmZpeCBTM0J1Y2tldE5vdGlmaWNhdGlvbiNmaWx0ZXJfc3VmZml4fVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyU3VmZml4Pzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,9 @@
1
+ export declare const BUCKET_READ_ACTIONS: string[];
2
+ export declare const BUCKET_READ_METADATA_ACTIONS: string[];
3
+ export declare const LEGACY_BUCKET_PUT_ACTIONS: string[];
4
+ export declare const BUCKET_PUT_ACTIONS: string[];
5
+ export declare const BUCKET_PUT_ACL_ACTIONS: string[];
6
+ export declare const BUCKET_PUT_POLICY_ACTIONS: string[];
7
+ export declare const BUCKET_DELETE_ACTIONS: string[];
8
+ export declare const KEY_READ_ACTIONS: string[];
9
+ export declare const KEY_WRITE_ACTIONS: string[];
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KEY_WRITE_ACTIONS = exports.KEY_READ_ACTIONS = exports.BUCKET_DELETE_ACTIONS = exports.BUCKET_PUT_POLICY_ACTIONS = exports.BUCKET_PUT_ACL_ACTIONS = exports.BUCKET_PUT_ACTIONS = exports.LEGACY_BUCKET_PUT_ACTIONS = exports.BUCKET_READ_METADATA_ACTIONS = exports.BUCKET_READ_ACTIONS = void 0;
4
+ // ref: https://github.com/aws/aws-cdk/blob/v2.160.0/packages/aws-cdk-lib/aws-s3/lib/perms.ts
5
+ exports.BUCKET_READ_ACTIONS = [
6
+ "s3:GetObject*",
7
+ "s3:GetBucket*",
8
+ "s3:List*",
9
+ ];
10
+ exports.BUCKET_READ_METADATA_ACTIONS = ["s3:GetBucket*", "s3:List*"];
11
+ exports.LEGACY_BUCKET_PUT_ACTIONS = ["s3:PutObject*", "s3:Abort*"];
12
+ exports.BUCKET_PUT_ACTIONS = [
13
+ "s3:PutObject",
14
+ "s3:PutObjectLegalHold",
15
+ "s3:PutObjectRetention",
16
+ "s3:PutObjectTagging",
17
+ "s3:PutObjectVersionTagging",
18
+ "s3:Abort*",
19
+ ];
20
+ exports.BUCKET_PUT_ACL_ACTIONS = [
21
+ "s3:PutObjectAcl",
22
+ "s3:PutObjectVersionAcl",
23
+ ];
24
+ exports.BUCKET_PUT_POLICY_ACTIONS = ["s3:PutBucketPolicy"];
25
+ exports.BUCKET_DELETE_ACTIONS = ["s3:DeleteObject*"];
26
+ exports.KEY_READ_ACTIONS = ["kms:Decrypt", "kms:DescribeKey"];
27
+ exports.KEY_WRITE_ACTIONS = [
28
+ "kms:Encrypt",
29
+ "kms:ReEncrypt*",
30
+ "kms:GenerateDataKey*",
31
+ "kms:Decrypt", // required for multipart uploads. Refer https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-kms-decrypt/
32
+ ];
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LXBlcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9zdG9yYWdlL2J1Y2tldC1wZXJtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RkFBNkY7QUFDaEYsUUFBQSxtQkFBbUIsR0FBRztJQUNqQyxlQUFlO0lBQ2YsZUFBZTtJQUNmLFVBQVU7Q0FDWCxDQUFDO0FBRVcsUUFBQSw0QkFBNEIsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUU3RCxRQUFBLHlCQUF5QixHQUFHLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTNELFFBQUEsa0JBQWtCLEdBQUc7SUFDaEMsY0FBYztJQUNkLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLDRCQUE0QjtJQUM1QixXQUFXO0NBQ1osQ0FBQztBQUVXLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsaUJBQWlCO0lBQ2pCLHdCQUF3QjtDQUN6QixDQUFDO0FBRVcsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFbkQsUUFBQSxxQkFBcUIsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFN0MsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRXRELFFBQUEsaUJBQWlCLEdBQUc7SUFDL0IsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixzQkFBc0I7SUFDdEIsYUFBYSxFQUFFLHlIQUF5SDtDQUN6SSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNjAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtczMvbGliL3Blcm1zLnRzXG5leHBvcnQgY29uc3QgQlVDS0VUX1JFQURfQUNUSU9OUyA9IFtcbiAgXCJzMzpHZXRPYmplY3QqXCIsXG4gIFwiczM6R2V0QnVja2V0KlwiLFxuICBcInMzOkxpc3QqXCIsXG5dO1xuXG5leHBvcnQgY29uc3QgQlVDS0VUX1JFQURfTUVUQURBVEFfQUNUSU9OUyA9IFtcInMzOkdldEJ1Y2tldCpcIiwgXCJzMzpMaXN0KlwiXTtcblxuZXhwb3J0IGNvbnN0IExFR0FDWV9CVUNLRVRfUFVUX0FDVElPTlMgPSBbXCJzMzpQdXRPYmplY3QqXCIsIFwiczM6QWJvcnQqXCJdO1xuXG5leHBvcnQgY29uc3QgQlVDS0VUX1BVVF9BQ1RJT05TID0gW1xuICBcInMzOlB1dE9iamVjdFwiLFxuICBcInMzOlB1dE9iamVjdExlZ2FsSG9sZFwiLFxuICBcInMzOlB1dE9iamVjdFJldGVudGlvblwiLFxuICBcInMzOlB1dE9iamVjdFRhZ2dpbmdcIixcbiAgXCJzMzpQdXRPYmplY3RWZXJzaW9uVGFnZ2luZ1wiLFxuICBcInMzOkFib3J0KlwiLFxuXTtcblxuZXhwb3J0IGNvbnN0IEJVQ0tFVF9QVVRfQUNMX0FDVElPTlMgPSBbXG4gIFwiczM6UHV0T2JqZWN0QWNsXCIsXG4gIFwiczM6UHV0T2JqZWN0VmVyc2lvbkFjbFwiLFxuXTtcblxuZXhwb3J0IGNvbnN0IEJVQ0tFVF9QVVRfUE9MSUNZX0FDVElPTlMgPSBbXCJzMzpQdXRCdWNrZXRQb2xpY3lcIl07XG5cbmV4cG9ydCBjb25zdCBCVUNLRVRfREVMRVRFX0FDVElPTlMgPSBbXCJzMzpEZWxldGVPYmplY3QqXCJdO1xuXG5leHBvcnQgY29uc3QgS0VZX1JFQURfQUNUSU9OUyA9IFtcImttczpEZWNyeXB0XCIsIFwia21zOkRlc2NyaWJlS2V5XCJdO1xuXG5leHBvcnQgY29uc3QgS0VZX1dSSVRFX0FDVElPTlMgPSBbXG4gIFwia21zOkVuY3J5cHRcIixcbiAgXCJrbXM6UmVFbmNyeXB0KlwiLFxuICBcImttczpHZW5lcmF0ZURhdGFLZXkqXCIsXG4gIFwia21zOkRlY3J5cHRcIiwgLy8gcmVxdWlyZWQgZm9yIG11bHRpcGFydCB1cGxvYWRzLiBSZWZlciBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvczMtbXVsdGlwYXJ0LWttcy1kZWNyeXB0L1xuXTtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ import { s3BucketPolicy } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { AwsConstructProps, AwsConstructBase } from "../aws-construct";
4
+ import { IBucket } from "./bucket";
5
+ import { PolicyDocument } from "../iam";
6
+ export interface BucketPolicyProps extends AwsConstructProps {
7
+ /**
8
+ * The Amazon S3 bucket that the policy applies to.
9
+ */
10
+ readonly bucket: IBucket;
11
+ }
12
+ /**
13
+ * The bucket policy for an Amazon S3 bucket
14
+ *
15
+ * Policies define the operations that are allowed on this resource.
16
+ *
17
+ * You almost never need to define this construct directly.
18
+ *
19
+ * All AWS resources that support resource policies have a method called
20
+ * `addToResourcePolicy()`, which will automatically create a new resource
21
+ * policy if one doesn't exist yet, otherwise it will add to the existing
22
+ * policy.
23
+ *
24
+ * The bucket policy method is implemented differently than `addToResourcePolicy()`
25
+ * as `BucketPolicy()` creates a new policy without knowing one earlier existed.
26
+ * e.g. if during Bucket creation, if `autoDeleteObject:true`, these policies are
27
+ * added to the bucket policy:
28
+ * ["s3:DeleteObject*", "s3:GetBucket*", "s3:List*", "s3:PutBucketPolicy"],
29
+ * and when you add a new BucketPolicy with ["s3:GetObject", "s3:ListBucket"] on
30
+ * this existing bucket, invoking `BucketPolicy()` will create a new Policy
31
+ * without knowing one earlier exists already, so it creates a new one.
32
+ * In this case, the custom resource handler will not have access to
33
+ * `s3:GetBucketTagging` action which will cause failure during deletion of stack.
34
+ *
35
+ * Hence its strongly recommended to use `addToResourcePolicy()` method to add
36
+ * new permissions to existing policy.
37
+ *
38
+ */
39
+ export declare class BucketPolicy extends AwsConstructBase {
40
+ readonly resource: s3BucketPolicy.S3BucketPolicy;
41
+ get outputs(): Record<string, any>;
42
+ /**
43
+ * A policy document containing permissions to add to the specified bucket.
44
+ * For more information, see Access Policy Language Overview in the Amazon
45
+ * Simple Storage Service Developer Guide.
46
+ */
47
+ readonly document: PolicyDocument;
48
+ /** The Bucket this Policy applies to. */
49
+ readonly bucket: IBucket;
50
+ constructor(scope: Construct, id: string, props: BucketPolicyProps);
51
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BucketPolicy = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const aws_construct_1 = require("../aws-construct");
8
+ const iam_1 = require("../iam");
9
+ /**
10
+ * The bucket policy for an Amazon S3 bucket
11
+ *
12
+ * Policies define the operations that are allowed on this resource.
13
+ *
14
+ * You almost never need to define this construct directly.
15
+ *
16
+ * All AWS resources that support resource policies have a method called
17
+ * `addToResourcePolicy()`, which will automatically create a new resource
18
+ * policy if one doesn't exist yet, otherwise it will add to the existing
19
+ * policy.
20
+ *
21
+ * The bucket policy method is implemented differently than `addToResourcePolicy()`
22
+ * as `BucketPolicy()` creates a new policy without knowing one earlier existed.
23
+ * e.g. if during Bucket creation, if `autoDeleteObject:true`, these policies are
24
+ * added to the bucket policy:
25
+ * ["s3:DeleteObject*", "s3:GetBucket*", "s3:List*", "s3:PutBucketPolicy"],
26
+ * and when you add a new BucketPolicy with ["s3:GetObject", "s3:ListBucket"] on
27
+ * this existing bucket, invoking `BucketPolicy()` will create a new Policy
28
+ * without knowing one earlier exists already, so it creates a new one.
29
+ * In this case, the custom resource handler will not have access to
30
+ * `s3:GetBucketTagging` action which will cause failure during deletion of stack.
31
+ *
32
+ * Hence its strongly recommended to use `addToResourcePolicy()` method to add
33
+ * new permissions to existing policy.
34
+ *
35
+ */
36
+ class BucketPolicy extends aws_construct_1.AwsConstructBase {
37
+ get outputs() {
38
+ return {};
39
+ }
40
+ constructor(scope, id, props) {
41
+ super(scope, id);
42
+ this.bucket = props.bucket;
43
+ this.document = new iam_1.PolicyDocument(this, "Policy");
44
+ this.resource = new provider_aws_1.s3BucketPolicy.S3BucketPolicy(this, "Resource", {
45
+ bucket: this.bucket.bucketName,
46
+ policy: this.document.json,
47
+ });
48
+ }
49
+ }
50
+ exports.BucketPolicy = BucketPolicy;
51
+ _a = JSII_RTTI_SYMBOL_1;
52
+ BucketPolicy[_a] = { fqn: "terraconstructs.aws.storage.BucketPolicy", version: "0.0.8" };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvc3RvcmFnZS9idWNrZXQtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXFEO0FBRXJELG9EQUF1RTtBQUV2RSxnQ0FBd0M7QUFTeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsZ0NBQWdCO0lBR2hELElBQVcsT0FBTztRQUNoQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFZRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNsRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzQkgsb0NBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgczNCdWNrZXRQb2xpY3kgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdFByb3BzLCBBd3NDb25zdHJ1Y3RCYXNlIH0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tIFwiLi9idWNrZXRcIjtcbmltcG9ydCB7IFBvbGljeURvY3VtZW50IH0gZnJvbSBcIi4uL2lhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldFBvbGljeVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBTMyBidWNrZXQgdGhhdCB0aGUgcG9saWN5IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG59XG5cbi8qKlxuICogVGhlIGJ1Y2tldCBwb2xpY3kgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXRcbiAqXG4gKiBQb2xpY2llcyBkZWZpbmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCBvbiB0aGlzIHJlc291cmNlLlxuICpcbiAqIFlvdSBhbG1vc3QgbmV2ZXIgbmVlZCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QgZGlyZWN0bHkuXG4gKlxuICogQWxsIEFXUyByZXNvdXJjZXMgdGhhdCBzdXBwb3J0IHJlc291cmNlIHBvbGljaWVzIGhhdmUgYSBtZXRob2QgY2FsbGVkXG4gKiBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCwgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIG5ldyByZXNvdXJjZVxuICogcG9saWN5IGlmIG9uZSBkb2Vzbid0IGV4aXN0IHlldCwgb3RoZXJ3aXNlIGl0IHdpbGwgYWRkIHRvIHRoZSBleGlzdGluZ1xuICogcG9saWN5LlxuICpcbiAqIFRoZSBidWNrZXQgcG9saWN5IG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSB0aGFuIGBhZGRUb1Jlc291cmNlUG9saWN5KClgXG4gKiBhcyBgQnVja2V0UG9saWN5KClgIGNyZWF0ZXMgYSBuZXcgcG9saWN5IHdpdGhvdXQga25vd2luZyBvbmUgZWFybGllciBleGlzdGVkLlxuICogZS5nLiBpZiBkdXJpbmcgQnVja2V0IGNyZWF0aW9uLCBpZiBgYXV0b0RlbGV0ZU9iamVjdDp0cnVlYCwgdGhlc2UgcG9saWNpZXMgYXJlXG4gKiBhZGRlZCB0byB0aGUgYnVja2V0IHBvbGljeTpcbiAqICAgIFtcInMzOkRlbGV0ZU9iamVjdCpcIiwgXCJzMzpHZXRCdWNrZXQqXCIsIFwiczM6TGlzdCpcIiwgXCJzMzpQdXRCdWNrZXRQb2xpY3lcIl0sXG4gKiBhbmQgd2hlbiB5b3UgYWRkIGEgbmV3IEJ1Y2tldFBvbGljeSB3aXRoIFtcInMzOkdldE9iamVjdFwiLCBcInMzOkxpc3RCdWNrZXRcIl0gb25cbiAqIHRoaXMgZXhpc3RpbmcgYnVja2V0LCBpbnZva2luZyBgQnVja2V0UG9saWN5KClgIHdpbGwgY3JlYXRlIGEgbmV3IFBvbGljeVxuICogd2l0aG91dCBrbm93aW5nIG9uZSBlYXJsaWVyIGV4aXN0cyBhbHJlYWR5LCBzbyBpdCBjcmVhdGVzIGEgbmV3IG9uZS5cbiAqIEluIHRoaXMgY2FzZSwgdGhlIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyIHdpbGwgbm90IGhhdmUgYWNjZXNzIHRvXG4gKiBgczM6R2V0QnVja2V0VGFnZ2luZ2AgYWN0aW9uIHdoaWNoIHdpbGwgY2F1c2UgZmFpbHVyZSBkdXJpbmcgZGVsZXRpb24gb2Ygc3RhY2suXG4gKlxuICogSGVuY2UgaXRzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIHVzZSBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCBtZXRob2QgdG8gYWRkXG4gKiBuZXcgcGVybWlzc2lvbnMgdG8gZXhpc3RpbmcgcG9saWN5LlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEJ1Y2tldFBvbGljeSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICAvLyBUT0RPOiByZS1hZGQgc3RhdGljIGZyb20gTWV0aG9kXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogczNCdWNrZXRQb2xpY3kuUzNCdWNrZXRQb2xpY3k7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogQSBwb2xpY3kgZG9jdW1lbnQgY29udGFpbmluZyBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhlIHNwZWNpZmllZCBidWNrZXQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgQWNjZXNzIFBvbGljeSBMYW5ndWFnZSBPdmVydmlldyBpbiB0aGUgQW1hem9uXG4gICAqIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBQb2xpY3lEb2N1bWVudDtcblxuICAvKiogVGhlIEJ1Y2tldCB0aGlzIFBvbGljeSBhcHBsaWVzIHRvLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCdWNrZXRQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmJ1Y2tldCA9IHByb3BzLmJ1Y2tldDtcbiAgICB0aGlzLmRvY3VtZW50ID0gbmV3IFBvbGljeURvY3VtZW50KHRoaXMsIFwiUG9saWN5XCIpO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBzM0J1Y2tldFBvbGljeS5TM0J1Y2tldFBvbGljeSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIGJ1Y2tldDogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgIHBvbGljeTogdGhpcy5kb2N1bWVudC5qc29uLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { s3Object } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { IBucket, AddSourceOptions } from ".";
4
+ import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "../aws-construct";
5
+ export interface BucketSourceProps extends AddSourceOptions, AwsConstructProps {
6
+ /**
7
+ * Target bucket to upload to
8
+ */
9
+ readonly bucket: IBucket;
10
+ }
11
+ export interface BucketObjectOutput {
12
+ /**
13
+ * The object source Hash
14
+ */
15
+ readonly sourceHash: string;
16
+ }
17
+ export interface BucketSourceOutputs {
18
+ /**
19
+ * The objects uploaded to the bucket indexed by key
20
+ */
21
+ readonly objects: Record<string, BucketObjectOutput>;
22
+ }
23
+ export interface IBucketSource extends IAwsConstruct {
24
+ readonly bucketSourceOutputs: BucketSourceOutputs;
25
+ }
26
+ /**
27
+ * A Bucket Source which reads files from disk and creates uploads to s3.
28
+ */
29
+ export declare class BucketSource extends AwsConstructBase implements IBucketSource {
30
+ readonly objects: s3Object.S3Object[];
31
+ private readonly _bucketSourceOutputs;
32
+ get bucketSourceOutputs(): BucketSourceOutputs;
33
+ get outputs(): Record<string, any>;
34
+ private readonly dependsOn;
35
+ private readonly resolvedPath;
36
+ private readonly prefix;
37
+ private _bucket;
38
+ constructor(scope: Construct, id: string, props: BucketSourceProps);
39
+ private uploadAssetDir;
40
+ private uploadAssetFile;
41
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BucketSource = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const fs = require("fs");
7
+ const path = require("path");
8
+ const provider_aws_1 = require("@cdktf/provider-aws");
9
+ const cdktf_1 = require("cdktf");
10
+ const mime = require("mime-types");
11
+ const _1 = require(".");
12
+ const aws_construct_1 = require("../aws-construct");
13
+ /**
14
+ * A Bucket Source which reads files from disk and creates uploads to s3.
15
+ */
16
+ class BucketSource extends aws_construct_1.AwsConstructBase {
17
+ get bucketSourceOutputs() {
18
+ return this._bucketSourceOutputs;
19
+ }
20
+ get outputs() {
21
+ return this.bucketSourceOutputs;
22
+ }
23
+ constructor(scope, id, props) {
24
+ super(scope, id, props);
25
+ this.objects = [];
26
+ this.dependsOn = [];
27
+ const { bucket, path: sourcePath, prefix } = props;
28
+ this._bucket = bucket;
29
+ this.dependsOn = props.dependsOn ?? [];
30
+ // should we support absolute paths? path.isAbsolute(props.path)?
31
+ this.resolvedPath = path.resolve(sourcePath);
32
+ this.prefix = prefix ?? "";
33
+ const asset = new cdktf_1.TerraformAsset(this, "PathAsset", {
34
+ path: this.resolvedPath,
35
+ type: cdktf_1.AssetType.DIRECTORY,
36
+ });
37
+ this.uploadAssetDir(sourcePath, asset.path);
38
+ this._bucketSourceOutputs = {
39
+ objects: this.objects.reduce((acc, obj) => {
40
+ acc[obj.key] = {
41
+ sourceHash: obj.sourceHash,
42
+ };
43
+ return acc;
44
+ }, {}),
45
+ };
46
+ }
47
+ // TODO: Handle deployments with custom lambdas instead?
48
+ // https://github.com/aws/aws-cdk/blob/9946ab03672bf6664e8ec95a81ddb67c3bb2f63b/packages/%40aws-cdk/custom-resource-handlers/lib/aws-s3-deployment/bucket-deployment-handler/index.py
49
+ uploadAssetDir(basePath, assetPath) {
50
+ const files = fs.readdirSync(basePath, { withFileTypes: true });
51
+ for (const file of files) {
52
+ const baseFilename = path.join(basePath, file.name);
53
+ const assetFilename = path.join(assetPath, file.name);
54
+ if (file.isDirectory()) {
55
+ this.uploadAssetDir(baseFilename, assetFilename);
56
+ }
57
+ else {
58
+ this.uploadAssetFile(baseFilename, assetFilename);
59
+ }
60
+ }
61
+ }
62
+ uploadAssetFile(basePath, assetPath) {
63
+ let relativePath = path.join(this.prefix, basePath.replace(this.resolvedPath, ""));
64
+ const fileKey = (0, _1.normalPath)(relativePath);
65
+ // copy from asset directory
66
+ this.objects.push(new provider_aws_1.s3Object.S3Object(this, `File${fileKey.replace(/\//g, "--")}`, {
67
+ key: fileKey,
68
+ bucket: this._bucket.bucketOutputs.name,
69
+ source: assetPath,
70
+ sourceHash: cdktf_1.Fn.filemd5(assetPath),
71
+ contentType: mime.contentType(path.extname(assetPath)) || undefined,
72
+ dependsOn: this.dependsOn.length > 0 ? this.dependsOn : undefined,
73
+ }));
74
+ }
75
+ }
76
+ exports.BucketSource = BucketSource;
77
+ _a = JSII_RTTI_SYMBOL_1;
78
+ BucketSource[_a] = { fqn: "terraconstructs.aws.storage.BucketSource", version: "0.0.8" };
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvc3RvcmFnZS9idWNrZXQtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixzREFBK0M7QUFDL0MsaUNBQTRFO0FBRTVFLG1DQUFtQztBQUNuQyx3QkFBMEQ7QUFDMUQsb0RBSTBCO0FBMkIxQjs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGdDQUFnQjtJQUloRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFPRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBakJWLFlBQU8sR0FBd0IsRUFBRSxDQUFDO1FBV2pDLGNBQVMsR0FBMkIsRUFBRSxDQUFDO1FBUXRELE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxpRUFBaUU7UUFFakUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUUzQixNQUFNLEtBQUssR0FBRyxJQUFJLHNCQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUNsRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDdkIsSUFBSSxFQUFFLGlCQUFTLENBQUMsU0FBUztTQUMxQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDMUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ1gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRztvQkFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7aUJBQzNCLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQ0QsRUFBd0MsQ0FDekM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxxTEFBcUw7SUFDN0ssY0FBYyxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDeEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDbkQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQ3pELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQzFCLElBQUksQ0FBQyxNQUFNLEVBQ1gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUN4QyxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBQSxhQUFVLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFFekMsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLElBQUksdUJBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNqRSxHQUFHLEVBQUUsT0FBTztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQ3ZDLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFVBQVUsRUFBRSxVQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksU0FBUztZQUNuRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ2xFLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7QUFqRkgsb0NBa0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBzM09iamVjdCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1Bc3NldCwgQXNzZXRUeXBlLCBGbiwgSVRlcnJhZm9ybURlcGVuZGFibGUgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5pbXBvcnQgeyBub3JtYWxQYXRoLCBJQnVja2V0LCBBZGRTb3VyY2VPcHRpb25zIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7XG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldFNvdXJjZVByb3BzIGV4dGVuZHMgQWRkU291cmNlT3B0aW9ucywgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGFyZ2V0IGJ1Y2tldCB0byB1cGxvYWQgdG9cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWNrZXRPYmplY3RPdXRwdXQge1xuICAvKipcbiAgICogVGhlIG9iamVjdCBzb3VyY2UgSGFzaFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSGFzaDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldFNvdXJjZU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIG9iamVjdHMgdXBsb2FkZWQgdG8gdGhlIGJ1Y2tldCBpbmRleGVkIGJ5IGtleVxuICAgKi9cbiAgcmVhZG9ubHkgb2JqZWN0czogUmVjb3JkPHN0cmluZywgQnVja2V0T2JqZWN0T3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQnVja2V0U291cmNlIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGJ1Y2tldFNvdXJjZU91dHB1dHM6IEJ1Y2tldFNvdXJjZU91dHB1dHM7XG59XG5cbi8qKlxuICogQSBCdWNrZXQgU291cmNlIHdoaWNoIHJlYWRzIGZpbGVzIGZyb20gZGlzayBhbmQgY3JlYXRlcyB1cGxvYWRzIHRvIHMzLlxuICovXG5leHBvcnQgY2xhc3MgQnVja2V0U291cmNlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElCdWNrZXRTb3VyY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgb2JqZWN0czogczNPYmplY3QuUzNPYmplY3RbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1Y2tldFNvdXJjZU91dHB1dHM6IEJ1Y2tldFNvdXJjZU91dHB1dHM7XG4gIHB1YmxpYyBnZXQgYnVja2V0U291cmNlT3V0cHV0cygpOiBCdWNrZXRTb3VyY2VPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fYnVja2V0U291cmNlT3V0cHV0cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXRTb3VyY2VPdXRwdXRzO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRzT246IElUZXJyYWZvcm1EZXBlbmRhYmxlW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlZFBhdGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSBfYnVja2V0OiBJQnVja2V0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCdWNrZXRTb3VyY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgY29uc3QgeyBidWNrZXQsIHBhdGg6IHNvdXJjZVBhdGgsIHByZWZpeCB9ID0gcHJvcHM7XG5cbiAgICB0aGlzLl9idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5kZXBlbmRzT24gPSBwcm9wcy5kZXBlbmRzT24gPz8gW107XG4gICAgLy8gc2hvdWxkIHdlIHN1cHBvcnQgYWJzb2x1dGUgcGF0aHM/IHBhdGguaXNBYnNvbHV0ZShwcm9wcy5wYXRoKT9cblxuICAgIHRoaXMucmVzb2x2ZWRQYXRoID0gcGF0aC5yZXNvbHZlKHNvdXJjZVBhdGgpO1xuICAgIHRoaXMucHJlZml4ID0gcHJlZml4ID8/IFwiXCI7XG5cbiAgICBjb25zdCBhc3NldCA9IG5ldyBUZXJyYWZvcm1Bc3NldCh0aGlzLCBcIlBhdGhBc3NldFwiLCB7XG4gICAgICBwYXRoOiB0aGlzLnJlc29sdmVkUGF0aCxcbiAgICAgIHR5cGU6IEFzc2V0VHlwZS5ESVJFQ1RPUlksXG4gICAgfSk7XG4gICAgdGhpcy51cGxvYWRBc3NldERpcihzb3VyY2VQYXRoLCBhc3NldC5wYXRoKTtcblxuICAgIHRoaXMuX2J1Y2tldFNvdXJjZU91dHB1dHMgPSB7XG4gICAgICBvYmplY3RzOiB0aGlzLm9iamVjdHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBvYmopID0+IHtcbiAgICAgICAgICBhY2Nbb2JqLmtleV0gPSB7XG4gICAgICAgICAgICBzb3VyY2VIYXNoOiBvYmouc291cmNlSGFzaCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIEJ1Y2tldE9iamVjdE91dHB1dD4sXG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICAvLyBUT0RPOiBIYW5kbGUgZGVwbG95bWVudHMgd2l0aCBjdXN0b20gbGFtYmRhcyBpbnN0ZWFkP1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi85OTQ2YWIwMzY3MmJmNjY2NGU4ZWM5NWE4MWRkYjY3YzNiYjJmNjNiL3BhY2thZ2VzLyU0MGF3cy1jZGsvY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzL2xpYi9hd3MtczMtZGVwbG95bWVudC9idWNrZXQtZGVwbG95bWVudC1oYW5kbGVyL2luZGV4LnB5XG4gIHByaXZhdGUgdXBsb2FkQXNzZXREaXIoYmFzZVBhdGg6IHN0cmluZywgYXNzZXRQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGJhc2VQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBiYXNlRmlsZW5hbWUgPSBwYXRoLmpvaW4oYmFzZVBhdGgsIGZpbGUubmFtZSk7XG4gICAgICBjb25zdCBhc3NldEZpbGVuYW1lID0gcGF0aC5qb2luKGFzc2V0UGF0aCwgZmlsZS5uYW1lKTtcbiAgICAgIGlmIChmaWxlLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgdGhpcy51cGxvYWRBc3NldERpcihiYXNlRmlsZW5hbWUsIGFzc2V0RmlsZW5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGxvYWRBc3NldEZpbGUoYmFzZUZpbGVuYW1lLCBhc3NldEZpbGVuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwbG9hZEFzc2V0RmlsZShiYXNlUGF0aDogc3RyaW5nLCBhc3NldFBhdGg6IHN0cmluZykge1xuICAgIGxldCByZWxhdGl2ZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICB0aGlzLnByZWZpeCxcbiAgICAgIGJhc2VQYXRoLnJlcGxhY2UodGhpcy5yZXNvbHZlZFBhdGgsIFwiXCIpLFxuICAgICk7XG4gICAgY29uc3QgZmlsZUtleSA9IG5vcm1hbFBhdGgocmVsYXRpdmVQYXRoKTtcblxuICAgIC8vIGNvcHkgZnJvbSBhc3NldCBkaXJlY3RvcnlcbiAgICB0aGlzLm9iamVjdHMucHVzaChcbiAgICAgIG5ldyBzM09iamVjdC5TM09iamVjdCh0aGlzLCBgRmlsZSR7ZmlsZUtleS5yZXBsYWNlKC9cXC8vZywgXCItLVwiKX1gLCB7XG4gICAgICAgIGtleTogZmlsZUtleSxcbiAgICAgICAgYnVja2V0OiB0aGlzLl9idWNrZXQuYnVja2V0T3V0cHV0cy5uYW1lLFxuICAgICAgICBzb3VyY2U6IGFzc2V0UGF0aCxcbiAgICAgICAgc291cmNlSGFzaDogRm4uZmlsZW1kNShhc3NldFBhdGgpLFxuICAgICAgICBjb250ZW50VHlwZTogbWltZS5jb250ZW50VHlwZShwYXRoLmV4dG5hbWUoYXNzZXRQYXRoKSkgfHwgdW5kZWZpbmVkLFxuICAgICAgICBkZXBlbmRzT246IHRoaXMuZGVwZW5kc09uLmxlbmd0aCA+IDAgPyB0aGlzLmRlcGVuZHNPbiA6IHVuZGVmaW5lZCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==