@digitraffic/common 2022.10.14-1 → 2022.10.28-2

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 (334) hide show
  1. package/{aws → dist/aws}/infra/api/integration.d.ts +0 -0
  2. package/dist/aws/infra/api/integration.js +52 -0
  3. package/dist/aws/infra/api/integration.js.map +1 -0
  4. package/{aws → dist/aws}/infra/api/response.d.ts +0 -0
  5. package/dist/aws/infra/api/response.js +61 -0
  6. package/dist/aws/infra/api/response.js.map +1 -0
  7. package/{aws → dist/aws}/infra/api/responses.d.ts +3 -3
  8. package/dist/aws/infra/api/responses.js +82 -0
  9. package/dist/aws/infra/api/responses.js.map +1 -0
  10. package/{aws → dist/aws}/infra/api/static-integration.d.ts +0 -0
  11. package/dist/aws/infra/api/static-integration.js +54 -0
  12. package/dist/aws/infra/api/static-integration.js.map +1 -0
  13. package/{aws → dist/aws}/infra/canaries/canary-alarm.d.ts +0 -0
  14. package/dist/aws/infra/canaries/canary-alarm.js +26 -0
  15. package/dist/aws/infra/canaries/canary-alarm.js.map +1 -0
  16. package/dist/aws/infra/canaries/canary-keys.d.ts +3 -0
  17. package/dist/aws/infra/canaries/canary-keys.js +7 -0
  18. package/dist/aws/infra/canaries/canary-keys.js.map +1 -0
  19. package/{aws → dist/aws}/infra/canaries/canary-parameters.d.ts +0 -0
  20. package/dist/aws/infra/canaries/canary-parameters.js +3 -0
  21. package/dist/aws/infra/canaries/canary-parameters.js.map +1 -0
  22. package/{aws → dist/aws}/infra/canaries/canary-role.d.ts +0 -0
  23. package/dist/aws/infra/canaries/canary-role.js +46 -0
  24. package/dist/aws/infra/canaries/canary-role.js.map +1 -0
  25. package/{aws → dist/aws}/infra/canaries/canary.d.ts +0 -0
  26. package/dist/aws/infra/canaries/canary.js +32 -0
  27. package/dist/aws/infra/canaries/canary.js.map +1 -0
  28. package/{aws → dist/aws}/infra/canaries/database-canary.d.ts +0 -0
  29. package/dist/aws/infra/canaries/database-canary.js +70 -0
  30. package/dist/aws/infra/canaries/database-canary.js.map +1 -0
  31. package/{aws → dist/aws}/infra/canaries/database-checker.d.ts +2 -2
  32. package/dist/aws/infra/canaries/database-checker.js +103 -0
  33. package/dist/aws/infra/canaries/database-checker.js.map +1 -0
  34. package/{aws → dist/aws}/infra/canaries/url-canary.d.ts +0 -3
  35. package/dist/aws/infra/canaries/url-canary.js +47 -0
  36. package/dist/aws/infra/canaries/url-canary.js.map +1 -0
  37. package/{aws → dist/aws}/infra/canaries/url-checker.d.ts +0 -0
  38. package/dist/aws/infra/canaries/url-checker.js +252 -0
  39. package/dist/aws/infra/canaries/url-checker.js.map +1 -0
  40. package/{aws → dist/aws}/infra/documentation.d.ts +0 -0
  41. package/dist/aws/infra/documentation.js +95 -0
  42. package/dist/aws/infra/documentation.js.map +1 -0
  43. package/{aws → dist/aws}/infra/scheduler.d.ts +7 -7
  44. package/dist/aws/infra/scheduler.js +31 -0
  45. package/dist/aws/infra/scheduler.js.map +1 -0
  46. package/{aws → dist/aws}/infra/security-rule.d.ts +0 -0
  47. package/dist/aws/infra/security-rule.js +39 -0
  48. package/dist/aws/infra/security-rule.js.map +1 -0
  49. package/{aws → dist/aws}/infra/sqs-integration.d.ts +0 -0
  50. package/dist/aws/infra/sqs-integration.js +93 -0
  51. package/dist/aws/infra/sqs-integration.js.map +1 -0
  52. package/{aws → dist/aws}/infra/sqs-queue.d.ts +0 -0
  53. package/dist/aws/infra/sqs-queue.js +130 -0
  54. package/dist/aws/infra/sqs-queue.js.map +1 -0
  55. package/{aws → dist/aws}/infra/stack/lambda-configs.d.ts +5 -5
  56. package/dist/aws/infra/stack/lambda-configs.js +105 -0
  57. package/dist/aws/infra/stack/lambda-configs.js.map +1 -0
  58. package/{aws → dist/aws}/infra/stack/monitoredfunction.d.ts +1 -1
  59. package/dist/aws/infra/stack/monitoredfunction.js +143 -0
  60. package/dist/aws/infra/stack/monitoredfunction.js.map +1 -0
  61. package/{aws → dist/aws}/infra/stack/rest_apis.d.ts +0 -0
  62. package/dist/aws/infra/stack/rest_apis.js +185 -0
  63. package/dist/aws/infra/stack/rest_apis.js.map +1 -0
  64. package/{aws → dist/aws}/infra/stack/stack-checking-aspect.d.ts +0 -0
  65. package/dist/aws/infra/stack/stack-checking-aspect.js +174 -0
  66. package/dist/aws/infra/stack/stack-checking-aspect.js.map +1 -0
  67. package/{aws → dist/aws}/infra/stack/stack.d.ts +5 -4
  68. package/dist/aws/infra/stack/stack.js +67 -0
  69. package/dist/aws/infra/stack/stack.js.map +1 -0
  70. package/{aws → dist/aws}/infra/stack/subscription.d.ts +3 -3
  71. package/dist/aws/infra/stack/subscription.js +42 -0
  72. package/dist/aws/infra/stack/subscription.js.map +1 -0
  73. package/{aws → dist/aws}/infra/usage-plans.d.ts +0 -0
  74. package/dist/aws/infra/usage-plans.js +42 -0
  75. package/dist/aws/infra/usage-plans.js.map +1 -0
  76. package/{aws → dist/aws}/runtime/apikey.d.ts +0 -0
  77. package/dist/aws/runtime/apikey.js +13 -0
  78. package/dist/aws/runtime/apikey.js.map +1 -0
  79. package/{aws → dist/aws}/runtime/digitraffic-integration-response.d.ts +0 -0
  80. package/dist/aws/runtime/digitraffic-integration-response.js +26 -0
  81. package/dist/aws/runtime/digitraffic-integration-response.js.map +1 -0
  82. package/dist/aws/runtime/environment.d.ts +1 -0
  83. package/dist/aws/runtime/environment.js +12 -0
  84. package/dist/aws/runtime/environment.js.map +1 -0
  85. package/{aws → dist/aws}/runtime/messaging.d.ts +0 -0
  86. package/dist/aws/runtime/messaging.js +31 -0
  87. package/dist/aws/runtime/messaging.js.map +1 -0
  88. package/{aws → dist/aws}/runtime/s3.d.ts +0 -0
  89. package/dist/aws/runtime/s3.js +30 -0
  90. package/dist/aws/runtime/s3.js.map +1 -0
  91. package/{aws → dist/aws}/runtime/secrets/dbsecret.d.ts +0 -0
  92. package/dist/aws/runtime/secrets/dbsecret.js +96 -0
  93. package/dist/aws/runtime/secrets/dbsecret.js.map +1 -0
  94. package/{aws → dist/aws}/runtime/secrets/proxy-holder.d.ts +0 -0
  95. package/dist/aws/runtime/secrets/proxy-holder.js +27 -0
  96. package/dist/aws/runtime/secrets/proxy-holder.js.map +1 -0
  97. package/{aws → dist/aws}/runtime/secrets/rds-holder.d.ts +0 -0
  98. package/dist/aws/runtime/secrets/rds-holder.js +27 -0
  99. package/dist/aws/runtime/secrets/rds-holder.js.map +1 -0
  100. package/{aws → dist/aws}/runtime/secrets/secret-holder.d.ts +0 -0
  101. package/dist/aws/runtime/secrets/secret-holder.js +76 -0
  102. package/dist/aws/runtime/secrets/secret-holder.js.map +1 -0
  103. package/{aws → dist/aws}/runtime/secrets/secret.d.ts +0 -0
  104. package/dist/aws/runtime/secrets/secret.js +43 -0
  105. package/dist/aws/runtime/secrets/secret.js.map +1 -0
  106. package/{aws → dist/aws}/types/errors.d.ts +4 -0
  107. package/dist/aws/types/errors.js +16 -0
  108. package/dist/aws/types/errors.js.map +1 -0
  109. package/{aws → dist/aws}/types/lambda-response.d.ts +4 -3
  110. package/dist/aws/types/lambda-response.js +33 -0
  111. package/dist/aws/types/lambda-response.js.map +1 -0
  112. package/{aws → dist/aws}/types/mediatypes.d.ts +1 -1
  113. package/dist/aws/types/mediatypes.js +16 -0
  114. package/dist/aws/types/mediatypes.js.map +1 -0
  115. package/{aws → dist/aws}/types/model-with-reference.d.ts +0 -0
  116. package/dist/aws/types/model-with-reference.js +3 -0
  117. package/dist/aws/types/model-with-reference.js.map +1 -0
  118. package/{aws → dist/aws}/types/proxytypes.d.ts +0 -0
  119. package/dist/aws/types/proxytypes.js +3 -0
  120. package/dist/aws/types/proxytypes.js.map +1 -0
  121. package/{aws → dist/aws}/types/tags.d.ts +0 -0
  122. package/dist/aws/types/tags.js +7 -0
  123. package/dist/aws/types/tags.js.map +1 -0
  124. package/{database → dist/database}/cached.d.ts +0 -0
  125. package/dist/database/cached.js +32 -0
  126. package/dist/database/cached.js.map +1 -0
  127. package/{database → dist/database}/database.d.ts +0 -0
  128. package/dist/database/database.js +70 -0
  129. package/dist/database/database.js.map +1 -0
  130. package/{database → dist/database}/last-updated.d.ts +0 -0
  131. package/dist/database/last-updated.js +54 -0
  132. package/dist/database/last-updated.js.map +1 -0
  133. package/dist/database/models.d.ts +6 -0
  134. package/dist/database/models.js +3 -0
  135. package/dist/database/models.js.map +1 -0
  136. package/{marine → dist/marine}/id_utils.d.ts +0 -0
  137. package/dist/marine/id_utils.js +33 -0
  138. package/dist/marine/id_utils.js.map +1 -0
  139. package/{marine → dist/marine}/rtz.d.ts +0 -0
  140. package/dist/marine/rtz.js +3 -0
  141. package/dist/marine/rtz.js.map +1 -0
  142. package/{test → dist/test}/asserter.d.ts +0 -0
  143. package/dist/test/asserter.js +45 -0
  144. package/dist/test/asserter.js.map +1 -0
  145. package/{test → dist/test}/db-testutils.d.ts +1 -1
  146. package/dist/test/db-testutils.js +31 -0
  147. package/dist/test/db-testutils.js.map +1 -0
  148. package/{test → dist/test}/httpserver.d.ts +2 -1
  149. package/dist/test/httpserver.js +74 -0
  150. package/dist/test/httpserver.js.map +1 -0
  151. package/{test → dist/test}/secret.d.ts +0 -0
  152. package/dist/test/secret.js +25 -0
  153. package/dist/test/secret.js.map +1 -0
  154. package/{test → dist/test}/secrets-manager.d.ts +0 -0
  155. package/dist/test/secrets-manager.js +59 -0
  156. package/dist/test/secrets-manager.js.map +1 -0
  157. package/{test → dist/test}/testutils.d.ts +0 -0
  158. package/dist/test/testutils.js +44 -0
  159. package/dist/test/testutils.js.map +1 -0
  160. package/dist/types/either.d.ts +9 -0
  161. package/dist/types/either.js +3 -0
  162. package/dist/types/either.js.map +1 -0
  163. package/{types → dist/types}/input-error.d.ts +0 -0
  164. package/dist/types/input-error.js +7 -0
  165. package/dist/types/input-error.js.map +1 -0
  166. package/{types → dist/types}/language.d.ts +0 -0
  167. package/dist/types/language.js +10 -0
  168. package/dist/types/language.js.map +1 -0
  169. package/{types → dist/types}/traffictype.d.ts +0 -0
  170. package/dist/types/traffictype.js +13 -0
  171. package/dist/types/traffictype.js.map +1 -0
  172. package/{types → dist/types}/validator.d.ts +0 -0
  173. package/dist/types/validator.js +14 -0
  174. package/dist/types/validator.js.map +1 -0
  175. package/{utils → dist/utils}/api-model.d.ts +0 -0
  176. package/dist/utils/api-model.js +129 -0
  177. package/dist/utils/api-model.js.map +1 -0
  178. package/{utils → dist/utils}/base64.d.ts +0 -0
  179. package/dist/utils/base64.js +21 -0
  180. package/dist/utils/base64.js.map +1 -0
  181. package/{utils → dist/utils}/date-utils.d.ts +0 -0
  182. package/dist/utils/date-utils.js +34 -0
  183. package/dist/utils/date-utils.js.map +1 -0
  184. package/{utils → dist/utils}/geojson-types.d.ts +0 -0
  185. package/dist/utils/geojson-types.js +18 -0
  186. package/dist/utils/geojson-types.js.map +1 -0
  187. package/{utils → dist/utils}/geometry.d.ts +0 -0
  188. package/dist/utils/geometry.js +164 -0
  189. package/dist/utils/geometry.js.map +1 -0
  190. package/{utils → dist/utils}/retry.d.ts +0 -0
  191. package/dist/utils/retry.js +50 -0
  192. package/dist/utils/retry.js.map +1 -0
  193. package/{utils → dist/utils}/slack.d.ts +0 -0
  194. package/dist/utils/slack.js +25 -0
  195. package/dist/utils/slack.js.map +1 -0
  196. package/{utils → dist/utils}/utils.d.ts +24 -0
  197. package/dist/utils/utils.js +75 -0
  198. package/dist/utils/utils.js.map +1 -0
  199. package/package.json +12 -10
  200. package/src/@types/geojson-validation/index.d.ts +4 -0
  201. package/src/aws/infra/api/integration.ts +73 -0
  202. package/src/aws/infra/api/response.ts +67 -0
  203. package/src/aws/infra/api/responses.ts +124 -0
  204. package/src/aws/infra/api/static-integration.ts +62 -0
  205. package/src/aws/infra/canaries/canary-alarm.ts +31 -0
  206. package/src/aws/infra/canaries/canary-keys.ts +3 -0
  207. package/src/aws/infra/canaries/canary-parameters.ts +19 -0
  208. package/src/aws/infra/canaries/canary-role.ts +47 -0
  209. package/src/aws/infra/canaries/canary.ts +46 -0
  210. package/src/aws/infra/canaries/database-canary.ts +98 -0
  211. package/src/aws/infra/canaries/database-checker.ts +155 -0
  212. package/src/aws/infra/canaries/url-canary.ts +74 -0
  213. package/src/aws/infra/canaries/url-checker.ts +366 -0
  214. package/src/aws/infra/documentation.ts +124 -0
  215. package/src/aws/infra/scheduler.ts +59 -0
  216. package/src/aws/infra/security-rule.ts +38 -0
  217. package/src/aws/infra/sqs-integration.ts +102 -0
  218. package/src/aws/infra/sqs-queue.ts +148 -0
  219. package/src/aws/infra/stack/lambda-configs.ts +207 -0
  220. package/src/aws/infra/stack/monitoredfunction.ts +342 -0
  221. package/src/aws/infra/stack/rest_apis.ts +223 -0
  222. package/src/aws/infra/stack/stack-checking-aspect.ts +279 -0
  223. package/src/aws/infra/stack/stack.ts +145 -0
  224. package/src/aws/infra/stack/subscription.ts +58 -0
  225. package/src/aws/infra/usage-plans.ts +41 -0
  226. package/src/aws/runtime/apikey.ts +9 -0
  227. package/src/aws/runtime/digitraffic-integration-response.ts +28 -0
  228. package/src/aws/runtime/environment.ts +9 -0
  229. package/src/aws/runtime/messaging.ts +26 -0
  230. package/src/aws/runtime/s3.ts +44 -0
  231. package/src/aws/runtime/secrets/dbsecret.ts +116 -0
  232. package/src/aws/runtime/secrets/proxy-holder.ts +37 -0
  233. package/src/aws/runtime/secrets/rds-holder.ts +33 -0
  234. package/src/aws/runtime/secrets/secret-holder.ts +116 -0
  235. package/src/aws/runtime/secrets/secret.ts +50 -0
  236. package/src/aws/types/errors.ts +14 -0
  237. package/src/aws/types/lambda-response.ts +43 -0
  238. package/src/aws/types/mediatypes.ts +11 -0
  239. package/src/aws/types/model-with-reference.ts +8 -0
  240. package/src/aws/types/proxytypes.ts +27 -0
  241. package/src/aws/types/tags.ts +3 -0
  242. package/src/database/cached.ts +35 -0
  243. package/src/database/database.ts +96 -0
  244. package/src/database/last-updated.ts +59 -0
  245. package/src/database/models.ts +7 -0
  246. package/src/marine/id_utils.ts +30 -0
  247. package/src/marine/rtz.ts +57 -0
  248. package/src/test/asserter.ts +48 -0
  249. package/src/test/db-testutils.ts +44 -0
  250. package/src/test/httpserver.ts +96 -0
  251. package/src/test/secret.ts +23 -0
  252. package/src/test/secrets-manager.ts +34 -0
  253. package/src/test/testutils.ts +39 -0
  254. package/src/types/either.ts +3 -0
  255. package/src/types/input-error.ts +2 -0
  256. package/src/types/language.ts +3 -0
  257. package/src/types/traffictype.ts +8 -0
  258. package/src/types/validator.ts +10 -0
  259. package/src/utils/api-model.ts +133 -0
  260. package/src/utils/base64.ts +16 -0
  261. package/src/utils/date-utils.ts +30 -0
  262. package/src/utils/geojson-types.ts +22 -0
  263. package/src/utils/geometry.ts +164 -0
  264. package/src/utils/retry.ts +49 -0
  265. package/src/utils/slack.ts +22 -0
  266. package/src/utils/utils.ts +105 -0
  267. package/aws/index.d.ts +0 -1
  268. package/aws/infra/api/index.d.ts +0 -1
  269. package/aws/infra/api/integration.js +0 -52
  270. package/aws/infra/api/response.js +0 -61
  271. package/aws/infra/api/responses.js +0 -79
  272. package/aws/infra/api/static-integration.js +0 -54
  273. package/aws/infra/canaries/canary-alarm.js +0 -26
  274. package/aws/infra/canaries/canary-parameters.js +0 -3
  275. package/aws/infra/canaries/canary-role.js +0 -46
  276. package/aws/infra/canaries/canary.js +0 -29
  277. package/aws/infra/canaries/database-canary.js +0 -55
  278. package/aws/infra/canaries/database-checker.js +0 -109
  279. package/aws/infra/canaries/url-canary.js +0 -46
  280. package/aws/infra/canaries/url-checker.js +0 -238
  281. package/aws/infra/documentation.js +0 -95
  282. package/aws/infra/scheduler.js +0 -31
  283. package/aws/infra/security-rule.js +0 -39
  284. package/aws/infra/sqs-integration.js +0 -93
  285. package/aws/infra/sqs-queue.js +0 -130
  286. package/aws/infra/stack/lambda-configs.js +0 -93
  287. package/aws/infra/stack/monitoredfunction.js +0 -135
  288. package/aws/infra/stack/rest_apis.js +0 -185
  289. package/aws/infra/stack/stack-checking-aspect.js +0 -174
  290. package/aws/infra/stack/stack.js +0 -60
  291. package/aws/infra/stack/subscription.js +0 -41
  292. package/aws/infra/usage-plans.js +0 -42
  293. package/aws/runtime/apikey.js +0 -13
  294. package/aws/runtime/digitraffic-integration-response.js +0 -26
  295. package/aws/runtime/messaging.js +0 -31
  296. package/aws/runtime/s3.js +0 -30
  297. package/aws/runtime/secrets/dbsecret.js +0 -96
  298. package/aws/runtime/secrets/proxy-holder.js +0 -26
  299. package/aws/runtime/secrets/rds-holder.js +0 -26
  300. package/aws/runtime/secrets/secret-holder.js +0 -73
  301. package/aws/runtime/secrets/secret.js +0 -43
  302. package/aws/types/errors.js +0 -9
  303. package/aws/types/lambda-response.js +0 -28
  304. package/aws/types/mediatypes.js +0 -15
  305. package/aws/types/model-with-reference.js +0 -3
  306. package/aws/types/proxytypes.js +0 -3
  307. package/aws/types/tags.js +0 -7
  308. package/database/cached.js +0 -32
  309. package/database/database.js +0 -62
  310. package/database/last-updated.js +0 -54
  311. package/index.d.ts +0 -1
  312. package/index.js +0 -18
  313. package/marine/id_utils.js +0 -33
  314. package/marine/rtz.js +0 -3
  315. package/test/asserter.js +0 -45
  316. package/test/db-testutils.js +0 -31
  317. package/test/httpserver.js +0 -67
  318. package/test/secret.js +0 -25
  319. package/test/secrets-manager.js +0 -59
  320. package/test/testutils.js +0 -44
  321. package/types/index.d.ts +0 -1
  322. package/types/input-error.js +0 -7
  323. package/types/language.js +0 -10
  324. package/types/traffictype.js +0 -13
  325. package/types/validator.js +0 -14
  326. package/utils/api-model.js +0 -129
  327. package/utils/base64.js +0 -21
  328. package/utils/date-utils.js +0 -34
  329. package/utils/geojson-types.js +0 -18
  330. package/utils/geometry.js +0 -140
  331. package/utils/retry.js +0 -50
  332. package/utils/slack.js +0 -25
  333. package/utils/utils.js +0 -40
  334. package/yarn-error.log +0 -103
