@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
@@ -0,0 +1,76 @@
1
+ import { RemovalPolicy } from 'aws-cdk-lib';
2
+ import { FileSystem, LifecyclePolicy, OutOfInfrequentAccessPolicy, PerformanceMode } from 'aws-cdk-lib/aws-efs';
3
+ import _ from 'lodash';
4
+ import { createCfnOutput } from '../../utils/index.js';
5
+ export const DEFAULT_CREATE_ACL = {
6
+ ownerGid: '1000',
7
+ ownerUid: '1000',
8
+ permissions: '755',
9
+ };
10
+ export const DEFAULT_POSIX_USER = {
11
+ gid: '1000',
12
+ uid: '1000',
13
+ };
14
+ /**
15
+ * @classdesc Provides operations on AWS Elastic File System.
16
+ * - A new instance of this class is injected into {@link CommonConstruct} constructor.
17
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
18
+ * @example
19
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
20
+ *
21
+ * class CustomConstruct extends CommonConstruct {
22
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
23
+ * super(parent, id, props)
24
+ * this.props = props
25
+ * this.efsManager.createFileSystem('MyFileSystem', this, fileSystemProps, vpc)
26
+ * }
27
+ * }
28
+ * @see [CDK EFS Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_efs-readme.html}
29
+ */
30
+ export class EfsManager {
31
+ /**
32
+ * @summary Method to create an efs file system
33
+ * @param id scoped id of the resource
34
+ * @param scope scope in which this resource is defined
35
+ * @param props the file system props
36
+ * @param vpc the vpc to use for the file system
37
+ * @param accessPointOptions optional access point configuration options for the file system
38
+ * @param securityGroup optional security groups to configure for the file system
39
+ * @param vpcSubnets optional subnets to configure for the file system
40
+ */
41
+ createFileSystem(id, scope, props, vpc, accessPointOptions, securityGroup, vpcSubnets) {
42
+ if (!props)
43
+ throw `EFS props undefined for ${id}`;
44
+ if (!props.fileSystemName)
45
+ throw `EFS fileSystemName undefined for ${id}`;
46
+ const fileSystemId = props.provisionNewOnDeployment ? `${id}-${new Date().getMilliseconds()}` : `${id}`;
47
+ const fileSystem = new FileSystem(scope, `${fileSystemId}`, {
48
+ ...props,
49
+ fileSystemName: scope.resourceNameFormatter.format(props.fileSystemName, scope.props.resourceNameOptions?.efs),
50
+ lifecyclePolicy: props.lifecyclePolicy ?? LifecyclePolicy.AFTER_7_DAYS,
51
+ outOfInfrequentAccessPolicy: props.outOfInfrequentAccessPolicy ?? OutOfInfrequentAccessPolicy.AFTER_1_ACCESS,
52
+ performanceMode: props.performanceMode ?? PerformanceMode.GENERAL_PURPOSE,
53
+ removalPolicy: props.removalPolicy ?? RemovalPolicy.DESTROY,
54
+ securityGroup,
55
+ vpc,
56
+ vpcSubnets,
57
+ });
58
+ createCfnOutput(`${id}-fileSystemArn`, scope, fileSystem.fileSystemArn);
59
+ createCfnOutput(`${id}-fileSystemId`, scope, fileSystem.fileSystemId);
60
+ /* provision access points if specified */
61
+ if (accessPointOptions && !_.isEmpty(accessPointOptions)) {
62
+ for (const [index, accessPointOption] of accessPointOptions.entries()) {
63
+ if (!accessPointOption.path)
64
+ throw `Undefined access point path for option: [${accessPointOption}], id: [${id}]`;
65
+ const accessPoint = fileSystem.addAccessPoint(`${id}-ap-${index}`, {
66
+ createAcl: accessPointOption.createAcl ?? DEFAULT_CREATE_ACL,
67
+ path: accessPointOption.path,
68
+ posixUser: accessPointOption.posixUser ?? DEFAULT_POSIX_USER,
69
+ });
70
+ createCfnOutput(`${id}-accessPointArn-${index}`, scope, accessPoint.accessPointArn);
71
+ createCfnOutput(`${id}-accessPointId-${index}`, scope, accessPoint.accessPointId);
72
+ }
73
+ }
74
+ return fileSystem;
75
+ }
76
+ }
@@ -0,0 +1,15 @@
1
+ import { AuthorizationConfig } from 'aws-cdk-lib/aws-ecs';
2
+ import { AccessPointOptions, FileSystemProps } from 'aws-cdk-lib/aws-efs';
3
+ /**
4
+ */
5
+ export interface EfsFileSystemProps extends FileSystemProps {
6
+ authorizationConfig?: AuthorizationConfig;
7
+ provisionNewOnDeployment?: boolean;
8
+ rootDirectory?: string;
9
+ transitEncryption?: string;
10
+ transitEncryptionPort?: number;
11
+ }
12
+ /**
13
+ */
14
+ export interface EfsAccessPointOptions extends AccessPointOptions {
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './main.js';
2
+ export * from './types.js';
@@ -0,0 +1,2 @@
1
+ export * from './main.js';
2
+ export * from './types.js';
@@ -0,0 +1,32 @@
1
+ import { IVpc } from 'aws-cdk-lib/aws-ec2';
2
+ import { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';
3
+ import { Cluster } from 'aws-cdk-lib/aws-eks';
4
+ import { CommonConstruct } from '../../common/index.js';
5
+ import { EksClusterProps } from './types.js';
6
+ /**
7
+ * @classdesc Provides operations on AWS Elastic Kubernetes Service.
8
+ * - A new instance of this class is injected into {@link CommonConstruct} constructor.
9
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
10
+ * @example
11
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
12
+ *
13
+ * class CustomConstruct extends CommonConstruct {
14
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
15
+ * super(parent, id, props)
16
+ * this.props = props
17
+ * this.eksManager.createEksDeployment('MyEksDeployment', this, image, vpc)
18
+ * }
19
+ * }
20
+ * @see [CDK EKS Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html}
21
+ */
22
+ export declare class EksManager {
23
+ /**
24
+ * @summary Method to create an eks deployment
25
+ * @param id scoped id of the resource
26
+ * @param scope scope in which this resource is defined
27
+ * @param props
28
+ * @param image
29
+ * @param vpc
30
+ */
31
+ createEksDeployment(id: string, scope: CommonConstruct, props: EksClusterProps, image: DockerImageAsset, vpc: IVpc): Cluster;
32
+ }
@@ -0,0 +1,85 @@
1
+ import { InstanceClass, InstanceSize, InstanceType } from 'aws-cdk-lib/aws-ec2';
2
+ import { Cluster, KubernetesVersion } from 'aws-cdk-lib/aws-eks';
3
+ import { createCfnOutput } from '../../utils/index.js';
4
+ /**
5
+ * @classdesc Provides operations on AWS Elastic Kubernetes Service.
6
+ * - A new instance of this class is injected into {@link CommonConstruct} constructor.
7
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
8
+ * @example
9
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
10
+ *
11
+ * class CustomConstruct extends CommonConstruct {
12
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
13
+ * super(parent, id, props)
14
+ * this.props = props
15
+ * this.eksManager.createEksDeployment('MyEksDeployment', this, image, vpc)
16
+ * }
17
+ * }
18
+ * @see [CDK EKS Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_eks-readme.html}
19
+ */
20
+ export class EksManager {
21
+ /**
22
+ * @summary Method to create an eks deployment
23
+ * @param id scoped id of the resource
24
+ * @param scope scope in which this resource is defined
25
+ * @param props
26
+ * @param image
27
+ * @param vpc
28
+ */
29
+ createEksDeployment(id, scope, props, image, vpc) {
30
+ if (!props)
31
+ throw `EksCluster props undefined for ${id}`;
32
+ if (!props.clusterName)
33
+ throw `EksCluster clusterName undefined for ${id}`;
34
+ const appLabel = { app: `${id}`.toLowerCase() };
35
+ const deployment = {
36
+ apiVersion: 'apps/v1',
37
+ kind: 'Deployment',
38
+ metadata: { name: `${id}`.toLowerCase() },
39
+ spec: {
40
+ selector: { matchLabels: appLabel },
41
+ template: {
42
+ metadata: { labels: appLabel },
43
+ spec: {
44
+ containers: [
45
+ {
46
+ image: image.imageUri,
47
+ name: `${id}`.toLowerCase(),
48
+ ports: [{ containerPort: props.appContainerPort }],
49
+ },
50
+ ],
51
+ },
52
+ },
53
+ },
54
+ };
55
+ const service = {
56
+ apiVersion: 'v1',
57
+ kind: 'Service',
58
+ metadata: { name: `${id}`.toLowerCase() },
59
+ spec: {
60
+ ports: [
61
+ {
62
+ name: 'http-port',
63
+ port: 80,
64
+ protocol: 'TCP',
65
+ targetPort: props.appContainerPort,
66
+ },
67
+ ],
68
+ selector: appLabel,
69
+ type: 'LoadBalancer',
70
+ },
71
+ };
72
+ const cluster = new Cluster(scope, `${id}Cluster`, {
73
+ clusterName: scope.resourceNameFormatter.format(props.clusterName, scope.props.resourceNameOptions?.eks),
74
+ defaultCapacity: props.appCapacity,
75
+ defaultCapacityInstance: InstanceType.of(InstanceClass.T3, InstanceSize.LARGE),
76
+ kubectlLayer: props.kubectlLayer,
77
+ version: KubernetesVersion.V1_27,
78
+ vpc,
79
+ });
80
+ cluster.addManifest(`${id}Pod`, service, deployment);
81
+ createCfnOutput(`${id}-clusterArn`, scope, cluster.clusterArn);
82
+ createCfnOutput(`${id}-clusterEndpoint`, scope, cluster.clusterEndpoint);
83
+ return cluster;
84
+ }
85
+ }
@@ -0,0 +1,7 @@
1
+ import { ClusterProps } from 'aws-cdk-lib/aws-eks';
2
+ /**
3
+ */
4
+ export interface EksClusterProps extends ClusterProps {
5
+ appCapacity: number;
6
+ appContainerPort: number;
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './main.js';
2
+ export * from './types.js';
@@ -0,0 +1,2 @@
1
+ export * from './main.js';
2
+ export * from './types.js';
@@ -0,0 +1,47 @@
1
+ import { CfnCacheCluster, CfnReplicationGroup, CfnSubnetGroup } from 'aws-cdk-lib/aws-elasticache';
2
+ import { CommonConstruct } from '../../common/index.js';
3
+ import { ElastiCacheProps, ReplicatedElastiCacheProps } from './types.js';
4
+ /**
5
+ * @summary Provides operations on AWS ElastiCache Service.
6
+ * - A new instance of scope class is injected into {@link CommonConstruct} constructor.
7
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
8
+ * @example
9
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
10
+ *
11
+ * class CustomConstruct extends CommonConstruct {
12
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
13
+ * super(parent, id, props)
14
+ * this.props = props
15
+ * this.elasticacheManager.createElastiCache('MyElastiCache', scope, props)
16
+ * }
17
+ * }
18
+ * @see [CDK ElastiCache Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticache-readme.html}
19
+ */
20
+ export declare class ElastiCacheManager {
21
+ /**
22
+ * @summary Method to create an elasticache resource
23
+ * @param id scoped id of the resource
24
+ * @param scope scope in which scope resource is defined
25
+ * @param subnetIds
26
+ */
27
+ createElastiCacheSubnetGroup(id: string, scope: CommonConstruct, subnetIds: string[]): CfnSubnetGroup;
28
+ /**
29
+ * @summary Method to create an elasticache resource
30
+ * @param id scoped id of the resource
31
+ * @param scope scope in which scope resource is defined
32
+ * @param props
33
+ * @param subnetIds
34
+ * @param securityGroupIds
35
+ * @param logDeliveryConfigurations
36
+ */
37
+ createElastiCache(id: string, scope: CommonConstruct, props: ElastiCacheProps, subnetIds: string[], securityGroupIds: string[], logDeliveryConfigurations?: any): CfnCacheCluster;
38
+ /**
39
+ * @summary Method to create an replicated elasticache resource
40
+ * @param id scoped id of the resource
41
+ * @param scope scope in which scope resource is defined
42
+ * @param props
43
+ * @param subnetIds
44
+ * @param securityGroupIds
45
+ */
46
+ createReplicatedElastiCache(id: string, scope: CommonConstruct, props: ReplicatedElastiCacheProps, subnetIds: string[], securityGroupIds: string[]): CfnReplicationGroup;
47
+ }
@@ -0,0 +1,90 @@
1
+ import { Tags } from 'aws-cdk-lib';
2
+ import { CfnCacheCluster, CfnReplicationGroup, CfnSubnetGroup } from 'aws-cdk-lib/aws-elasticache';
3
+ import _ from 'lodash';
4
+ import { createCfnOutput } from '../../utils/index.js';
5
+ /**
6
+ * @summary Provides operations on AWS ElastiCache Service.
7
+ * - A new instance of scope class is injected into {@link CommonConstruct} constructor.
8
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
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
+ * this.elasticacheManager.createElastiCache('MyElastiCache', scope, props)
17
+ * }
18
+ * }
19
+ * @see [CDK ElastiCache Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticache-readme.html}
20
+ */
21
+ export class ElastiCacheManager {
22
+ /**
23
+ * @summary Method to create an elasticache resource
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which scope resource is defined
26
+ * @param subnetIds
27
+ */
28
+ createElastiCacheSubnetGroup(id, scope, subnetIds) {
29
+ return new CfnSubnetGroup(scope, `${id}`, {
30
+ cacheSubnetGroupName: `${id}-subnet-group-${scope.props.stage}`,
31
+ description: `${id}-subnet-group-${scope.props.stage}`,
32
+ subnetIds: subnetIds,
33
+ });
34
+ }
35
+ /**
36
+ * @summary Method to create an elasticache resource
37
+ * @param id scoped id of the resource
38
+ * @param scope scope in which scope resource is defined
39
+ * @param props
40
+ * @param subnetIds
41
+ * @param securityGroupIds
42
+ * @param logDeliveryConfigurations
43
+ */
44
+ createElastiCache(id, scope, props, subnetIds, securityGroupIds, logDeliveryConfigurations) {
45
+ if (!props)
46
+ throw `ElastiCache props undefined for ${id}`;
47
+ if (!props.clusterName)
48
+ throw `ElastiCache clusterName undefined for ${id}`;
49
+ const subnetGroup = this.createElastiCacheSubnetGroup(`${id}-subnetGroup`, scope, subnetIds);
50
+ const elasticacheCluster = new CfnCacheCluster(scope, `${id}`, {
51
+ ...props,
52
+ cacheSubnetGroupName: subnetGroup.cacheSubnetGroupName,
53
+ clusterName: scope.resourceNameFormatter.format(props.clusterName, scope.props.resourceNameOptions?.elasticache),
54
+ logDeliveryConfigurations,
55
+ vpcSecurityGroupIds: securityGroupIds,
56
+ });
57
+ elasticacheCluster.addDependency(subnetGroup);
58
+ if (props.tags && !_.isEmpty(props.tags)) {
59
+ _.forEach(props.tags, tag => {
60
+ Tags.of(elasticacheCluster).add(tag.key, tag.value);
61
+ });
62
+ }
63
+ createCfnOutput(`${id}-clusterName`, scope, elasticacheCluster.clusterName);
64
+ createCfnOutput(`${id}-redisEndpointPort`, scope, elasticacheCluster.attrRedisEndpointPort);
65
+ createCfnOutput(`${id}-redisEndpointAddress`, scope, elasticacheCluster.attrRedisEndpointAddress);
66
+ return elasticacheCluster;
67
+ }
68
+ /**
69
+ * @summary Method to create an replicated elasticache resource
70
+ * @param id scoped id of the resource
71
+ * @param scope scope in which scope resource is defined
72
+ * @param props
73
+ * @param subnetIds
74
+ * @param securityGroupIds
75
+ */
76
+ createReplicatedElastiCache(id, scope, props, subnetIds, securityGroupIds) {
77
+ if (!props)
78
+ throw `ElastiCache props undefined for ${id}`;
79
+ const subnetGroup = this.createElastiCacheSubnetGroup(`${id}-subnetGroup`, scope, subnetIds);
80
+ const elasticacheCluster = new CfnReplicationGroup(scope, `${id}`, {
81
+ ...props,
82
+ cacheSubnetGroupName: subnetGroup.cacheSubnetGroupName,
83
+ replicationGroupDescription: `${id} Redis Replication Cluster`,
84
+ replicationGroupId: `${id}-${scope.props.stage}`,
85
+ securityGroupIds,
86
+ });
87
+ elasticacheCluster.addDependency(subnetGroup);
88
+ return elasticacheCluster;
89
+ }
90
+ }
@@ -0,0 +1,9 @@
1
+ import { CfnCacheClusterProps, CfnReplicationGroupProps } from 'aws-cdk-lib/aws-elasticache';
2
+ /**
3
+ */
4
+ export interface ElastiCacheProps extends CfnCacheClusterProps {
5
+ }
6
+ /**
7
+ */
8
+ export interface ReplicatedElastiCacheProps extends CfnReplicationGroupProps {
9
+ }
@@ -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,93 @@
1
+ import { ICluster, ITaskDefinition } from 'aws-cdk-lib/aws-ecs';
2
+ import { CfnRule, EventBus, IEventBus, IRuleTarget, Rule } from 'aws-cdk-lib/aws-events';
3
+ import { CfnRole, Role } from 'aws-cdk-lib/aws-iam';
4
+ import { IFunction } from 'aws-cdk-lib/aws-lambda';
5
+ import { CfnPipe } from 'aws-cdk-lib/aws-pipes';
6
+ import { IQueue } from 'aws-cdk-lib/aws-sqs';
7
+ import { IStateMachine } from 'aws-cdk-lib/aws-stepfunctions';
8
+ import { CommonConstruct } from '../../common/index.js';
9
+ import { DynamoDbToLambdaPipeProps, EventBusProps, EventRuleProps, RuleProps, SqsToLambdaPipeProps, SqsToSfnPipeProps } from './types.js';
10
+ /**
11
+ * @classdesc Provides operations on AWS EventBridge.
12
+ * - A new instance of this class is injected into {@link CommonConstruct} constructor.
13
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
14
+ * @example
15
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
16
+ *
17
+ * class CustomConstruct extends CommonConstruct {
18
+ * constructor(parent: Construct, id: string, props: common.CommonStackProps) {
19
+ * super(parent, id, props)
20
+ * this.props = props
21
+ * this.eventManager.createLambdaRule('MyLambdaRule', this, lambdaFunction)
22
+ * }
23
+ * }
24
+ * @see [CDK EventBridge Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_events-readme.html}
25
+ */
26
+ export declare class EventManager {
27
+ /**
28
+ * Method to create an event bus
29
+ * @param id scoped id of the resource
30
+ * @param scope scope in which this resource is defined
31
+ * @param props event bus properties
32
+ */
33
+ createEventBus(id: string, scope: CommonConstruct, props: EventBusProps): EventBus;
34
+ /**
35
+ * Method to create an event rule
36
+ * @param id scoped id of the resource
37
+ * @param scope scope in which this resource is defined
38
+ * @param props event rule properties
39
+ * @param eventBus optional custom event bus
40
+ * @param targets optional event targets
41
+ */
42
+ createRule(id: string, scope: CommonConstruct, props: EventRuleProps, eventBus?: IEventBus, targets?: IRuleTarget[]): Rule;
43
+ /**
44
+ * @summary Method to create an eventbridge rule with lambda target
45
+ * @param id scoped id of the resource
46
+ * @param scope scope in which this resource is defined
47
+ * @param props
48
+ * @param lambdaFunction
49
+ * @param eventBusName
50
+ * @param eventPattern
51
+ * @param scheduleExpression
52
+ */
53
+ createLambdaRule(id: string, scope: CommonConstruct, props: RuleProps, lambdaFunction: IFunction, eventBusName?: string, eventPattern?: any, scheduleExpression?: string): CfnRule;
54
+ /**
55
+ * @summary Method to create an eventbridge rule with fargate task target
56
+ * @param id scoped id of the resource
57
+ * @param scope scope in which this resource is defined
58
+ * @param props
59
+ * @param cluster
60
+ * @param task
61
+ * @param subnetIds
62
+ * @param role
63
+ * @param eventPattern
64
+ */
65
+ createFargateTaskRule(id: string, scope: CommonConstruct, props: RuleProps, cluster: ICluster, task: ITaskDefinition, subnetIds: string[], role: Role | CfnRole, eventPattern?: any): CfnRule;
66
+ /**
67
+ * @summary Method to create an eventbridge pipe with sqs queue as source and step function as target
68
+ * @param id scoped id of the resource
69
+ * @param scope scope in which this resource is defined
70
+ * @param props the props for the pipe
71
+ * @param sourceQueue the source sqs queue
72
+ * @param targetStepFunction the target step function
73
+ */
74
+ createSqsToSfnCfnPipe(id: string, scope: CommonConstruct, props: SqsToSfnPipeProps, sourceQueue: IQueue, targetStepFunction: IStateMachine): CfnPipe;
75
+ /**
76
+ * @summary Method to create an eventbridge pipe with sqs queue as source and lambda function as target
77
+ * @param id scoped id of the resource
78
+ * @param scope scope in which this resource is defined
79
+ * @param props the props for the pipe
80
+ * @param sourceQueue the source sqs queue
81
+ * @param targetLambdaFunction the target lambda function
82
+ */
83
+ createSqsToLambdaCfnPipe(id: string, scope: CommonConstruct, props: SqsToLambdaPipeProps, sourceQueue: IQueue, targetLambdaFunction: IFunction): CfnPipe;
84
+ /**
85
+ * @summary Method to create an eventbridge pipe with DynamoDb stream as source and lambda function as target
86
+ * @param id scoped id of the resource
87
+ * @param scope scope in which this resource is defined
88
+ * @param props the props for the pipe
89
+ * @param dynamoDbStream the source dynamoDb stream
90
+ * @param targetLambdaFunction the target lambda function
91
+ */
92
+ createDynamoDbToLambdaCfnPipe(id: string, scope: CommonConstruct, props: DynamoDbToLambdaPipeProps, sourceDynamoDbStreamArn: string, targetLambdaFunction: IFunction): CfnPipe;
93
+ }