@digitraffic/common 2022.10.25-1 → 2022.10.31-1

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 (283) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintignore +4 -0
  3. package/.eslintrc.json +27 -0
  4. package/.github/CODEOWNERS +2 -0
  5. package/.github/workflows/build.yml +36 -0
  6. package/.github/workflows/eslint.yml +38 -0
  7. package/.github/workflows/mirror.yml +15 -0
  8. package/.gitignore +29 -0
  9. package/.husky/pre-commit +4 -0
  10. package/.prettierrc.json +10 -0
  11. package/dist/aws/infra/api/integration.js +52 -0
  12. package/dist/aws/infra/api/response.js +61 -0
  13. package/dist/aws/infra/api/responses.js +82 -0
  14. package/dist/aws/infra/api/static-integration.js +54 -0
  15. package/dist/aws/infra/canaries/canary-alarm.js +26 -0
  16. package/dist/aws/infra/canaries/canary-keys.js +7 -0
  17. package/dist/aws/infra/canaries/canary-parameters.js +3 -0
  18. package/dist/aws/infra/canaries/canary-role.js +46 -0
  19. package/dist/aws/infra/canaries/canary.js +32 -0
  20. package/dist/aws/infra/canaries/database-canary.js +70 -0
  21. package/dist/aws/infra/canaries/database-checker.js +103 -0
  22. package/dist/aws/infra/canaries/url-canary.js +47 -0
  23. package/dist/aws/infra/canaries/url-checker.js +252 -0
  24. package/dist/aws/infra/documentation.js +95 -0
  25. package/dist/aws/infra/scheduler.js +31 -0
  26. package/dist/aws/infra/security-rule.js +39 -0
  27. package/dist/aws/infra/sqs-integration.js +93 -0
  28. package/dist/aws/infra/sqs-queue.js +130 -0
  29. package/dist/aws/infra/stack/lambda-configs.js +105 -0
  30. package/dist/aws/infra/stack/monitoredfunction.js +143 -0
  31. package/dist/aws/infra/stack/rest_apis.js +185 -0
  32. package/dist/aws/infra/stack/stack-checking-aspect.js +174 -0
  33. package/dist/aws/infra/stack/stack.js +67 -0
  34. package/dist/aws/infra/stack/subscription.js +42 -0
  35. package/dist/aws/infra/usage-plans.js +42 -0
  36. package/dist/aws/runtime/apikey.js +13 -0
  37. package/dist/aws/runtime/digitraffic-integration-response.js +26 -0
  38. package/dist/aws/runtime/environment.js +12 -0
  39. package/dist/aws/runtime/messaging.js +31 -0
  40. package/dist/aws/runtime/s3.js +30 -0
  41. package/dist/aws/runtime/secrets/dbsecret.js +96 -0
  42. package/dist/aws/runtime/secrets/proxy-holder.js +27 -0
  43. package/dist/aws/runtime/secrets/rds-holder.js +27 -0
  44. package/dist/aws/runtime/secrets/secret-holder.js +76 -0
  45. package/dist/aws/runtime/secrets/secret.js +43 -0
  46. package/dist/aws/types/errors.js +16 -0
  47. package/dist/aws/types/lambda-response.js +33 -0
  48. package/dist/aws/types/mediatypes.js +16 -0
  49. package/dist/aws/types/model-with-reference.js +3 -0
  50. package/dist/aws/types/proxytypes.js +3 -0
  51. package/dist/aws/types/tags.js +7 -0
  52. package/dist/database/cached.js +32 -0
  53. package/dist/database/database.js +70 -0
  54. package/dist/database/last-updated.js +54 -0
  55. package/dist/database/models.js +3 -0
  56. package/dist/marine/id_utils.js +33 -0
  57. package/dist/marine/rtz.js +3 -0
  58. package/dist/test/asserter.js +45 -0
  59. package/dist/test/db-testutils.js +31 -0
  60. package/dist/test/httpserver.js +74 -0
  61. package/dist/test/secret.js +25 -0
  62. package/dist/test/secrets-manager.js +59 -0
  63. package/dist/test/testutils.js +44 -0
  64. package/dist/types/either.js +3 -0
  65. package/dist/types/input-error.js +7 -0
  66. package/dist/types/language.js +10 -0
  67. package/dist/types/traffictype.js +13 -0
  68. package/dist/types/validator.js +14 -0
  69. package/dist/utils/api-model.js +129 -0
  70. package/dist/utils/base64.js +21 -0
  71. package/dist/utils/date-utils.js +34 -0
  72. package/dist/utils/geojson-types.js +18 -0
  73. package/dist/utils/geometry.js +164 -0
  74. package/dist/utils/retry.js +50 -0
  75. package/dist/utils/slack.js +25 -0
  76. package/dist/utils/utils.js +75 -0
  77. package/jest.config.js +15 -0
  78. package/package.json +15 -13
  79. package/src/@types/geojson-validation/index.d.ts +4 -0
  80. package/src/aws/infra/api/integration.ts +73 -0
  81. package/src/aws/infra/api/response.ts +67 -0
  82. package/src/aws/infra/api/responses.ts +124 -0
  83. package/src/aws/infra/api/static-integration.ts +62 -0
  84. package/src/aws/infra/canaries/canary-alarm.ts +31 -0
  85. package/src/aws/infra/canaries/canary-keys.ts +3 -0
  86. package/{aws/infra/canaries/canary-parameters.d.ts → src/aws/infra/canaries/canary-parameters.ts} +7 -6
  87. package/src/aws/infra/canaries/canary-role.ts +47 -0
  88. package/src/aws/infra/canaries/canary.ts +46 -0
  89. package/src/aws/infra/canaries/database-canary.ts +98 -0
  90. package/src/aws/infra/canaries/database-checker.ts +155 -0
  91. package/src/aws/infra/canaries/url-canary.ts +74 -0
  92. package/src/aws/infra/canaries/url-checker.ts +366 -0
  93. package/src/aws/infra/documentation.ts +124 -0
  94. package/src/aws/infra/scheduler.ts +59 -0
  95. package/src/aws/infra/security-rule.ts +38 -0
  96. package/src/aws/infra/sqs-integration.ts +102 -0
  97. package/src/aws/infra/sqs-queue.ts +148 -0
  98. package/src/aws/infra/stack/lambda-configs.ts +207 -0
  99. package/src/aws/infra/stack/monitoredfunction.ts +342 -0
  100. package/src/aws/infra/stack/rest_apis.ts +223 -0
  101. package/src/aws/infra/stack/stack-checking-aspect.ts +279 -0
  102. package/src/aws/infra/stack/stack.ts +145 -0
  103. package/src/aws/infra/stack/subscription.ts +58 -0
  104. package/src/aws/infra/usage-plans.ts +41 -0
  105. package/src/aws/runtime/apikey.ts +9 -0
  106. package/src/aws/runtime/digitraffic-integration-response.ts +28 -0
  107. package/src/aws/runtime/environment.ts +9 -0
  108. package/src/aws/runtime/messaging.ts +26 -0
  109. package/src/aws/runtime/s3.ts +44 -0
  110. package/src/aws/runtime/secrets/dbsecret.ts +116 -0
  111. package/src/aws/runtime/secrets/proxy-holder.ts +37 -0
  112. package/src/aws/runtime/secrets/rds-holder.ts +33 -0
  113. package/src/aws/runtime/secrets/secret-holder.ts +116 -0
  114. package/src/aws/runtime/secrets/secret.ts +50 -0
  115. package/src/aws/types/errors.ts +14 -0
  116. package/src/aws/types/lambda-response.ts +43 -0
  117. package/{aws/types/mediatypes.d.ts → src/aws/types/mediatypes.ts} +4 -3
  118. package/{aws/types/model-with-reference.d.ts → src/aws/types/model-with-reference.ts} +2 -1
  119. package/src/aws/types/proxytypes.ts +27 -0
  120. package/src/aws/types/tags.ts +3 -0
  121. package/src/database/cached.ts +35 -0
  122. package/src/database/database.ts +96 -0
  123. package/src/database/last-updated.ts +59 -0
  124. package/{database/models.d.ts → src/database/models.ts} +1 -0
  125. package/src/marine/id_utils.ts +30 -0
  126. package/src/marine/rtz.ts +57 -0
  127. package/src/test/asserter.ts +48 -0
  128. package/src/test/db-testutils.ts +44 -0
  129. package/src/test/httpserver.ts +96 -0
  130. package/src/test/secret.ts +23 -0
  131. package/src/test/secrets-manager.ts +34 -0
  132. package/src/test/testutils.ts +39 -0
  133. package/src/types/either.ts +3 -0
  134. package/src/types/input-error.ts +2 -0
  135. package/src/types/language.ts +3 -0
  136. package/src/types/traffictype.ts +8 -0
  137. package/src/types/validator.ts +10 -0
  138. package/src/utils/api-model.ts +133 -0
  139. package/src/utils/base64.ts +16 -0
  140. package/src/utils/date-utils.ts +30 -0
  141. package/src/utils/geojson-types.ts +22 -0
  142. package/src/utils/geometry.ts +164 -0
  143. package/src/utils/retry.ts +49 -0
  144. package/src/utils/slack.ts +22 -0
  145. package/src/utils/utils.ts +105 -0
  146. package/test/marine/id_utils.test.ts +57 -0
  147. package/test/promise/promise.test.ts +143 -0
  148. package/test/secrets/dbsecret.test.ts +59 -0
  149. package/test/secrets/secret-holder.test.ts +143 -0
  150. package/test/secrets/secret.test.ts +49 -0
  151. package/test/test/httpserver.test.ts +128 -0
  152. package/test/utils/date-utils.test.ts +28 -0
  153. package/test/utils/geometry.test.ts +29 -0
  154. package/test/utils/utils.test.ts +64 -0
  155. package/tsconfig.eslint.json +4 -0
  156. package/tsconfig.json +22 -0
  157. package/yarn.lock +4060 -0
  158. package/aws/infra/api/integration.d.ts +0 -21
  159. package/aws/infra/api/integration.js +0 -52
  160. package/aws/infra/api/response.d.ts +0 -22
  161. package/aws/infra/api/response.js +0 -61
  162. package/aws/infra/api/responses.d.ts +0 -39
  163. package/aws/infra/api/responses.js +0 -79
  164. package/aws/infra/api/static-integration.d.ts +0 -15
  165. package/aws/infra/api/static-integration.js +0 -54
  166. package/aws/infra/canaries/canary-alarm.d.ts +0 -6
  167. package/aws/infra/canaries/canary-alarm.js +0 -26
  168. package/aws/infra/canaries/canary-parameters.js +0 -3
  169. package/aws/infra/canaries/canary-role.d.ts +0 -6
  170. package/aws/infra/canaries/canary-role.js +0 -46
  171. package/aws/infra/canaries/canary.d.ts +0 -8
  172. package/aws/infra/canaries/canary.js +0 -32
  173. package/aws/infra/canaries/database-canary.d.ts +0 -18
  174. package/aws/infra/canaries/database-canary.js +0 -55
  175. package/aws/infra/canaries/database-checker.d.ts +0 -21
  176. package/aws/infra/canaries/database-checker.js +0 -109
  177. package/aws/infra/canaries/url-canary.d.ts +0 -19
  178. package/aws/infra/canaries/url-canary.js +0 -46
  179. package/aws/infra/canaries/url-checker.d.ts +0 -46
  180. package/aws/infra/canaries/url-checker.js +0 -238
  181. package/aws/infra/documentation.d.ts +0 -56
  182. package/aws/infra/documentation.js +0 -95
  183. package/aws/infra/scheduler.d.ts +0 -12
  184. package/aws/infra/scheduler.js +0 -31
  185. package/aws/infra/security-rule.d.ts +0 -12
  186. package/aws/infra/security-rule.js +0 -39
  187. package/aws/infra/sqs-integration.d.ts +0 -7
  188. package/aws/infra/sqs-integration.js +0 -93
  189. package/aws/infra/sqs-queue.d.ts +0 -16
  190. package/aws/infra/sqs-queue.js +0 -130
  191. package/aws/infra/stack/lambda-configs.d.ts +0 -72
  192. package/aws/infra/stack/lambda-configs.js +0 -93
  193. package/aws/infra/stack/monitoredfunction.d.ts +0 -84
  194. package/aws/infra/stack/monitoredfunction.js +0 -135
  195. package/aws/infra/stack/rest_apis.d.ts +0 -41
  196. package/aws/infra/stack/rest_apis.js +0 -185
  197. package/aws/infra/stack/stack-checking-aspect.d.ts +0 -21
  198. package/aws/infra/stack/stack-checking-aspect.js +0 -174
  199. package/aws/infra/stack/stack.d.ts +0 -44
  200. package/aws/infra/stack/stack.js +0 -60
  201. package/aws/infra/stack/subscription.d.ts +0 -17
  202. package/aws/infra/stack/subscription.js +0 -41
  203. package/aws/infra/usage-plans.d.ts +0 -15
  204. package/aws/infra/usage-plans.js +0 -42
  205. package/aws/runtime/apikey.d.ts +0 -2
  206. package/aws/runtime/apikey.js +0 -13
  207. package/aws/runtime/digitraffic-integration-response.d.ts +0 -8
  208. package/aws/runtime/digitraffic-integration-response.js +0 -26
  209. package/aws/runtime/environment.d.ts +0 -1
  210. package/aws/runtime/environment.js +0 -12
  211. package/aws/runtime/messaging.d.ts +0 -10
  212. package/aws/runtime/messaging.js +0 -31
  213. package/aws/runtime/s3.d.ts +0 -2
  214. package/aws/runtime/s3.js +0 -30
  215. package/aws/runtime/secrets/dbsecret.d.ts +0 -54
  216. package/aws/runtime/secrets/dbsecret.js +0 -96
  217. package/aws/runtime/secrets/proxy-holder.d.ts +0 -9
  218. package/aws/runtime/secrets/proxy-holder.js +0 -26
  219. package/aws/runtime/secrets/rds-holder.d.ts +0 -9
  220. package/aws/runtime/secrets/rds-holder.js +0 -26
  221. package/aws/runtime/secrets/secret-holder.d.ts +0 -26
  222. package/aws/runtime/secrets/secret-holder.js +0 -73
  223. package/aws/runtime/secrets/secret.d.ts +0 -8
  224. package/aws/runtime/secrets/secret.js +0 -43
  225. package/aws/types/errors.d.ts +0 -4
  226. package/aws/types/errors.js +0 -9
  227. package/aws/types/lambda-response.d.ts +0 -12
  228. package/aws/types/lambda-response.js +0 -28
  229. package/aws/types/mediatypes.js +0 -15
  230. package/aws/types/model-with-reference.js +0 -3
  231. package/aws/types/proxytypes.d.ts +0 -26
  232. package/aws/types/proxytypes.js +0 -3
  233. package/aws/types/tags.d.ts +0 -2
  234. package/aws/types/tags.js +0 -7
  235. package/database/cached.d.ts +0 -7
  236. package/database/cached.js +0 -32
  237. package/database/database.d.ts +0 -19
  238. package/database/database.js +0 -62
  239. package/database/last-updated.d.ts +0 -16
  240. package/database/last-updated.js +0 -54
  241. package/database/models.js +0 -3
  242. package/index.d.ts +0 -1
  243. package/index.js +0 -18
  244. package/marine/id_utils.d.ts +0 -3
  245. package/marine/id_utils.js +0 -33
  246. package/marine/rtz.d.ts +0 -48
  247. package/marine/rtz.js +0 -3
  248. package/test/asserter.d.ts +0 -11
  249. package/test/asserter.js +0 -45
  250. package/test/db-testutils.d.ts +0 -2
  251. package/test/db-testutils.js +0 -31
  252. package/test/httpserver.d.ts +0 -18
  253. package/test/httpserver.js +0 -67
  254. package/test/secret.d.ts +0 -3
  255. package/test/secret.js +0 -25
  256. package/test/secrets-manager.d.ts +0 -9
  257. package/test/secrets-manager.js +0 -59
  258. package/test/testutils.d.ts +0 -12
  259. package/test/testutils.js +0 -44
  260. package/types/input-error.d.ts +0 -2
  261. package/types/input-error.js +0 -7
  262. package/types/language.d.ts +0 -5
  263. package/types/language.js +0 -10
  264. package/types/traffictype.d.ts +0 -8
  265. package/types/traffictype.js +0 -13
  266. package/types/validator.d.ts +0 -4
  267. package/types/validator.js +0 -14
  268. package/utils/api-model.d.ts +0 -87
  269. package/utils/api-model.js +0 -129
  270. package/utils/base64.d.ts +0 -12
  271. package/utils/base64.js +0 -21
  272. package/utils/date-utils.d.ts +0 -17
  273. package/utils/date-utils.js +0 -34
  274. package/utils/geojson-types.d.ts +0 -14
  275. package/utils/geojson-types.js +0 -18
  276. package/utils/geometry.d.ts +0 -36
  277. package/utils/geometry.js +0 -140
  278. package/utils/retry.d.ts +0 -13
  279. package/utils/retry.js +0 -50
  280. package/utils/slack.d.ts +0 -5
  281. package/utils/slack.js +0 -25
  282. package/utils/utils.d.ts +0 -30
  283. package/utils/utils.js +0 -64
