@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,13 @@
1
+ import { DistributionProps as CfDistributionProps, FunctionProps } from 'aws-cdk-lib/aws-cloudfront';
2
+ import { TagProps } from '../../types/index.js';
3
+ /**
4
+ */
5
+ export interface DistributionProps extends CfDistributionProps {
6
+ tags?: TagProps[];
7
+ }
8
+ /**
9
+ */
10
+ export interface CloudfrontFunctionProps extends FunctionProps {
11
+ eventType: string;
12
+ functionFilePath: string;
13
+ }
@@ -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,44 @@
1
+ import { CfnTrail } from 'aws-cdk-lib/aws-cloudtrail';
2
+ import { CfnLogGroup } from 'aws-cdk-lib/aws-logs';
3
+ import { CfnBucketPolicy, IBucket } from 'aws-cdk-lib/aws-s3';
4
+ import { CommonConstruct } from '../../common/index.js';
5
+ import { CloudTrailProps } from './types.js';
6
+ /**
7
+ * @classdesc Provides operations on AWS CloudTrail.
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.cloudTrailManager.createCloudTrail(
18
+ * 'MyTrail',
19
+ * this,
20
+ * logGroup,
21
+ * dataBucket,
22
+ * logBucket,
23
+ * logBucketPolicy
24
+ * )
25
+ * }
26
+ * }
27
+ * @see [CDK CloudTrail Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudtrail-readme.html}
28
+ */
29
+ export declare class CloudTrailManager {
30
+ /**
31
+ * @summary Method to create a cloud trail
32
+ * @param id scoped id of the resource
33
+ * @param scope scope in which this resource is defined
34
+ * @param props
35
+ * @param logGroup
36
+ * @param dataBucket
37
+ * @param logBucket
38
+ * @param logBucketPolicy
39
+ */
40
+ createCloudTrail(id: string, scope: CommonConstruct, props: CloudTrailProps, logGroup: CfnLogGroup, dataBucket: IBucket, logBucket: IBucket, logBucketPolicy: CfnBucketPolicy): {
41
+ cloudTrail: CfnTrail;
42
+ cloudTrailRole: import("aws-cdk-lib/aws-iam").CfnRole;
43
+ };
44
+ }
@@ -0,0 +1,71 @@
1
+ import { CfnTrail } from 'aws-cdk-lib/aws-cloudtrail';
2
+ import { createCfnOutput } from '../../utils/index.js';
3
+ /**
4
+ * @classdesc Provides operations on AWS CloudTrail.
5
+ * - A new instance of this class is injected into {@link CommonConstruct} constructor.
6
+ * - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
7
+ * @example
8
+ * import { CommonConstruct } from '@gradientedge/cdk-utils'
9
+ *
10
+ * class CustomConstruct extends CommonConstruct {
11
+ * constructor(parent: cdk.Construct, id: string, props: common.CommonStackProps) {
12
+ * super(parent, id, props)
13
+ * this.props = props
14
+ * this.cloudTrailManager.createCloudTrail(
15
+ * 'MyTrail',
16
+ * this,
17
+ * logGroup,
18
+ * dataBucket,
19
+ * logBucket,
20
+ * logBucketPolicy
21
+ * )
22
+ * }
23
+ * }
24
+ * @see [CDK CloudTrail Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudtrail-readme.html}
25
+ */
26
+ export class CloudTrailManager {
27
+ /**
28
+ * @summary Method to create a cloud trail
29
+ * @param id scoped id of the resource
30
+ * @param scope scope in which this resource is defined
31
+ * @param props
32
+ * @param logGroup
33
+ * @param dataBucket
34
+ * @param logBucket
35
+ * @param logBucketPolicy
36
+ */
37
+ createCloudTrail(id, scope, props, logGroup, dataBucket, logBucket, logBucketPolicy) {
38
+ if (!props)
39
+ throw `CloudTrail props undefined for ${id}`;
40
+ if (!props.trailName)
41
+ throw `CloudTrail trailName undefined for ${id}`;
42
+ const role = scope.iamManager.createRoleForCloudTrail(`${id}Role`, scope, logGroup);
43
+ const cloudTrail = new CfnTrail(scope, `${id}`, {
44
+ ...props,
45
+ cloudWatchLogsLogGroupArn: logGroup.attrArn,
46
+ cloudWatchLogsRoleArn: role.attrArn,
47
+ eventSelectors: [
48
+ {
49
+ dataResources: [
50
+ {
51
+ type: 'AWS::S3::Object',
52
+ values: [dataBucket.arnForObjects('')],
53
+ },
54
+ ],
55
+ includeManagementEvents: false,
56
+ readWriteType: 'WriteOnly',
57
+ },
58
+ ],
59
+ s3BucketName: logBucket.bucketName,
60
+ s3KeyPrefix: `logs-${props.trailName}`,
61
+ tags: [{ key: 'service', value: scope.props.name }],
62
+ trailName: scope.resourceNameFormatter.format(props.trailName, scope.props.resourceNameOptions?.cloudtrail),
63
+ });
64
+ cloudTrail.addDependency(logBucketPolicy);
65
+ cloudTrail.addDependency(logGroup);
66
+ cloudTrail.addDependency(role);
67
+ createCfnOutput(`${id}-trailName`, scope, cloudTrail.trailName);
68
+ createCfnOutput(`${id}-trailArn`, scope, cloudTrail.attrArn);
69
+ return { cloudTrail, cloudTrailRole: role };
70
+ }
71
+ }
@@ -0,0 +1,5 @@
1
+ import { CfnTrailProps } from 'aws-cdk-lib/aws-cloudtrail';
2
+ /**
3
+ */
4
+ export interface CloudTrailProps extends CfnTrailProps {
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './logs.js';
2
+ export * from './main.js';
3
+ export * from './types.js';
@@ -0,0 +1,3 @@
1
+ export * from './logs.js';
2
+ export * from './main.js';
3
+ export * from './types.js';
@@ -0,0 +1,47 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import * as logs from 'aws-cdk-lib/aws-logs';
3
+ import { CommonConstruct } from '../../common/index.js';
4
+ import { LogProps, MetricFilterProps } from './types.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS CloudWatch.
7
+ * - A new instance of this 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.logsManager.createMetricFilter('MyMetricFilter', this, logGroup)
17
+ * }
18
+ * }
19
+ * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs-readme.html}
20
+ */
21
+ export declare class LogManager {
22
+ /**
23
+ * @summary Method to create a cloudwatch metric filter
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props
27
+ * @param logGroup
28
+ */
29
+ createMetricFilter(id: string, scope: CommonConstruct, props: MetricFilterProps, logGroup: logs.ILogGroup): {
30
+ metric: cdk.aws_cloudwatch.Metric;
31
+ metricFilter: cdk.aws_logs.MetricFilter;
32
+ };
33
+ /**
34
+ * @summary Method to create a cloudwatch log group (cfn)
35
+ * @param id scoped id of the resource
36
+ * @param scope scope in which this resource is defined
37
+ * @param props
38
+ */
39
+ createCfnLogGroup(id: string, scope: CommonConstruct, props: LogProps): cdk.aws_logs.CfnLogGroup;
40
+ /**
41
+ * @summary Method to create a cloudwatch log group
42
+ * @param id scoped id of the resource
43
+ * @param scope scope in which this resource is defined
44
+ * @param props
45
+ */
46
+ createLogGroup(id: string, scope: CommonConstruct, props: LogProps): cdk.aws_logs.LogGroup;
47
+ }
@@ -0,0 +1,98 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import * as logs from 'aws-cdk-lib/aws-logs';
3
+ import _ from 'lodash';
4
+ import * as utils from '../../utils/index.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS CloudWatch.
7
+ * - A new instance of this 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.logsManager.createMetricFilter('MyMetricFilter', this, logGroup)
17
+ * }
18
+ * }
19
+ * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs-readme.html}
20
+ */
21
+ export class LogManager {
22
+ /**
23
+ * @summary Method to create a cloudwatch metric filter
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props
27
+ * @param logGroup
28
+ */
29
+ createMetricFilter(id, scope, props, logGroup) {
30
+ if (!props)
31
+ throw `MetricFilter props undefined for ${id}`;
32
+ const metricFilter = new logs.MetricFilter(scope, `${id}`, {
33
+ defaultValue: props.defaultValue,
34
+ filterPattern: props.filterPattern,
35
+ logGroup: logGroup,
36
+ metricName: props.metricName,
37
+ metricNamespace: props.metricNamespace,
38
+ metricValue: props.metricValue,
39
+ });
40
+ const metric = props.options
41
+ ? metricFilter.metric({
42
+ dimensionsMap: props.options.dimensionsMap,
43
+ period: props.periodInSecs ? cdk.Duration.seconds(props.periodInSecs) : cdk.Duration.minutes(5),
44
+ statistic: props.options.statistic,
45
+ })
46
+ : metricFilter.metric();
47
+ return { metric, metricFilter };
48
+ }
49
+ /**
50
+ * @summary Method to create a cloudwatch log group (cfn)
51
+ * @param id scoped id of the resource
52
+ * @param scope scope in which this resource is defined
53
+ * @param props
54
+ */
55
+ createCfnLogGroup(id, scope, props) {
56
+ if (!props)
57
+ throw `Logs props undefined for ${id}`;
58
+ if (!props.logGroupName)
59
+ throw `Logs logGroupName undefined for ${id}`;
60
+ const logGroup = new logs.CfnLogGroup(scope, `${id}`, {
61
+ ...props,
62
+ logGroupName: props.logGroupName,
63
+ retentionInDays: props.retention,
64
+ });
65
+ if (props.tags && !_.isEmpty(props.tags)) {
66
+ _.forEach(props.tags, tag => {
67
+ cdk.Tags.of(logGroup).add(tag.key, tag.value);
68
+ });
69
+ }
70
+ utils.createCfnOutput(`${id}-logGroupArn`, scope, logGroup.attrArn);
71
+ return logGroup;
72
+ }
73
+ /**
74
+ * @summary Method to create a cloudwatch log group
75
+ * @param id scoped id of the resource
76
+ * @param scope scope in which this resource is defined
77
+ * @param props
78
+ */
79
+ createLogGroup(id, scope, props) {
80
+ if (!props)
81
+ throw `Logs props undefined for ${id}`;
82
+ if (!props.logGroupName)
83
+ throw `Logs logGroupName undefined for ${id}`;
84
+ const logGroup = new logs.LogGroup(scope, `${id}`, {
85
+ ...props,
86
+ logGroupName: props.logGroupName,
87
+ removalPolicy: props.removalPolicy ?? cdk.RemovalPolicy.DESTROY,
88
+ retention: props.retention,
89
+ });
90
+ if (props.tags && !_.isEmpty(props.tags)) {
91
+ _.forEach(props.tags, tag => {
92
+ cdk.Tags.of(logGroup).add(tag.key, tag.value);
93
+ });
94
+ }
95
+ utils.createCfnOutput(`${id}-logGroupArn`, scope, logGroup.logGroupArn);
96
+ return logGroup;
97
+ }
98
+ }
@@ -0,0 +1,207 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import * as watch from 'aws-cdk-lib/aws-cloudwatch';
3
+ import { IMetric } from 'aws-cdk-lib/aws-cloudwatch';
4
+ import { CommonConstruct } from '../../common/index.js';
5
+ import { AlarmProps, AlarmStatusWidgetProps, DashboardProps, GraphWidgetProps, GuageWidgetProps, LogQueryWidgetProps, NumericWidgetProps, TextWidgetProps } from './types.js';
6
+ /**
7
+ * @classdesc Provides operations on AWS CloudWatch.
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.cloudWatchManager.createAlarmForMetric('MyAlarm', this, metric)
18
+ * }
19
+ * }
20
+ * @see [CDK CloudWatch Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudwatch-readme.html}
21
+ */
22
+ export declare class CloudWatchManager {
23
+ /**
24
+ * @summary Method to create a cloudwatch alarm for a given expression
25
+ * @param id scoped id of the resource
26
+ * @param scope scope in which this resource is defined
27
+ * @param props
28
+ */
29
+ createAlarmForExpression(id: string, scope: CommonConstruct, props: AlarmProps): cdk.aws_cloudwatch.Alarm;
30
+ /**
31
+ * @summary Method to create a cloudwatch alarm for a given metric
32
+ * @param id scoped id of the resource
33
+ * @param scope scope in which this resource is defined
34
+ * @param props
35
+ * @param metric
36
+ */
37
+ createAlarmForMetric(id: string, scope: CommonConstruct, props: AlarmProps, metric: watch.Metric): cdk.aws_cloudwatch.Alarm;
38
+ /**
39
+ * @summary Method to create a cloudwatch dashboard
40
+ * @param id scoped id of the resource
41
+ * @param scope scope in which this resource is defined
42
+ * @param props
43
+ * @param widgets
44
+ */
45
+ createDashboard(id: string, scope: CommonConstruct, props: DashboardProps, widgets?: watch.IWidget[][]): cdk.aws_cloudwatch.Dashboard;
46
+ /**
47
+ * @summary Method to create cloudwatch widgets
48
+ * @param scope scope in which this resource is defined
49
+ * @param props
50
+ */
51
+ createWidgets(scope: CommonConstruct, props: any[]): any;
52
+ /**
53
+ * @summary Method to create a cloudwatch widget
54
+ * @param id scoped id of the resource
55
+ * @param scope scope in which this resource is defined
56
+ * @param props
57
+ */
58
+ createWidget(id: string, scope: CommonConstruct, props: any): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
59
+ /**
60
+ * @summary Method to create a cloudfront distribution widget
61
+ * @param id scoped id of the resource
62
+ * @param scope scope in which this resource is defined
63
+ * @param props
64
+ * @param distributionId the cloudfront distribution id
65
+ */
66
+ createCloudfrontDistributionWidget(id: string, scope: CommonConstruct, props: any, distributionId: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
67
+ /**
68
+ * @summary Method to create a step function widget
69
+ * @param id scoped id of the resource
70
+ * @param scope scope in which this resource is defined
71
+ * @param props
72
+ * @param stateMachineArn the step function arn
73
+ */
74
+ createStateWidget(id: string, scope: CommonConstruct, props: any, stateMachineArn: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
75
+ /**
76
+ * @summary Method to create an event widget
77
+ * @param id scoped id of the resource
78
+ * @param scope scope in which this resource is defined
79
+ * @param props
80
+ * @param eventBusName the event bus name
81
+ * @param ruleName the event rule name
82
+ */
83
+ createEventWidget(id: string, scope: CommonConstruct, props: any, eventBusName: string, ruleName: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
84
+ /**
85
+ * @summary Method to create an api gateway widget
86
+ * @param id scoped id of the resource
87
+ * @param scope scope in which this resource is defined
88
+ * @param props
89
+ * @param apiName the api name
90
+ */
91
+ createApiGatewayWidget(id: string, scope: CommonConstruct, props: any, apiName: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
92
+ /**
93
+ * @summary Method to create a lambda function widget
94
+ * @param id scoped id of the resource
95
+ * @param scope scope in which this resource is defined
96
+ * @param props
97
+ * @param functionName the lambda function name
98
+ */
99
+ createLambdaWidget(id: string, scope: CommonConstruct, props: any, functionName: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
100
+ /**
101
+ * @summary Method to create a custom widget
102
+ * @param id scoped id of the resource
103
+ * @param scope scope in which this resource is defined
104
+ * @param props
105
+ * @param service the service identifier
106
+ */
107
+ createCustomWidget(id: string, scope: CommonConstruct, props: any, service: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
108
+ /**
109
+ * @summary Method to create an ecs cluster widget
110
+ * @param id scoped id of the resource
111
+ * @param scope scope in which this resource is defined
112
+ * @param props
113
+ * @param clusterName the ecs cluster name
114
+ */
115
+ createEcsClusterWidget(id: string, scope: CommonConstruct, props: any, clusterName: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
116
+ /**
117
+ * @summary Method to create an ecs service widget
118
+ * @param id scoped id of the resource
119
+ * @param scope scope in which this resource is defined
120
+ * @param props
121
+ * @param clusterName the ecs cluster name
122
+ * @param serviceName the ecs service name
123
+ */
124
+ createEcsServiceWidget(id: string, scope: CommonConstruct, props: any, clusterName: string, serviceName: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
125
+ /**
126
+ * @summary Method to create an elb widget
127
+ * @param id scoped id of the resource
128
+ * @param scope scope in which this resource is defined
129
+ * @param props
130
+ * @param loadBalancer the loadbalancer reference
131
+ */
132
+ createElbWidget(id: string, scope: CommonConstruct, props: any, loadBalancer: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
133
+ /**
134
+ * @summary Method to create an elasticache widget
135
+ * @param id scoped id of the resource
136
+ * @param scope scope in which this resource is defined
137
+ * @param props
138
+ * @param cacheClusterId the elasticache cluster id
139
+ */
140
+ createCacheWidget(id: string, scope: CommonConstruct, props: any, cacheClusterId: string): cdk.aws_cloudwatch.TextWidget | cdk.aws_cloudwatch.SingleValueWidget | cdk.aws_cloudwatch.GaugeWidget | cdk.aws_cloudwatch.GraphWidget | cdk.aws_cloudwatch.AlarmStatusWidget | cdk.aws_cloudwatch.LogQueryWidget;
141
+ /**
142
+ * @summary Method to create a cloudwatch text widget
143
+ * @param id scoped id of the resource
144
+ * @param scope scope in which this resource is defined
145
+ * @param props
146
+ */
147
+ createTextWidget(id: string, scope: CommonConstruct, props: TextWidgetProps): cdk.aws_cloudwatch.TextWidget;
148
+ /**
149
+ * @summary Method to create a cloudwatch numeric widget
150
+ * @param id scoped id of the resource
151
+ * @param scope scope in which this resource is defined
152
+ * @param props
153
+ * @param metrics
154
+ */
155
+ createSingleValueWidget(id: string, scope: CommonConstruct, props: NumericWidgetProps, metrics: IMetric[]): cdk.aws_cloudwatch.SingleValueWidget;
156
+ /**
157
+ * @summary Method to create a cloudwatch guage widget
158
+ * @param id scoped id of the resource
159
+ * @param scope scope in which this resource is defined
160
+ * @param props
161
+ * @param metrics
162
+ */
163
+ createGuageWidget(id: string, scope: CommonConstruct, props: GuageWidgetProps, metrics: IMetric[]): cdk.aws_cloudwatch.GaugeWidget;
164
+ /**
165
+ * @summary Method to create a cloudwatch graph widget
166
+ * @param id scoped id of the resource
167
+ * @param scope scope in which this resource is defined
168
+ * @param props
169
+ * @param leftYMetrics
170
+ * @param rightYMetrics
171
+ */
172
+ createGraphWidget(id: string, scope: CommonConstruct, props: GraphWidgetProps, leftYMetrics?: IMetric[], rightYMetrics?: IMetric[]): cdk.aws_cloudwatch.GraphWidget;
173
+ /**
174
+ * @summary Method to create a cloudwatch alarm status widget
175
+ * @param id scoped id of the resource
176
+ * @param scope scope in which this resource is defined
177
+ * @param props
178
+ * @param alarms
179
+ */
180
+ createAlarmStatusWidget(id: string, scope: CommonConstruct, props: AlarmStatusWidgetProps, alarms: watch.IAlarm[]): cdk.aws_cloudwatch.AlarmStatusWidget;
181
+ /**
182
+ * @summary Method to create a cloudwatch log query widget
183
+ * @param id scoped id of the resource
184
+ * @param scope scope in which this resource is defined
185
+ * @param props
186
+ * @param logGroupNames
187
+ */
188
+ createLogQueryWidget(id: string, scope: CommonConstruct, props: LogQueryWidgetProps, logGroupNames: string[]): cdk.aws_cloudwatch.LogQueryWidget;
189
+ /**
190
+ * @summary Utility method to determine the metrics and dimensions
191
+ * @param scope scope in which this resource is defined
192
+ * @param metricProps
193
+ */
194
+ private determineMetrics;
195
+ /**
196
+ * @summary Utility method to determine the time range
197
+ * @param range
198
+ */
199
+ private static determineTimeRange;
200
+ /**
201
+ * @summary Utility method to determine the configured alarms
202
+ * @param id scoped id of the resource
203
+ * @param scope scope in which this resource is defined
204
+ * @param alarmProps
205
+ */
206
+ private determineAlarms;
207
+ }