@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,154 @@
1
+ import { Fn, RemovalPolicy } from 'aws-cdk-lib';
2
+ import { AccessLogFormat, BasePathMapping, Cors, EndpointType, LogGroupLogDestination, MethodLoggingLevel, Resource, RestApi, } from 'aws-cdk-lib/aws-apigateway';
3
+ import { CommonConstruct } from '../../common/index.js';
4
+ import { ApiToAnyTargetRestApi } from './target.js';
5
+ /**
6
+ * @classdesc Provides a construct to create and deploy a shallow API Gateway
7
+ * @example
8
+ * import { ApiToAnyTarget, ApiToAnyTargetProps } '@gradientedge/cdk-utils'
9
+ * import { Construct } from 'constructs'
10
+ *
11
+ * class CustomConstruct extends ApiToAnyTarget {
12
+ * constructor(parent: Construct, id: string, props: ApiToAnyTargetProps) {
13
+ * super(parent, id, props)
14
+ * this.props = props
15
+ * this.id = id
16
+ * this.initResources()
17
+ * }
18
+ * }
19
+ */
20
+ export class ApiToAnyTarget extends CommonConstruct {
21
+ props;
22
+ id;
23
+ /* application related resources */
24
+ applicationSecrets;
25
+ /* rest restApi related resources */
26
+ apiToAnyTargetRestApi;
27
+ apiResource;
28
+ constructor(parent, id, props) {
29
+ super(parent, id, props);
30
+ this.props = props;
31
+ this.id = id;
32
+ this.apiToAnyTargetRestApi = new ApiToAnyTargetRestApi();
33
+ }
34
+ initResources() {
35
+ /* application related resources */
36
+ this.resolveSecrets();
37
+ /* core resources */
38
+ this.resolveHostedZone();
39
+ this.resolveCertificate();
40
+ /* restApi related resources */
41
+ this.createApiToAnyTargetRestApi();
42
+ this.createApiDomain();
43
+ this.createApiBasePathMapping();
44
+ this.createApiRouteAssets();
45
+ }
46
+ /**
47
+ * @summary Method to resolve secrets from SecretsManager
48
+ * - To be implemented in the overriding method in the implementation class
49
+ */
50
+ resolveSecrets() {
51
+ this.applicationSecrets = [];
52
+ }
53
+ /**
54
+ * @summary Method to resolve a hosted zone based on domain attributes
55
+ */
56
+ resolveHostedZone() {
57
+ this.apiToAnyTargetRestApi.hostedZone = this.route53Manager.withHostedZoneFromFullyQualifiedDomainName(`${this.id}-hosted-zone`, this, this.props.useExistingHostedZone);
58
+ }
59
+ /**
60
+ * @summary Method to resolve a certificate based on attributes
61
+ */
62
+ resolveCertificate() {
63
+ if (this.props.api.useExisting)
64
+ return;
65
+ if (this.props.api.certificate.useExistingCertificate &&
66
+ this.props.api.certificate.certificateSsmName &&
67
+ this.props.api.certificate.certificateRegion) {
68
+ this.props.api.certificate.certificateArn = this.ssmManager.readStringParameterFromRegion(`${this.id}-certificate-param`, this, this.props.api.certificate.certificateSsmName, this.props.api.certificate.certificateRegion);
69
+ }
70
+ this.apiToAnyTargetRestApi.certificate = this.acmManager.resolveCertificate(`${this.id}-certificate`, this, this.props.api.certificate);
71
+ }
72
+ createApiToAnyTargetRestApi() {
73
+ if (this.props.api.useExisting && this.props.api.importedRestApiRef) {
74
+ this.apiToAnyTargetRestApi.api = RestApi.fromRestApiId(this, `${this.id}-rest-api`, Fn.importValue(this.props.api.importedRestApiRef));
75
+ return;
76
+ }
77
+ if (!this.props.api.restApi?.restApiName)
78
+ throw `RestApi name undefined for ${this.id}`;
79
+ const restApiName = this.resourceNameFormatter.format(this.props.api.restApi?.restApiName, this.props.resourceNameOptions?.apigateway);
80
+ const restApiAccessLogName = this.resourceNameFormatter.format(`${this.props.api.restApi?.restApiName}-access`, this.props.resourceNameOptions?.apigateway);
81
+ this.apiToAnyTargetRestApi.accessLogGroup = this.logManager.createLogGroup(`${this.id}-rest-api-access-log`, this, {
82
+ logGroupName: restApiAccessLogName,
83
+ removalPolicy: RemovalPolicy.DESTROY,
84
+ });
85
+ this.apiToAnyTargetRestApi.api = new RestApi(this, `${this.id}-rest-api`, {
86
+ cloudWatchRole: this.props.api.restApi?.cloudWatchRole ?? true,
87
+ defaultCorsPreflightOptions: {
88
+ allowHeaders: Cors.DEFAULT_HEADERS,
89
+ allowMethods: Cors.ALL_METHODS,
90
+ allowOrigins: Cors.ALL_ORIGINS,
91
+ },
92
+ defaultIntegration: this.apiToAnyTargetRestApi.integration,
93
+ defaultMethodOptions: {
94
+ methodResponses: [this.apiToAnyTargetRestApi.methodResponse, this.apiToAnyTargetRestApi.methodErrorResponse],
95
+ },
96
+ deploy: this.props.api.restApi?.deploy ?? true,
97
+ deployOptions: {
98
+ accessLogDestination: new LogGroupLogDestination(this.apiToAnyTargetRestApi.accessLogGroup),
99
+ accessLogFormat: AccessLogFormat.jsonWithStandardFields(),
100
+ dataTraceEnabled: this.props.api.restApi?.deployOptions?.dataTraceEnabled,
101
+ description: `${this.id} - ${this.props.stage} stage`,
102
+ loggingLevel: MethodLoggingLevel.INFO,
103
+ metricsEnabled: true,
104
+ stageName: this.props.stage,
105
+ tracingEnabled: this.props.api.restApi?.deployOptions?.tracingEnabled,
106
+ },
107
+ endpointConfiguration: {
108
+ types: [this.isProductionStage() ? EndpointType.EDGE : EndpointType.REGIONAL],
109
+ },
110
+ ...this.props.api.restApi,
111
+ restApiName,
112
+ });
113
+ this.addCfnOutput(`${this.id}-restApiId`, this.apiToAnyTargetRestApi.api.restApiId);
114
+ this.addCfnOutput(`${this.id}-restApiRootResourceId`, this.apiToAnyTargetRestApi.api.root.resourceId);
115
+ }
116
+ createApiToAnyTargetResource(apiResourceProps) {
117
+ if (!this.props.api.withResource)
118
+ return;
119
+ let rootResource;
120
+ if (this.props.api.withResource && this.props.api.importedRestApiRootResourceRef) {
121
+ rootResource = Resource.fromResourceAttributes(this, `${this.id}-root-resource-for-${apiResourceProps.path}`, {
122
+ path: '/',
123
+ resourceId: Fn.importValue(this.props.api.importedRestApiRootResourceRef),
124
+ restApi: this.apiToAnyTargetRestApi.api,
125
+ });
126
+ }
127
+ else {
128
+ rootResource = this.apiToAnyTargetRestApi.api.root;
129
+ }
130
+ return this.apiManager.createApiResource(`${this.id}-resource-${apiResourceProps.path}}`, this, apiResourceProps.parent ?? rootResource, apiResourceProps.path, apiResourceProps.integration, apiResourceProps.addProxy, apiResourceProps.authorizer, apiResourceProps.allowedOrigins, apiResourceProps.allowedMethods, apiResourceProps.allowedHeaders, apiResourceProps.methodRequestParameters, apiResourceProps.proxyIntegration, apiResourceProps.enableDefaultCors, apiResourceProps.mockIntegration, apiResourceProps.mockMethodResponses);
131
+ }
132
+ createApiDomain() {
133
+ if (this.props.api.useExisting)
134
+ return;
135
+ this.apiToAnyTargetRestApi.domain = this.apiManager.createApiDomain(`${this.id}-api-domain`, this, this.isProductionStage() || this.props.skipStageForARecords
136
+ ? `${this.props.apiSubDomain}.${this.fullyQualifiedDomainName}`
137
+ : `${this.props.apiSubDomain}-${this.props.stage}.${this.fullyQualifiedDomainName}`, this.apiToAnyTargetRestApi.certificate);
138
+ }
139
+ createApiBasePathMapping() {
140
+ if (this.props.api.useExisting)
141
+ return;
142
+ new BasePathMapping(this, `${this.id}-base-bath-mapping`, {
143
+ basePath: '',
144
+ domainName: this.apiToAnyTargetRestApi.domain,
145
+ restApi: this.apiToAnyTargetRestApi.api,
146
+ stage: this.apiToAnyTargetRestApi.api.deploymentStage,
147
+ });
148
+ }
149
+ createApiRouteAssets() {
150
+ if (this.props.api.useExisting)
151
+ return;
152
+ this.route53Manager.createApiGatewayARecord(`${this.id}-custom-domain-a-record`, this, this.props.apiSubDomain, this.apiToAnyTargetRestApi.domain, this.apiToAnyTargetRestApi.hostedZone, this.props.skipStageForARecords);
153
+ }
154
+ }
@@ -0,0 +1,23 @@
1
+ import { IRestApi, IAuthorizer, BasePathMapping, DomainName, Integration, Method, MethodResponse, Resource } from 'aws-cdk-lib/aws-apigateway';
2
+ import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
3
+ import { LogGroup } from 'aws-cdk-lib/aws-logs';
4
+ import { IHostedZone } from 'aws-cdk-lib/aws-route53';
5
+ import { ApiToAnyTargetRestApiType } from './types.js';
6
+ export declare class ApiToAnyTargetRestApi implements ApiToAnyTargetRestApiType {
7
+ accessLogGroup: LogGroup;
8
+ api: IRestApi;
9
+ authoriser?: IAuthorizer;
10
+ basePathMappings: BasePathMapping[];
11
+ certificate: ICertificate;
12
+ domain: DomainName;
13
+ hostedZone: IHostedZone;
14
+ integration: Integration;
15
+ method: {
16
+ [httpMethod: string]: Method;
17
+ };
18
+ methodErrorResponse: MethodResponse;
19
+ methodResponse: MethodResponse;
20
+ resource: {
21
+ [path: string]: Resource;
22
+ };
23
+ }
@@ -0,0 +1,14 @@
1
+ export class ApiToAnyTargetRestApi {
2
+ accessLogGroup;
3
+ api;
4
+ authoriser;
5
+ basePathMappings;
6
+ certificate;
7
+ domain;
8
+ hostedZone;
9
+ integration;
10
+ method;
11
+ methodErrorResponse;
12
+ methodResponse;
13
+ resource;
14
+ }
@@ -0,0 +1,60 @@
1
+ import { BasePathMapping, DomainName, IAuthorizer, IResource, IRestApi, Integration, Method, MethodResponse, MockIntegration, Resource } from 'aws-cdk-lib/aws-apigateway';
2
+ import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
3
+ import { LogGroup } from 'aws-cdk-lib/aws-logs';
4
+ import { IHostedZone } from 'aws-cdk-lib/aws-route53';
5
+ import { CommonStackProps } from '../../common/index.js';
6
+ import { AcmProps, RestApigProps } from '../../services/index.js';
7
+ export interface ApiToAnyTargetRestApiType {
8
+ accessLogGroup: LogGroup;
9
+ api: IRestApi;
10
+ authoriser?: IAuthorizer;
11
+ basePathMappings: BasePathMapping[];
12
+ certificate: ICertificate;
13
+ domain: DomainName;
14
+ hostedZone: IHostedZone;
15
+ integration: Integration;
16
+ method: {
17
+ [httpMethod: string]: Method;
18
+ };
19
+ methodErrorResponse: MethodResponse;
20
+ methodResponse: MethodResponse;
21
+ resource: {
22
+ [path: string]: Resource;
23
+ };
24
+ }
25
+ export interface ApiToAnyTargetRestApiResource {
26
+ addProxy: boolean;
27
+ authorizer?: IAuthorizer;
28
+ allowedOrigins?: string[];
29
+ allowedMethods?: string[];
30
+ allowedHeaders?: string[];
31
+ integration: Integration;
32
+ methodRequestParameters?: {
33
+ [param: string]: boolean;
34
+ };
35
+ path: string;
36
+ parent?: IResource;
37
+ proxyIntegration?: Integration;
38
+ enableDefaultCors?: boolean;
39
+ mockIntegration?: MockIntegration;
40
+ mockMethodResponses?: MethodResponse[];
41
+ }
42
+ export interface ApiToAnyTargetRestApiProps {
43
+ certificate: AcmProps;
44
+ importedRestApiRef?: string;
45
+ importedRestApiRootResourceRef?: string;
46
+ methodErrorResponse: MethodResponse;
47
+ methodResponse: MethodResponse;
48
+ restApi: RestApigProps;
49
+ useExisting: boolean;
50
+ withResource?: boolean;
51
+ }
52
+ export interface ApiToAnyTargetProps extends CommonStackProps {
53
+ api: ApiToAnyTargetRestApiProps;
54
+ apiRootPaths?: string[];
55
+ apiSubDomain: string;
56
+ logLevel: string;
57
+ nodeEnv: string;
58
+ timezone: string;
59
+ useExistingHostedZone: boolean;
60
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { DomainName, Integration, IntegrationResponse, Method, MethodResponse, Model, Resource, RestApi } from 'aws-cdk-lib/aws-apigateway';
2
+ import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
3
+ import { Role } from 'aws-cdk-lib/aws-iam';
4
+ import { LogGroup } from 'aws-cdk-lib/aws-logs';
5
+ import { IHostedZone } from 'aws-cdk-lib/aws-route53';
6
+ import { Topic } from 'aws-cdk-lib/aws-sns';
7
+ import { ApiToEventBridgeTargetRestApiType } from './types.js';
8
+ /**
9
+ * @classdesc Provides a construct to contain api resources for ApiToEventBridgeTargetWithSns
10
+ */
11
+ export declare class ApiToEventbridgeTargetRestApi implements ApiToEventBridgeTargetRestApiType {
12
+ accessLogGroup: LogGroup;
13
+ api: RestApi;
14
+ certificate: ICertificate;
15
+ domain: DomainName;
16
+ errorResponseModel: Model;
17
+ hostedZone: IHostedZone;
18
+ integration: Integration;
19
+ integrationErrorResponse: IntegrationResponse;
20
+ integrationRequestParameters: {
21
+ [p: string]: string;
22
+ };
23
+ integrationRequestTemplates: {
24
+ [p: string]: string;
25
+ };
26
+ integrationResponse: IntegrationResponse;
27
+ method: Method;
28
+ methodErrorResponse: MethodResponse;
29
+ methodResponse: MethodResponse;
30
+ resource: Resource;
31
+ responseModel: Model;
32
+ topic: Topic;
33
+ role: Role;
34
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @classdesc Provides a construct to contain api resources for ApiToEventBridgeTargetWithSns
3
+ */
4
+ export class ApiToEventbridgeTargetRestApi {
5
+ accessLogGroup;
6
+ api;
7
+ certificate;
8
+ domain;
9
+ errorResponseModel;
10
+ hostedZone;
11
+ integration;
12
+ integrationErrorResponse;
13
+ integrationRequestParameters;
14
+ integrationRequestTemplates;
15
+ integrationResponse;
16
+ method;
17
+ methodErrorResponse;
18
+ methodResponse;
19
+ resource;
20
+ responseModel;
21
+ topic;
22
+ role;
23
+ }
@@ -0,0 +1,15 @@
1
+ import { IEventBus, Rule } from 'aws-cdk-lib/aws-events';
2
+ import { LogGroup } from 'aws-cdk-lib/aws-logs';
3
+ import { ApiToEventBridgeTargetEventType } from './types.js';
4
+ /**
5
+ * @classdesc Provides a construct to contain event resources for ApiToEventBridgeTargetWithSns
6
+ */
7
+ export declare class ApiToEventbridgeTargetEvent implements ApiToEventBridgeTargetEventType {
8
+ eventBus: IEventBus;
9
+ logGroup: LogGroup;
10
+ logGroupFailure: LogGroup;
11
+ logGroupSuccess: LogGroup;
12
+ rule: Rule;
13
+ ruleFailure: Rule;
14
+ ruleSuccess: Rule;
15
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @classdesc Provides a construct to contain event resources for ApiToEventBridgeTargetWithSns
3
+ */
4
+ export class ApiToEventbridgeTargetEvent {
5
+ eventBus;
6
+ logGroup;
7
+ logGroupFailure;
8
+ logGroupSuccess;
9
+ rule;
10
+ ruleFailure;
11
+ ruleSuccess;
12
+ }
@@ -0,0 +1,4 @@
1
+ export * from './api.js';
2
+ export * from './event.js';
3
+ export * from './main.js';
4
+ export * from './types.js';
@@ -0,0 +1,4 @@
1
+ export * from './api.js';
2
+ export * from './event.js';
3
+ export * from './main.js';
4
+ export * from './types.js';
@@ -0,0 +1,121 @@
1
+ import { ISecret } from 'aws-cdk-lib/aws-secretsmanager';
2
+ import { Construct } from 'constructs';
3
+ import { CommonConstruct } from '../../common/index.js';
4
+ import { ApiToEventBridgeTargetEventType, ApiToEventBridgeTargetProps, ApiToEventBridgeTargetRestApiType } from './types.js';
5
+ /**
6
+ * @classdesc Provides a construct to create and deploy API Gateway invocations to EventBridge
7
+ *
8
+ * <b>Architecture</b><br/> ![Architecture](./ApiToEventBridgeTarget.jpg)
9
+ * @example
10
+ * import { ApiToEventBridgeTarget, ApiToEventBridgeTargetProps } '@gradientedge/cdk-utils'
11
+ * import { Construct } from 'constructs'
12
+ *
13
+ * class CustomConstruct extends ApiToEventBridgeTarget {
14
+ * constructor(parent: Construct, id: string, props: ApiToEventBridgeTargetProps) {
15
+ * super(parent, id, props)
16
+ * this.props = props
17
+ * this.id = id
18
+ * this.initResources()
19
+ * }
20
+ * }
21
+ */
22
+ export declare class ApiToEventBridgeTarget extends CommonConstruct {
23
+ props: ApiToEventBridgeTargetProps;
24
+ id: string;
25
+ applicationSecrets: ISecret[];
26
+ apiEvent: ApiToEventBridgeTargetEventType;
27
+ apiToEventBridgeTargetRestApi: ApiToEventBridgeTargetRestApiType;
28
+ apiResource: string;
29
+ constructor(parent: Construct, id: string, props: ApiToEventBridgeTargetProps);
30
+ initResources(): void;
31
+ /**
32
+ * @summary Method to resolve secrets from SecretsManager
33
+ * - To be implemented in the overriding method in the implementation class
34
+ */
35
+ protected resolveSecrets(): void;
36
+ /**
37
+ * @summary Method to resolve a hosted zone based on domain attributes
38
+ */
39
+ protected resolveHostedZone(): void;
40
+ /**
41
+ * @summary Method to resolve a certificate based on attributes
42
+ */
43
+ protected resolveCertificate(): void;
44
+ /**
45
+ * @summary Method to create or use an existing event bus for api payload deliveries
46
+ */
47
+ protected createApiToEventBridgeTargetEventBus(): void;
48
+ /**
49
+ * @summary Method to create a log group for successful api payload deliveries
50
+ */
51
+ protected createApiToEventBridgeTargetLogGroup(): void;
52
+ /**
53
+ * Method to create EventBridge rule with lambda target for success
54
+ */
55
+ protected createApiToEventBridgeTargetRule(): void;
56
+ protected createApiToEventBridgeTargetPolicy(): void;
57
+ /**
58
+ * @summary Method to create a role for api integration
59
+ */
60
+ protected createApiToEventBridgeTargetRole(): void;
61
+ /**
62
+ * @summary Method to create api integration request parameters
63
+ */
64
+ protected createApiToEventBridgeTargetIntegrationRequestParameters(): void;
65
+ /**
66
+ * @summary Method to create api integration request templates
67
+ */
68
+ protected createApiToEventBridgeTargetIntegrationRequestTemplates(): void;
69
+ /**
70
+ * @summary Method to create api integration response
71
+ */
72
+ protected createApiToEventBridgeTargetIntegrationResponse(): void;
73
+ /**
74
+ * @summary Method to create api integration error response
75
+ */
76
+ protected createApiToEventBridgeTargetIntegrationErrorResponse(): void;
77
+ /**
78
+ * @summary Method to create api integration
79
+ */
80
+ protected createApiToEventBridgeTargetIntegration(): void;
81
+ /**
82
+ * @summary Method to create api integration method response
83
+ */
84
+ protected createApiToEventBridgeTargetMethodResponse(): void;
85
+ /**
86
+ * @summary Method to create api integration method error response
87
+ */
88
+ protected createApiToEventBridgeTargetMethodErrorResponse(): void;
89
+ /**
90
+ * @summary Method to create rest restApi for Api
91
+ */
92
+ protected createApiToEventBridgeTargetRestApi(): void;
93
+ /**
94
+ * @summary Method to create api integration response model
95
+ */
96
+ protected createApiToEventBridgeTargetResponseModel(): void;
97
+ /**
98
+ * @summary Method to create api integration error response model
99
+ */
100
+ protected createApiToEventBridgeTargetErrorResponseModel(): void;
101
+ /**
102
+ * @summary Method to create api integration resource
103
+ */
104
+ protected createApiToEventBridgeTargetResource(): void;
105
+ /**
106
+ * @summary Method to create api integration resource method
107
+ */
108
+ protected createApiToEventBridgeTargetResourceMethod(): void;
109
+ /**
110
+ * @summary Method to create custom restApi domain for Api
111
+ */
112
+ protected createApiDomain(): void;
113
+ /**
114
+ * @summary Method to create base path mappings for Api
115
+ */
116
+ protected createApiBasePathMapping(): void;
117
+ /**
118
+ * @summary Method to create route53 records for Api
119
+ */
120
+ protected createApiRouteAssets(): void;
121
+ }