@@ -1,56 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { Resource } from "aws-cdk-lib/aws-apigateway";
3
- /**
4
- * Add description to a query parameter
5
- * @param name query parameter name
6
- * @param description query parameter description
7
- * @param resource REST API resource
8
- * @param stack CloudFormation stack
9
- *
10
- * @deprecated Use DigitrafficRestApi.documentResource
11
- */
12
- export declare function addQueryParameterDescription(name: string, description: string, resource: Resource, stack: Construct): void;
13
- /**
14
- * Add a documentation part to a method
15
- * @param methodDescription
16
- * @param documentationProperties
17
- * @param resource REST API resource
18
- * @param stack CloudFormation stack
19
- */
20
- export declare function addDocumentation(methodDescription: string, documentationProperties: object, resource: Resource, stack: Construct): void;
21
- /**
22
- * Adds OpenAPI tags to an API method
23
- * @param methodDescription Description of API method
24
- * @param tags OpenAPI tags
25
- * @param resource REST API resource
26
- * @param stack CloudFormation stack
27
- */
28
- export declare function addTags(methodDescription: string, tags: string[], resource: Resource, stack: Construct): void;
29
- /**
30
- * Adds OpenAPI tags and a method summary to an API method
31
- *
32
- * @deprecated Use DigitrafficRestApi.documentResource
33
- *
34
- * @param methodDescription Description of API method
35
- * @param tags OpenAPI tags
36
- * @param summary OpenAPI summary
37
- * @param resource REST API resource
38
- * @param stack CloudFormation stack
39
- */
40
- export declare function addTagsAndSummary(methodDescription: string, tags: string[], summary: string, resource: Resource, stack: Construct): void;
41
- export interface DocumentationProperties {
42
- description?: string;
43
- tags?: string[];
44
- summary?: string;
45
- deprecated?: boolean;
46
- }
47
- export declare class DocumentationPart {
48
- readonly parameterName: string;
49
- readonly type: string;
50
- readonly documentationProperties: DocumentationProperties;
51
- private constructor();
52
- deprecated(note: string): DocumentationPart;
53
- static queryParameter(parameterName: string, description: string): DocumentationPart;
54
- static pathParameter(parameterName: string, description: string): DocumentationPart;
55
- static method(tags: string[], name: string, summary: string): DocumentationPart;
56
- }
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DocumentationPart = exports.addTagsAndSummary = exports.addTags = exports.addDocumentation = exports.addQueryParameterDescription = void 0;
4
- const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
5
- // Documentation parts are objects that describe an API Gateway API or parts of an API
6
- // https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-documenting-api.html
7
- /**
8
- * Add description to a query parameter
9
- * @param name query parameter name
10
- * @param description query parameter description
11
- * @param resource REST API resource
12
- * @param stack CloudFormation stack
13
- *
14
- * @deprecated Use DigitrafficRestApi.documentResource
15
- */
16
- function addQueryParameterDescription(name, description, resource, stack) {
17
- new aws_apigateway_1.CfnDocumentationPart(stack, `${name}Documentation`, {
18
- restApiId: resource.api.restApiId,
19
- location: {
20
- type: 'QUERY_PARAMETER',
21
- name,
22
- path: resource.path,
23
- },
24
- properties: JSON.stringify({ description }),
25
- });
26
- }
27
- exports.addQueryParameterDescription = addQueryParameterDescription;
28
- /**
29
- * Add a documentation part to a method
30
- * @param methodDescription
31
- * @param documentationProperties
32
- * @param resource REST API resource
33
- * @param stack CloudFormation stack
34
- */
35
- function addDocumentation(methodDescription, documentationProperties, resource, stack) {
36
- new aws_apigateway_1.CfnDocumentationPart(stack, `${methodDescription}Documentation`, {
37
- restApiId: resource.api.restApiId,
38
- location: {
39
- type: 'METHOD',
40
- path: resource.path,
41
- },
42
- properties: JSON.stringify(documentationProperties),
43
- });
44
- }
45
- exports.addDocumentation = addDocumentation;
46
- /**
47
- * Adds OpenAPI tags to an API method
48
- * @param methodDescription Description of API method
49
- * @param tags OpenAPI tags
50
- * @param resource REST API resource
51
- * @param stack CloudFormation stack
52
- */
53
- function addTags(methodDescription, tags, resource, stack) {
54
- addDocumentation(methodDescription, { tags }, resource, stack);
55
- }
56
- exports.addTags = addTags;
57
- /**
58
- * Adds OpenAPI tags and a method summary to an API method
59
- *
60
- * @deprecated Use DigitrafficRestApi.documentResource
61
- *
62
- * @param methodDescription Description of API method
63
- * @param tags OpenAPI tags
64
- * @param summary OpenAPI summary
65
- * @param resource REST API resource
66
- * @param stack CloudFormation stack
67
- */
68
- function addTagsAndSummary(methodDescription, tags, summary, resource, stack) {
69
- addDocumentation(methodDescription, { tags, summary }, resource, stack);
70
- }
71
- exports.addTagsAndSummary = addTagsAndSummary;
72
- class DocumentationPart {
73
- constructor(parameterName, documentationProperties, type) {
74
- this.parameterName = parameterName;
75
- this.documentationProperties = documentationProperties;
76
- this.type = type;
77
- }
78
- deprecated(note) {
79
- // deprecated is not supported ATM: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html
80
- this.documentationProperties.deprecated = true;
81
- this.documentationProperties.summary += '. ' + note;
82
- return this;
83
- }
84
- static queryParameter(parameterName, description) {
85
- return new DocumentationPart(parameterName, { description }, "QUERY_PARAMETER");
86
- }
87
- static pathParameter(parameterName, description) {
88
- return new DocumentationPart(parameterName, { description }, "PATH_PARAMETER");
89
- }
90
- static method(tags, name, summary) {
91
- return new DocumentationPart(name, { tags, summary }, "METHOD");
92
- }
93
- }
94
- exports.DocumentationPart = DocumentationPart;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvaW5mcmEvZG9jdW1lbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrREFBMEU7QUFFMUUsc0ZBQXNGO0FBQ3RGLGdHQUFnRztBQUVoRzs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLDRCQUE0QixDQUFDLElBQVksRUFDckQsV0FBbUIsRUFDbkIsUUFBa0IsRUFDbEIsS0FBZ0I7SUFDaEIsSUFBSSxxQ0FBb0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLGVBQWUsRUFBRTtRQUNwRCxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTO1FBQ2pDLFFBQVEsRUFBRTtZQUNOLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSTtZQUNKLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtTQUN0QjtRQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUM7S0FDNUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQWJELG9FQWFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsaUJBQXlCLEVBQ3RELHVCQUErQixFQUMvQixRQUFrQixFQUNsQixLQUFnQjtJQUNoQixJQUFJLHFDQUFvQixDQUFDLEtBQUssRUFBRSxHQUFHLGlCQUFpQixlQUFlLEVBQUU7UUFDakUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUztRQUNqQyxRQUFRLEVBQUU7WUFDTixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTtTQUN0QjtRQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDO0tBQ3RELENBQUMsQ0FBQztBQUNQLENBQUM7QUFaRCw0Q0FZQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxpQkFBeUIsRUFDN0MsSUFBYyxFQUNkLFFBQWtCLEVBQ2xCLEtBQWdCO0lBQ2hCLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFMRCwwQkFLQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FDN0IsaUJBQXlCLEVBQ3pCLElBQWMsRUFDZCxPQUFlLEVBQ2YsUUFBa0IsRUFDbEIsS0FBZ0I7SUFFaEIsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFSRCw4Q0FRQztBQVNELE1BQWEsaUJBQWlCO0lBSzFCLFlBQW9CLGFBQXFCLEVBQUUsdUJBQWdELEVBQUUsSUFBWTtRQUNyRyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ25CLDhIQUE4SDtRQUM5SCxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxJQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFFbkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBcUIsRUFBRSxXQUFtQjtRQUM1RCxPQUFPLElBQUksaUJBQWlCLENBQUMsYUFBYSxFQUFFLEVBQUMsV0FBVyxFQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFxQixFQUFFLFdBQW1CO1FBQzNELE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsRUFBQyxXQUFXLEVBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsT0FBZTtRQUN2RCxPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQTlCRCw4Q0E4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7Q2ZuRG9jdW1lbnRhdGlvblBhcnQsIFJlc291cmNlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcblxuLy8gRG9jdW1lbnRhdGlvbiBwYXJ0cyBhcmUgb2JqZWN0cyB0aGF0IGRlc2NyaWJlIGFuIEFQSSBHYXRld2F5IEFQSSBvciBwYXJ0cyBvZiBhbiBBUElcbi8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcGlnYXRld2F5L2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hcGktZ2F0ZXdheS1kb2N1bWVudGluZy1hcGkuaHRtbFxuXG4vKipcbiAqIEFkZCBkZXNjcmlwdGlvbiB0byBhIHF1ZXJ5IHBhcmFtZXRlclxuICogQHBhcmFtIG5hbWUgcXVlcnkgcGFyYW1ldGVyIG5hbWVcbiAqIEBwYXJhbSBkZXNjcmlwdGlvbiBxdWVyeSBwYXJhbWV0ZXIgZGVzY3JpcHRpb25cbiAqIEBwYXJhbSByZXNvdXJjZSBSRVNUIEFQSSByZXNvdXJjZVxuICogQHBhcmFtIHN0YWNrIENsb3VkRm9ybWF0aW9uIHN0YWNrXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERpZ2l0cmFmZmljUmVzdEFwaS5kb2N1bWVudFJlc291cmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRRdWVyeVBhcmFtZXRlckRlc2NyaXB0aW9uKG5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIHJlc291cmNlOiBSZXNvdXJjZSxcbiAgICBzdGFjazogQ29uc3RydWN0KSB7XG4gICAgbmV3IENmbkRvY3VtZW50YXRpb25QYXJ0KHN0YWNrLCBgJHtuYW1lfURvY3VtZW50YXRpb25gLCB7XG4gICAgICAgIHJlc3RBcGlJZDogcmVzb3VyY2UuYXBpLnJlc3RBcGlJZCxcbiAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6ICdRVUVSWV9QQVJBTUVURVInLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHBhdGg6IHJlc291cmNlLnBhdGgsXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IEpTT04uc3RyaW5naWZ5KHtkZXNjcmlwdGlvbn0pLFxuICAgIH0pO1xufVxuXG4vKipcbiAqIEFkZCBhIGRvY3VtZW50YXRpb24gcGFydCB0byBhIG1ldGhvZFxuICogQHBhcmFtIG1ldGhvZERlc2NyaXB0aW9uXG4gKiBAcGFyYW0gZG9jdW1lbnRhdGlvblByb3BlcnRpZXNcbiAqIEBwYXJhbSByZXNvdXJjZSBSRVNUIEFQSSByZXNvdXJjZVxuICogQHBhcmFtIHN0YWNrIENsb3VkRm9ybWF0aW9uIHN0YWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREb2N1bWVudGF0aW9uKG1ldGhvZERlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZG9jdW1lbnRhdGlvblByb3BlcnRpZXM6IG9iamVjdCxcbiAgICByZXNvdXJjZTogUmVzb3VyY2UsXG4gICAgc3RhY2s6IENvbnN0cnVjdCkge1xuICAgIG5ldyBDZm5Eb2N1bWVudGF0aW9uUGFydChzdGFjaywgYCR7bWV0aG9kRGVzY3JpcHRpb259RG9jdW1lbnRhdGlvbmAsIHtcbiAgICAgICAgcmVzdEFwaUlkOiByZXNvdXJjZS5hcGkucmVzdEFwaUlkLFxuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogJ01FVEhPRCcsXG4gICAgICAgICAgICBwYXRoOiByZXNvdXJjZS5wYXRoLFxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiBKU09OLnN0cmluZ2lmeShkb2N1bWVudGF0aW9uUHJvcGVydGllcyksXG4gICAgfSk7XG59XG5cbi8qKlxuICogQWRkcyBPcGVuQVBJIHRhZ3MgdG8gYW4gQVBJIG1ldGhvZFxuICogQHBhcmFtIG1ldGhvZERlc2NyaXB0aW9uIERlc2NyaXB0aW9uIG9mIEFQSSBtZXRob2RcbiAqIEBwYXJhbSB0YWdzIE9wZW5BUEkgdGFnc1xuICogQHBhcmFtIHJlc291cmNlIFJFU1QgQVBJIHJlc291cmNlXG4gKiBAcGFyYW0gc3RhY2sgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFRhZ3MobWV0aG9kRGVzY3JpcHRpb246IHN0cmluZyxcbiAgICB0YWdzOiBzdHJpbmdbXSxcbiAgICByZXNvdXJjZTogUmVzb3VyY2UsXG4gICAgc3RhY2s6IENvbnN0cnVjdCkge1xuICAgIGFkZERvY3VtZW50YXRpb24obWV0aG9kRGVzY3JpcHRpb24sIHt0YWdzfSwgcmVzb3VyY2UsIHN0YWNrKTtcbn1cblxuLyoqXG4gKiBBZGRzIE9wZW5BUEkgdGFncyBhbmQgYSBtZXRob2Qgc3VtbWFyeSB0byBhbiBBUEkgbWV0aG9kXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERpZ2l0cmFmZmljUmVzdEFwaS5kb2N1bWVudFJlc291cmNlXG4gKlxuICogQHBhcmFtIG1ldGhvZERlc2NyaXB0aW9uIERlc2NyaXB0aW9uIG9mIEFQSSBtZXRob2RcbiAqIEBwYXJhbSB0YWdzIE9wZW5BUEkgdGFnc1xuICogQHBhcmFtIHN1bW1hcnkgT3BlbkFQSSBzdW1tYXJ5XG4gKiBAcGFyYW0gcmVzb3VyY2UgUkVTVCBBUEkgcmVzb3VyY2VcbiAqIEBwYXJhbSBzdGFjayBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFnc0FuZFN1bW1hcnkoXG4gICAgbWV0aG9kRGVzY3JpcHRpb246IHN0cmluZyxcbiAgICB0YWdzOiBzdHJpbmdbXSxcbiAgICBzdW1tYXJ5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2U6IFJlc291cmNlLFxuICAgIHN0YWNrOiBDb25zdHJ1Y3QsXG4pIHtcbiAgICBhZGREb2N1bWVudGF0aW9uKG1ldGhvZERlc2NyaXB0aW9uLCB7dGFncywgc3VtbWFyeX0sIHJlc291cmNlLCBzdGFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRhdGlvblByb3BlcnRpZXMge1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgdGFncz86IHN0cmluZ1tdXG4gICAgc3VtbWFyeT86IHN0cmluZ1xuICAgIGRlcHJlY2F0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudGF0aW9uUGFydCB7XG4gICAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgICByZWFkb25seSBkb2N1bWVudGF0aW9uUHJvcGVydGllczogRG9jdW1lbnRhdGlvblByb3BlcnRpZXM7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKHBhcmFtZXRlck5hbWU6IHN0cmluZywgZG9jdW1lbnRhdGlvblByb3BlcnRpZXM6IERvY3VtZW50YXRpb25Qcm9wZXJ0aWVzLCB0eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJOYW1lID0gcGFyYW1ldGVyTmFtZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydGllcyA9IGRvY3VtZW50YXRpb25Qcm9wZXJ0aWVzO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIH1cblxuICAgIGRlcHJlY2F0ZWQobm90ZTogc3RyaW5nKTogRG9jdW1lbnRhdGlvblBhcnQge1xuICAgICAgICAvLyBkZXByZWNhdGVkIGlzIG5vdCBzdXBwb3J0ZWQgQVRNOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvYXBpLWdhdGV3YXkta25vd24taXNzdWVzLmh0bWxcbiAgICAgICAgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydGllcy5kZXByZWNhdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudGF0aW9uUHJvcGVydGllcy5zdW1tYXJ5Kz0gJy4gJyArIG5vdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgc3RhdGljIHF1ZXJ5UGFyYW1ldGVyKHBhcmFtZXRlck5hbWU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IERvY3VtZW50YXRpb25QYXJ0KHBhcmFtZXRlck5hbWUsIHtkZXNjcmlwdGlvbn0sIFwiUVVFUllfUEFSQU1FVEVSXCIpO1xuICAgIH1cblxuICAgIHN0YXRpYyBwYXRoUGFyYW1ldGVyKHBhcmFtZXRlck5hbWU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IERvY3VtZW50YXRpb25QYXJ0KHBhcmFtZXRlck5hbWUsIHtkZXNjcmlwdGlvbn0sIFwiUEFUSF9QQVJBTUVURVJcIik7XG4gICAgfVxuXG4gICAgc3RhdGljIG1ldGhvZCh0YWdzOiBzdHJpbmdbXSwgbmFtZTogc3RyaW5nLCBzdW1tYXJ5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudGF0aW9uUGFydChuYW1lLCB7dGFncywgc3VtbWFyeX0sIFwiTUVUSE9EXCIpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,12 +0,0 @@
1
- import { Rule, Schedule } from "aws-cdk-lib/aws-events";
2
- import { Duration } from "aws-cdk-lib";
3
- import { Function } from 'aws-cdk-lib/aws-lambda';
4
- import { Construct } from "constructs";
5
- export declare class Scheduler extends Rule {
6
- constructor(stack: Construct, ruleName: string, schedule: Schedule, lambda?: Function);
7
- static everyMinute(stack: Construct, ruleName: string, lambda?: Function): Scheduler;
8
- static everyMinutes(stack: Construct, ruleName: string, minutes: number, lambda?: Function): Scheduler;
9
- static everyHour(stack: Construct, ruleName: string, lambda?: Function): Scheduler;
10
- static everyDay(stack: Construct, ruleName: string, lambda?: Function): Scheduler;
11
- static every(stack: Construct, ruleName: string, duration: Duration, lambda?: Function): Scheduler;
12
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Scheduler = void 0;
4
- const aws_events_1 = require("aws-cdk-lib/aws-events");
5
- const aws_cdk_lib_1 = require("aws-cdk-lib");
6
- const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
7
- class Scheduler extends aws_events_1.Rule {
8
- constructor(stack, ruleName, schedule, lambda) {
9
- super(stack, ruleName, { ruleName, schedule });
10
- if (lambda) {
11
- this.addTarget(new aws_events_targets_1.LambdaFunction(lambda));
12
- }
13
- }
14
- static everyMinute(stack, ruleName, lambda) {
15
- return Scheduler.every(stack, ruleName, aws_cdk_lib_1.Duration.minutes(1), lambda);
16
- }
17
- static everyMinutes(stack, ruleName, minutes, lambda) {
18
- return Scheduler.every(stack, ruleName, aws_cdk_lib_1.Duration.minutes(minutes), lambda);
19
- }
20
- static everyHour(stack, ruleName, lambda) {
21
- return Scheduler.every(stack, ruleName, aws_cdk_lib_1.Duration.hours(1), lambda);
22
- }
23
- static everyDay(stack, ruleName, lambda) {
24
- return Scheduler.every(stack, ruleName, aws_cdk_lib_1.Duration.days(1), lambda);
25
- }
26
- static every(stack, ruleName, duration, lambda) {
27
- return new Scheduler(stack, ruleName, aws_events_1.Schedule.rate(duration), lambda);
28
- }
29
- }
30
- exports.Scheduler = Scheduler;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zY2hlZHVsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQXNEO0FBQ3RELDZDQUFxQztBQUNyQyx1RUFBOEQ7QUFJOUQsTUFBYSxTQUFVLFNBQVEsaUJBQUk7SUFDL0IsWUFBWSxLQUFnQixFQUFFLFFBQWdCLEVBQUUsUUFBa0IsRUFBRSxNQUFpQjtRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLG1DQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUFpQjtRQUNwRSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFnQixFQUFFLFFBQWdCLEVBQUUsT0FBZSxFQUFFLE1BQWlCO1FBQ3RGLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUFpQjtRQUNsRSxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxzQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFnQixFQUFFLFFBQWdCLEVBQUUsTUFBaUI7UUFDakUsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBZ0IsRUFBRSxRQUFnQixFQUFFLFFBQWtCLEVBQUUsTUFBaUI7UUFDbEYsT0FBTyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDSjtBQTVCRCw4QkE0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1J1bGUsIFNjaGVkdWxlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0xhbWJkYUZ1bmN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCI7XG5pbXBvcnQge0Z1bmN0aW9ufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVyIGV4dGVuZHMgUnVsZSB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2s6IENvbnN0cnVjdCwgcnVsZU5hbWU6IHN0cmluZywgc2NoZWR1bGU6IFNjaGVkdWxlLCBsYW1iZGE/OiBGdW5jdGlvbikge1xuICAgICAgICBzdXBlcihzdGFjaywgcnVsZU5hbWUsIHsgcnVsZU5hbWUsIHNjaGVkdWxlIH0pO1xuXG4gICAgICAgIGlmIChsYW1iZGEpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGFyZ2V0KG5ldyBMYW1iZGFGdW5jdGlvbihsYW1iZGEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBldmVyeU1pbnV0ZShzdGFjazogQ29uc3RydWN0LCBydWxlTmFtZTogc3RyaW5nLCBsYW1iZGE/OiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gU2NoZWR1bGVyLmV2ZXJ5KHN0YWNrLCBydWxlTmFtZSwgRHVyYXRpb24ubWludXRlcygxKSwgbGFtYmRhKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZXZlcnlNaW51dGVzKHN0YWNrOiBDb25zdHJ1Y3QsIHJ1bGVOYW1lOiBzdHJpbmcsIG1pbnV0ZXM6IG51bWJlciwgbGFtYmRhPzogRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIFNjaGVkdWxlci5ldmVyeShzdGFjaywgcnVsZU5hbWUsIER1cmF0aW9uLm1pbnV0ZXMobWludXRlcyksIGxhbWJkYSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGV2ZXJ5SG91cihzdGFjazogQ29uc3RydWN0LCBydWxlTmFtZTogc3RyaW5nLCBsYW1iZGE/OiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gU2NoZWR1bGVyLmV2ZXJ5KHN0YWNrLCBydWxlTmFtZSwgRHVyYXRpb24uaG91cnMoMSksIGxhbWJkYSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGV2ZXJ5RGF5KHN0YWNrOiBDb25zdHJ1Y3QsIHJ1bGVOYW1lOiBzdHJpbmcsIGxhbWJkYT86IEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBTY2hlZHVsZXIuZXZlcnkoc3RhY2ssIHJ1bGVOYW1lLCBEdXJhdGlvbi5kYXlzKDEpLCBsYW1iZGEpO1xuICAgIH1cblxuICAgIHN0YXRpYyBldmVyeShzdGFjazogQ29uc3RydWN0LCBydWxlTmFtZTogc3RyaW5nLCBkdXJhdGlvbjogRHVyYXRpb24sIGxhbWJkYT86IEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2NoZWR1bGVyKHN0YWNrLCBydWxlTmFtZSwgU2NoZWR1bGUucmF0ZShkdXJhdGlvbiksIGxhbWJkYSk7XG4gICAgfVxufVxuIl19
@@ -1,12 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { Rule } from "aws-cdk-lib/aws-events";
3
- import { ITopic } from "aws-cdk-lib/aws-sns";
4
- /**
5
- * Automatic rule for Security Hub. Send notification to given topic if the following conditions apply:
6
- * * There is a finding with a status of NEW
7
- * * It has severity of HIGH or CRITICAL
8
- * * It is in a FAILED state
9
- */
10
- export declare class DigitrafficSecurityRule extends Rule {
11
- constructor(scope: Construct, topic: ITopic);
12
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficSecurityRule = void 0;
4
- const aws_events_1 = require("aws-cdk-lib/aws-events");
5
- const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
6
- /**
7
- * Automatic rule for Security Hub. Send notification to given topic if the following conditions apply:
8
- * * There is a finding with a status of NEW
9
- * * It has severity of HIGH or CRITICAL
10
- * * It is in a FAILED state
11
- */
12
- class DigitrafficSecurityRule extends aws_events_1.Rule {
13
- constructor(scope, topic) {
14
- const ruleName = 'SecurityHubRule';
15
- super(scope, ruleName, {
16
- ruleName,
17
- eventPattern: {
18
- source: ['aws.securityhub'],
19
- detailType: ["Security Hub Findings - Imported"],
20
- detail: {
21
- findings: {
22
- "Compliance": {
23
- "Status": ["FAILED"],
24
- },
25
- "Workflow": {
26
- "Status": ["NEW"],
27
- },
28
- "Severity": {
29
- "Label": ["HIGH", "CRITICAL"],
30
- },
31
- },
32
- },
33
- },
34
- });
35
- this.addTarget(new aws_events_targets_1.SnsTopic(topic));
36
- }
37
- }
38
- exports.DigitrafficSecurityRule = DigitrafficSecurityRule;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvaW5mcmEvc2VjdXJpdHktcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1REFBNEM7QUFFNUMsdUVBQXdEO0FBRXhEOzs7OztHQUtHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxpQkFBSTtJQUM3QyxZQUFZLEtBQWdCLEVBQUUsS0FBYTtRQUN2QyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztRQUNuQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtZQUNuQixRQUFRO1lBQ1IsWUFBWSxFQUFFO2dCQUNWLE1BQU0sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUMzQixVQUFVLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztnQkFDaEQsTUFBTSxFQUFFO29CQUNKLFFBQVEsRUFBRTt3QkFDTixZQUFZLEVBQUU7NEJBQ1YsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO3lCQUN2Qjt3QkFDRCxVQUFVLEVBQUU7NEJBQ1IsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO3lCQUNwQjt3QkFDRCxVQUFVLEVBQUU7NEJBQ1IsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQzt5QkFDaEM7cUJBQ0o7aUJBQ0o7YUFDSjtTQUNKLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSw2QkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBMUJELDBEQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtSdWxlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHtJVG9waWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc25zXCI7XG5pbXBvcnQge1Nuc1RvcGljfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCI7XG5cbi8qKlxuICogQXV0b21hdGljIHJ1bGUgZm9yIFNlY3VyaXR5IEh1Yi4gIFNlbmQgbm90aWZpY2F0aW9uIHRvIGdpdmVuIHRvcGljIGlmIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcHBseTpcbiAqICogVGhlcmUgaXMgYSBmaW5kaW5nIHdpdGggYSBzdGF0dXMgb2YgTkVXXG4gKiAqIEl0IGhhcyBzZXZlcml0eSBvZiBISUdIIG9yIENSSVRJQ0FMXG4gKiAqIEl0IGlzIGluIGEgRkFJTEVEIHN0YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY1NlY3VyaXR5UnVsZSBleHRlbmRzIFJ1bGUge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIHRvcGljOiBJVG9waWMpIHtcbiAgICAgICAgY29uc3QgcnVsZU5hbWUgPSAnU2VjdXJpdHlIdWJSdWxlJztcbiAgICAgICAgc3VwZXIoc2NvcGUsIHJ1bGVOYW1lLCB7XG4gICAgICAgICAgICBydWxlTmFtZSxcbiAgICAgICAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogWydhd3Muc2VjdXJpdHlodWInXSxcbiAgICAgICAgICAgICAgICBkZXRhaWxUeXBlOiBbXCJTZWN1cml0eSBIdWIgRmluZGluZ3MgLSBJbXBvcnRlZFwiXSxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgZmluZGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQ29tcGxpYW5jZVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGF0dXNcIjogW1wiRkFJTEVEXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiV29ya2Zsb3dcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhdHVzXCI6IFtcIk5FV1wiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlNldmVyaXR5XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkxhYmVsXCI6IFtcIkhJR0hcIiwgXCJDUklUSUNBTFwiXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWRkVGFyZ2V0KG5ldyBTbnNUb3BpYyh0b3BpYykpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +0,0 @@
1
- import { RequestValidator, Resource } from "aws-cdk-lib/aws-apigateway";
2
- import { Queue } from "aws-cdk-lib/aws-sqs";
3
- import { IModel } from "aws-cdk-lib/aws-apigateway/lib/model";
4
- import { Construct } from "constructs";
5
- export declare function attachQueueToApiGatewayResource(stack: Construct, queue: Queue, resource: Resource, requestValidator: RequestValidator, resourceName: string, apiKeyRequired: boolean, requestModels?: {
6
- [param: string]: IModel;
7
- }): void;
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.attachQueueToApiGatewayResource = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
6
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
- function attachQueueToApiGatewayResource(stack, queue, resource, requestValidator, resourceName, apiKeyRequired, requestModels) {
8
- // role for API Gateway
9
- const apiGwRole = new aws_iam_1.Role(stack, `${resourceName}APIGatewayToSQSRole`, {
10
- assumedBy: new aws_iam_1.ServicePrincipal('apigateway.amazonaws.com'),
11
- });
12
- // grants API Gateway the right to send SQS messages
13
- apiGwRole.addToPolicy(new aws_iam_1.PolicyStatement({
14
- resources: [
15
- queue.queueArn,
16
- ],
17
- actions: [
18
- 'sqs:SendMessage',
19
- ],
20
- }));
21
- // grants API Gateway the right write CloudWatch Logs
22
- apiGwRole.addToPolicy(new aws_iam_1.PolicyStatement({
23
- resources: [
24
- '*',
25
- ],
26
- actions: [
27
- 'logs:CreateLogGroup',
28
- 'logs:CreateLogStream',
29
- 'logs:DescribeLogGroups',
30
- 'logs:DescribeLogStreams',
31
- 'logs:PutLogEvents',
32
- 'logs:GetLogEvents',
33
- 'logs:FilterLogEvents',
34
- ],
35
- }));
36
- // create an integration between API Gateway and an SQS queue
37
- const fifoMessageGroupId = queue.fifo ? '&MessageGroupId=AlwaysSameFifoGroup' : '';
38
- const sqsIntegration = new aws_apigateway_1.AwsIntegration({
39
- service: 'sqs',
40
- integrationHttpMethod: 'POST',
41
- options: {
42
- passthroughBehavior: aws_apigateway_1.PassthroughBehavior.NEVER,
43
- credentialsRole: apiGwRole,
44
- requestParameters: {
45
- // SQS requires the Content-Type of the HTTP request to be application/x-www-form-urlencoded
46
- 'integration.request.header.Content-Type': "'application/x-www-form-urlencoded'",
47
- },
48
- requestTemplates: {
49
- // map the JSON request to a form parameter, FIFO needs also MessageGroupId
50
- // https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html
51
- 'application/json': `Action=SendMessage${fifoMessageGroupId}&MessageBody=$util.urlEncode($input.body)`,
52
- },
53
- // these are required by SQS
54
- integrationResponses: [
55
- {
56
- statusCode: '200',
57
- responseTemplates: {
58
- 'text/html': 'Success',
59
- },
60
- },
61
- {
62
- statusCode: '500',
63
- responseTemplates: {
64
- 'text/html': 'Error',
65
- },
66
- selectionPattern: '500',
67
- },
68
- ],
69
- },
70
- path: `${aws_cdk_lib_1.Aws.ACCOUNT_ID}/${queue.queueName}`,
71
- });
72
- resource.addMethod('POST', sqsIntegration, {
73
- requestValidator,
74
- apiKeyRequired,
75
- requestModels: requestModels ?? {},
76
- methodResponses: [
77
- {
78
- statusCode: '200',
79
- responseParameters: {
80
- 'method.response.header.Content-Type': true,
81
- },
82
- },
83
- {
84
- statusCode: '500',
85
- responseParameters: {
86
- 'method.response.header.Content-Type': true,
87
- },
88
- },
89
- ],
90
- });
91
- }
92
- exports.attachQueueToApiGatewayResource = attachQueueToApiGatewayResource;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWludGVncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zcXMtaW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdDO0FBQ2hDLCtEQUEyRztBQUUzRyxpREFBNEU7QUFJNUUsU0FBZ0IsK0JBQStCLENBQzNDLEtBQWdCLEVBQ2hCLEtBQVksRUFDWixRQUFrQixFQUNsQixnQkFBa0MsRUFDbEMsWUFBb0IsRUFDcEIsY0FBdUIsRUFDdkIsYUFBeUM7SUFFekMsdUJBQXVCO0lBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksY0FBSSxDQUFDLEtBQUssRUFBRSxHQUFHLFlBQVkscUJBQXFCLEVBQUU7UUFDcEUsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsMEJBQTBCLENBQUM7S0FDOUQsQ0FBQyxDQUFDO0lBQ0gsb0RBQW9EO0lBQ3BELFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSx5QkFBZSxDQUFDO1FBQ3RDLFNBQVMsRUFBRTtZQUNQLEtBQUssQ0FBQyxRQUFRO1NBQ2pCO1FBQ0QsT0FBTyxFQUFFO1lBQ0wsaUJBQWlCO1NBQ3BCO0tBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixxREFBcUQ7SUFDckQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLHlCQUFlLENBQUM7UUFDdEMsU0FBUyxFQUFFO1lBQ1AsR0FBRztTQUNOO1FBQ0QsT0FBTyxFQUFFO1lBQ0wscUJBQXFCO1lBQ3JCLHNCQUFzQjtZQUN0Qix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsc0JBQXNCO1NBQ3pCO0tBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSiw2REFBNkQ7SUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25GLE1BQU0sY0FBYyxHQUFHLElBQUksK0JBQWMsQ0FBQztRQUN0QyxPQUFPLEVBQUUsS0FBSztRQUNkLHFCQUFxQixFQUFFLE1BQU07UUFDN0IsT0FBTyxFQUFFO1lBQ0wsbUJBQW1CLEVBQUUsb0NBQW1CLENBQUMsS0FBSztZQUM5QyxlQUFlLEVBQUUsU0FBUztZQUMxQixpQkFBaUIsRUFBRTtnQkFDZiw0RkFBNEY7Z0JBQzVGLHlDQUF5QyxFQUFFLHFDQUFxQzthQUNuRjtZQUNELGdCQUFnQixFQUFFO2dCQUNkLDJFQUEyRTtnQkFDM0UsNkZBQTZGO2dCQUM3RixrQkFBa0IsRUFBRSxxQkFBcUIsa0JBQWtCLDJDQUEyQzthQUN6RztZQUNELDRCQUE0QjtZQUM1QixvQkFBb0IsRUFBRTtnQkFDbEI7b0JBQ0ksVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLGlCQUFpQixFQUFFO3dCQUNmLFdBQVcsRUFBRSxTQUFTO3FCQUN6QjtpQkFDSjtnQkFDRDtvQkFDSSxVQUFVLEVBQUUsS0FBSztvQkFDakIsaUJBQWlCLEVBQUU7d0JBQ2YsV0FBVyxFQUFFLE9BQU87cUJBQ3ZCO29CQUNELGdCQUFnQixFQUFFLEtBQUs7aUJBQzFCO2FBRUo7U0FFSjtRQUNELElBQUksRUFBRSxHQUFHLGlCQUFHLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7S0FDL0MsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFO1FBQ3ZDLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsYUFBYSxFQUFFLGFBQWEsSUFBSSxFQUFFO1FBQ2xDLGVBQWUsRUFBRTtZQUNiO2dCQUNJLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixrQkFBa0IsRUFBRTtvQkFDaEIscUNBQXFDLEVBQUUsSUFBSTtpQkFDOUM7YUFDSjtZQUNEO2dCQUNJLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixrQkFBa0IsRUFBRTtvQkFDaEIscUNBQXFDLEVBQUUsSUFBSTtpQkFDOUM7YUFDSjtTQUNKO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQTlGRCwwRUE4RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F3c30gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0F3c0ludGVncmF0aW9uLCBQYXNzdGhyb3VnaEJlaGF2aW9yLCBSZXF1ZXN0VmFsaWRhdG9yLCBSZXNvdXJjZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQge1F1ZXVlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHtQb2xpY3lTdGF0ZW1lbnQsIFJvbGUsIFNlcnZpY2VQcmluY2lwYWx9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge0lNb2RlbH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5L2xpYi9tb2RlbFwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hRdWV1ZVRvQXBpR2F0ZXdheVJlc291cmNlKFxuICAgIHN0YWNrOiBDb25zdHJ1Y3QsXG4gICAgcXVldWU6IFF1ZXVlLFxuICAgIHJlc291cmNlOiBSZXNvdXJjZSxcbiAgICByZXF1ZXN0VmFsaWRhdG9yOiBSZXF1ZXN0VmFsaWRhdG9yLFxuICAgIHJlc291cmNlTmFtZTogc3RyaW5nLFxuICAgIGFwaUtleVJlcXVpcmVkOiBib29sZWFuLFxuICAgIHJlcXVlc3RNb2RlbHM/OiB7W3BhcmFtOiBzdHJpbmddOiBJTW9kZWx9LFxuKSB7XG4gICAgLy8gcm9sZSBmb3IgQVBJIEdhdGV3YXlcbiAgICBjb25zdCBhcGlHd1JvbGUgPSBuZXcgUm9sZShzdGFjaywgYCR7cmVzb3VyY2VOYW1lfUFQSUdhdGV3YXlUb1NRU1JvbGVgLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuICAgIC8vIGdyYW50cyBBUEkgR2F0ZXdheSB0aGUgcmlnaHQgdG8gc2VuZCBTUVMgbWVzc2FnZXNcbiAgICBhcGlHd1JvbGUuYWRkVG9Qb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgcXVldWUucXVldWVBcm4sXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdzcXM6U2VuZE1lc3NhZ2UnLFxuICAgICAgICBdLFxuICAgIH0pKTtcbiAgICAvLyBncmFudHMgQVBJIEdhdGV3YXkgdGhlIHJpZ2h0IHdyaXRlIENsb3VkV2F0Y2ggTG9nc1xuICAgIGFwaUd3Um9sZS5hZGRUb1BvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAnKicsXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdsb2dzOkNyZWF0ZUxvZ0dyb3VwJyxcbiAgICAgICAgICAgICdsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsXG4gICAgICAgICAgICAnbG9nczpEZXNjcmliZUxvZ0dyb3VwcycsXG4gICAgICAgICAgICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAgICAgICAgICAgJ2xvZ3M6UHV0TG9nRXZlbnRzJyxcbiAgICAgICAgICAgICdsb2dzOkdldExvZ0V2ZW50cycsXG4gICAgICAgICAgICAnbG9nczpGaWx0ZXJMb2dFdmVudHMnLFxuICAgICAgICBdLFxuICAgIH0pKTtcbiAgICAvLyBjcmVhdGUgYW4gaW50ZWdyYXRpb24gYmV0d2VlbiBBUEkgR2F0ZXdheSBhbmQgYW4gU1FTIHF1ZXVlXG4gICAgY29uc3QgZmlmb01lc3NhZ2VHcm91cElkID0gcXVldWUuZmlmbyA/ICcmTWVzc2FnZUdyb3VwSWQ9QWx3YXlzU2FtZUZpZm9Hcm91cCcgOiAnJztcbiAgICBjb25zdCBzcXNJbnRlZ3JhdGlvbiA9IG5ldyBBd3NJbnRlZ3JhdGlvbih7XG4gICAgICAgIHNlcnZpY2U6ICdzcXMnLFxuICAgICAgICBpbnRlZ3JhdGlvbkh0dHBNZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogUGFzc3Rocm91Z2hCZWhhdmlvci5ORVZFUixcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzUm9sZTogYXBpR3dSb2xlLFxuICAgICAgICAgICAgcmVxdWVzdFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAvLyBTUVMgcmVxdWlyZXMgdGhlIENvbnRlbnQtVHlwZSBvZiB0aGUgSFRUUCByZXF1ZXN0IHRvIGJlIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICAgICAgICAgICAgICAgICdpbnRlZ3JhdGlvbi5yZXF1ZXN0LmhlYWRlci5Db250ZW50LVR5cGUnOiBcIidhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdFRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgIC8vIG1hcCB0aGUgSlNPTiByZXF1ZXN0IHRvIGEgZm9ybSBwYXJhbWV0ZXIsIEZJRk8gbmVlZHMgYWxzbyBNZXNzYWdlR3JvdXBJZFxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NTaW1wbGVRdWV1ZVNlcnZpY2UvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfU2VuZE1lc3NhZ2UuaHRtbFxuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogYEFjdGlvbj1TZW5kTWVzc2FnZSR7Zmlmb01lc3NhZ2VHcm91cElkfSZNZXNzYWdlQm9keT0kdXRpbC51cmxFbmNvZGUoJGlucHV0LmJvZHkpYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyB0aGVzZSBhcmUgcmVxdWlyZWQgYnkgU1FTXG4gICAgICAgICAgICBpbnRlZ3JhdGlvblJlc3BvbnNlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogJzIwMCcsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAndGV4dC9odG1sJzogJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiAnNTAwJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0bWwnOiAnRXJyb3InLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25QYXR0ZXJuOiAnNTAwJyxcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBdLFxuXG4gICAgICAgIH0sXG4gICAgICAgIHBhdGg6IGAke0F3cy5BQ0NPVU5UX0lEfS8ke3F1ZXVlLnF1ZXVlTmFtZX1gLFxuICAgIH0pO1xuICAgIHJlc291cmNlLmFkZE1ldGhvZCgnUE9TVCcsIHNxc0ludGVncmF0aW9uLCB7XG4gICAgICAgIHJlcXVlc3RWYWxpZGF0b3IsXG4gICAgICAgIGFwaUtleVJlcXVpcmVkLFxuICAgICAgICByZXF1ZXN0TW9kZWxzOiByZXF1ZXN0TW9kZWxzID8/IHt9LFxuICAgICAgICBtZXRob2RSZXNwb25zZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiAnMjAwJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ21ldGhvZC5yZXNwb25zZS5oZWFkZXIuQ29udGVudC1UeXBlJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGF0dXNDb2RlOiAnNTAwJyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ21ldGhvZC5yZXNwb25zZS5oZWFkZXIuQ29udGVudC1UeXBlJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICB9KTtcbn1cbiJdfQ==
@@ -1,16 +0,0 @@
1
- import { Queue, QueueProps } from "aws-cdk-lib/aws-sqs";
2
- import { Construct } from "constructs";
3
- import { DigitrafficStack } from "./stack/stack";
4
- /**
5
- * Construct for creating SQS-queues.
6
- *
7
- * If you don't config your own deadLetterQueue, this will create a dlq for you, also a lambda function, a s3 bucket
8
- * and an alarm for the queue. Anything that goes to the dlq will be written into the bucket and the alarm is activated.
9
- */
10
- export declare class DigitrafficSqsQueue extends Queue {
11
- constructor(scope: Construct, name: string, props: QueueProps);
12
- static create(stack: DigitrafficStack, name: string, props: QueueProps): DigitrafficSqsQueue;
13
- }
14
- export declare class DigitrafficDLQueue {
15
- static create(stack: DigitrafficStack, name: string): DigitrafficSqsQueue;
16
- }
@@ -1,130 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficDLQueue = exports.DigitrafficSqsQueue = void 0;
4
- const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
5
- const aws_cdk_lib_1 = require("aws-cdk-lib");
6
- const aws_s3_1 = require("aws-cdk-lib/aws-s3");
7
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
8
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
9
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
10
- const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources");
11
- const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
12
- const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
13
- const monitoredfunction_1 = require("./stack/monitoredfunction");
14
- /**
15
- * Construct for creating SQS-queues.
16
- *
17
- * If you don't config your own deadLetterQueue, this will create a dlq for you, also a lambda function, a s3 bucket
18
- * and an alarm for the queue. Anything that goes to the dlq will be written into the bucket and the alarm is activated.
19
- */
20
- class DigitrafficSqsQueue extends aws_sqs_1.Queue {
21
- constructor(scope, name, props) {
22
- super(scope, name, props);
23
- }
24
- static create(stack, name, props) {
25
- const queueName = `${stack.configuration.shortName}-${name}-Queue`;
26
- const queueProps = { ...props, ...{
27
- encryption: aws_sqs_1.QueueEncryption.KMS_MANAGED,
28
- queueName,
29
- deadLetterQueue: props.deadLetterQueue || {
30
- maxReceiveCount: 2,
31
- queue: DigitrafficDLQueue.create(stack, name),
32
- },
33
- } };
34
- return new DigitrafficSqsQueue(stack, queueName, queueProps);
35
- }
36
- }
37
- exports.DigitrafficSqsQueue = DigitrafficSqsQueue;
38
- class DigitrafficDLQueue {
39
- static create(stack, name) {
40
- const dlqName = `${stack.configuration.shortName}-${name}-DLQ`;
41
- const dlq = new DigitrafficSqsQueue(stack, dlqName, {
42
- queueName: dlqName,
43
- visibilityTimeout: aws_cdk_lib_1.Duration.seconds(60),
44
- encryption: aws_sqs_1.QueueEncryption.KMS_MANAGED,
45
- });
46
- const dlqBucket = new aws_s3_1.Bucket(stack, `${dlqName}-Bucket`, {
47
- blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
48
- });
49
- const dlqFunctionName = `${dlqName}-Function`;
50
- const lambda = monitoredfunction_1.MonitoredFunction.create(stack, dlqFunctionName, {
51
- runtime: aws_lambda_1.Runtime.NODEJS_14_X,
52
- logRetention: aws_logs_1.RetentionDays.ONE_YEAR,
53
- functionName: dlqFunctionName,
54
- code: getDlqCode(dlqBucket.bucketName),
55
- timeout: aws_cdk_lib_1.Duration.seconds(10),
56
- handler: 'index.handler',
57
- memorySize: 128,
58
- reservedConcurrentExecutions: 1,
59
- });
60
- const statement = new aws_iam_1.PolicyStatement();
61
- statement.addActions('s3:PutObject');
62
- statement.addActions('s3:PutObjectAcl');
63
- statement.addResources(dlqBucket.bucketArn + '/*');
64
- lambda.addToRolePolicy(statement);
65
- lambda.addEventSource(new aws_lambda_event_sources_1.SqsEventSource(dlq));
66
- addDLQAlarm(stack, dlqName, dlq);
67
- return dlq;
68
- }
69
- }
70
- exports.DigitrafficDLQueue = DigitrafficDLQueue;
71
- function addDLQAlarm(stack, dlqName, dlq) {
72
- const alarmName = `${dlqName}-Alarm`;
73
- dlq.metricNumberOfMessagesReceived({
74
- period: aws_cdk_lib_1.Duration.minutes(5),
75
- }).createAlarm(stack, alarmName, {
76
- alarmName,
77
- threshold: 0,
78
- evaluationPeriods: 1,
79
- treatMissingData: aws_cloudwatch_1.TreatMissingData.NOT_BREACHING,
80
- comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_THRESHOLD,
81
- }).addAlarmAction(new aws_cloudwatch_actions_1.SnsAction(stack.warningTopic));
82
- }
83
- function getDlqCode(bName) {
84
- const functionBody = DLQ_LAMBDA_CODE
85
- .replace("__bucketName__", bName)
86
- .replace("__upload__", uploadToS3.toString())
87
- .replace("__doUpload__", doUpload.toString())
88
- .replace("__handler__", createHandler().toString().substring(23)); // remove function handler() from signature
89
- return new aws_lambda_1.InlineCode(functionBody);
90
- }
91
- async function uploadToS3(s3, bName, body, objectName) {
92
- try {
93
- console.info('writing %s to %s', objectName, bName);
94
- await doUpload(s3, bName, body, objectName);
95
- }
96
- catch (error) {
97
- console.warn(error);
98
- console.warn('method=uploadToS3 retrying upload to bucket %s', bName);
99
- try {
100
- await doUpload(s3, bName, body, objectName);
101
- }
102
- catch (e2) {
103
- console.error('method=uploadToS3 failed retrying upload to bucket %s', bName);
104
- }
105
- }
106
- }
107
- function doUpload(s3, bName, Body, Key) {
108
- return s3.upload({
109
- Bucket: bName, Body, Key,
110
- }).promise();
111
- }
112
- // bucketName is unused, will be overridden in the actual lambda code below
113
- const bucketName = '';
114
- function createHandler() {
115
- return async function handler(event) {
116
- // eslint-disable-next-line @typescript-eslint/no-var-requires
117
- const AWS = require('aws-sdk');
118
- const millis = new Date().getTime();
119
- await Promise.all(event.Records.map((e, idx) => uploadToS3(new AWS.S3(), bucketName, e.body, `dlq-${millis}-${idx}.json`)));
120
- };
121
- }
122
- const DLQ_LAMBDA_CODE = `const AWS = require('aws-sdk');
123
- const bucketName = "__bucketName__";
124
-
125
- __upload__
126
- __doUpload__
127
-
128
- exports.handler = async (event) => __handler__
129
- `;
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLXF1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zcXMtcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXVFO0FBQ3ZFLDZDQUFxQztBQUNyQywrQ0FBNkQ7QUFDN0QsaURBQW9EO0FBQ3BELHVEQUEyRDtBQUMzRCxtREFBbUQ7QUFDbkQsbUZBQW9FO0FBQ3BFLCtEQUFnRjtBQUNoRiwrRUFBNkQ7QUFNN0QsaUVBQTREO0FBRTVEOzs7OztHQUtHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxlQUFLO0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxJQUFZLEVBQUUsS0FBaUI7UUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUIsRUFBRSxJQUFZLEVBQUUsS0FBaUI7UUFDbEUsTUFBTSxTQUFTLEdBQUcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsSUFBSSxJQUFJLFFBQVEsQ0FBQztRQUNuRSxNQUFNLFVBQVUsR0FBRyxFQUFDLEdBQUcsS0FBSyxFQUFFLEdBQUc7Z0JBQzdCLFVBQVUsRUFBRSx5QkFBZSxDQUFDLFdBQVc7Z0JBQ3ZDLFNBQVM7Z0JBQ1QsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlLElBQUk7b0JBQ3RDLGVBQWUsRUFBRSxDQUFDO29CQUNsQixLQUFLLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7aUJBQ2hEO2FBQ0osRUFBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNKO0FBbEJELGtEQWtCQztBQUVELE1BQWEsa0JBQWtCO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUIsRUFBRSxJQUFZ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QUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUUsQ0FDOUQsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLGVBQWUsR0FBRzs7Ozs7OztDQU92QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtRdWV1ZSwgUXVldWVFbmNyeXB0aW9uLCBRdWV1ZVByb3BzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0Jsb2NrUHVibGljQWNjZXNzLCBCdWNrZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7UG9saWN5U3RhdGVtZW50fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtJbmxpbmVDb2RlLCBSdW50aW1lfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtSZXRlbnRpb25EYXlzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7U3FzRXZlbnRTb3VyY2V9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXNcIjtcbmltcG9ydCB7Q29tcGFyaXNvbk9wZXJhdG9yLCBUcmVhdE1pc3NpbmdEYXRhfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7U25zQWN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uc1wiO1xuaW1wb3J0IHtNYW5hZ2VkVXBsb2FkfSBmcm9tIFwiYXdzLXNkay9jbGllbnRzL3MzXCI7XG5pbXBvcnQge1MzfSBmcm9tIFwiYXdzLXNka1wiO1xuaW1wb3J0IHtTUVNFdmVudCwgU1FTSGFuZGxlciwgU1FTUmVjb3JkfSBmcm9tIFwiYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0RpZ2l0cmFmZmljU3RhY2t9IGZyb20gXCIuL3N0YWNrL3N0YWNrXCI7XG5pbXBvcnQge01vbml0b3JlZEZ1bmN0aW9ufSBmcm9tIFwiLi9zdGFjay9tb25pdG9yZWRmdW5jdGlvblwiO1xuXG4vKipcbiAqIENvbnN0cnVjdCBmb3IgY3JlYXRpbmcgU1FTLXF1ZXVlcy5cbiAqXG4gKiBJZiB5b3UgZG9uJ3QgY29uZmlnIHlvdXIgb3duIGRlYWRMZXR0ZXJRdWV1ZSwgdGhpcyB3aWxsIGNyZWF0ZSBhIGRscSBmb3IgeW91LCBhbHNvIGEgbGFtYmRhIGZ1bmN0aW9uLCBhIHMzIGJ1Y2tldFxuICogYW5kIGFuIGFsYXJtIGZvciB0aGUgcXVldWUuICBBbnl0aGluZyB0aGF0IGdvZXMgdG8gdGhlIGRscSB3aWxsIGJlIHdyaXR0ZW4gaW50byB0aGUgYnVja2V0IGFuZCB0aGUgYWxhcm0gaXMgYWN0aXZhdGVkLlxuICovXG5leHBvcnQgY2xhc3MgRGlnaXRyYWZmaWNTcXNRdWV1ZSBleHRlbmRzIFF1ZXVlIHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBRdWV1ZVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZShzdGFjazogRGlnaXRyYWZmaWNTdGFjaywgbmFtZTogc3RyaW5nLCBwcm9wczogUXVldWVQcm9wcyk6IERpZ2l0cmFmZmljU3FzUXVldWUge1xuICAgICAgICBjb25zdCBxdWV1ZU5hbWUgPSBgJHtzdGFjay5jb25maWd1cmF0aW9uLnNob3J0TmFtZX0tJHtuYW1lfS1RdWV1ZWA7XG4gICAgICAgIGNvbnN0IHF1ZXVlUHJvcHMgPSB7Li4ucHJvcHMsIC4uLntcbiAgICAgICAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgICAgICAgIHF1ZXVlTmFtZSxcbiAgICAgICAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogcHJvcHMuZGVhZExldHRlclF1ZXVlIHx8IHtcbiAgICAgICAgICAgICAgICBtYXhSZWNlaXZlQ291bnQ6IDIsXG4gICAgICAgICAgICAgICAgcXVldWU6IERpZ2l0cmFmZmljRExRdWV1ZS5jcmVhdGUoc3RhY2ssIG5hbWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfX07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBEaWdpdHJhZmZpY1Nxc1F1ZXVlKHN0YWNrLCBxdWV1ZU5hbWUsIHF1ZXVlUHJvcHMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpZ2l0cmFmZmljRExRdWV1ZSB7XG4gICAgc3RhdGljIGNyZWF0ZShzdGFjazogRGlnaXRyYWZmaWNTdGFjaywgbmFtZTogc3RyaW5nKTogRGlnaXRyYWZmaWNTcXNRdWV1ZSB7XG4gICAgICAgIGNvbnN0IGRscU5hbWUgPSBgJHtzdGFjay5jb25maWd1cmF0aW9uLnNob3J0TmFtZX0tJHtuYW1lfS1ETFFgO1xuXG4gICAgICAgIGNvbnN0IGRscSA9IG5ldyBEaWdpdHJhZmZpY1Nxc1F1ZXVlKHN0YWNrLCBkbHFOYW1lLCB7XG4gICAgICAgICAgICBxdWV1ZU5hbWU6IGRscU5hbWUsXG4gICAgICAgICAgICB2aXNpYmlsaXR5VGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICAgICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TX01BTkFHRUQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRscUJ1Y2tldCA9IG5ldyBCdWNrZXQoc3RhY2ssIGAke2RscU5hbWV9LUJ1Y2tldGAsIHtcbiAgICAgICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRscUZ1bmN0aW9uTmFtZSA9IGAke2RscU5hbWV9LUZ1bmN0aW9uYDtcbiAgICAgICAgY29uc3QgbGFtYmRhID0gTW9uaXRvcmVkRnVuY3Rpb24uY3JlYXRlKHN0YWNrLCBkbHFGdW5jdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gICAgICAgICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1lFQVIsXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IGRscUZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgIGNvZGU6IGdldERscUNvZGUoZGxxQnVja2V0LmJ1Y2tldE5hbWUpLFxuICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgICAgICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICAgICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICAgICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiAxLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBuZXcgUG9saWN5U3RhdGVtZW50KCk7XG4gICAgICAgIHN0YXRlbWVudC5hZGRBY3Rpb25zKCdzMzpQdXRPYmplY3QnKTtcbiAgICAgICAgc3RhdGVtZW50LmFkZEFjdGlvbnMoJ3MzOlB1dE9iamVjdEFjbCcpO1xuICAgICAgICBzdGF0ZW1lbnQuYWRkUmVzb3VyY2VzKGRscUJ1Y2tldC5idWNrZXRBcm4gKyAnLyonKTtcblxuICAgICAgICBsYW1iZGEuYWRkVG9Sb2xlUG9saWN5KHN0YXRlbWVudCk7XG4gICAgICAgIGxhbWJkYS5hZGRFdmVudFNvdXJjZShuZXcgU3FzRXZlbnRTb3VyY2UoZGxxKSk7XG5cbiAgICAgICAgYWRkRExRQWxhcm0oc3RhY2ssIGRscU5hbWUsIGRscSk7XG5cbiAgICAgICAgcmV0dXJuIGRscTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFkZERMUUFsYXJtKHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrLCBkbHFOYW1lOiBzdHJpbmcsIGRscTogUXVldWUpIHtcbiAgICBjb25zdCBhbGFybU5hbWUgPSBgJHtkbHFOYW1lfS1BbGFybWA7XG4gICAgZGxxLm1ldHJpY051bWJlck9mTWVzc2FnZXNSZWNlaXZlZCh7XG4gICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICB9KS5jcmVhdGVBbGFybShzdGFjaywgYWxhcm1OYW1lLCB7XG4gICAgICAgIGFsYXJtTmFtZSxcbiAgICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgIH0pLmFkZEFsYXJtQWN0aW9uKG5ldyBTbnNBY3Rpb24oc3RhY2sud2FybmluZ1RvcGljKSk7XG59XG5cbmZ1bmN0aW9uIGdldERscUNvZGUoYk5hbWU6IHN0cmluZyk6IElubGluZUNvZGUge1xuICAgIGNvbnN0IGZ1bmN0aW9uQm9keSA9IERMUV9MQU1CREFfQ09ERVxuICAgICAgICAucmVwbGFjZShcIl9fYnVja2V0TmFtZV9fXCIsIGJOYW1lKVxuICAgICAgICAucmVwbGFjZShcIl9fdXBsb2FkX19cIiwgdXBsb2FkVG9TMy50b1N0cmluZygpKVxuICAgICAgICAucmVwbGFjZShcIl9fZG9VcGxvYWRfX1wiLCBkb1VwbG9hZC50b1N0cmluZygpKVxuICAgICAgICAucmVwbGFjZShcIl9faGFuZGxlcl9fXCIsIGNyZWF0ZUhhbmRsZXIoKS50b1N0cmluZygpLnN1YnN0cmluZygyMykpOyAvLyByZW1vdmUgZnVuY3Rpb24gaGFuZGxlcigpIGZyb20gc2lnbmF0dXJlXG5cbiAgICByZXR1cm4gbmV3IElubGluZUNvZGUoZnVuY3Rpb25Cb2R5KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBsb2FkVG9TMyhzMzogUzMsIGJOYW1lOiBzdHJpbmcsIGJvZHk6IHN0cmluZywgb2JqZWN0TmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc29sZS5pbmZvKCd3cml0aW5nICVzIHRvICVzJywgb2JqZWN0TmFtZSwgYk5hbWUpO1xuICAgICAgICBhd2FpdCBkb1VwbG9hZChzMywgYk5hbWUsIGJvZHksIG9iamVjdE5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICAgIGNvbnNvbGUud2FybignbWV0aG9kPXVwbG9hZFRvUzMgcmV0cnlpbmcgdXBsb2FkIHRvIGJ1Y2tldCAlcycsIGJOYW1lKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGRvVXBsb2FkKHMzLCBiTmFtZSwgYm9keSwgb2JqZWN0TmFtZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9dXBsb2FkVG9TMyBmYWlsZWQgcmV0cnlpbmcgdXBsb2FkIHRvIGJ1Y2tldCAlcycsIGJOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZG9VcGxvYWQoczM6IFMzLCBiTmFtZTogc3RyaW5nLCBCb2R5OiBzdHJpbmcsIEtleTogc3RyaW5nKTogUHJvbWlzZTxNYW5hZ2VkVXBsb2FkLlNlbmREYXRhPiB7XG4gICAgcmV0dXJuIHMzLnVwbG9hZCh7XG4gICAgICAgIEJ1Y2tldDogYk5hbWUsIEJvZHksIEtleSxcbiAgICB9KS5wcm9taXNlKCk7XG59XG5cbi8vIGJ1Y2tldE5hbWUgaXMgdW51c2VkLCB3aWxsIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGFjdHVhbCBsYW1iZGEgY29kZSBiZWxvd1xuY29uc3QgYnVja2V0TmFtZSA9ICcnO1xuXG5mdW5jdGlvbiBjcmVhdGVIYW5kbGVyKCk6IFNRU0hhbmRsZXIge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBTUVNFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgICBjb25zdCBBV1MgPSByZXF1aXJlKCdhd3Mtc2RrJyk7XG5cbiAgICAgICAgY29uc3QgbWlsbGlzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGV2ZW50LlJlY29yZHMubWFwKChlOiBTUVNSZWNvcmQsIGlkeDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgdXBsb2FkVG9TMyhuZXcgQVdTLlMzKCksIGJ1Y2tldE5hbWUsIGUuYm9keSwgYGRscS0ke21pbGxpc30tJHtpZHh9Lmpzb25gKSkpO1xuICAgIH07XG59XG5cbmNvbnN0IERMUV9MQU1CREFfQ09ERSA9IGBjb25zdCBBV1MgPSByZXF1aXJlKCdhd3Mtc2RrJyk7XG5jb25zdCBidWNrZXROYW1lID0gXCJfX2J1Y2tldE5hbWVfX1wiO1xuXG5fX3VwbG9hZF9fXG5fX2RvVXBsb2FkX19cblxuZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiBfX2hhbmRsZXJfX1xuYDtcbiJdfQ==
@@ -1,72 +0,0 @@
1
- import { Architecture, Code, FunctionProps, Runtime } from 'aws-cdk-lib/aws-lambda';
2
- import { ISecurityGroup, IVpc, SubnetSelection } from "aws-cdk-lib/aws-ec2";
3
- import { Role } from 'aws-cdk-lib/aws-iam';
4
- import { DigitrafficStack } from "./stack";
5
- import { MonitoredFunctionAlarmProps } from "./monitoredfunction";
6
- export declare type LambdaEnvironment = Record<string, string>;
7
- export declare type DBLambdaEnvironment = LambdaEnvironment & {
8
- SECRET_ID?: string;
9
- DB_APPLICATION: string;
10
- };
11
- export interface LambdaConfiguration {
12
- vpcId: string;
13
- allowFromIpAddresses?: string[];
14
- privateSubnetIds: string[];
15
- availabilityZones: string[];
16
- lambdaDbSgId: string;
17
- dbProps?: DbProps;
18
- defaultLambdaDurationSeconds?: number;
19
- logsDestinationArn: string;
20
- memorySize?: number;
21
- runtime?: Runtime;
22
- }
23
- declare interface DbProps {
24
- username: string;
25
- password: string;
26
- uri?: string;
27
- ro_uri?: string;
28
- }
29
- export declare function databaseFunctionProps(stack: DigitrafficStack, environment: LambdaEnvironment, lambdaName: string, simpleLambdaName: string, config?: FunctionParameters): FunctionProps;
30
- export declare function lambdaFunctionProps(stack: DigitrafficStack, environment: LambdaEnvironment, lambdaName: string, simpleLambdaName: string, config?: FunctionParameters): FunctionProps;
31
- /**
32
- * Creates a base configuration for a Lambda that uses an RDS database
33
- * @param vpc "Private" Lambdas are associated with a VPC
34
- * @param lambdaDbSg Security Group shared by Lambda and RDS
35
- * @param props Database connection properties for the Lambda
36
- * @param config Lambda configuration
37
- */
38
- export declare function dbLambdaConfiguration(vpc: IVpc, lambdaDbSg: ISecurityGroup, props: LambdaConfiguration, config: FunctionParameters): FunctionProps;
39
- export declare function defaultLambdaConfiguration(config: FunctionParameters): FunctionProps;
40
- export interface FunctionParameters {
41
- memorySize?: number;
42
- timeout?: number;
43
- functionName?: string;
44
- code?: Code;
45
- handler?: string;
46
- readOnly?: boolean;
47
- environment?: {
48
- [key: string]: string;
49
- };
50
- reservedConcurrentExecutions?: number;
51
- role?: Role;
52
- vpc?: IVpc;
53
- vpcSubnets?: SubnetSelection;
54
- runtime?: Runtime;
55
- architecture?: Architecture;
56
- singleLambda?: boolean;
57
- }
58
- export declare type MonitoredFunctionParameters = {
59
- readonly memorySize?: number;
60
- readonly timeout?: number;
61
- readonly functionName?: string;
62
- readonly reservedConcurrentExecutions?: number;
63
- readonly role?: Role;
64
- readonly runtime?: Runtime;
65
- readonly architecture?: Architecture;
66
- readonly singleLambda?: boolean;
67
- readonly durationAlarmProps?: MonitoredFunctionAlarmProps;
68
- readonly durationWarningProps?: MonitoredFunctionAlarmProps;
69
- readonly errorAlarmProps?: MonitoredFunctionAlarmProps;
70
- readonly throttleAlarmProps?: MonitoredFunctionAlarmProps;
71
- };
72
- export {};