@gradientedge/cdk-utils-aws 1.0.0

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 (288) hide show
  1. package/LICENSE +21 -0
  2. package/dist/src/common/construct.d.ts +85 -0
  3. package/dist/src/common/construct.js +125 -0
  4. package/dist/src/common/index.d.ts +4 -0
  5. package/dist/src/common/index.js +4 -0
  6. package/dist/src/common/resource-name-formatter.d.ts +13 -0
  7. package/dist/src/common/resource-name-formatter.js +30 -0
  8. package/dist/src/common/stack.d.ts +62 -0
  9. package/dist/src/common/stack.js +139 -0
  10. package/dist/src/common/types.d.ts +30 -0
  11. package/dist/src/common/types.js +1 -0
  12. package/dist/src/construct/api-to-any-target/index.d.ts +3 -0
  13. package/dist/src/construct/api-to-any-target/index.js +3 -0
  14. package/dist/src/construct/api-to-any-target/main.d.ts +47 -0
  15. package/dist/src/construct/api-to-any-target/main.js +154 -0
  16. package/dist/src/construct/api-to-any-target/target.d.ts +23 -0
  17. package/dist/src/construct/api-to-any-target/target.js +14 -0
  18. package/dist/src/construct/api-to-any-target/types.d.ts +60 -0
  19. package/dist/src/construct/api-to-any-target/types.js +1 -0
  20. package/dist/src/construct/api-to-eventbridge-target/api.d.ts +34 -0
  21. package/dist/src/construct/api-to-eventbridge-target/api.js +23 -0
  22. package/dist/src/construct/api-to-eventbridge-target/event.d.ts +15 -0
  23. package/dist/src/construct/api-to-eventbridge-target/event.js +12 -0
  24. package/dist/src/construct/api-to-eventbridge-target/index.d.ts +4 -0
  25. package/dist/src/construct/api-to-eventbridge-target/index.js +4 -0
  26. package/dist/src/construct/api-to-eventbridge-target/main.d.ts +121 -0
  27. package/dist/src/construct/api-to-eventbridge-target/main.js +442 -0
  28. package/dist/src/construct/api-to-eventbridge-target/types.d.ts +100 -0
  29. package/dist/src/construct/api-to-eventbridge-target/types.js +1 -0
  30. package/dist/src/construct/api-to-eventbridge-target-with-sns/api-destined-lambda.d.ts +16 -0
  31. package/dist/src/construct/api-to-eventbridge-target-with-sns/api-destined-lambda.js +12 -0
  32. package/dist/src/construct/api-to-eventbridge-target-with-sns/index.d.ts +3 -0
  33. package/dist/src/construct/api-to-eventbridge-target-with-sns/index.js +3 -0
  34. package/dist/src/construct/api-to-eventbridge-target-with-sns/main.d.ts +159 -0
  35. package/dist/src/construct/api-to-eventbridge-target-with-sns/main.js +547 -0
  36. package/dist/src/construct/api-to-eventbridge-target-with-sns/types.d.ts +22 -0
  37. package/dist/src/construct/api-to-eventbridge-target-with-sns/types.js +1 -0
  38. package/dist/src/construct/api-to-lambda-target/api.d.ts +35 -0
  39. package/dist/src/construct/api-to-lambda-target/api.js +24 -0
  40. package/dist/src/construct/api-to-lambda-target/index.d.ts +3 -0
  41. package/dist/src/construct/api-to-lambda-target/index.js +3 -0
  42. package/dist/src/construct/api-to-lambda-target/main.d.ts +70 -0
  43. package/dist/src/construct/api-to-lambda-target/main.js +218 -0
  44. package/dist/src/construct/api-to-lambda-target/types.d.ts +62 -0
  45. package/dist/src/construct/api-to-lambda-target/types.js +1 -0
  46. package/dist/src/construct/application-configuration/index.d.ts +2 -0
  47. package/dist/src/construct/application-configuration/index.js +2 -0
  48. package/dist/src/construct/application-configuration/main.d.ts +23 -0
  49. package/dist/src/construct/application-configuration/main.js +79 -0
  50. package/dist/src/construct/application-configuration/types.d.ts +6 -0
  51. package/dist/src/construct/application-configuration/types.js +1 -0
  52. package/dist/src/construct/event-handler/handler.d.ts +29 -0
  53. package/dist/src/construct/event-handler/handler.js +21 -0
  54. package/dist/src/construct/event-handler/index.d.ts +3 -0
  55. package/dist/src/construct/event-handler/index.js +3 -0
  56. package/dist/src/construct/event-handler/main.d.ts +91 -0
  57. package/dist/src/construct/event-handler/main.js +196 -0
  58. package/dist/src/construct/event-handler/types.d.ts +41 -0
  59. package/dist/src/construct/event-handler/types.js +1 -0
  60. package/dist/src/construct/index.d.ts +14 -0
  61. package/dist/src/construct/index.js +14 -0
  62. package/dist/src/construct/lambda-with-iam-access/index.d.ts +2 -0
  63. package/dist/src/construct/lambda-with-iam-access/index.js +2 -0
  64. package/dist/src/construct/lambda-with-iam-access/main.d.ts +78 -0
  65. package/dist/src/construct/lambda-with-iam-access/main.js +182 -0
  66. package/dist/src/construct/lambda-with-iam-access/types.d.ts +20 -0
  67. package/dist/src/construct/lambda-with-iam-access/types.js +1 -0
  68. package/dist/src/construct/piped-event-handler/index.d.ts +2 -0
  69. package/dist/src/construct/piped-event-handler/index.js +2 -0
  70. package/dist/src/construct/piped-event-handler/main.d.ts +38 -0
  71. package/dist/src/construct/piped-event-handler/main.js +62 -0
  72. package/dist/src/construct/piped-event-handler/types.d.ts +9 -0
  73. package/dist/src/construct/piped-event-handler/types.js +1 -0
  74. package/dist/src/construct/rest-api-lambda/index.d.ts +2 -0
  75. package/dist/src/construct/rest-api-lambda/index.js +2 -0
  76. package/dist/src/construct/rest-api-lambda/main.d.ts +96 -0
  77. package/dist/src/construct/rest-api-lambda/main.js +170 -0
  78. package/dist/src/construct/rest-api-lambda/types.d.ts +23 -0
  79. package/dist/src/construct/rest-api-lambda/types.js +1 -0
  80. package/dist/src/construct/rest-api-lambda-with-cache/index.d.ts +2 -0
  81. package/dist/src/construct/rest-api-lambda-with-cache/index.js +2 -0
  82. package/dist/src/construct/rest-api-lambda-with-cache/main.d.ts +56 -0
  83. package/dist/src/construct/rest-api-lambda-with-cache/main.js +118 -0
  84. package/dist/src/construct/rest-api-lambda-with-cache/types.d.ts +11 -0
  85. package/dist/src/construct/rest-api-lambda-with-cache/types.js +1 -0
  86. package/dist/src/construct/site-with-ecs-backend/constants.d.ts +4 -0
  87. package/dist/src/construct/site-with-ecs-backend/constants.js +5 -0
  88. package/dist/src/construct/site-with-ecs-backend/index.d.ts +3 -0
  89. package/dist/src/construct/site-with-ecs-backend/index.js +3 -0
  90. package/dist/src/construct/site-with-ecs-backend/main.d.ts +154 -0
  91. package/dist/src/construct/site-with-ecs-backend/main.js +437 -0
  92. package/dist/src/construct/site-with-ecs-backend/types.d.ts +49 -0
  93. package/dist/src/construct/site-with-ecs-backend/types.js +1 -0
  94. package/dist/src/construct/site-with-lambda-backend/constants.d.ts +5 -0
  95. package/dist/src/construct/site-with-lambda-backend/constants.js +6 -0
  96. package/dist/src/construct/site-with-lambda-backend/index.d.ts +3 -0
  97. package/dist/src/construct/site-with-lambda-backend/index.js +3 -0
  98. package/dist/src/construct/site-with-lambda-backend/main.d.ts +116 -0
  99. package/dist/src/construct/site-with-lambda-backend/main.js +316 -0
  100. package/dist/src/construct/site-with-lambda-backend/types.d.ts +45 -0
  101. package/dist/src/construct/site-with-lambda-backend/types.js +1 -0
  102. package/dist/src/construct/static-asset-deployment/index.d.ts +2 -0
  103. package/dist/src/construct/static-asset-deployment/index.js +2 -0
  104. package/dist/src/construct/static-asset-deployment/main.d.ts +41 -0
  105. package/dist/src/construct/static-asset-deployment/main.js +113 -0
  106. package/dist/src/construct/static-asset-deployment/types.d.ts +41 -0
  107. package/dist/src/construct/static-asset-deployment/types.js +1 -0
  108. package/dist/src/construct/static-site/index.d.ts +2 -0
  109. package/dist/src/construct/static-site/index.js +2 -0
  110. package/dist/src/construct/static-site/main.d.ts +84 -0
  111. package/dist/src/construct/static-site/main.js +136 -0
  112. package/dist/src/construct/static-site/types.d.ts +30 -0
  113. package/dist/src/construct/static-site/types.js +1 -0
  114. package/dist/src/index.d.ts +5 -0
  115. package/dist/src/index.js +5 -0
  116. package/dist/src/services/api-gateway/index.d.ts +2 -0
  117. package/dist/src/services/api-gateway/index.js +2 -0
  118. package/dist/src/services/api-gateway/main.d.ts +68 -0
  119. package/dist/src/services/api-gateway/main.js +173 -0
  120. package/dist/src/services/api-gateway/types.d.ts +10 -0
  121. package/dist/src/services/api-gateway/types.js +1 -0
  122. package/dist/src/services/appconfig/constants.d.ts +12 -0
  123. package/dist/src/services/appconfig/constants.js +51 -0
  124. package/dist/src/services/appconfig/index.d.ts +3 -0
  125. package/dist/src/services/appconfig/index.js +3 -0
  126. package/dist/src/services/appconfig/main.d.ts +63 -0
  127. package/dist/src/services/appconfig/main.js +119 -0
  128. package/dist/src/services/appconfig/types.d.ts +17 -0
  129. package/dist/src/services/appconfig/types.js +1 -0
  130. package/dist/src/services/certificate-manager/index.d.ts +2 -0
  131. package/dist/src/services/certificate-manager/index.js +2 -0
  132. package/dist/src/services/certificate-manager/main.d.ts +41 -0
  133. package/dist/src/services/certificate-manager/main.js +62 -0
  134. package/dist/src/services/certificate-manager/types.d.ts +11 -0
  135. package/dist/src/services/certificate-manager/types.js +1 -0
  136. package/dist/src/services/cloudfront/index.d.ts +2 -0
  137. package/dist/src/services/cloudfront/index.js +2 -0
  138. package/dist/src/services/cloudfront/main.d.ts +96 -0
  139. package/dist/src/services/cloudfront/main.js +233 -0
  140. package/dist/src/services/cloudfront/types.d.ts +13 -0
  141. package/dist/src/services/cloudfront/types.js +1 -0
  142. package/dist/src/services/cloudtrail/index.d.ts +2 -0
  143. package/dist/src/services/cloudtrail/index.js +2 -0
  144. package/dist/src/services/cloudtrail/main.d.ts +44 -0
  145. package/dist/src/services/cloudtrail/main.js +71 -0
  146. package/dist/src/services/cloudtrail/types.d.ts +5 -0
  147. package/dist/src/services/cloudtrail/types.js +1 -0
  148. package/dist/src/services/cloudwatch/index.d.ts +3 -0
  149. package/dist/src/services/cloudwatch/index.js +3 -0
  150. package/dist/src/services/cloudwatch/logs.d.ts +47 -0
  151. package/dist/src/services/cloudwatch/logs.js +98 -0
  152. package/dist/src/services/cloudwatch/main.d.ts +207 -0
  153. package/dist/src/services/cloudwatch/main.js +552 -0
  154. package/dist/src/services/cloudwatch/types.d.ts +89 -0
  155. package/dist/src/services/cloudwatch/types.js +1 -0
  156. package/dist/src/services/codebuild/index.d.ts +1 -0
  157. package/dist/src/services/codebuild/index.js +1 -0
  158. package/dist/src/services/codebuild/main.d.ts +36 -0
  159. package/dist/src/services/codebuild/main.js +67 -0
  160. package/dist/src/services/constants.d.ts +4 -0
  161. package/dist/src/services/constants.js +5 -0
  162. package/dist/src/services/dynamodb/index.d.ts +2 -0
  163. package/dist/src/services/dynamodb/index.js +2 -0
  164. package/dist/src/services/dynamodb/main.d.ts +35 -0
  165. package/dist/src/services/dynamodb/main.js +72 -0
  166. package/dist/src/services/dynamodb/types.d.ts +10 -0
  167. package/dist/src/services/dynamodb/types.js +1 -0
  168. package/dist/src/services/elastic-container-registry/index.d.ts +1 -0
  169. package/dist/src/services/elastic-container-registry/index.js +1 -0
  170. package/dist/src/services/elastic-container-registry/main.d.ts +27 -0
  171. package/dist/src/services/elastic-container-registry/main.js +33 -0
  172. package/dist/src/services/elastic-container-service/index.d.ts +2 -0
  173. package/dist/src/services/elastic-container-service/index.js +2 -0
  174. package/dist/src/services/elastic-container-service/main.d.ts +56 -0
  175. package/dist/src/services/elastic-container-service/main.js +149 -0
  176. package/dist/src/services/elastic-container-service/types.d.ts +45 -0
  177. package/dist/src/services/elastic-container-service/types.js +1 -0
  178. package/dist/src/services/elastic-file-system/index.d.ts +2 -0
  179. package/dist/src/services/elastic-file-system/index.js +2 -0
  180. package/dist/src/services/elastic-file-system/main.d.ts +42 -0
  181. package/dist/src/services/elastic-file-system/main.js +76 -0
  182. package/dist/src/services/elastic-file-system/types.d.ts +15 -0
  183. package/dist/src/services/elastic-file-system/types.js +1 -0
  184. package/dist/src/services/elastic-kubernetes-service/index.d.ts +2 -0
  185. package/dist/src/services/elastic-kubernetes-service/index.js +2 -0
  186. package/dist/src/services/elastic-kubernetes-service/main.d.ts +32 -0
  187. package/dist/src/services/elastic-kubernetes-service/main.js +85 -0
  188. package/dist/src/services/elastic-kubernetes-service/types.d.ts +7 -0
  189. package/dist/src/services/elastic-kubernetes-service/types.js +1 -0
  190. package/dist/src/services/elasticache/index.d.ts +2 -0
  191. package/dist/src/services/elasticache/index.js +2 -0
  192. package/dist/src/services/elasticache/main.d.ts +47 -0
  193. package/dist/src/services/elasticache/main.js +90 -0
  194. package/dist/src/services/elasticache/types.d.ts +9 -0
  195. package/dist/src/services/elasticache/types.js +1 -0
  196. package/dist/src/services/eventbridge/index.d.ts +3 -0
  197. package/dist/src/services/eventbridge/index.js +3 -0
  198. package/dist/src/services/eventbridge/main.d.ts +93 -0
  199. package/dist/src/services/eventbridge/main.js +295 -0
  200. package/dist/src/services/eventbridge/target.d.ts +57 -0
  201. package/dist/src/services/eventbridge/target.js +61 -0
  202. package/dist/src/services/eventbridge/types.d.ts +43 -0
  203. package/dist/src/services/eventbridge/types.js +1 -0
  204. package/dist/src/services/evidently/index.d.ts +2 -0
  205. package/dist/src/services/evidently/index.js +2 -0
  206. package/dist/src/services/evidently/main.d.ts +56 -0
  207. package/dist/src/services/evidently/main.js +114 -0
  208. package/dist/src/services/evidently/types.d.ts +21 -0
  209. package/dist/src/services/evidently/types.js +1 -0
  210. package/dist/src/services/identity-access-management/index.d.ts +1 -0
  211. package/dist/src/services/identity-access-management/index.js +1 -0
  212. package/dist/src/services/identity-access-management/main.d.ts +263 -0
  213. package/dist/src/services/identity-access-management/main.js +609 -0
  214. package/dist/src/services/index.d.ts +28 -0
  215. package/dist/src/services/index.js +28 -0
  216. package/dist/src/services/key-management-service/index.d.ts +2 -0
  217. package/dist/src/services/key-management-service/index.js +2 -0
  218. package/dist/src/services/key-management-service/main.d.ts +28 -0
  219. package/dist/src/services/key-management-service/main.js +39 -0
  220. package/dist/src/services/key-management-service/types.d.ts +5 -0
  221. package/dist/src/services/key-management-service/types.js +1 -0
  222. package/dist/src/services/lambda/index.d.ts +2 -0
  223. package/dist/src/services/lambda/index.js +2 -0
  224. package/dist/src/services/lambda/main.d.ts +89 -0
  225. package/dist/src/services/lambda/main.js +232 -0
  226. package/dist/src/services/lambda/types.d.ts +54 -0
  227. package/dist/src/services/lambda/types.js +1 -0
  228. package/dist/src/services/route53/index.d.ts +2 -0
  229. package/dist/src/services/route53/index.js +2 -0
  230. package/dist/src/services/route53/main.d.ts +66 -0
  231. package/dist/src/services/route53/main.js +136 -0
  232. package/dist/src/services/route53/types.d.ts +6 -0
  233. package/dist/src/services/route53/types.js +1 -0
  234. package/dist/src/services/secrets-manager/index.d.ts +2 -0
  235. package/dist/src/services/secrets-manager/index.js +2 -0
  236. package/dist/src/services/secrets-manager/main.d.ts +43 -0
  237. package/dist/src/services/secrets-manager/main.js +71 -0
  238. package/dist/src/services/secrets-manager/types.d.ts +3 -0
  239. package/dist/src/services/secrets-manager/types.js +1 -0
  240. package/dist/src/services/simple-notification-service/index.d.ts +2 -0
  241. package/dist/src/services/simple-notification-service/index.js +2 -0
  242. package/dist/src/services/simple-notification-service/main.d.ts +38 -0
  243. package/dist/src/services/simple-notification-service/main.js +68 -0
  244. package/dist/src/services/simple-notification-service/types.d.ts +5 -0
  245. package/dist/src/services/simple-notification-service/types.js +1 -0
  246. package/dist/src/services/simple-queue-service/index.d.ts +2 -0
  247. package/dist/src/services/simple-queue-service/index.js +2 -0
  248. package/dist/src/services/simple-queue-service/main.d.ts +45 -0
  249. package/dist/src/services/simple-queue-service/main.js +101 -0
  250. package/dist/src/services/simple-queue-service/types.d.ts +15 -0
  251. package/dist/src/services/simple-queue-service/types.js +1 -0
  252. package/dist/src/services/simple-storage-service/index.d.ts +2 -0
  253. package/dist/src/services/simple-storage-service/index.js +2 -0
  254. package/dist/src/services/simple-storage-service/main.d.ts +79 -0
  255. package/dist/src/services/simple-storage-service/main.js +191 -0
  256. package/dist/src/services/simple-storage-service/types.d.ts +25 -0
  257. package/dist/src/services/simple-storage-service/types.js +1 -0
  258. package/dist/src/services/step-function/index.d.ts +2 -0
  259. package/dist/src/services/step-function/index.js +2 -0
  260. package/dist/src/services/step-function/main.d.ts +161 -0
  261. package/dist/src/services/step-function/main.js +380 -0
  262. package/dist/src/services/step-function/types.d.ts +88 -0
  263. package/dist/src/services/step-function/types.js +1 -0
  264. package/dist/src/services/systems-manager/index.d.ts +2 -0
  265. package/dist/src/services/systems-manager/index.js +2 -0
  266. package/dist/src/services/systems-manager/main.d.ts +55 -0
  267. package/dist/src/services/systems-manager/main.js +97 -0
  268. package/dist/src/services/systems-manager/types.d.ts +9 -0
  269. package/dist/src/services/systems-manager/types.js +1 -0
  270. package/dist/src/services/virtual-private-cloud/index.d.ts +2 -0
  271. package/dist/src/services/virtual-private-cloud/index.js +2 -0
  272. package/dist/src/services/virtual-private-cloud/ipv6.d.ts +7 -0
  273. package/dist/src/services/virtual-private-cloud/ipv6.js +38 -0
  274. package/dist/src/services/virtual-private-cloud/main.d.ts +43 -0
  275. package/dist/src/services/virtual-private-cloud/main.js +87 -0
  276. package/dist/src/services/virtual-private-cloud/types.d.ts +4 -0
  277. package/dist/src/services/virtual-private-cloud/types.js +1 -0
  278. package/dist/src/services/web-application-firewall/index.d.ts +2 -0
  279. package/dist/src/services/web-application-firewall/index.js +2 -0
  280. package/dist/src/services/web-application-firewall/main.d.ts +35 -0
  281. package/dist/src/services/web-application-firewall/main.js +61 -0
  282. package/dist/src/services/web-application-firewall/types.d.ts +9 -0
  283. package/dist/src/services/web-application-firewall/types.js +1 -0
  284. package/dist/src/types/index.d.ts +6 -0
  285. package/dist/src/types/index.js +1 -0
  286. package/dist/src/utils/index.d.ts +45 -0
  287. package/dist/src/utils/index.js +61 -0
  288. package/package.json +44 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Gradient Edge, https://github.com/gradientedge
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,85 @@
1
+ import { CfnOutput } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { AcmManager, ApiManager, AppConfigManager, CloudFrontManager, CloudTrailManager, CloudWatchManager, CodeBuildManager, DynamodbManager, EcrManager, EcsManager, EfsManager, EksManager, ElastiCacheManager, EventManager, EventTargetManager, EvidentlyManager, IamManager, KmsManager, LambdaManager, LogManager, Route53Manager, S3Manager, SecretsManager, SfnManager, SnsManager, SqsManager, SsmManager, VpcManager, WafManager } from '../services/index.js';
4
+ import { ResourceNameFormatter } from './resource-name-formatter.js';
5
+ import { CommonStackProps } from './types.js';
6
+ /**
7
+ * @subcategory Construct
8
+ * @classdesc Common construct to use as a base for all higher level constructs.
9
+ * @example
10
+ * import { CommonConstruct } from '@gradientedge/cdk-utils';
11
+ *
12
+ * class CustomConstruct extends CommonConstruct {
13
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
14
+ * super(parent, id, props);
15
+ * this.props = props;
16
+ * };
17
+ * };
18
+ */
19
+ export declare class CommonConstruct extends Construct {
20
+ props: CommonStackProps;
21
+ resourceNameFormatter: ResourceNameFormatter;
22
+ acmManager: AcmManager;
23
+ apiManager: ApiManager;
24
+ appConfigManager: AppConfigManager;
25
+ codeBuildManager: CodeBuildManager;
26
+ cloudFrontManager: CloudFrontManager;
27
+ cloudTrailManager: CloudTrailManager;
28
+ cloudWatchManager: CloudWatchManager;
29
+ dynamodbManager: DynamodbManager;
30
+ ecrManager: EcrManager;
31
+ ecsManager: EcsManager;
32
+ efsManager: EfsManager;
33
+ eksManager: EksManager;
34
+ elasticacheManager: ElastiCacheManager;
35
+ eventManager: EventManager;
36
+ eventTargetManager: EventTargetManager;
37
+ evidentlyManager: EvidentlyManager;
38
+ iamManager: IamManager;
39
+ kmsManager: KmsManager;
40
+ lambdaManager: LambdaManager;
41
+ logManager: LogManager;
42
+ route53Manager: Route53Manager;
43
+ s3Manager: S3Manager;
44
+ secretsManager: SecretsManager;
45
+ sfnManager: SfnManager;
46
+ snsManager: SnsManager;
47
+ sqsManager: SqsManager;
48
+ ssmManager: SsmManager;
49
+ vpcManager: VpcManager;
50
+ wafManager: WafManager;
51
+ fullyQualifiedDomainName: string;
52
+ constructor(parent: Construct, id: string, props: CommonStackProps);
53
+ /**
54
+ * @summary Helper method to add CloudFormation outputs from the construct
55
+ * @param id scoped id of the resource
56
+ * @param value the value of the exported output
57
+ * @param description optional description for the output
58
+ * @param overrideId Flag which indicates whether to override the default logical id of the output
59
+ */
60
+ protected addCfnOutput(id: string, value: string, description?: string, overrideId?: boolean): CfnOutput;
61
+ /**
62
+ * @summary Determine the fully qualified domain name based on domainName & subDomain
63
+ */
64
+ protected determineFullyQualifiedDomain(): void;
65
+ /**
66
+ * @summary Utility method to determine if the initialisation is in development (dev) stage
67
+ * This is determined by the stage property injected via cdk context
68
+ */
69
+ isDevelopmentStage: () => boolean;
70
+ /**
71
+ * @summary Utility method to determine if the initialisation is in test (tst) stage
72
+ * This is determined by the stage property injected via cdk context
73
+ */
74
+ isTestStage: () => boolean;
75
+ /**
76
+ * @summary Utility method to determine if the initialisation is in uat (uat) stage
77
+ * This is determined by the stage property injected via cdk context
78
+ */
79
+ isUatStage: () => boolean;
80
+ /**
81
+ * @summary Utility method to determine if the initialisation is in production (prd) stage
82
+ * This is determined by the stage property injected via cdk context
83
+ */
84
+ isProductionStage: () => boolean;
85
+ }
@@ -0,0 +1,125 @@
1
+ import { Construct } from 'constructs';
2
+ import { isDevStage, isPrdStage, isTestStage, isUatStage } from '@gradientedge/cdk-utils-common';
3
+ import { AcmManager, ApiManager, AppConfigManager, CloudFrontManager, CloudTrailManager, CloudWatchManager, CodeBuildManager, DynamodbManager, EcrManager, EcsManager, EfsManager, EksManager, ElastiCacheManager, EventManager, EventTargetManager, EvidentlyManager, IamManager, KmsManager, LambdaManager, LogManager, Route53Manager, S3Manager, SecretsManager, SfnManager, SnsManager, SqsManager, SsmManager, VpcManager, WafManager, } from '../services/index.js';
4
+ import { createCfnOutput } from '../utils/index.js';
5
+ import { ResourceNameFormatter } from './resource-name-formatter.js';
6
+ /**
7
+ * @subcategory Construct
8
+ * @classdesc Common construct to use as a base for all higher level constructs.
9
+ * @example
10
+ * import { CommonConstruct } from '@gradientedge/cdk-utils';
11
+ *
12
+ * class CustomConstruct extends CommonConstruct {
13
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
14
+ * super(parent, id, props);
15
+ * this.props = props;
16
+ * };
17
+ * };
18
+ */
19
+ export class CommonConstruct extends Construct {
20
+ props;
21
+ resourceNameFormatter;
22
+ acmManager;
23
+ apiManager;
24
+ appConfigManager;
25
+ codeBuildManager;
26
+ cloudFrontManager;
27
+ cloudTrailManager;
28
+ cloudWatchManager;
29
+ dynamodbManager;
30
+ ecrManager;
31
+ ecsManager;
32
+ efsManager;
33
+ eksManager;
34
+ elasticacheManager;
35
+ eventManager;
36
+ eventTargetManager;
37
+ evidentlyManager;
38
+ iamManager;
39
+ kmsManager;
40
+ lambdaManager;
41
+ logManager;
42
+ route53Manager;
43
+ s3Manager;
44
+ secretsManager;
45
+ sfnManager;
46
+ snsManager;
47
+ sqsManager;
48
+ ssmManager;
49
+ vpcManager;
50
+ wafManager;
51
+ fullyQualifiedDomainName;
52
+ constructor(parent, id, props) {
53
+ super(parent, id);
54
+ this.props = props;
55
+ this.resourceNameFormatter = new ResourceNameFormatter(this, `${id}-rnf`, props);
56
+ this.acmManager = new AcmManager();
57
+ this.apiManager = new ApiManager();
58
+ this.appConfigManager = new AppConfigManager();
59
+ this.codeBuildManager = new CodeBuildManager();
60
+ this.cloudFrontManager = new CloudFrontManager();
61
+ this.cloudTrailManager = new CloudTrailManager();
62
+ this.cloudWatchManager = new CloudWatchManager();
63
+ this.dynamodbManager = new DynamodbManager();
64
+ this.ecrManager = new EcrManager();
65
+ this.ecsManager = new EcsManager();
66
+ this.efsManager = new EfsManager();
67
+ this.eksManager = new EksManager();
68
+ this.elasticacheManager = new ElastiCacheManager();
69
+ this.eventManager = new EventManager();
70
+ this.eventTargetManager = new EventTargetManager();
71
+ this.evidentlyManager = new EvidentlyManager();
72
+ this.iamManager = new IamManager();
73
+ this.kmsManager = new KmsManager();
74
+ this.lambdaManager = new LambdaManager();
75
+ this.logManager = new LogManager();
76
+ this.route53Manager = new Route53Manager();
77
+ this.s3Manager = new S3Manager();
78
+ this.secretsManager = new SecretsManager();
79
+ this.sfnManager = new SfnManager();
80
+ this.snsManager = new SnsManager();
81
+ this.sqsManager = new SqsManager();
82
+ this.ssmManager = new SsmManager();
83
+ this.vpcManager = new VpcManager();
84
+ this.wafManager = new WafManager();
85
+ this.determineFullyQualifiedDomain();
86
+ }
87
+ /**
88
+ * @summary Helper method to add CloudFormation outputs from the construct
89
+ * @param id scoped id of the resource
90
+ * @param value the value of the exported output
91
+ * @param description optional description for the output
92
+ * @param overrideId Flag which indicates whether to override the default logical id of the output
93
+ */
94
+ addCfnOutput(id, value, description, overrideId = true) {
95
+ return createCfnOutput(id, this, value, description, overrideId);
96
+ }
97
+ /**
98
+ * @summary Determine the fully qualified domain name based on domainName & subDomain
99
+ */
100
+ determineFullyQualifiedDomain() {
101
+ this.fullyQualifiedDomainName = this.props.subDomain
102
+ ? `${this.props.subDomain}.${this.props.domainName}`
103
+ : this.props.domainName;
104
+ }
105
+ /**
106
+ * @summary Utility method to determine if the initialisation is in development (dev) stage
107
+ * This is determined by the stage property injected via cdk context
108
+ */
109
+ isDevelopmentStage = () => isDevStage(this.props.stage);
110
+ /**
111
+ * @summary Utility method to determine if the initialisation is in test (tst) stage
112
+ * This is determined by the stage property injected via cdk context
113
+ */
114
+ isTestStage = () => isTestStage(this.props.stage);
115
+ /**
116
+ * @summary Utility method to determine if the initialisation is in uat (uat) stage
117
+ * This is determined by the stage property injected via cdk context
118
+ */
119
+ isUatStage = () => isUatStage(this.props.stage);
120
+ /**
121
+ * @summary Utility method to determine if the initialisation is in production (prd) stage
122
+ * This is determined by the stage property injected via cdk context
123
+ */
124
+ isProductionStage = () => isPrdStage(this.props.stage);
125
+ }
@@ -0,0 +1,4 @@
1
+ export * from './construct.js';
2
+ export * from './resource-name-formatter.js';
3
+ export * from './stack.js';
4
+ export * from './types.js';
@@ -0,0 +1,4 @@
1
+ export * from './construct.js';
2
+ export * from './resource-name-formatter.js';
3
+ export * from './stack.js';
4
+ export * from './types.js';
@@ -0,0 +1,13 @@
1
+ import { Construct } from 'constructs';
2
+ import { CommonStackProps, ResourceNameFormatterProps } from './types.js';
3
+ export declare class ResourceNameFormatter extends Construct {
4
+ props: CommonStackProps;
5
+ constructor(parent: Construct, id: string, props: CommonStackProps);
6
+ /**
7
+ * @summary Helper method to format a resource name based on the provided options
8
+ * @param resourceName the resource name to format
9
+ * @param options options to control the formatting of the resource name
10
+ * @returns The formatted resource name
11
+ */
12
+ format(resourceName: string, options?: ResourceNameFormatterProps): string;
13
+ }
@@ -0,0 +1,30 @@
1
+ import { Construct } from 'constructs';
2
+ export class ResourceNameFormatter extends Construct {
3
+ props;
4
+ constructor(parent, id, props) {
5
+ super(parent, id);
6
+ this.props = props;
7
+ }
8
+ /**
9
+ * @summary Helper method to format a resource name based on the provided options
10
+ * @param resourceName the resource name to format
11
+ * @param options options to control the formatting of the resource name
12
+ * @returns The formatted resource name
13
+ */
14
+ format(resourceName, options) {
15
+ const elements = [];
16
+ if (!options?.exclude) {
17
+ if (options?.globalPrefix)
18
+ elements.push(this.props.globalPrefix);
19
+ elements.push(options?.prefix ?? this.props.resourcePrefix);
20
+ }
21
+ elements.push(resourceName);
22
+ if (!options?.exclude) {
23
+ elements.push(options?.suffix ?? this.props.resourceSuffix);
24
+ if (options?.globalSuffix)
25
+ elements.push(this.props.globalSuffix);
26
+ }
27
+ elements.push(this.props.stage);
28
+ return elements.filter(Boolean).join('-');
29
+ }
30
+ }
@@ -0,0 +1,62 @@
1
+ import { App, Stack, StackProps } from 'aws-cdk-lib';
2
+ import { Runtime } from 'aws-cdk-lib/aws-lambda';
3
+ import { CommonConstruct } from './construct.js';
4
+ import { CommonStackProps } from './types.js';
5
+ /**
6
+ * @classdesc Common stack to use as a base for all higher level constructs.
7
+ * @example
8
+ * import { CommonStack } from '@gradientedge/cdk-utils'
9
+ *
10
+ * class CustomStack extends CommonStack {
11
+ * constructor(parent: App, name: string, props: StackProps) {
12
+ * super(parent, name, props)
13
+ * // provision resources
14
+ * }
15
+ * }
16
+ */
17
+ export declare class CommonStack extends Stack {
18
+ static NODEJS_RUNTIME: Runtime;
19
+ construct: CommonConstruct;
20
+ props: CommonStackProps;
21
+ constructor(parent: App, name: string, props: StackProps);
22
+ /**
23
+ * @summary Method to determine the core CDK construct properties injected via context cdk.json
24
+ * @param props The stack properties
25
+ * @returns The stack properties
26
+ */
27
+ protected determineConstructProps(props: StackProps): {
28
+ domainName: any;
29
+ excludeDomainNameForBuckets: any;
30
+ excludeAccountNumberForBuckets: any;
31
+ extraContexts: any;
32
+ logRetention: any;
33
+ name: string;
34
+ nodejsRuntime: any;
35
+ region: any;
36
+ globalPrefix: any;
37
+ globalSuffix: any;
38
+ resourceNameOptions: any;
39
+ resourcePrefix: any;
40
+ resourceSuffix: any;
41
+ skipStageForARecords: any;
42
+ stackName: string | undefined;
43
+ stage: any;
44
+ subDomain: any;
45
+ };
46
+ /**
47
+ * @summary Method to determine extra cdk contexts apart from the main cdk.json
48
+ * - Sets the properties from the extra contexts into cdk node context
49
+ * - Primary use is to have layered config in separate files to enable easier maintenance and readability
50
+ */
51
+ protected determineExtraContexts(): void;
52
+ /**
53
+ * @summary Method to determine extra cdk stage contexts apart from the main cdk.json
54
+ * - Sets the properties from the extra stage contexts into cdk node context
55
+ * - Primary use is to have layered config for each environment which is injected into the context
56
+ */
57
+ protected determineStageContexts(): void;
58
+ /**
59
+ * @summary Determine the fully qualified domain name based on domainName & subDomain
60
+ */
61
+ protected fullyQualifiedDomain(): any;
62
+ }
@@ -0,0 +1,139 @@
1
+ import { Stack } from 'aws-cdk-lib';
2
+ import { Runtime } from 'aws-cdk-lib/aws-lambda';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { CommonConstruct } from './construct.js';
6
+ import appRoot from 'app-root-path';
7
+ import _ from 'lodash';
8
+ import { isDevStage } from '@gradientedge/cdk-utils-common';
9
+ /**
10
+ * @classdesc Common stack to use as a base for all higher level constructs.
11
+ * @example
12
+ * import { CommonStack } from '@gradientedge/cdk-utils'
13
+ *
14
+ * class CustomStack extends CommonStack {
15
+ * constructor(parent: App, name: string, props: StackProps) {
16
+ * super(parent, name, props)
17
+ * // provision resources
18
+ * }
19
+ * }
20
+ */
21
+ export class CommonStack extends Stack {
22
+ static NODEJS_RUNTIME = Runtime.NODEJS_24_X;
23
+ construct;
24
+ props;
25
+ constructor(parent, name, props) {
26
+ super(parent, name, props);
27
+ /* determine extra cdk contexts */
28
+ this.determineExtraContexts();
29
+ /* determine extra cdk stage contexts */
30
+ this.determineStageContexts();
31
+ this.props = this.determineConstructProps(props);
32
+ /* initialise the construct */
33
+ this.construct = new CommonConstruct(this, 'cdk-utils', this.props);
34
+ }
35
+ /**
36
+ * @summary Method to determine the core CDK construct properties injected via context cdk.json
37
+ * @param props The stack properties
38
+ * @returns The stack properties
39
+ */
40
+ determineConstructProps(props) {
41
+ return {
42
+ domainName: this.node.tryGetContext('domainName'),
43
+ excludeDomainNameForBuckets: this.node.tryGetContext('excludeDomainNameForBuckets'),
44
+ excludeAccountNumberForBuckets: this.node.tryGetContext('excludeAccountNumberForBuckets'),
45
+ extraContexts: this.node.tryGetContext('extraContexts'),
46
+ logRetention: this.node.tryGetContext('logRetention'),
47
+ name: props.stackName || 'cdk-utils',
48
+ nodejsRuntime: this.node.tryGetContext('nodejsRuntime') ?? CommonStack.NODEJS_RUNTIME,
49
+ region: this.node.tryGetContext('region'),
50
+ globalPrefix: this.node.tryGetContext('globalPrefix'),
51
+ globalSuffix: this.node.tryGetContext('globalSuffix'),
52
+ resourceNameOptions: this.node.tryGetContext('resourceNameOptions'),
53
+ resourcePrefix: this.node.tryGetContext('resourcePrefix'),
54
+ resourceSuffix: this.node.tryGetContext('resourceSuffix'),
55
+ skipStageForARecords: this.node.tryGetContext('skipStageForARecords'),
56
+ stackName: props.stackName,
57
+ stage: this.node.tryGetContext('stage'),
58
+ subDomain: this.node.tryGetContext('subDomain'),
59
+ };
60
+ }
61
+ /**
62
+ * @summary Method to determine extra cdk contexts apart from the main cdk.json
63
+ * - Sets the properties from the extra contexts into cdk node context
64
+ * - Primary use is to have layered config in separate files to enable easier maintenance and readability
65
+ */
66
+ determineExtraContexts() {
67
+ const extraContexts = this.node.tryGetContext('extraContexts');
68
+ const debug = this.node.tryGetContext('debug');
69
+ if (!extraContexts) {
70
+ if (debug)
71
+ console.debug(`No additional contexts provided. Using default context properties from cdk.json`);
72
+ return;
73
+ }
74
+ _.forEach(extraContexts, (context) => {
75
+ const extraContextPath = path.join(appRoot.path, context);
76
+ /* scenario where extra context is configured in cdk.json but absent in file system */
77
+ if (!fs.existsSync(extraContextPath))
78
+ throw `Extra context properties unavailable in path:${extraContextPath}`;
79
+ /* read the extra properties */
80
+ const extraContextPropsBuffer = fs.readFileSync(extraContextPath);
81
+ if (debug)
82
+ console.debug(`Adding additional contexts provided in ${extraContextPath}`);
83
+ /* parse as JSON properties */
84
+ const extraContextProps = JSON.parse(extraContextPropsBuffer.toString('utf-8'));
85
+ /* set each of the property into the cdk node context */
86
+ _.keys(extraContextProps).forEach((propKey) => {
87
+ this.node.setContext(propKey, extraContextProps[propKey]);
88
+ });
89
+ });
90
+ }
91
+ /**
92
+ * @summary Method to determine extra cdk stage contexts apart from the main cdk.json
93
+ * - Sets the properties from the extra stage contexts into cdk node context
94
+ * - Primary use is to have layered config for each environment which is injected into the context
95
+ */
96
+ determineStageContexts() {
97
+ const stage = this.node.tryGetContext('stage');
98
+ const stageContextPath = this.node.tryGetContext('stageContextPath') || 'cdkEnv';
99
+ const stageContextFilePath = path.join(appRoot.path, stageContextPath, `${stage}.json`);
100
+ const debug = this.node.tryGetContext('debug');
101
+ if (isDevStage(stage)) {
102
+ if (debug)
103
+ console.debug(`Development stage. Using default stage context properties`);
104
+ }
105
+ /* alert default context usage when extra stage config is missing */
106
+ if (!fs.existsSync(stageContextFilePath)) {
107
+ if (debug)
108
+ console.debug(`Stage specific context properties unavailable in path:${stageContextFilePath}`);
109
+ if (debug)
110
+ console.debug(`Using default stage context properties for ${stage} stage`);
111
+ return;
112
+ }
113
+ /* read the extra properties */
114
+ const stageContextPropsBuffer = fs.readFileSync(stageContextFilePath);
115
+ if (debug)
116
+ console.debug(`Adding additional stage contexts provided in ${stageContextFilePath}`);
117
+ /* parse as JSON properties */
118
+ const stageContextProps = JSON.parse(stageContextPropsBuffer.toString('utf-8'));
119
+ /* set each of the property into the cdk node context */
120
+ _.keys(stageContextProps).forEach((propKey) => {
121
+ /* handle object, array properties */
122
+ if (typeof stageContextProps[propKey] === 'object' && !Array.isArray(stageContextProps[propKey])) {
123
+ this.node.setContext(propKey, _.merge(this.node.tryGetContext(propKey), stageContextProps[propKey]));
124
+ }
125
+ else {
126
+ /* handle all other primitive properties */
127
+ this.node.setContext(propKey, stageContextProps[propKey]);
128
+ }
129
+ });
130
+ }
131
+ /**
132
+ * @summary Determine the fully qualified domain name based on domainName & subDomain
133
+ */
134
+ fullyQualifiedDomain() {
135
+ const domainName = this.node.tryGetContext('domainName');
136
+ const subDomain = this.node.tryGetContext('subDomain');
137
+ return subDomain ? `${subDomain}.${domainName}` : domainName;
138
+ }
139
+ }
@@ -0,0 +1,30 @@
1
+ import { StackProps } from 'aws-cdk-lib';
2
+ import { Runtime, Tracing } from 'aws-cdk-lib/aws-lambda';
3
+ import { RetentionDays } from 'aws-cdk-lib/aws-logs';
4
+ import { BaseProps } from '@gradientedge/cdk-utils-common';
5
+ /**
6
+ */
7
+ export interface CommonStackProps extends BaseProps, StackProps {
8
+ region: string;
9
+ resourceProjectIdentifier?: string;
10
+ globalPrefix?: string;
11
+ globalSuffix?: string;
12
+ resourcePrefix?: string;
13
+ resourceSuffix?: string;
14
+ logRetention?: RetentionDays;
15
+ defaultReservedLambdaConcurrentExecutions?: number;
16
+ defaultTracing?: Tracing;
17
+ excludeDomainNameForBuckets?: boolean;
18
+ excludeAccountNumberForBuckets?: boolean;
19
+ nodejsRuntime?: Runtime;
20
+ resourceNameOptions?: {
21
+ [key: string]: ResourceNameFormatterProps;
22
+ };
23
+ }
24
+ export interface ResourceNameFormatterProps {
25
+ exclude?: boolean;
26
+ globalPrefix?: boolean;
27
+ globalSuffix?: boolean;
28
+ prefix?: string;
29
+ suffix?: string;
30
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './main.js';
2
+ export * from './target.js';
3
+ export * from './types.js';
@@ -0,0 +1,3 @@
1
+ export * from './main.js';
2
+ export * from './target.js';
3
+ export * from './types.js';
@@ -0,0 +1,47 @@
1
+ import { Resource } from 'aws-cdk-lib/aws-apigateway';
2
+ import { ISecret } from 'aws-cdk-lib/aws-secretsmanager';
3
+ import { Construct } from 'constructs';
4
+ import { CommonConstruct } from '../../common/index.js';
5
+ import { ApiToAnyTargetProps, ApiToAnyTargetRestApiResource, ApiToAnyTargetRestApiType } from './types.js';
6
+ /**
7
+ * @classdesc Provides a construct to create and deploy a shallow API Gateway
8
+ * @example
9
+ * import { ApiToAnyTarget, ApiToAnyTargetProps } '@gradientedge/cdk-utils'
10
+ * import { Construct } from 'constructs'
11
+ *
12
+ * class CustomConstruct extends ApiToAnyTarget {
13
+ * constructor(parent: Construct, id: string, props: ApiToAnyTargetProps) {
14
+ * super(parent, id, props)
15
+ * this.props = props
16
+ * this.id = id
17
+ * this.initResources()
18
+ * }
19
+ * }
20
+ */
21
+ export declare class ApiToAnyTarget extends CommonConstruct {
22
+ props: ApiToAnyTargetProps;
23
+ id: string;
24
+ applicationSecrets: ISecret[];
25
+ apiToAnyTargetRestApi: ApiToAnyTargetRestApiType;
26
+ apiResource: string;
27
+ constructor(parent: Construct, id: string, props: ApiToAnyTargetProps);
28
+ initResources(): void;
29
+ /**
30
+ * @summary Method to resolve secrets from SecretsManager
31
+ * - To be implemented in the overriding method in the implementation class
32
+ */
33
+ protected resolveSecrets(): void;
34
+ /**
35
+ * @summary Method to resolve a hosted zone based on domain attributes
36
+ */
37
+ protected resolveHostedZone(): void;
38
+ /**
39
+ * @summary Method to resolve a certificate based on attributes
40
+ */
41
+ protected resolveCertificate(): void;
42
+ protected createApiToAnyTargetRestApi(): void;
43
+ protected createApiToAnyTargetResource(apiResourceProps: ApiToAnyTargetRestApiResource): Resource | undefined;
44
+ protected createApiDomain(): void;
45
+ protected createApiBasePathMapping(): void;
46
+ protected createApiRouteAssets(): void;
47
+ }