@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,6 @@
1
+ import { HostedZoneProps } from 'aws-cdk-lib/aws-route53';
2
+ /**
3
+ */
4
+ export interface Route53Props extends HostedZoneProps {
5
+ useExistingHostedZone?: boolean;
6
+ }
@@ -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,43 @@
1
+ import { Secret } from 'aws-cdk-lib/aws-secretsmanager';
2
+ import { CommonConstruct } from '../../common/index.js';
3
+ import { SecretBaseProps } from './types.js';
4
+ /**
5
+ * @classdesc Provides operations on AWS Secrets Manager.
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: Construct, id: string, props: common.CommonStackProps) {
13
+ * super(parent, id, props)
14
+ * this.props = props
15
+ * this.loadSecret('MySecretName', 'eu-west-1')
16
+ * }
17
+ * }
18
+ * @see [CDK Secrets Manager Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager-readme.html}
19
+ */
20
+ export declare class SecretsManager {
21
+ /**
22
+ * @summary Method to create a secret
23
+ * @param id scoped id of the resource
24
+ * @param scope scope in which this resource is defined
25
+ * @param props the secret properties
26
+ */
27
+ createSecret(id: string, scope: CommonConstruct, props: SecretBaseProps): Secret;
28
+ /**
29
+ * @summary Method to retrieve a secret from secrets manager with a cloudformation export
30
+ * @param id
31
+ * @param scope
32
+ * @param stackName
33
+ * @param exportName
34
+ */
35
+ retrieveSecretFromSecretsManager(id: string, scope: CommonConstruct, stackName: string, exportName: string): import("aws-cdk-lib/aws-secretsmanager").ISecret;
36
+ /**
37
+ * @summary Method to resolve secret value from a secret using AWS SDK
38
+ * @param region the region in which the secret is defined
39
+ * @param secretId the secret name/ARN
40
+ * @param secretKey the secret key to resolve the value for
41
+ */
42
+ resolveSecretValue(region: string, secretId: string, secretKey: string): Promise<any>;
43
+ }
@@ -0,0 +1,71 @@
1
+ import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
2
+ import { Fn } from 'aws-cdk-lib';
3
+ import { Secret } from 'aws-cdk-lib/aws-secretsmanager';
4
+ import { createCfnOutput, determineCredentials } from '../../utils/index.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS Secrets Manager.
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: Construct, id: string, props: common.CommonStackProps) {
14
+ * super(parent, id, props)
15
+ * this.props = props
16
+ * this.loadSecret('MySecretName', 'eu-west-1')
17
+ * }
18
+ * }
19
+ * @see [CDK Secrets Manager Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager-readme.html}
20
+ */
21
+ export class SecretsManager {
22
+ /**
23
+ * @summary Method to create a secret
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props the secret properties
27
+ */
28
+ createSecret(id, scope, props) {
29
+ if (!props)
30
+ throw `Secret props undefined for ${id}`;
31
+ if (!props.secretName)
32
+ throw `Secret name undefined for ${id}`;
33
+ const secret = new Secret(scope, `${id}`, {
34
+ ...props,
35
+ secretName: scope.resourceNameFormatter.format(props.secretName, scope.props.resourceNameOptions?.secret),
36
+ });
37
+ createCfnOutput(`${id}-secretName`, scope, secret.secretName);
38
+ createCfnOutput(`${id}-secretArn`, scope, secret.secretArn);
39
+ return secret;
40
+ }
41
+ /**
42
+ * @summary Method to retrieve a secret from secrets manager with a cloudformation export
43
+ * @param id
44
+ * @param scope
45
+ * @param stackName
46
+ * @param exportName
47
+ */
48
+ retrieveSecretFromSecretsManager(id, scope, stackName, exportName) {
49
+ return Secret.fromSecretNameV2(scope, `${id}`, Fn.importValue(`${stackName}-${scope.props.stage}-${exportName}`));
50
+ }
51
+ /**
52
+ * @summary Method to resolve secret value from a secret using AWS SDK
53
+ * @param region the region in which the secret is defined
54
+ * @param secretId the secret name/ARN
55
+ * @param secretKey the secret key to resolve the value for
56
+ */
57
+ async resolveSecretValue(region, secretId, secretKey) {
58
+ const client = new SecretsManagerClient({
59
+ credentials: determineCredentials(),
60
+ region,
61
+ });
62
+ const command = new GetSecretValueCommand({
63
+ SecretId: secretId,
64
+ });
65
+ const response = await client.send(command);
66
+ if (!response.SecretString)
67
+ throw `Unable to resolve secret for ${secretId}`;
68
+ const secretString = JSON.parse(response.SecretString);
69
+ return secretString[secretKey];
70
+ }
71
+ }
@@ -0,0 +1,3 @@
1
+ import { SecretProps } from 'aws-cdk-lib/aws-secretsmanager';
2
+ export interface SecretBaseProps extends SecretProps {
3
+ }
@@ -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,38 @@
1
+ import { IFunction } from 'aws-cdk-lib/aws-lambda';
2
+ import { Topic } from 'aws-cdk-lib/aws-sns';
3
+ import { CommonConstruct } from '../../common/index.js';
4
+ import { SubscriptionProps } from './types.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS Simple Notification Service.
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.snsManager.createEmailNotificationService('MySns', 'eu-west-1', ["test@example.com"])
17
+ * }
18
+ * }
19
+ * @see [CDK Simple Notification Service Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns-readme.html}
20
+ */
21
+ export declare class SnsManager {
22
+ /**
23
+ * @summary Method to create an email notification service
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props
27
+ * @param emails
28
+ */
29
+ createEmailNotificationService(id: string, scope: CommonConstruct, props: SubscriptionProps, emails: string[]): Topic;
30
+ /**
31
+ * @summary Method to create a lambda notification service
32
+ * @param id scoped id of the resource
33
+ * @param scope scope in which this resource is defined
34
+ * @param props
35
+ * @param lambdaFunction
36
+ */
37
+ createLambdaNotificationService(id: string, scope: CommonConstruct, props: SubscriptionProps, lambdaFunction: IFunction): Topic;
38
+ }
@@ -0,0 +1,68 @@
1
+ import { Topic } from 'aws-cdk-lib/aws-sns';
2
+ import { EmailSubscription, LambdaSubscription } from 'aws-cdk-lib/aws-sns-subscriptions';
3
+ import _ from 'lodash';
4
+ import { createCfnOutput } from '../../utils/index.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS Simple Notification Service.
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.snsManager.createEmailNotificationService('MySns', 'eu-west-1', ["test@example.com"])
17
+ * }
18
+ * }
19
+ * @see [CDK Simple Notification Service Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns-readme.html}
20
+ */
21
+ export class SnsManager {
22
+ /**
23
+ * @summary Method to create an email notification service
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props
27
+ * @param emails
28
+ */
29
+ createEmailNotificationService(id, scope, props, emails) {
30
+ if (!props)
31
+ throw `Subscription props undefined for ${id}`;
32
+ if (!props.topicName)
33
+ throw `Subscription topicName undefined for ${id}`;
34
+ const topic = new Topic(scope, id, {
35
+ ...props,
36
+ displayName: scope.resourceNameFormatter.format(props.topicName, scope.props.resourceNameOptions?.sns),
37
+ topicName: scope.resourceNameFormatter.format(props.topicName, scope.props.resourceNameOptions?.sns),
38
+ });
39
+ if (emails && !_.isEmpty(emails)) {
40
+ _.forEach(emails, (email) => topic.addSubscription(new EmailSubscription(email)));
41
+ }
42
+ createCfnOutput(`${id}-subscriptionArn`, scope, topic.topicArn);
43
+ createCfnOutput(`${id}-subscriptionName`, scope, topic.topicName);
44
+ return topic;
45
+ }
46
+ /**
47
+ * @summary Method to create a lambda notification service
48
+ * @param id scoped id of the resource
49
+ * @param scope scope in which this resource is defined
50
+ * @param props
51
+ * @param lambdaFunction
52
+ */
53
+ createLambdaNotificationService(id, scope, props, lambdaFunction) {
54
+ if (!props)
55
+ throw `Subscription props undefined for ${id}`;
56
+ if (!props.topicName)
57
+ throw `Subscription topicName undefined for ${id}`;
58
+ const topic = new Topic(scope, id, {
59
+ ...props,
60
+ displayName: scope.resourceNameFormatter.format(props.topicName, scope.props.resourceNameOptions?.sns),
61
+ topicName: scope.resourceNameFormatter.format(props.topicName, scope.props.resourceNameOptions?.sns),
62
+ });
63
+ topic.addSubscription(new LambdaSubscription(lambdaFunction));
64
+ createCfnOutput(`${id}-subscriptionArn`, scope, topic.topicArn);
65
+ createCfnOutput(`${id}-subscriptionName`, scope, topic.topicName);
66
+ return topic;
67
+ }
68
+ }
@@ -0,0 +1,5 @@
1
+ import { TopicProps } from 'aws-cdk-lib/aws-sns';
2
+ /**
3
+ */
4
+ export interface SubscriptionProps extends TopicProps {
5
+ }
@@ -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,45 @@
1
+ import { IQueue, Queue } from 'aws-cdk-lib/aws-sqs';
2
+ import { CommonConstruct } from '../../common/index.js';
3
+ import { LambdaProps } from '../lambda/index.js';
4
+ import { QueueProps } from './types.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS Simple Queue Service.
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: Construct, id: string, props: common.CommonStackProps) {
14
+ * super(parent, id, props)
15
+ * this.props = props
16
+ * this.sqsManager.createQueue('MySqs', this, {...})
17
+ * }
18
+ * }
19
+ * @see [CDK Simple Queue Service Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs-readme.html}
20
+ */
21
+ export declare class SqsManager {
22
+ /**
23
+ * @summary Method to create a lambda queue service
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props
27
+ * @param deadLetterQueue
28
+ */
29
+ createQueue(id: string, scope: CommonConstruct, props: QueueProps, deadLetterQueue?: IQueue): Queue;
30
+ /**
31
+ * @summary Method to create a redrive queue for a lambda function
32
+ * @param id scoped id of the resource
33
+ * @param scope scope in which this resource is defined
34
+ * @param props the lambda properties
35
+ */
36
+ createRedriveQueueForLambda(id: string, scope: CommonConstruct, props: LambdaProps): Queue;
37
+ /**
38
+ * @summary Method to create a dead letter queue for a lambda function
39
+ * @param id scoped id of the resource
40
+ * @param scope scope in which this resource is defined
41
+ * @param props the lambda properties
42
+ * @param deadLetterQueue
43
+ */
44
+ createDeadLetterQueueForLambda(id: string, scope: CommonConstruct, props: LambdaProps, deadLetterQueue: IQueue): Queue;
45
+ }
@@ -0,0 +1,101 @@
1
+ import { Duration, RemovalPolicy, Tags } from 'aws-cdk-lib';
2
+ import { Queue } from 'aws-cdk-lib/aws-sqs';
3
+ import _ from 'lodash';
4
+ import { createCfnOutput } from '../../utils/index.js';
5
+ /**
6
+ * @classdesc Provides operations on AWS Simple Queue Service.
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: Construct, id: string, props: common.CommonStackProps) {
14
+ * super(parent, id, props)
15
+ * this.props = props
16
+ * this.sqsManager.createQueue('MySqs', this, {...})
17
+ * }
18
+ * }
19
+ * @see [CDK Simple Queue Service Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs-readme.html}
20
+ */
21
+ export class SqsManager {
22
+ /**
23
+ * @summary Method to create a lambda queue service
24
+ * @param id scoped id of the resource
25
+ * @param scope scope in which this resource is defined
26
+ * @param props
27
+ * @param deadLetterQueue
28
+ */
29
+ createQueue(id, scope, props, deadLetterQueue) {
30
+ if (!props)
31
+ throw `Queue props undefined for ${id}`;
32
+ if (!props.queueName)
33
+ throw `Queue queueName undefined for ${id}`;
34
+ let queueName = scope.resourceNameFormatter.format(props.queueName, scope.props.resourceNameOptions?.sqs);
35
+ if (props.fifo)
36
+ queueName += '.fifo';
37
+ const queue = new Queue(scope, id, {
38
+ ...props,
39
+ dataKeyReuse: props.dataKeyReuseInSecs ? Duration.seconds(props.dataKeyReuseInSecs) : props.dataKeyReuse,
40
+ deadLetterQueue: !deadLetterQueue
41
+ ? undefined
42
+ : {
43
+ maxReceiveCount: props.maxReceiveCount ?? 5,
44
+ queue: deadLetterQueue,
45
+ },
46
+ deliveryDelay: props.deliveryDelayInSecs ? Duration.seconds(props.deliveryDelayInSecs) : undefined,
47
+ queueName,
48
+ receiveMessageWaitTime: props.receiveMessageWaitTimeInSecs
49
+ ? Duration.seconds(props.receiveMessageWaitTimeInSecs)
50
+ : props.receiveMessageWaitTime,
51
+ removalPolicy: props.removalPolicy ?? RemovalPolicy.DESTROY,
52
+ retentionPeriod: props.retentionInDays ? Duration.days(props.retentionInDays) : Duration.days(7),
53
+ visibilityTimeout: props.visibilityTimeoutInSecs
54
+ ? Duration.seconds(props.visibilityTimeoutInSecs)
55
+ : props.visibilityTimeout,
56
+ });
57
+ if (props.tags && !_.isEmpty(props.tags)) {
58
+ _.forEach(props.tags, tag => {
59
+ Tags.of(queue).add(tag.key, tag.value);
60
+ });
61
+ }
62
+ createCfnOutput(`${id}-queueArn`, scope, queue.queueArn);
63
+ createCfnOutput(`${id}-queueName`, scope, queue.queueName);
64
+ createCfnOutput(`${id}-queueUrl`, scope, queue.queueUrl);
65
+ return queue;
66
+ }
67
+ /**
68
+ * @summary Method to create a redrive queue for a lambda function
69
+ * @param id scoped id of the resource
70
+ * @param scope scope in which this resource is defined
71
+ * @param props the lambda properties
72
+ */
73
+ createRedriveQueueForLambda(id, scope, props) {
74
+ return this.createQueue(`${id}`, scope, {
75
+ ...props.redriveq,
76
+ queueName: `${props.functionName}-redriveq`,
77
+ });
78
+ }
79
+ /**
80
+ * @summary Method to create a dead letter queue for a lambda function
81
+ * @param id scoped id of the resource
82
+ * @param scope scope in which this resource is defined
83
+ * @param props the lambda properties
84
+ * @param deadLetterQueue
85
+ */
86
+ createDeadLetterQueueForLambda(id, scope, props, deadLetterQueue) {
87
+ let queueProps;
88
+ if (props.dlq) {
89
+ queueProps = {
90
+ ...props.dlq,
91
+ queueName: `${props.functionName}-dlq`,
92
+ };
93
+ }
94
+ else {
95
+ queueProps = {
96
+ queueName: `${props.functionName}-dlq`,
97
+ };
98
+ }
99
+ return this.createQueue(`${id}`, scope, queueProps, deadLetterQueue);
100
+ }
101
+ }
@@ -0,0 +1,15 @@
1
+ import * as sqs from 'aws-cdk-lib/aws-sqs';
2
+ import { TagProps } from '../../types/index.js';
3
+ /**
4
+ */
5
+ export interface QueueProps extends sqs.QueueProps {
6
+ dataKeyReuseInSecs?: number;
7
+ deliveryDelayInSecs?: number;
8
+ maxReceiveCount?: number;
9
+ receiveMessageWaitTimeInSecs?: number;
10
+ retentionInDays?: number;
11
+ retriesEnabled?: boolean;
12
+ retryBatchSize?: number;
13
+ tags?: TagProps[];
14
+ visibilityTimeoutInSecs?: number;
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,79 @@
1
+ import { IDistribution } from 'aws-cdk-lib/aws-cloudfront';
2
+ import { CfnBucketPolicy, IBucket } from 'aws-cdk-lib/aws-s3';
3
+ import { ISource } from 'aws-cdk-lib/aws-s3-deployment';
4
+ import { CommonConstruct } from '../../common/index.js';
5
+ import { LifecycleRule, S3BucketProps } from './types.js';
6
+ /**
7
+ * @classdesc Provides operations on AWS S3
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: Construct, id: string, props: common.CommonStackProps) {
15
+ * super(parent, id, props)
16
+ * this.props = props
17
+ * this.s3Manager.createS3Bucket('MyBucket', this)
18
+ * }
19
+ * }
20
+ * @see [CDK S3 Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3-readme.html}
21
+ */
22
+ export declare class S3Manager {
23
+ /**
24
+ * @summary Method to determine S3 Bucket lifecycle properties
25
+ * @param props bucket properties
26
+ */
27
+ protected determineBucketLifecycleRules(props: S3BucketProps): LifecycleRule[] | undefined;
28
+ /**
29
+ * @summary Method to determine the bucket name using account and region
30
+ * @param scope scope in which this resource is defined
31
+ * @param bucketName the bucket name
32
+ */
33
+ protected static determineBucketNameByAccountAndRegion(scope: CommonConstruct, bucketName: string): string;
34
+ /**
35
+ * @summary Method to determine the bucket name using domain name
36
+ * @param scope scope in which this resource is defined
37
+ * @param bucketName the bucket name
38
+ */
39
+ protected static determineBucketNameByDomainName(scope: CommonConstruct, bucketName: string): string;
40
+ /**
41
+ * @summary Method to determine the bucket name
42
+ * @param scope scope in which this resource is defined
43
+ * @param bucketName the bucket name
44
+ */
45
+ static determineBucketName(scope: CommonConstruct, props: S3BucketProps, bucketName: string): string;
46
+ /**
47
+ * @summary Method to create a s3 bucket
48
+ * @param id scoped id of the resource
49
+ * @param scope scope in which this resource is defined
50
+ * @param props bucket properties
51
+ */
52
+ createS3Bucket(id: string, scope: CommonConstruct, props: S3BucketProps): IBucket;
53
+ /**
54
+ * @summary Method to create an iam bucket policy for cloudtrail
55
+ * @param id scoped id of the resource
56
+ * @param scope scope in which this resource is defined
57
+ * @param bucket
58
+ */
59
+ createBucketPolicyForCloudTrail(id: string, scope: CommonConstruct, bucket: IBucket): CfnBucketPolicy;
60
+ /**
61
+ * @summary Method to create a s3 bucket deployment
62
+ * @param id scoped id of the resource
63
+ * @param scope scope in which this resource is defined
64
+ * @param siteBucket
65
+ * @param distribution
66
+ * @param sources
67
+ * @param prefix
68
+ * @param prune
69
+ */
70
+ doBucketDeployment(id: string, scope: CommonConstruct, siteBucket: IBucket, distribution: IDistribution, sources: ISource[], prefix: string, prune?: boolean): void;
71
+ /**
72
+ *
73
+ * @param id scoped id of the resource
74
+ * @param scope scope in which this resource is defined
75
+ * @param bucket bucket to create the folders in
76
+ * @param folders list of folder names to be created in the bucket
77
+ */
78
+ createBucketFolders(id: string, scope: CommonConstruct, bucket: IBucket, folders: string[]): void;
79
+ }