@@ -1,185 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createIpRestrictionPolicyDocument = exports.createDefaultPolicyDocument = exports.createRestApi = exports.setReturnCodeForMissingAuthenticationToken = exports.add401Support = exports.add404Support = exports.DigitrafficRestApi = void 0;
4
- const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- const usage_plans_1 = require("../usage-plans");
7
- const api_model_1 = require("../../../utils/api-model");
8
- const mediatypes_1 = require("../../types/mediatypes");
9
- const R = require("ramda");
10
- class DigitrafficRestApi extends aws_apigateway_1.RestApi {
11
- constructor(stack, apiId, apiName, allowFromIpAddresses, config) {
12
- const policyDocument = allowFromIpAddresses == null ? createDefaultPolicyDocument() : createIpRestrictionPolicyDocument(allowFromIpAddresses);
13
- // override default config with given extra config
14
- const apiConfig = { ...{
15
- deployOptions: {
16
- loggingLevel: aws_apigateway_1.MethodLoggingLevel.ERROR,
17
- },
18
- restApiName: apiName,
19
- endpointTypes: [aws_apigateway_1.EndpointType.REGIONAL],
20
- policy: policyDocument,
21
- }, ...config };
22
- super(stack, apiId, apiConfig);
23
- this.apiKeyIds = [];
24
- this.enableDocumentation = stack.configuration.stackFeatures?.enableDocumentation ?? true;
25
- add404Support(this, stack);
26
- }
27
- hostname() {
28
- return `${this.restApiId}.execute-api.${this.stack.region}.amazonaws.com`;
29
- }
30
- createUsagePlan(apiKeyId, apiKeyName) {
31
- const newKeyId = (0, usage_plans_1.createUsagePlan)(this, apiKeyId, apiKeyName).keyId;
32
- this.apiKeyIds.push(newKeyId);
33
- return newKeyId;
34
- }
35
- createUsagePlanV2(apiName) {
36
- const newKeyId = (0, usage_plans_1.createDefaultUsagePlan)(this, apiName).keyId;
37
- this.apiKeyIds.push(newKeyId);
38
- return newKeyId;
39
- }
40
- addJsonModel(modelName, schema) {
41
- return this.getModelWithReference(this.addModel(modelName, {
42
- contentType: mediatypes_1.MediaType.APPLICATION_JSON,
43
- modelName,
44
- schema,
45
- }));
46
- }
47
- addCSVModel(modelName) {
48
- return this.getModelWithReference(this.addModel(modelName, {
49
- contentType: mediatypes_1.MediaType.TEXT_CSV,
50
- modelName,
51
- schema: {},
52
- }));
53
- }
54
- getModelWithReference(model) {
55
- return R.assoc('modelReference', (0, api_model_1.getModelReference)(model.modelId, this.restApiId), model);
56
- }
57
- addDocumentationPart(resource, parameterName, resourceName, type, properties) {
58
- const location = {
59
- type,
60
- path: resource.path,
61
- name: type !== 'METHOD' ? parameterName : undefined,
62
- };
63
- new aws_apigateway_1.CfnDocumentationPart(this.stack, resourceName, {
64
- restApiId: resource.api.restApiId,
65
- location,
66
- properties: JSON.stringify(properties),
67
- });
68
- }
69
- documentResource(resource, ...documentationPart) {
70
- if (this.enableDocumentation) {
71
- documentationPart.forEach(dp => this.addDocumentationPart(resource, dp.parameterName, `${resource.path}.${dp.parameterName}.Documentation`, dp.type, dp.documentationProperties));
72
- }
73
- else {
74
- console.info("Skipping documentation for %s", resource.path);
75
- }
76
- }
77
- }
78
- exports.DigitrafficRestApi = DigitrafficRestApi;
79
- /**
80
- * Due to AWS API design API Gateway will always return 403 'Missing Authentication Token' for requests
81
- * with a non-existent endpoint. This function translates this response to a 404.
82
- * Requests with an invalid or missing API key are not affected (still return 403 'Forbidden').
83
- * @param restApi RestApi
84
- * @param stack Construct
85
- */
86
- function add404Support(restApi, stack) {
87
- new aws_apigateway_1.GatewayResponse(stack, `MissingAuthenticationTokenResponse-${restApi.restApiName}`, {
88
- restApi,
89
- type: aws_apigateway_1.ResponseType.MISSING_AUTHENTICATION_TOKEN,
90
- statusCode: '404',
91
- templates: {
92
- 'application/json': '{"message": "Not found"}',
93
- },
94
- });
95
- }
96
- exports.add404Support = add404Support;
97
- function add401Support(restApi, stack) {
98
- new aws_apigateway_1.GatewayResponse(stack, `AuthenticationFailedResponse-${restApi.restApiName}`, {
99
- restApi,
100
- type: aws_apigateway_1.ResponseType.UNAUTHORIZED,
101
- statusCode: "401",
102
- responseHeaders: {
103
- 'WWW-Authenticate': "'Basic'",
104
- },
105
- });
106
- }
107
- exports.add401Support = add401Support;
108
- /**
109
- * Due to AWS API design API Gateway will always return 403 'Missing Authentication Token' for requests
110
- * with a non-existent endpoint. This function converts this response to a custom one.
111
- * Requests with an invalid or missing API key are not affected (still return 403 'Forbidden').
112
- * @param returnCode
113
- * @param message
114
- * @param restApi RestApi
115
- * @param stack Construct
116
- */
117
- function setReturnCodeForMissingAuthenticationToken(returnCode, message, restApi, stack) {
118
- new aws_apigateway_1.GatewayResponse(stack, `MissingAuthenticationTokenResponse-${restApi.restApiName}`, {
119
- restApi,
120
- type: aws_apigateway_1.ResponseType.MISSING_AUTHENTICATION_TOKEN,
121
- statusCode: `${returnCode}`,
122
- templates: {
123
- 'application/json': `{"message": ${message}}`,
124
- },
125
- });
126
- }
127
- exports.setReturnCodeForMissingAuthenticationToken = setReturnCodeForMissingAuthenticationToken;
128
- function createRestApi(stack, apiId, apiName, allowFromIpAddresses) {
129
- const policyDocument = allowFromIpAddresses == null ? createDefaultPolicyDocument() : createIpRestrictionPolicyDocument(allowFromIpAddresses);
130
- const restApi = new aws_apigateway_1.RestApi(stack, apiId, {
131
- deployOptions: {
132
- loggingLevel: aws_apigateway_1.MethodLoggingLevel.ERROR,
133
- },
134
- restApiName: apiName,
135
- endpointTypes: [aws_apigateway_1.EndpointType.REGIONAL],
136
- policy: policyDocument,
137
- });
138
- add404Support(restApi, stack);
139
- return restApi;
140
- }
141
- exports.createRestApi = createRestApi;
142
- function createDefaultPolicyDocument() {
143
- return new aws_iam_1.PolicyDocument({
144
- statements: [
145
- new aws_iam_1.PolicyStatement({
146
- effect: aws_iam_1.Effect.ALLOW,
147
- actions: [
148
- "execute-api:Invoke",
149
- ],
150
- resources: [
151
- "*",
152
- ],
153
- principals: [
154
- new aws_iam_1.AnyPrincipal(),
155
- ],
156
- }),
157
- ],
158
- });
159
- }
160
- exports.createDefaultPolicyDocument = createDefaultPolicyDocument;
161
- function createIpRestrictionPolicyDocument(allowFromIpAddresses) {
162
- return new aws_iam_1.PolicyDocument({
163
- statements: [
164
- new aws_iam_1.PolicyStatement({
165
- effect: aws_iam_1.Effect.ALLOW,
166
- conditions: {
167
- "IpAddress": {
168
- "aws:SourceIp": allowFromIpAddresses,
169
- },
170
- },
171
- actions: [
172
- "execute-api:Invoke",
173
- ],
174
- resources: [
175
- "*",
176
- ],
177
- principals: [
178
- new aws_iam_1.AnyPrincipal(),
179
- ],
180
- }),
181
- ],
182
- });
183
- }
184
- exports.createIpRestrictionPolicyDocument = createIpRestrictionPolicyDocument;
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdF9hcGlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9yZXN0X2FwaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0RBT29DO0FBQ3BDLGlEQUEwRjtBQUcxRixnREFBdUU7QUFFdkUsd0RBQTJEO0FBQzNELHVEQUFpRDtBQUdqRCwyQkFBNEI7QUFFNUIsTUFBYSxrQkFBbUIsU0FBUSx3QkFBTztJQUkzQyxZQUNJLEtBQXVCLEVBQUUsS0FBYSxFQUFFLE9BQWUsRUFBRSxvQkFBMkMsRUFBRSxNQUE4QjtRQUVwSSxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFOUksa0RBQWtEO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEVBQUMsR0FBRztnQkFDbEIsYUFBYSxFQUFFO29CQUNYLFlBQVksRUFBRSxtQ0FBa0IsQ0FBQyxLQUFLO2lCQUN6QztnQkFDRCxXQUFXLEVBQUUsT0FBTztnQkFDcEIsYUFBYSxFQUFFLENBQUMsNkJBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLE1BQU0sRUFBRSxjQUFjO2FBQ3pCLEVBQUUsR0FBRyxNQUFNLEVBQUMsQ0FBQztRQUVkLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsSUFBSSxJQUFJLENBQUM7UUFFMUYsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxnQkFBaUIsSUFBSSxD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QUM7QUFDUCxDQUFDO0FBdEJELDhFQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUmVzdEFwaSxcbiAgICBNZXRob2RMb2dnaW5nTGV2ZWwsXG4gICAgR2F0ZXdheVJlc3BvbnNlLFxuICAgIFJlc3BvbnNlVHlwZSxcbiAgICBFbmRwb2ludFR5cGUsXG4gICAgUmVzdEFwaVByb3BzLCBKc29uU2NoZW1hLCBNb2RlbCwgQ2ZuRG9jdW1lbnRhdGlvblBhcnQsIFJlc291cmNlLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5pbXBvcnQge1BvbGljeURvY3VtZW50LCBQb2xpY3lTdGF0ZW1lbnQsIEVmZmVjdCwgQW55UHJpbmNpcGFsfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtEaWdpdHJhZmZpY1N0YWNrfSBmcm9tIFwiLi9zdGFja1wiO1xuaW1wb3J0IHtjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuLCBjcmVhdGVVc2FnZVBsYW59IGZyb20gXCIuLi91c2FnZS1wbGFuc1wiO1xuaW1wb3J0IHtNb2RlbFdpdGhSZWZlcmVuY2V9IGZyb20gXCIuLi8uLi90eXBlcy9tb2RlbC13aXRoLXJlZmVyZW5jZVwiO1xuaW1wb3J0IHtnZXRNb2RlbFJlZmVyZW5jZX0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2FwaS1tb2RlbFwiO1xuaW1wb3J0IHtNZWRpYVR5cGV9IGZyb20gXCIuLi8uLi90eXBlcy9tZWRpYXR5cGVzXCI7XG5pbXBvcnQge0RvY3VtZW50YXRpb25QYXJ0LCBEb2N1bWVudGF0aW9uUHJvcGVydGllc30gZnJvbSBcIi4uL2RvY3VtZW50YXRpb25cIjtcblxuaW1wb3J0IFIgPSByZXF1aXJlKCdyYW1kYScpO1xuXG5leHBvcnQgY2xhc3MgRGlnaXRyYWZmaWNSZXN0QXBpIGV4dGVuZHMgUmVzdEFwaSB7XG4gICAgcmVhZG9ubHkgYXBpS2V5SWRzOiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBlbmFibGVEb2N1bWVudGF0aW9uOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrLCBhcGlJZDogc3RyaW5nLCBhcGlOYW1lOiBzdHJpbmcsIGFsbG93RnJvbUlwQWRkcmVzc2VzPzogc3RyaW5nW10gfCB1bmRlZmluZWQsIGNvbmZpZz86IFBhcnRpYWw8UmVzdEFwaVByb3BzPixcbiAgICApIHtcbiAgICAgICAgY29uc3QgcG9saWN5RG9jdW1lbnQgPSBhbGxvd0Zyb21JcEFkZHJlc3NlcyA9PSBudWxsID8gY3JlYXRlRGVmYXVsdFBvbGljeURvY3VtZW50KCkgOiBjcmVhdGVJcFJlc3RyaWN0aW9uUG9saWN5RG9jdW1lbnQoYWxsb3dGcm9tSXBBZGRyZXNzZXMpO1xuXG4gICAgICAgIC8vIG92ZXJyaWRlIGRlZmF1bHQgY29uZmlnIHdpdGggZ2l2ZW4gZXh0cmEgY29uZmlnXG4gICAgICAgIGNvbnN0IGFwaUNvbmZpZyA9IHsuLi57XG4gICAgICAgICAgICBkZXBsb3lPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgbG9nZ2luZ0xldmVsOiBNZXRob2RMb2dnaW5nTGV2ZWwuRVJST1IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzdEFwaU5hbWU6IGFwaU5hbWUsXG4gICAgICAgICAgICBlbmRwb2ludFR5cGVzOiBbRW5kcG9pbnRUeXBlLlJFR0lPTkFMXSxcbiAgICAgICAgICAgIHBvbGljeTogcG9saWN5RG9jdW1lbnQsXG4gICAgICAgIH0sIC4uLmNvbmZpZ307XG5cbiAgICAgICAgc3VwZXIoc3RhY2ssIGFwaUlkLCBhcGlDb25maWcpO1xuXG4gICAgICAgIHRoaXMuYXBpS2V5SWRzID0gW107XG4gICAgICAgIHRoaXMuZW5hYmxlRG9jdW1lbnRhdGlvbiA9IHN0YWNrLmNvbmZpZ3VyYXRpb24uc3RhY2tGZWF0dXJlcz8uZW5hYmxlRG9jdW1lbnRhdGlvbiA/PyB0cnVlO1xuXG4gICAgICAgIGFkZDQwNFN1cHBvcnQodGhpcywgc3RhY2spO1xuICAgIH1cblxuICAgIGhvc3RuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnJlc3RBcGlJZH0uZXhlY3V0ZS1hcGkuJHsodGhpcy5zdGFjayBhcyBEaWdpdHJhZmZpY1N0YWNrKS5yZWdpb259LmFtYXpvbmF3cy5jb21gO1xuICAgIH1cblxuICAgIGNyZWF0ZVVzYWdlUGxhbihhcGlLZXlJZDogc3RyaW5nLCBhcGlLZXlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBuZXdLZXlJZCA9IGNyZWF0ZVVzYWdlUGxhbih0aGlzLCBhcGlLZXlJZCwgYXBpS2V5TmFtZSkua2V5SWQ7XG5cbiAgICAgICAgdGhpcy5hcGlLZXlJZHMucHVzaChuZXdLZXlJZCk7XG5cbiAgICAgICAgcmV0dXJuIG5ld0tleUlkO1xuICAgIH1cblxuICAgIGNyZWF0ZVVzYWdlUGxhblYyKGFwaU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5ld0tleUlkID0gY3JlYXRlRGVmYXVsdFVzYWdlUGxhbih0aGlzLCBhcGlOYW1lKS5rZXlJZDtcblxuICAgICAgICB0aGlzLmFwaUtleUlkcy5wdXNoKG5ld0tleUlkKTtcblxuICAgICAgICByZXR1cm4gbmV3S2V5SWQ7XG4gICAgfVxuXG4gICAgYWRkSnNvbk1vZGVsKG1vZGVsTmFtZTogc3RyaW5nLCBzY2hlbWE6IEpzb25TY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kZWxXaXRoUmVmZXJlbmNlKHRoaXMuYWRkTW9kZWwobW9kZWxOYW1lLCB7XG4gICAgICAgICAgICBjb250ZW50VHlwZTogTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04sXG4gICAgICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBhZGRDU1ZNb2RlbChtb2RlbE5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2RlbFdpdGhSZWZlcmVuY2UodGhpcy5hZGRNb2RlbChtb2RlbE5hbWUsIHtcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBNZWRpYVR5cGUuVEVYVF9DU1YsXG4gICAgICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgICAgICBzY2hlbWE6IHt9LFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb2RlbFdpdGhSZWZlcmVuY2UobW9kZWw6IE1vZGVsKTogTW9kZWxXaXRoUmVmZXJlbmNlIHtcbiAgICAgICAgcmV0dXJuIFIuYXNzb2MoJ21vZGVsUmVmZXJlbmNlJywgZ2V0TW9kZWxSZWZlcmVuY2UobW9kZWwubW9kZWxJZCwgdGhpcy5yZXN0QXBpSWQpLCBtb2RlbCkgYXMgTW9kZWxXaXRoUmVmZXJlbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRG9jdW1lbnRhdGlvblBhcnQoXG4gICAgICAgIHJlc291cmNlOiBSZXNvdXJjZSwgcGFyYW1ldGVyTmFtZTogc3RyaW5nLCByZXNvdXJjZU5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nLCBwcm9wZXJ0aWVzOiBEb2N1bWVudGF0aW9uUHJvcGVydGllcyxcbiAgICApIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb246IENmbkRvY3VtZW50YXRpb25QYXJ0LkxvY2F0aW9uUHJvcGVydHkgPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcGF0aDogcmVzb3VyY2UucGF0aCxcbiAgICAgICAgICAgIG5hbWU6IHR5cGUgIT09ICdNRVRIT0QnID8gcGFyYW1ldGVyTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcblxuICAgICAgICBuZXcgQ2ZuRG9jdW1lbnRhdGlvblBhcnQodGhpcy5zdGFjaywgcmVzb3VyY2VOYW1lLCB7XG4gICAgICAgICAgICByZXN0QXBpSWQ6IHJlc291cmNlLmFwaS5yZXN0QXBpSWQsXG4gICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IEpTT04uc3RyaW5naWZ5KHByb3BlcnRpZXMpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkb2N1bWVudFJlc291cmNlKHJlc291cmNlOiBSZXNvdXJjZSwgLi4uZG9jdW1lbnRhdGlvblBhcnQ6IERvY3VtZW50YXRpb25QYXJ0W10pIHtcbiAgICAgICAgaWYodGhpcy5lbmFibGVEb2N1bWVudGF0aW9uKSB7XG4gICAgICAgICAgICBkb2N1bWVudGF0aW9uUGFydC5mb3JFYWNoKGRwID0+IHRoaXMuYWRkRG9jdW1lbnRhdGlvblBhcnQoXG4gICAgICAgICAgICAgICAgcmVzb3VyY2UsIGRwLnBhcmFtZXRlck5hbWUsIGAke3Jlc291cmNlLnBhdGh9LiR7ZHAucGFyYW1ldGVyTmFtZX0uRG9jdW1lbnRhdGlvbmAsIGRwLnR5cGUsIGRwLmRvY3VtZW50YXRpb25Qcm9wZXJ0aWVzLFxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oXCJTa2lwcGluZyBkb2N1bWVudGF0aW9uIGZvciAlc1wiLCByZXNvdXJjZS5wYXRoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBEdWUgdG8gQVdTIEFQSSBkZXNpZ24gQVBJIEdhdGV3YXkgd2lsbCBhbHdheXMgcmV0dXJuIDQwMyAnTWlzc2luZyBBdXRoZW50aWNhdGlvbiBUb2tlbicgZm9yIHJlcXVlc3RzXG4gKiB3aXRoIGEgbm9uLWV4aXN0ZW50IGVuZHBvaW50LiBUaGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgdGhpcyByZXNwb25zZSB0byBhIDQwNC5cbiAqIFJlcXVlc3RzIHdpdGggYW4gaW52YWxpZCBvciBtaXNzaW5nIEFQSSBrZXkgYXJlIG5vdCBhZmZlY3RlZCAoc3RpbGwgcmV0dXJuIDQwMyAnRm9yYmlkZGVuJykuXG4gKiBAcGFyYW0gcmVzdEFwaSBSZXN0QXBpXG4gKiBAcGFyYW0gc3RhY2sgQ29uc3RydWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGQ0MDRTdXBwb3J0KHJlc3RBcGk6IFJlc3RBcGksIHN0YWNrOiBDb25zdHJ1Y3QpIHtcbiAgICBuZXcgR2F0ZXdheVJlc3BvbnNlKHN0YWNrLCBgTWlzc2luZ0F1dGhlbnRpY2F0aW9uVG9rZW5SZXNwb25zZS0ke3Jlc3RBcGkucmVzdEFwaU5hbWV9YCwge1xuICAgICAgICByZXN0QXBpLFxuICAgICAgICB0eXBlOiBSZXNwb25zZVR5cGUuTUlTU0lOR19BVVRIRU5USUNBVElPTl9UT0tFTixcbiAgICAgICAgc3RhdHVzQ29kZTogJzQwNCcsXG4gICAgICAgIHRlbXBsYXRlczoge1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAne1wibWVzc2FnZVwiOiBcIk5vdCBmb3VuZFwifScsXG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGQ0MDFTdXBwb3J0KHJlc3RBcGk6IFJlc3RBcGksIHN0YWNrOiBDb25zdHJ1Y3QpIHtcbiAgICBuZXcgR2F0ZXdheVJlc3BvbnNlKHN0YWNrLCBgQXV0aGVudGljYXRpb25GYWlsZWRSZXNwb25zZS0ke3Jlc3RBcGkucmVzdEFwaU5hbWV9YCwge1xuICAgICAgICByZXN0QXBpLFxuICAgICAgICB0eXBlOiBSZXNwb25zZVR5cGUuVU5BVVRIT1JJWkVELFxuICAgICAgICBzdGF0dXNDb2RlOiBcIjQwMVwiLFxuICAgICAgICByZXNwb25zZUhlYWRlcnM6IHtcbiAgICAgICAgICAgICdXV1ctQXV0aGVudGljYXRlJzogXCInQmFzaWMnXCIsXG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5cbi8qKlxuICogRHVlIHRvIEFXUyBBUEkgZGVzaWduIEFQSSBHYXRld2F5IHdpbGwgYWx3YXlzIHJldHVybiA0MDMgJ01pc3NpbmcgQXV0aGVudGljYXRpb24gVG9rZW4nIGZvciByZXF1ZXN0c1xuICogd2l0aCBhIG5vbi1leGlzdGVudCBlbmRwb2ludC4gVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGlzIHJlc3BvbnNlIHRvIGEgY3VzdG9tIG9uZS5cbiAqIFJlcXVlc3RzIHdpdGggYW4gaW52YWxpZCBvciBtaXNzaW5nIEFQSSBrZXkgYXJlIG5vdCBhZmZlY3RlZCAoc3RpbGwgcmV0dXJuIDQwMyAnRm9yYmlkZGVuJykuXG4gKiBAcGFyYW0gcmV0dXJuQ29kZVxuICogQHBhcmFtIG1lc3NhZ2VcbiAqIEBwYXJhbSByZXN0QXBpIFJlc3RBcGlcbiAqIEBwYXJhbSBzdGFjayBDb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJldHVybkNvZGVGb3JNaXNzaW5nQXV0aGVudGljYXRpb25Ub2tlbihyZXR1cm5Db2RlOiBudW1iZXIsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHJlc3RBcGk6IFJlc3RBcGksXG4gICAgc3RhY2s6IENvbnN0cnVjdCkge1xuXG4gICAgbmV3IEdhdGV3YXlSZXNwb25zZShzdGFjaywgYE1pc3NpbmdBdXRoZW50aWNhdGlvblRva2VuUmVzcG9uc2UtJHtyZXN0QXBpLnJlc3RBcGlOYW1lfWAsIHtcbiAgICAgICAgcmVzdEFwaSxcbiAgICAgICAgdHlwZTogUmVzcG9uc2VUeXBlLk1JU1NJTkdfQVVUSEVOVElDQVRJT05fVE9LRU4sXG4gICAgICAgIHN0YXR1c0NvZGU6IGAke3JldHVybkNvZGV9YCxcbiAgICAgICAgdGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IGB7XCJtZXNzYWdlXCI6ICR7bWVzc2FnZX19YCxcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlc3RBcGkoc3RhY2s6IENvbnN0cnVjdCwgYXBpSWQ6IHN0cmluZywgYXBpTmFtZTogc3RyaW5nLCBhbGxvd0Zyb21JcEFkZHJlc3Nlcz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogUmVzdEFwaSB7XG4gICAgY29uc3QgcG9saWN5RG9jdW1lbnQgPSBhbGxvd0Zyb21JcEFkZHJlc3NlcyA9PSBudWxsID8gY3JlYXRlRGVmYXVsdFBvbGljeURvY3VtZW50KCkgOiBjcmVhdGVJcFJlc3RyaWN0aW9uUG9saWN5RG9jdW1lbnQoYWxsb3dGcm9tSXBBZGRyZXNzZXMpO1xuICAgIGNvbnN0IHJlc3RBcGkgPSBuZXcgUmVzdEFwaShzdGFjaywgYXBpSWQsIHtcbiAgICAgICAgZGVwbG95T3B0aW9uczoge1xuICAgICAgICAgICAgbG9nZ2luZ0xldmVsOiBNZXRob2RMb2dnaW5nTGV2ZWwuRVJST1IsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3RBcGlOYW1lOiBhcGlOYW1lLFxuICAgICAgICBlbmRwb2ludFR5cGVzOiBbRW5kcG9pbnRUeXBlLlJFR0lPTkFMXSxcbiAgICAgICAgcG9saWN5OiBwb2xpY3lEb2N1bWVudCxcbiAgICB9KTtcbiAgICBhZGQ0MDRTdXBwb3J0KHJlc3RBcGksIHN0YWNrKTtcbiAgICByZXR1cm4gcmVzdEFwaTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRQb2xpY3lEb2N1bWVudCgpIHtcbiAgICByZXR1cm4gbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICBcImV4ZWN1dGUtYXBpOkludm9rZVwiLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIFwiKlwiLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICAgICAgICAgICAgICBuZXcgQW55UHJpbmNpcGFsKCksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgIH0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJcFJlc3RyaWN0aW9uUG9saWN5RG9jdW1lbnQoYWxsb3dGcm9tSXBBZGRyZXNzZXM6IHN0cmluZ1tdKTogUG9saWN5RG9jdW1lbnQge1xuICAgIHJldHVybiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiSXBBZGRyZXNzXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXdzOlNvdXJjZUlwXCI6IGFsbG93RnJvbUlwQWRkcmVzc2VzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICBcImV4ZWN1dGUtYXBpOkludm9rZVwiLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICAgIFwiKlwiLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICAgICAgICAgICAgICBuZXcgQW55UHJpbmNpcGFsKCksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgIH0pO1xufVxuIl19
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StackCheckingAspect = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
6
- const aws_s3_1 = require("aws-cdk-lib/aws-s3");
7
- const stack_1 = require("./stack");
8
- const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
9
- const change_case_1 = require("change-case");
10
- const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
11
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
12
- const MAX_CONCURRENCY_LIMIT = 100;
13
- const NODE_RUNTIME = aws_lambda_1.Runtime.NODEJS_14_X.name;
14
- var ResourceType;
15
- (function (ResourceType) {
16
- ResourceType["stackName"] = "STACK_NAME";
17
- ResourceType["reservedConcurrentConcurrency"] = "RESERVED_CONCURRENT_CONCURRENCY";
18
- ResourceType["functionTimeout"] = "FUNCTION_TIMEOUT";
19
- ResourceType["functionMemorySize"] = "FUNCTION_MEMORY_SIZE";
20
- ResourceType["functionRuntime"] = "FUNCTION_RUNTIME";
21
- ResourceType["functionName"] = "FUNCTION_NAME";
22
- ResourceType["tagSolution"] = "TAG_SOLUTION";
23
- ResourceType["bucketPublicity"] = "BUCKET_PUBLICITY";
24
- ResourceType["resourcePath"] = "RESOURCE_PATH";
25
- ResourceType["queueEncryption"] = "QUEUE_ENCRYPTION";
26
- ResourceType["logGroupRetention"] = "LOG_GROUP_RETENTION";
27
- })(ResourceType || (ResourceType = {}));
28
- class StackCheckingAspect {
29
- constructor(stackShortName, whitelistedResources) {
30
- this.stackShortName = stackShortName;
31
- this.whitelistedResources = whitelistedResources;
32
- }
33
- static create(stack) {
34
- return new StackCheckingAspect(stack.configuration.shortName, stack.configuration.whitelistedResources);
35
- }
36
- visit(node) {
37
- //console.info("visiting class " + node.constructor.name);
38
- this.checkStack(node);
39
- this.checkFunction(node);
40
- this.checkTags(node);
41
- this.checkBucket(node);
42
- this.checkResourceCasing(node);
43
- this.checkQueueEncryption(node);
44
- this.checkLogGroupRetention(node);
45
- }
46
- isWhitelisted(key) {
47
- return this.whitelistedResources?.some((wl) => {
48
- return key.matchAll(new RegExp(wl, "g"));
49
- });
50
- }
51
- addAnnotation(node, key, message, isError = true) {
52
- const resourceKey = `${node.node.path}/${key}`;
53
- const isWhiteListed = this.isWhitelisted(resourceKey);
54
- const annotationMessage = `${resourceKey}:${message}`;
55
- // error && whitelisted -> warning
56
- // warning && whitelisted -> nothing
57
- if (isError && !isWhiteListed) {
58
- aws_cdk_lib_1.Annotations.of(node).addError(annotationMessage);
59
- }
60
- else if ((!isError && !isWhiteListed) || (isError && isWhiteListed)) {
61
- aws_cdk_lib_1.Annotations.of(node).addWarning(annotationMessage);
62
- }
63
- }
64
- checkStack(node) {
65
- if (node instanceof stack_1.DigitrafficStack) {
66
- if ((node.stackName.includes("Test") ||
67
- node.stackName.includes("Tst")) &&
68
- node.configuration.production) {
69
- this.addAnnotation(node, ResourceType.stackName, "Production is set for Test-stack");
70
- }
71
- if ((node.stackName.includes("Prod") ||
72
- node.stackName.includes("Prd")) &&
73
- !node.configuration.production) {
74
- this.addAnnotation(node, ResourceType.stackName, "Production is not set for Production-stack");
75
- }
76
- }
77
- }
78
- checkFunction(node) {
79
- if (node instanceof aws_lambda_1.CfnFunction) {
80
- if (!node.reservedConcurrentExecutions) {
81
- this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function must have reservedConcurrentConcurrency");
82
- }
83
- else if (node.reservedConcurrentExecutions > MAX_CONCURRENCY_LIMIT) {
84
- this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function reservedConcurrentConcurrency too high!");
85
- }
86
- if (!node.timeout) {
87
- this.addAnnotation(node, ResourceType.functionTimeout, "Function must have timeout");
88
- }
89
- if (!node.memorySize) {
90
- this.addAnnotation(node, ResourceType.functionMemorySize, "Function must have memorySize");
91
- }
92
- if (node.runtime !== NODE_RUNTIME) {
93
- this.addAnnotation(node, ResourceType.functionRuntime, `Function has wrong runtime ${node.runtime}`);
94
- }
95
- if (this.stackShortName &&
96
- node.functionName &&
97
- !node.functionName.startsWith(this.stackShortName)) {
98
- this.addAnnotation(node, ResourceType.functionName, `Function name does not begin with ${this.stackShortName}`);
99
- }
100
- }
101
- }
102
- checkTags(node) {
103
- if (node instanceof aws_cdk_lib_1.Stack) {
104
- if (!node.tags.tagValues()[stack_1.SOLUTION_KEY]) {
105
- this.addAnnotation(node, ResourceType.tagSolution, "Solution tag is missing");
106
- }
107
- }
108
- }
109
- checkBucket(node) {
110
- if (node instanceof aws_s3_1.CfnBucket) {
111
- const c = node.publicAccessBlockConfiguration;
112
- if (c) {
113
- if (!c.blockPublicAcls ||
114
- !c.blockPublicPolicy ||
115
- !c.ignorePublicAcls ||
116
- !c.restrictPublicBuckets) {
117
- this.addAnnotation(node, ResourceType.bucketPublicity, "Check bucket publicity");
118
- }
119
- }
120
- }
121
- }
122
- static isValidPath(path) {
123
- // if path includes . or { check only the trailing part of path
124
- if (path.includes(".")) {
125
- return this.isValidPath(path.split(".")[0]);
126
- }
127
- if (path.includes("{")) {
128
- return this.isValidPath(path.split("{")[0]);
129
- }
130
- return (0, change_case_1.paramCase)(path) === path;
131
- }
132
- static isValidQueryString(name) {
133
- return (0, change_case_1.snakeCase)(name) === name;
134
- }
135
- checkResourceCasing(node) {
136
- if (node instanceof aws_apigateway_1.CfnResource) {
137
- if (!StackCheckingAspect.isValidPath(node.pathPart)) {
138
- this.addAnnotation(node, ResourceType.resourcePath, "Path part should be in kebab-case");
139
- }
140
- }
141
- else if (node instanceof aws_apigateway_1.CfnMethod) {
142
- const integration = node.integration;
143
- if (integration && integration.requestParameters) {
144
- Object.keys(integration.requestParameters).forEach((key) => {
145
- const split = key.split(".");
146
- const type = split[2];
147
- const name = split[3];
148
- if (type === "querystring" &&
149
- !StackCheckingAspect.isValidQueryString(name)) {
150
- this.addAnnotation(node, name, "Querystring should be in snake_case");
151
- }
152
- });
153
- }
154
- }
155
- }
156
- checkQueueEncryption(node) {
157
- if (node instanceof aws_sqs_1.CfnQueue) {
158
- if (!node.kmsMasterKeyId) {
159
- this.addAnnotation(node, ResourceType.queueEncryption, "Queue must have encryption enabled");
160
- }
161
- }
162
- }
163
- checkLogGroupRetention(node) {
164
- if (node instanceof aws_logs_1.LogRetention) {
165
- const child = node.node.defaultChild;
166
- const retention = child._cfnProperties.RetentionInDays;
167
- if (!retention) {
168
- this.addAnnotation(node, ResourceType.logGroupRetention, "Log group must define log group retention");
169
- }
170
- }
171
- }
172
- }
173
- exports.StackCheckingAspect = StackCheckingAspect;
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2hlY2tpbmctYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdGFjay1jaGVja2luZy1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTBEO0FBQzFELHVEQUE4RDtBQUM5RCwrQ0FBK0M7QUFDL0MsbUNBQXlEO0FBRXpELCtEQUFvRTtBQUNwRSw2Q0FBbUQ7QUFDbkQsaURBQStDO0FBQy9DLG1EQUFvRDtBQUdwRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFFOUMsSUFBSyxZQVlKO0FBWkQsV0FBSyxZQUFZO0lBQ2Isd0NBQXdCLENBQUE7SUFDeEIsaUZBQWlFLENBQUE7SUFDakUsb0RBQW9DLENBQUE7SUFDcEMsMkRBQTJDLENBQUE7SUFDM0Msb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsNENBQTRCLENBQUE7SUFDNUIsb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsb0RBQW9DLENBQUE7SUFDcEMseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQVpJLFlBQVksS0FBWixZQUFZLFFBWWhCO0FBRUQsTUFBYSxtQkFBbUI7SUFJNUIsWUFBWSxjQUF1QixFQUFFLG9CQUErQjtRQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUI7UUFDakMsT0FBTyxJQUFJLG1CQUFtQixDQUMxQixLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFDN0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMs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QkFBWSxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFHdkIsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBRXZELElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FDZCxJQUFJLEVBQ0osWUFBWSxDQUFDLGlCQUFpQixFQUM5QiwyQ0FBMkMsQ0FDOUMsQ0FBQzthQUNMO1NBQ0o7SUFDTCxDQUFDO0NBQ0o7QUExUEQsa0RBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIElBc3BlY3QsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDZm5GdW5jdGlvbiwgUnVudGltZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDZm5CdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBEaWdpdHJhZmZpY1N0YWNrLCBTT0xVVElPTl9LRVkgfSBmcm9tIFwiLi9zdGFja1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5NZXRob2QsIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBwYXJhbUNhc2UsIHNuYWtlQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgQ2ZuUXVldWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHsgTG9nUmV0ZW50aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgSW50ZWdyYXRpb25Qcm9wZXJ0eSA9IENmbk1ldGhvZC5JbnRlZ3JhdGlvblByb3BlcnR5O1xuXG5jb25zdCBNQVhfQ09OQ1VSUkVOQ1lfTElNSVQgPSAxMDA7XG5jb25zdCBOT0RFX1JVTlRJTUUgPSBSdW50aW1lLk5PREVKU18xNF9YLm5hbWU7XG5cbmVudW0gUmVzb3VyY2VUeXBlIHtcbiAgICBzdGFja05hbWUgPSBcIlNUQUNLX05BTUVcIixcbiAgICByZXNlcnZlZENvbmN1cnJlbnRDb25jdXJyZW5jeSA9IFwiUkVTRVJWRURfQ09OQ1VSUkVOVF9DT05DVVJSRU5DWVwiLFxuICAgIGZ1bmN0aW9uVGltZW91dCA9IFwiRlVOQ1RJT05fVElNRU9VVFwiLFxuICAgIGZ1bmN0aW9uTWVtb3J5U2l6ZSA9IFwiRlVOQ1RJT05fTUVNT1JZX1NJWkVcIixcbiAgICBmdW5jdGlvblJ1bnRpbWUgPSBcIkZVTkNUSU9OX1JVTlRJTUVcIixcbiAgICBmdW5jdGlvbk5hbWUgPSBcIkZVTkNUSU9OX05BTUVcIixcbiAgICB0YWdTb2x1dGlvbiA9IFwiVEFHX1NPTFVUSU9OXCIsXG4gICAgYnVja2V0UHVibGljaXR5ID0gXCJCVUNLRVRfUFVCTElDSVRZXCIsXG4gICAgcmVzb3VyY2VQYXRoID0gXCJSRVNPVVJDRV9QQVRIXCIsXG4gICAgcXVldWVFbmNyeXB0aW9uID0gXCJRVUVVRV9FTkNSWVBUSU9OXCIsXG4gICAgbG9nR3JvdXBSZXRlbnRpb24gPSBcIkxPR19HUk9VUF9SRVRFTlRJT05cIixcbn1cblxuZXhwb3J0IGNsYXNzIFN0YWNrQ2hlY2tpbmdBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrU2hvcnROYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2hpdGVsaXN0ZWRSZXNvdXJjZXM/OiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKHN0YWNrU2hvcnROYW1lPzogc3RyaW5nLCB3aGl0ZWxpc3RlZFJlc291cmNlcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc3RhY2tTaG9ydE5hbWUgPSBzdGFja1Nob3J0TmFtZTtcbiAgICAgICAgdGhpcy53aGl0ZWxpc3RlZFJlc291cmNlcyA9IHdoaXRlbGlzdGVkUmVzb3VyY2VzO1xuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGUoc3RhY2s6IERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NoZWNraW5nQXNwZWN0KFxuICAgICAgICAgICAgc3RhY2suY29uZmlndXJhdGlvbi5zaG9ydE5hbWUsXG4gICAgICAgICAgICBzdGFjay5jb25maWd1cmF0aW9uLndoaXRlbGlzdGVkUmVzb3VyY2VzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAgICAgLy9jb25zb2xlLmluZm8oXCJ2aXNpdGluZyBjbGFzcyBcIiArIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgICAgdGhpcy5jaGVja1N0YWNrKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrRnVuY3Rpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tUYWdzKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrQnVja2V0KG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VDYXNpbmcobm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tRdWV1ZUVuY3J5cHRpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tMb2dHcm91cFJldGVudGlvbihub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzV2hpdGVsaXN0ZWQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2hpdGVsaXN0ZWRSZXNvdXJjZXM/LnNvbWUoKHdsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5Lm1hdGNoQWxsKG5ldyBSZWdFeHAod2wsIFwiZ1wiKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQW5ub3RhdGlvbihcbiAgICAgICAgbm9kZTogSUNvbnN0cnVjdCxcbiAgICAgICAga2V5OiBSZXNvdXJjZVR5cGUgfCBzdHJpbmcsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgaXNFcnJvciA9IHRydWVcbiAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VLZXkgPSBgJHtub2RlLm5vZGUucGF0aH0vJHtrZXl9YDtcbiAgICAgICAgY29uc3QgaXNXaGl0ZUxpc3RlZCA9IHRoaXMuaXNXaGl0ZWxpc3RlZChyZXNvdXJjZUtleSk7XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25NZXNzYWdlID0gYCR7cmVzb3VyY2VLZXl9OiR7bWVzc2FnZX1gO1xuXG4gICAgICAgIC8vIGVycm9yICYmIHdoaXRlbGlzdGVkIC0+IHdhcm5pbmdcbiAgICAgICAgLy8gd2FybmluZyAmJiB3aGl0ZWxpc3RlZCAtPiBub3RoaW5nXG4gICAgICAgIGlmIChpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB7XG4gICAgICAgICAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRFcnJvcihhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKCFpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB8fCAoaXNFcnJvciAmJiBpc1doaXRlTGlzdGVkKSkge1xuICAgICAgICAgICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkV2FybmluZyhhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrU3RhY2sobm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJUZXN0XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiVHN0XCIpKSAmJlxuICAgICAgICAgICAgICAgIG5vZGUuY29uZmlndXJhdGlvbi5wcm9kdWN0aW9uXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5zdGFja05hbWUsXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvZHVjdGlvbiBpcyBzZXQgZm9yIFRlc3Qtc3RhY2tcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJQcm9kXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiUHJkXCIpKSAmJlxuICAgICAgICAgICAgICAgICFub2RlLmNvbmZpZ3VyYXRpb24ucHJvZHVjdGlvblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuc3RhY2tOYW1lLFxuICAgICAgICAgICAgICAgICAgICBcIlByb2R1Y3Rpb24gaXMgbm90IHNldCBmb3IgUHJvZHVjdGlvbi1zdGFja1wiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGdW5jdGlvbihub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucmVzZXJ2ZWRDb25jdXJyZW50Q29uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBub2RlLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMgPiBNQVhfQ09OQ1VSUkVOQ1lfTElNSVRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5IHRvbyBoaWdoIVwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFub2RlLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblRpbWVvdXQsXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHRpbWVvdXRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbm9kZS5tZW1vcnlTaXplKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25NZW1vcnlTaXplLFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIG11c3QgaGF2ZSBtZW1vcnlTaXplXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5ydW50aW1lICE9PSBOT0RFX1JVTlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblJ1bnRpbWUsXG4gICAgICAgICAgICAgICAgICAgIGBGdW5jdGlvbiBoYXMgd3JvbmcgcnVudGltZSAke25vZGUucnVudGltZSF9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgbm9kZS5mdW5jdGlvbk5hbWUgJiZcbiAgICAgICAgICAgICAgICAhbm9kZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCh0aGlzLnN0YWNrU2hvcnROYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBgRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICR7dGhpcy5zdGFja1Nob3J0TmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUYWdzKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTdGFjaykge1xuICAgICAgICAgICAgaWYgKCFub2RlLnRhZ3MudGFnVmFsdWVzKClbU09MVVRJT05fS0VZXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnRhZ1NvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlNvbHV0aW9uIHRhZyBpcyBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0J1Y2tldChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuQnVja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBjID1cbiAgICAgICAgICAgICAgICBub2RlLnB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiBhcyBDZm5CdWNrZXQuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhYy5ibG9ja1B1YmxpY0FjbHMgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuYmxvY2tQdWJsaWNQb2xpY3kgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuaWdub3JlUHVibGljQWNscyB8fFxuICAgICAgICAgICAgICAgICAgICAhYy5yZXN0cmljdFB1YmxpY0J1Y2tldHNcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5idWNrZXRQdWJsaWNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNoZWNrIGJ1Y2tldCBwdWJsaWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzVmFsaWRQYXRoKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiBwYXRoIGluY2x1ZGVzIC4gb3IgeyBjaGVjayBvbmx5IHRoZSB0cmFpbGluZyBwYXJ0IG9mIHBhdGhcbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkUGF0aChwYXRoLnNwbGl0KFwiLlwiKVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhcIntcIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRQYXRoKHBhdGguc3BsaXQoXCJ7XCIpWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbUNhc2UocGF0aCkgPT09IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFF1ZXJ5U3RyaW5nKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc25ha2VDYXNlKG5hbWUpID09PSBuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZXNvdXJjZUNhc2luZyhub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmICghU3RhY2tDaGVja2luZ0FzcGVjdC5pc1ZhbGlkUGF0aChub2RlLnBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc291cmNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgXCJQYXRoIHBhcnQgc2hvdWxkIGJlIGluIGtlYmFiLWNhc2VcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENmbk1ldGhvZCkge1xuICAgICAgICAgICAgY29uc3QgaW50ZWdyYXRpb24gPSBub2RlLmludGVncmF0aW9uIGFzIEludGVncmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChpbnRlZ3JhdGlvbiAmJiBpbnRlZ3JhdGlvbi5yZXF1ZXN0UGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGludGVncmF0aW9uLnJlcXVlc3RQYXJhbWV0ZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BsaXQgPSBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gc3BsaXRbMl07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzcGxpdFszXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcInF1ZXJ5c3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFTdGFja0NoZWNraW5nQXNwZWN0LmlzVmFsaWRRdWVyeVN0cmluZyhuYW1lKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJRdWVyeXN0cmluZyBzaG91bGQgYmUgaW4gc25ha2VfY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUXVldWVFbmNyeXB0aW9uKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5RdWV1ZSkge1xuICAgICAgICAgICAgaWYgKCFub2RlLmttc01hc3RlcktleUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucXVldWVFbmNyeXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlF1ZXVlIG11c3QgaGF2ZSBlbmNyeXB0aW9uIGVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTG9nR3JvdXBSZXRlbnRpb24obm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIExvZ1JldGVudGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIHVua25vd24gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgICA+O1xuICAgICAgICAgICAgY29uc3QgcmV0ZW50aW9uID0gY2hpbGQuX2NmblByb3BlcnRpZXMuUmV0ZW50aW9uSW5EYXlzO1xuXG4gICAgICAgICAgICBpZiAoIXJldGVudGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLmxvZ0dyb3VwUmV0ZW50aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIkxvZyBncm91cCBtdXN0IGRlZmluZSBsb2cgZ3JvdXAgcmV0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficStack = exports.SSM_KEY_ALARM_TOPIC = exports.SSM_KEY_WARNING_TOPIC = exports.SOLUTION_KEY = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
6
- const aws_sns_1 = require("aws-cdk-lib/aws-sns");
7
- const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
8
- const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
9
- const stack_checking_aspect_1 = require("./stack-checking-aspect");
10
- const SSM_ROOT = "/digitraffic";
11
- exports.SOLUTION_KEY = "Solution";
12
- const MONITORING_ROOT = "/monitoring";
13
- exports.SSM_KEY_WARNING_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/warning-topic`;
14
- exports.SSM_KEY_ALARM_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/alarm-topic`;
15
- class DigitrafficStack extends aws_cdk_lib_1.Stack {
16
- constructor(scope, id, configuration) {
17
- super(scope, id, configuration.stackProps);
18
- this.configuration = configuration;
19
- if (configuration.secretId) {
20
- this.secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, "Secret", configuration.secretId);
21
- }
22
- // VPC reference construction requires vpcId and availability zones
23
- // private subnets are used in Lambda configuration
24
- if (configuration.vpcId) {
25
- this.vpc = aws_ec2_1.Vpc.fromVpcAttributes(this, "vpc", {
26
- vpcId: configuration.vpcId,
27
- privateSubnetIds: configuration.privateSubnetIds,
28
- availabilityZones: configuration.availabilityZones,
29
- });
30
- }
31
- // security group that allows Lambda database access
32
- if (configuration.lambdaDbSgId) {
33
- this.lambdaDbSg = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "LambdaDbSG", configuration.lambdaDbSgId);
34
- }
35
- this.alarmTopic = aws_sns_1.Topic.fromTopicArn(this, "AlarmTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "AlarmTopicParam", exports.SSM_KEY_ALARM_TOPIC).stringValue);
36
- this.warningTopic = aws_sns_1.Topic.fromTopicArn(this, "WarningTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "WarningTopicParam", exports.SSM_KEY_WARNING_TOPIC).stringValue);
37
- this.addAspects();
38
- }
39
- addAspects() {
40
- aws_cdk_lib_1.Aspects.of(this).add(stack_checking_aspect_1.StackCheckingAspect.create(this));
41
- }
42
- createLambdaEnvironment() {
43
- return this.createDefaultLambdaEnvironment(this.configuration.shortName);
44
- }
45
- createDefaultLambdaEnvironment(dbApplication) {
46
- return this.configuration.secretId
47
- ? {
48
- SECRET_ID: this.configuration.secretId,
49
- DB_APPLICATION: dbApplication,
50
- }
51
- : {
52
- DB_APPLICATION: dbApplication,
53
- };
54
- }
55
- grantSecret(...lambdas) {
56
- lambdas.forEach((l) => this.secret.grantRead(l));
57
- }
58
- }
59
- exports.DigitrafficStack = DigitrafficStack;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3N0YWNrL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCxpREFBK0Q7QUFFL0QsaURBQW9EO0FBQ3BELGlEQUFzRDtBQUN0RCx1RUFBaUU7QUFHakUsbUVBQThEO0FBSzlELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXpCLFFBQUEscUJBQXFCLEdBQUcsR0FBRyxRQUFRLEdBQUcsZUFBZSxnQkFBZ0IsQ0FBQztBQUN0RSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsUUFBUSxHQUFHLGVBQWUsY0FBYyxDQUFDO0FBMkIvRSxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBU3ZDLFlBQ0ksS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGFBQWlDO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRywyQkFBTSxDQUFDLGdCQUFnQixDQUNqQyxJQUFJLEVBQ0osUUFBUSxFQUNSLGFBQWEsQ0FBQyxRQUFRLENBQ3pCLENBQUM7U0FDTDtRQUVELG1FQUFtRTtRQUNuRSxtREFBbUQ7UUFDbkQsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztnQkFDMUIsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtnQkFDaEQsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFrQjthQUN0RCxDQUFDLENBQUM7U0FDTjtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBYSxDQUFDLG1CQUFtQixDQUMvQyxJQUFJLEVBQ0osWUFBWSxFQUNaLGFBQWEsQ0FBQyxZQUFZLENBQzdCLENBQUM7U0FDTDtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDaEMsSUFBSSxFQUNKLFlBQVksRUFDWix5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLDJCQUFtQixDQUN0QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDbEMsSUFBSSxFQUNKLGNBQWMsRUFDZCx5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLDZCQUFxQixDQUN4QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLHFCQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQ0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVUsQ0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtZQUM5QixDQUFDLENBQUM7Z0JBQ0ksU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtnQkFDdEMsY0FBYyxFQUFFLGFBQWE7YUFDaEM7WUFDSCxDQUFDLENBQUM7Z0JBQ0ksY0FBYyxFQUFFLGFBQWE7YUFDaEMsQ0FBQztJQUNaLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxPQUFzQjtRQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQTNGRCw0Q0EyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3BlY3RzLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVZwYywgU2VjdXJpdHlHcm91cCwgVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQgeyBJVG9waWMsIFRvcGljIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiBhcyBBV1NGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5cbmltcG9ydCB7IFN0YWNrQ2hlY2tpbmdBc3BlY3QgfSBmcm9tIFwiLi9zdGFjay1jaGVja2luZy1hc3BlY3RcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUcmFmZmljVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlcy90cmFmZmljdHlwZVwiO1xuaW1wb3J0IHsgREJMYW1iZGFFbnZpcm9ubWVudCB9IGZyb20gXCIuL2xhbWJkYS1jb25maWdzXCI7XG5cbmNvbnN0IFNTTV9ST09UID0gXCIvZGlnaXRyYWZmaWNcIjtcbmV4cG9ydCBjb25zdCBTT0xVVElPTl9LRVkgPSBcIlNvbHV0aW9uXCI7XG5jb25zdCBNT05JVE9SSU5HX1JPT1QgPSBcIi9tb25pdG9yaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBTU01fS0VZX1dBUk5JTkdfVE9QSUMgPSBgJHtTU01fUk9PVH0ke01PTklUT1JJTkdfUk9PVH0vd2FybmluZy10b3BpY2A7XG5leHBvcnQgY29uc3QgU1NNX0tFWV9BTEFSTV9UT1BJQyA9IGAke1NTTV9ST09UfSR7TU9OSVRPUklOR19ST09UfS9hbGFybS10b3BpY2A7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWd1cmF0aW9uIHtcbiAgICByZWFkb25seSBzaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc2VjcmV0SWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYWxhcm1Ub3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHdhcm5pbmdUb3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvZ3NEZXN0aW5hdGlvbkFybj86IHN0cmluZztcblxuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxhbWJkYURiU2dJZD86IHN0cmluZztcbiAgICByZWFkb25seSBwcml2YXRlU3VibmV0SWRzPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM/OiBzdHJpbmdbXTtcblxuICAgIHJlYWRvbmx5IHRyYWZmaWNUeXBlOiBUcmFmZmljVHlwZTtcbiAgICByZWFkb25seSBwcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHN0YWNrUHJvcHM6IFN0YWNrUHJvcHM7XG5cbiAgICByZWFkb25seSBzdGFja0ZlYXR1cmVzPzoge1xuICAgICAgICByZWFkb25seSBlbmFibGVDYW5hcmllcz86IGJvb2xlYW47XG4gICAgICAgIHJlYWRvbmx5IGVuYWJsZURvY3VtZW50YXRpb24/OiBib29sZWFuO1xuICAgIH07XG5cbiAgICAvLy8gd2hpdGVsaXN0IHJlc291cmNlcyBmb3IgU3RhY2tDaGVja2luZ0FzcGVjdFxuICAgIHJlYWRvbmx5IHdoaXRlbGlzdGVkUmVzb3VyY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgICByZWFkb25seSBsYW1iZGFEYlNnOiBJU2VjdXJpdHlHcm91cDtcbiAgICByZWFkb25seSBhbGFybVRvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogU3RhY2tDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZ3VyYXRpb24uc3RhY2tQcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZWNyZXRJZCkge1xuICAgICAgICAgICAgdGhpcy5zZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiU2VjcmV0XCIsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZQQyByZWZlcmVuY2UgY29uc3RydWN0aW9uIHJlcXVpcmVzIHZwY0lkIGFuZCBhdmFpbGFiaWxpdHkgem9uZXNcbiAgICAgICAgLy8gcHJpdmF0ZSBzdWJuZXRzIGFyZSB1c2VkIGluIExhbWJkYSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZwY0lkKSB7XG4gICAgICAgICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tVnBjQXR0cmlidXRlcyh0aGlzLCBcInZwY1wiLCB7XG4gICAgICAgICAgICAgICAgdnBjSWQ6IGNvbmZpZ3VyYXRpb24udnBjSWQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZVN1Ym5ldElkczogY29uZmlndXJhdGlvbi5wcml2YXRlU3VibmV0SWRzLFxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBjb25maWd1cmF0aW9uLmF2YWlsYWJpbGl0eVpvbmVzISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2VjdXJpdHkgZ3JvdXAgdGhhdCBhbGxvd3MgTGFtYmRhIGRhdGFiYXNlIGFjY2Vzc1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5sYW1iZGFEYlNnSWQpIHtcbiAgICAgICAgICAgIHRoaXMubGFtYmRhRGJTZyA9IFNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZChcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiTGFtYmRhRGJTR1wiLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubGFtYmRhRGJTZ0lkXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbGFybVRvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiQWxhcm1Ub3BpY1wiLFxuICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgXCJBbGFybVRvcGljUGFyYW1cIixcbiAgICAgICAgICAgICAgICBTU01fS0VZX0FMQVJNX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMud2FybmluZ1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiV2FybmluZ1RvcGljXCIsXG4gICAgICAgICAgICBTdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBcIldhcm5pbmdUb3BpY1BhcmFtXCIsXG4gICAgICAgICAgICAgICAgU1NNX0tFWV9XQVJOSU5HX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRBc3BlY3RzKCk7XG4gICAgfVxuXG4gICAgYWRkQXNwZWN0cygpIHtcbiAgICAgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQoU3RhY2tDaGVja2luZ0FzcGVjdC5jcmVhdGUodGhpcykpO1xuICAgIH1cblxuICAgIGNyZWF0ZUxhbWJkYUVudmlyb25tZW50KCk6IERCTGFtYmRhRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0TGFtYmRhRW52aXJvbm1lbnQoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2hvcnROYW1lIVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZURlZmF1bHRMYW1iZGFFbnZpcm9ubWVudChkYkFwcGxpY2F0aW9uOiBzdHJpbmcpOiBEQkxhbWJkYUVudmlyb25tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBTRUNSRVRfSUQ6IHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZCxcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIGdyYW50U2VjcmV0KC4uLmxhbWJkYXM6IEFXU0Z1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsOiBBV1NGdW5jdGlvbikgPT4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGwpKTtcbiAgICB9XG59XG4iXX0=
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficLogSubscriptions = exports.createSubscription = void 0;
4
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
5
- /**
6
- * Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
7
- * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
8
- * @param lambda The Lambda function, needed to create a dependency
9
- * @param lambdaName The Lambda name from which the Log Group name is derived
10
- * @param logDestinationArn Destination for streamed logs
11
- * @param stack CloudFormation stack
12
- */
13
- function createSubscription(lambda, lambdaName, logDestinationArn, stack) {
14
- if (logDestinationArn == undefined) {
15
- return undefined;
16
- }
17
- const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambdaName}LogsSubscription`, {
18
- logGroupName: `/aws/lambda/${lambdaName}`,
19
- filterPattern: '',
20
- destinationArn: logDestinationArn,
21
- });
22
- filter.node.addDependency(lambda);
23
- return filter;
24
- }
25
- exports.createSubscription = createSubscription;
26
- class DigitrafficLogSubscriptions {
27
- constructor(stack, ...lambdas) {
28
- if (stack.configuration.logsDestinationArn) {
29
- lambdas.forEach(lambda => {
30
- const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambda.givenName}LogsSubscription`, {
31
- logGroupName: `/aws/lambda/${lambda.givenName}`,
32
- filterPattern: '',
33
- destinationArn: stack.configuration.logsDestinationArn,
34
- });
35
- filter.node.addDependency(lambda);
36
- });
37
- }
38
- }
39
- }
40
- exports.DigitrafficLogSubscriptions = DigitrafficLogSubscriptions;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTJEO0FBTTNEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFnQixFQUFFLFVBQWtCLEVBQUUsaUJBQXFDLEVBQUUsS0FBZ0I7SUFDNUgsSUFBSSxpQkFBaUIsSUFBSSxTQUFTLEVBQUU7UUFDaEMsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdDQUFxQixDQUFDLEtBQUssRUFBRSxHQUFHLFVBQVUsa0JBQWtCLEVBQUU7UUFDN0UsWUFBWSxFQUFFLGVBQWUsVUFBVSxFQUFFO1FBQ3pDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLGNBQWMsRUFBRSxpQkFBaUI7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELGdEQWFDO0FBRUQsTUFBYSwyQkFBMkI7SUFDcEMsWUFBWSxLQUF1QixFQUFFLEdBQUcsT0FBNEI7UUFDaEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksZ0NBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsa0JBQWtCLEVBQUU7b0JBQ25GLFlBQVksRUFBRSxlQUFlLE1BQU0sQ0FBQyxTQUFTLEVBQUU7b0JBQy9DLGFBQWEsRUFBRSxFQUFFO29CQUNqQixjQUFjLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBNEI7aUJBQ25FLENBQUMsQ0FBQztnQkFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztDQUNKO0FBZEQsa0VBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NmblN1YnNjcmlwdGlvbkZpbHRlcn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge0RpZ2l0cmFmZmljU3RhY2t9IGZyb20gXCIuL3N0YWNrXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TW9uaXRvcmVkRnVuY3Rpb259IGZyb20gXCIuL21vbml0b3JlZGZ1bmN0aW9uXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNjcmlwdGlvbiBmaWx0ZXIgdGhhdCBzdWJzY3JpYmVzIHRvIGEgTGFtYmRhIExvZyBHcm91cCBhbmQgZGVsaXZlcnMgdGhlIGxvZ3MgdG8gYW5vdGhlciBkZXN0aW5hdGlvbi5cbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1sb2dzLXN1YnNjcmlwdGlvbmZpbHRlci5odG1sXG4gKiBAcGFyYW0gbGFtYmRhIFRoZSBMYW1iZGEgZnVuY3Rpb24sIG5lZWRlZCB0byBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gbGFtYmRhTmFtZSBUaGUgTGFtYmRhIG5hbWUgZnJvbSB3aGljaCB0aGUgTG9nIEdyb3VwIG5hbWUgaXMgZGVyaXZlZFxuICogQHBhcmFtIGxvZ0Rlc3RpbmF0aW9uQXJuIERlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBsb2dzXG4gKiBAcGFyYW0gc3RhY2sgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmlwdGlvbihsYW1iZGE6IEZ1bmN0aW9uLCBsYW1iZGFOYW1lOiBzdHJpbmcsIGxvZ0Rlc3RpbmF0aW9uQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YWNrOiBDb25zdHJ1Y3QpOiBDZm5TdWJzY3JpcHRpb25GaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChsb2dEZXN0aW5hdGlvbkFybiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYU5hbWV9YCxcbiAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgIGRlc3RpbmF0aW9uQXJuOiBsb2dEZXN0aW5hdGlvbkFybixcbiAgICB9KTtcblxuICAgIGZpbHRlci5ub2RlLmFkZERlcGVuZGVuY3kobGFtYmRhKTtcblxuICAgIHJldHVybiBmaWx0ZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY0xvZ1N1YnNjcmlwdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrLCAuLi5sYW1iZGFzOiBNb25pdG9yZWRGdW5jdGlvbltdKSB7XG4gICAgICAgIGlmIChzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybikge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKGxhbWJkYSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhLmdpdmVuTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICAgICAgICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYS5naXZlbk5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQXJuOiBzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybiBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmaWx0ZXIubm9kZS5hZGREZXBlbmRlbmN5KGxhbWJkYSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDefaultUsagePlan = exports.createUsagePlan = void 0;
4
- /**
5
- * Creates an usage plan for a REST API with a single API key
6
- * @param api The REST API
7
- * @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
8
- * @param apiKeyName Name for the API key, this is displayed in the AWS Console
9
- * @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
10
- */
11
- function createUsagePlan(api, apiKeyId, apiKeyName) {
12
- const apiKey = api.addApiKey(apiKeyId);
13
- const plan = api.addUsagePlan(apiKeyName, {
14
- name: apiKeyName,
15
- });
16
- plan.addApiStage({
17
- stage: api.deploymentStage,
18
- });
19
- plan.addApiKey(apiKey);
20
- return apiKey;
21
- }
22
- exports.createUsagePlan = createUsagePlan;
23
- /**
24
- * Creates a default usage plan for a REST API with a single API key
25
- * @param api The REST API
26
- * @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
27
- */
28
- function createDefaultUsagePlan(api, apiName) {
29
- const apiKeyName = apiName + ' API Key';
30
- const usagePlanName = apiName + ' API Usage Plan';
31
- const apiKey = api.addApiKey(apiKeyName, { apiKeyName: apiKeyName });
32
- const plan = api.addUsagePlan(usagePlanName, {
33
- name: usagePlanName,
34
- });
35
- plan.addApiStage({
36
- stage: api.deploymentStage,
37
- });
38
- plan.addApiKey(apiKey);
39
- return apiKey;
40
- }
41
- exports.createDefaultUsagePlan = createDefaultUsagePlan;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcGxhbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2luZnJhL3VzYWdlLXBsYW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7R0FNRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxHQUFZLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQjtJQUM5RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFO1FBQ3RDLElBQUksRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUM7UUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLGVBQWU7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBWEQsMENBV0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsR0FBWSxFQUFFLE9BQWU7SUFDaEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUN4QyxNQUFNLGFBQWEsR0FBRyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyRSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtRQUN6QyxJQUFJLEVBQUUsYUFBYTtLQUN0QixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxlQUFlO0tBQzdCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELHdEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQXBpS2V5LCBSZXN0QXBpfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB1c2FnZSBwbGFuIGZvciBhIFJFU1QgQVBJIHdpdGggYSBzaW5nbGUgQVBJIGtleVxuICogQHBhcmFtIGFwaSBUaGUgUkVTVCBBUElcbiAqIEBwYXJhbSBhcGlLZXlJZCBJZCBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgYSBzdXJyb2dhdGUgaWQgZm9yIENESywgbm90IGRpc3BsYXllZCBhbnl3aGVyZVxuICogQHBhcmFtIGFwaUtleU5hbWUgTmFtZSBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgZGlzcGxheWVkIGluIHRoZSBBV1MgQ29uc29sZVxuICogQGRlcHJlY2F0ZWQgQ3JlYXRlcyByYW5kb21pemVkIEFQSSBrZXkgbmFtZXMsIHVzZSBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuIGluc3RlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzYWdlUGxhbihhcGk6IFJlc3RBcGksIGFwaUtleUlkOiBzdHJpbmcsIGFwaUtleU5hbWU6IHN0cmluZyk6IElBcGlLZXkge1xuICAgIGNvbnN0IGFwaUtleSA9IGFwaS5hZGRBcGlLZXkoYXBpS2V5SWQpO1xuICAgIGNvbnN0IHBsYW4gPSBhcGkuYWRkVXNhZ2VQbGFuKGFwaUtleU5hbWUsIHtcbiAgICAgICAgbmFtZTogYXBpS2V5TmFtZSxcbiAgICB9KTtcbiAgICBwbGFuLmFkZEFwaVN0YWdlKHtcbiAgICAgICAgc3RhZ2U6IGFwaS5kZXBsb3ltZW50U3RhZ2UsXG4gICAgfSk7XG4gICAgcGxhbi5hZGRBcGlLZXkoYXBpS2V5KTtcblxuICAgIHJldHVybiBhcGlLZXk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlZmF1bHQgdXNhZ2UgcGxhbiBmb3IgYSBSRVNUIEFQSSB3aXRoIGEgc2luZ2xlIEFQSSBrZXlcbiAqIEBwYXJhbSBhcGkgVGhlIFJFU1QgQVBJXG4gKiBAcGFyYW0gYXBpTmFtZSBOYW1lIG9mIHRoZSBhcGkuIFdpbGwgZ2VuZXJhdGUga2V5OiBhcGlOYW1lICsgJyBBUEkgS2V5JyBhbmQgcGxhbjogYXBpTmFtZSArICcgQVBJIFVzYWdlIFBsYW4nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuKGFwaTogUmVzdEFwaSwgYXBpTmFtZTogc3RyaW5nKTogSUFwaUtleSB7XG4gICAgY29uc3QgYXBpS2V5TmFtZSA9IGFwaU5hbWUgKyAnIEFQSSBLZXknO1xuICAgIGNvbnN0IHVzYWdlUGxhbk5hbWUgPSBhcGlOYW1lICsgJyBBUEkgVXNhZ2UgUGxhbic7XG4gICAgY29uc3QgYXBpS2V5ID0gYXBpLmFkZEFwaUtleShhcGlLZXlOYW1lLCB7IGFwaUtleU5hbWU6IGFwaUtleU5hbWUgfSk7XG4gICAgY29uc3QgcGxhbiA9IGFwaS5hZGRVc2FnZVBsYW4odXNhZ2VQbGFuTmFtZSwge1xuICAgICAgICBuYW1lOiB1c2FnZVBsYW5OYW1lLFxuICAgIH0pO1xuICAgIHBsYW4uYWRkQXBpU3RhZ2Uoe1xuICAgICAgICBzdGFnZTogYXBpLmRlcGxveW1lbnRTdGFnZSxcbiAgICB9KTtcbiAgICBwbGFuLmFkZEFwaUtleShhcGlLZXkpO1xuXG4gICAgcmV0dXJuIGFwaUtleTtcbn1cbiJdfQ==
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getApiKeyFromAPIGateway = void 0;
4
- const aws_sdk_1 = require("aws-sdk");
5
- function getApiKeyFromAPIGateway(keyId) {
6
- const agw = new aws_sdk_1.APIGateway();
7
- return agw.getApiKey({
8
- apiKey: keyId,
9
- includeValue: true,
10
- }).promise();
11
- }
12
- exports.getApiKeyFromAPIGateway = getApiKeyFromAPIGateway;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpa2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL2FwaWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBbUM7QUFFbkMsU0FBZ0IsdUJBQXVCLENBQUMsS0FBYTtJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG9CQUFVLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDakIsTUFBTSxFQUFFLEtBQUs7UUFDYixZQUFZLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakIsQ0FBQztBQU5ELDBEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUElHYXRld2F5fSBmcm9tIFwiYXdzLXNka1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpS2V5RnJvbUFQSUdhdGV3YXkoa2V5SWQ6IHN0cmluZyk6IFByb21pc2U8QVBJR2F0ZXdheS5UeXBlcy5BcGlLZXk+IHtcbiAgICBjb25zdCBhZ3cgPSBuZXcgQVBJR2F0ZXdheSgpO1xuICAgIHJldHVybiBhZ3cuZ2V0QXBpS2V5KHtcbiAgICAgICAgYXBpS2V5OiBrZXlJZCxcbiAgICAgICAgaW5jbHVkZVZhbHVlOiB0cnVlLFxuICAgIH0pLnByb21pc2UoKTtcbn1cbiJdfQ==