@orcabus/platform-cdk-constructs 0.0.68 → 0.0.69

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.
package/.jsii CHANGED
@@ -4142,6 +4142,16 @@
4142
4142
  },
4143
4143
  "symbolId": "ecs/index:"
4144
4144
  },
4145
+ "@orcabus/platform-cdk-constructs.eventbridgeRule": {
4146
+ "locationInModule": {
4147
+ "filename": "index.ts",
4148
+ "line": 23
4149
+ },
4150
+ "readme": {
4151
+ "markdown": "# EventBridge Rules\n\n## SfnSlackNotification\n\nThis CDK construct sends Slack notifications when your Step Functions state machine changes status.\n\n### Example\n\n```typescript\nnew SfnSlackNotification(this, \"SfnSlackNotification\", {\n stateMachine: myDev,\n eventStatus: [SfnEventStatus.SUCCEEDED],\n title: `JOB-A: ${EventField.fromPath(\"$.detail.input.jobId\")}`,\n message: [\n \"*Execution Details:*\",\n `• ARN: ${EventField.fromPath(\"$.detail.executionArn\")}`,\n `• Status: ${EventField.fromPath(\"$.detail.status\")}`,\n ],\n includeConsoleLink: true,\n});\n```\n\n### Notes\n\n- Use `EventField.fromPath(\"$.jsonpath\")` to include dynamic event data in your title or message.\n- `includeConsoleLink` adds a link to the AWS Console for the execution.\n"
4152
+ },
4153
+ "symbolId": "eventbridge-rules/index:"
4154
+ },
4145
4155
  "@orcabus/platform-cdk-constructs.lambda": {
4146
4156
  "locationInModule": {
4147
4157
  "filename": "index.ts",
@@ -5774,6 +5784,245 @@
5774
5784
  ],
5775
5785
  "symbolId": "ecs/index:FargateEcsTaskConstructProps"
5776
5786
  },
5787
+ "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnEventStatus": {
5788
+ "assembly": "@orcabus/platform-cdk-constructs",
5789
+ "docs": {
5790
+ "stability": "experimental"
5791
+ },
5792
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnEventStatus",
5793
+ "kind": "enum",
5794
+ "locationInModule": {
5795
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5796
+ "line": 14
5797
+ },
5798
+ "members": [
5799
+ {
5800
+ "docs": {
5801
+ "stability": "experimental"
5802
+ },
5803
+ "name": "RUNNING"
5804
+ },
5805
+ {
5806
+ "docs": {
5807
+ "stability": "experimental"
5808
+ },
5809
+ "name": "SUCCEEDED"
5810
+ },
5811
+ {
5812
+ "docs": {
5813
+ "stability": "experimental"
5814
+ },
5815
+ "name": "FAILED"
5816
+ },
5817
+ {
5818
+ "docs": {
5819
+ "stability": "experimental"
5820
+ },
5821
+ "name": "TIMED_OUT"
5822
+ },
5823
+ {
5824
+ "docs": {
5825
+ "stability": "experimental"
5826
+ },
5827
+ "name": "ABORTED"
5828
+ }
5829
+ ],
5830
+ "name": "SfnEventStatus",
5831
+ "namespace": "eventbridgeRule",
5832
+ "symbolId": "eventbridge-rules/sfn-slack-notification:SfnEventStatus"
5833
+ },
5834
+ "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification": {
5835
+ "assembly": "@orcabus/platform-cdk-constructs",
5836
+ "base": "constructs.Construct",
5837
+ "docs": {
5838
+ "stability": "experimental"
5839
+ },
5840
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification",
5841
+ "initializer": {
5842
+ "docs": {
5843
+ "stability": "experimental"
5844
+ },
5845
+ "locationInModule": {
5846
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5847
+ "line": 85
5848
+ },
5849
+ "parameters": [
5850
+ {
5851
+ "name": "scope",
5852
+ "type": {
5853
+ "fqn": "constructs.Construct"
5854
+ }
5855
+ },
5856
+ {
5857
+ "name": "id",
5858
+ "type": {
5859
+ "primitive": "string"
5860
+ }
5861
+ },
5862
+ {
5863
+ "name": "props",
5864
+ "type": {
5865
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotificationProps"
5866
+ }
5867
+ }
5868
+ ]
5869
+ },
5870
+ "kind": "class",
5871
+ "locationInModule": {
5872
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5873
+ "line": 83
5874
+ },
5875
+ "name": "SfnSlackNotification",
5876
+ "namespace": "eventbridgeRule",
5877
+ "properties": [
5878
+ {
5879
+ "docs": {
5880
+ "stability": "experimental"
5881
+ },
5882
+ "immutable": true,
5883
+ "locationInModule": {
5884
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5885
+ "line": 84
5886
+ },
5887
+ "name": "rule",
5888
+ "type": {
5889
+ "fqn": "aws-cdk-lib.aws_events.Rule"
5890
+ }
5891
+ }
5892
+ ],
5893
+ "symbolId": "eventbridge-rules/sfn-slack-notification:SfnSlackNotification"
5894
+ },
5895
+ "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotificationProps": {
5896
+ "assembly": "@orcabus/platform-cdk-constructs",
5897
+ "datatype": true,
5898
+ "docs": {
5899
+ "stability": "experimental"
5900
+ },
5901
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotificationProps",
5902
+ "kind": "interface",
5903
+ "locationInModule": {
5904
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5905
+ "line": 22
5906
+ },
5907
+ "name": "SfnSlackNotificationProps",
5908
+ "namespace": "eventbridgeRule",
5909
+ "properties": [
5910
+ {
5911
+ "abstract": true,
5912
+ "docs": {
5913
+ "stability": "experimental",
5914
+ "summary": "The event statuses to listen for."
5915
+ },
5916
+ "immutable": true,
5917
+ "locationInModule": {
5918
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5919
+ "line": 36
5920
+ },
5921
+ "name": "eventStatus",
5922
+ "type": {
5923
+ "collection": {
5924
+ "elementtype": {
5925
+ "fqn": "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnEventStatus"
5926
+ },
5927
+ "kind": "array"
5928
+ }
5929
+ }
5930
+ },
5931
+ {
5932
+ "abstract": true,
5933
+ "docs": {
5934
+ "remarks": "Each array element represents a separate line in the message.\nSupports Slack's message formatting syntax:\nhttps://api.slack.com/reference/surfaces/formatting\n\n**Dynamic Content:**\nTo include dynamic event data, embed JSONPath expressions in strings using `EventField.fromPath`.\nFor example, `EventField.fromPath(\"$.detail.executionArn\")` references the `executionArn` field from the event payload.\nThe `EventField` is imported from `aws-cdk-lib/aws-events`.\n\nExample:\n\n```typescript\nmessage: [\n \"*Execution Details:*\",\n `• ARN: ${EventField.fromPath(\"$.detail.executionArn\")}`,\n `• Status: ${EventField.fromPath(\"$.detail.status\")}`,\n \"\",\n]\n```",
5935
+ "stability": "experimental",
5936
+ "summary": "The detailed message content for the Slack notification."
5937
+ },
5938
+ "immutable": true,
5939
+ "locationInModule": {
5940
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5941
+ "line": 69
5942
+ },
5943
+ "name": "message",
5944
+ "type": {
5945
+ "collection": {
5946
+ "elementtype": {
5947
+ "primitive": "string"
5948
+ },
5949
+ "kind": "array"
5950
+ }
5951
+ }
5952
+ },
5953
+ {
5954
+ "abstract": true,
5955
+ "docs": {
5956
+ "stability": "experimental",
5957
+ "summary": "The step function state machine to listen to."
5958
+ },
5959
+ "immutable": true,
5960
+ "locationInModule": {
5961
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5962
+ "line": 26
5963
+ },
5964
+ "name": "stateMachine",
5965
+ "type": {
5966
+ "fqn": "aws-cdk-lib.aws_stepfunctions.IStateMachine"
5967
+ }
5968
+ },
5969
+ {
5970
+ "abstract": true,
5971
+ "docs": {
5972
+ "remarks": "Can include dynamic content from the event payload using JSONPath expressions.\nTo reference event fields, you must use `EventField.fromPath`, e.g.,\n`Job-alpha: ${EventField.fromPath(\"$.detail.input.destinationId\")}`.\nThe `EventField` import is required from `aws-cdk-lib/aws-events`.",
5973
+ "stability": "experimental",
5974
+ "summary": "The title for the Slack notification."
5975
+ },
5976
+ "immutable": true,
5977
+ "locationInModule": {
5978
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5979
+ "line": 45
5980
+ },
5981
+ "name": "title",
5982
+ "type": {
5983
+ "primitive": "string"
5984
+ }
5985
+ },
5986
+ {
5987
+ "abstract": true,
5988
+ "docs": {
5989
+ "remarks": "Default: The default AWS event bus",
5990
+ "stability": "experimental",
5991
+ "summary": "The event statuses to listen for."
5992
+ },
5993
+ "immutable": true,
5994
+ "locationInModule": {
5995
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
5996
+ "line": 32
5997
+ },
5998
+ "name": "eventBus",
5999
+ "optional": true,
6000
+ "type": {
6001
+ "fqn": "aws-cdk-lib.aws_events.IEventBus"
6002
+ }
6003
+ },
6004
+ {
6005
+ "abstract": true,
6006
+ "docs": {
6007
+ "default": "false",
6008
+ "remarks": "When enabled, adds a clickable console link at the beginning of the Slack message.\nThe link is constructed using the execution ARN from the event payload.\n\nRef: https://stackoverflow.com/a/76008805",
6009
+ "stability": "experimental",
6010
+ "summary": "Whether to include a link to the Step Function execution in the AWS Console."
6011
+ },
6012
+ "immutable": true,
6013
+ "locationInModule": {
6014
+ "filename": "eventbridge-rules/sfn-slack-notification.ts",
6015
+ "line": 80
6016
+ },
6017
+ "name": "includeConsoleLink",
6018
+ "optional": true,
6019
+ "type": {
6020
+ "primitive": "boolean"
6021
+ }
6022
+ }
6023
+ ],
6024
+ "symbolId": "eventbridge-rules/sfn-slack-notification:SfnSlackNotificationProps"
6025
+ },
5777
6026
  "@orcabus/platform-cdk-constructs.lambda.Icav2ResourcesProps": {
5778
6027
  "assembly": "@orcabus/platform-cdk-constructs",
5779
6028
  "datatype": true,
@@ -6914,6 +7163,6 @@
6914
7163
  "symbolId": "shared-config/slack:SlackAlerts"
6915
7164
  }
6916
7165
  },
6917
- "version": "0.0.68",
6918
- "fingerprint": "w5rZvc55nWmsmHV8DOtEwFvLLI78onbGMV8SWS3n3rc="
7166
+ "version": "0.0.69",
7167
+ "fingerprint": "FtPAoiMzbu6Gxvpxr0gwLMM3HDXP8WCEXAIjRLL3cmg="
6919
7168
  }
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
15
15
  const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
16
16
  const config_1 = require("./config");
17
17
  class OrcaBusApiGateway extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.68" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.69" };
19
19
  /**
20
20
  * The AWS region where the API Gateway is deployed.
21
21
  */
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
13
13
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
14
14
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
15
15
  class CrossDeploymentArtifactBucket extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.68" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.69" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -32,7 +32,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
32
32
  * before using this construct.
33
33
  */
34
34
  class DeploymentStackPipeline extends constructs_1.Construct {
35
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.68" };
35
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.69" };
36
36
  /**
37
37
  * The code pipeline construct that is created.
38
38
  */
package/dynamodb/index.js CHANGED
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
40
40
  const aws_cdk_lib_1 = require("aws-cdk-lib");
41
41
  const config_1 = require("./config");
42
42
  class DynamoDbPartitionedConstruct extends constructs_1.Construct {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.68" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.69" };
44
44
  table;
45
45
  constructor(scope, id, props) {
46
46
  super(scope, id);
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
75
75
  }
76
76
  exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
77
77
  class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
78
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.68" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.69" };
79
79
  table;
80
80
  constructor(scope, id, props) {
81
81
  super(scope, id);
package/ecs/index.js CHANGED
@@ -55,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
55
55
  ['ARM64']: lambda.Architecture.ARM_64
56
56
  };
57
57
  class EcsFargateTaskConstruct extends constructs_1.Construct {
58
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.68" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.69" };
59
59
  cluster;
60
60
  taskDefinition;
61
61
  taskExecutionRole;
@@ -0,0 +1,26 @@
1
+ # EventBridge Rules
2
+
3
+ ## SfnSlackNotification
4
+
5
+ This CDK construct sends Slack notifications when your Step Functions state machine changes status.
6
+
7
+ ### Example
8
+
9
+ ```typescript
10
+ new SfnSlackNotification(this, "SfnSlackNotification", {
11
+ stateMachine: myDev,
12
+ eventStatus: [SfnEventStatus.SUCCEEDED],
13
+ title: `JOB-A: ${EventField.fromPath("$.detail.input.jobId")}`,
14
+ message: [
15
+ "*Execution Details:*",
16
+ `• ARN: ${EventField.fromPath("$.detail.executionArn")}`,
17
+ `• Status: ${EventField.fromPath("$.detail.status")}`,
18
+ ],
19
+ includeConsoleLink: true,
20
+ });
21
+ ```
22
+
23
+ ### Notes
24
+
25
+ - Use `EventField.fromPath("$.jsonpath")` to include dynamic event data in your title or message.
26
+ - `includeConsoleLink` adds a link to the AWS Console for the execution.
@@ -0,0 +1 @@
1
+ export declare const SNS_ALERTS_TOPIC_ARN = "/chatbot/slack/umccr/alerts-topic-arn";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SNS_ALERTS_TOPIC_ARN = void 0;
4
+ exports.SNS_ALERTS_TOPIC_ARN = "/chatbot/slack/umccr/alerts-topic-arn";
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsb0JBQW9CLEdBQUcsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU05TX0FMRVJUU19UT1BJQ19BUk4gPSBcIi9jaGF0Ym90L3NsYWNrL3VtY2NyL2FsZXJ0cy10b3BpYy1hcm5cIjtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from "./config";
2
+ export * from "./sfn-slack-notification";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./config"), exports);
18
+ __exportStar(require("./sfn-slack-notification"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLDJEQUF5QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2ZuLXNsYWNrLW5vdGlmaWNhdGlvblwiO1xuIl19
@@ -0,0 +1,74 @@
1
+ import { IEventBus, Rule } from "aws-cdk-lib/aws-events";
2
+ import { IStateMachine } from "aws-cdk-lib/aws-stepfunctions";
3
+ import { Construct } from "constructs";
4
+ export declare enum SfnEventStatus {
5
+ RUNNING = "RUNNING",
6
+ SUCCEEDED = "SUCCEEDED",
7
+ FAILED = "FAILED",
8
+ TIMED_OUT = "TIMED_OUT",
9
+ ABORTED = "ABORTED"
10
+ }
11
+ export interface SfnSlackNotificationProps {
12
+ /**
13
+ * The step function state machine to listen to.
14
+ */
15
+ readonly stateMachine: IStateMachine;
16
+ /**
17
+ * The event statuses to listen for.
18
+ *
19
+ * Default: The default AWS event bus
20
+ */
21
+ readonly eventBus?: IEventBus;
22
+ /**
23
+ * The event statuses to listen for.
24
+ */
25
+ readonly eventStatus: SfnEventStatus[];
26
+ /**
27
+ * The title for the Slack notification.
28
+ *
29
+ * Can include dynamic content from the event payload using JSONPath expressions.
30
+ * To reference event fields, you must use `EventField.fromPath`, e.g.,
31
+ * `Job-alpha: ${EventField.fromPath("$.detail.input.destinationId")}`.
32
+ * The `EventField` import is required from `aws-cdk-lib/aws-events`.
33
+ */
34
+ readonly title: string;
35
+ /**
36
+ * The detailed message content for the Slack notification.
37
+ *
38
+ * Each array element represents a separate line in the message.
39
+ * Supports Slack's message formatting syntax:
40
+ * https://api.slack.com/reference/surfaces/formatting
41
+ *
42
+ * **Dynamic Content:**
43
+ * To include dynamic event data, embed JSONPath expressions in strings using `EventField.fromPath`.
44
+ * For example, `EventField.fromPath("$.detail.executionArn")` references the `executionArn` field from the event payload.
45
+ * The `EventField` is imported from `aws-cdk-lib/aws-events`.
46
+ *
47
+ * Example:
48
+ *
49
+ * ```typescript
50
+ * message: [
51
+ * "*Execution Details:*",
52
+ * `• ARN: ${EventField.fromPath("$.detail.executionArn")}`,
53
+ * `• Status: ${EventField.fromPath("$.detail.status")}`,
54
+ * "",
55
+ * ]
56
+ * ```
57
+ */
58
+ readonly message: string[];
59
+ /**
60
+ * Whether to include a link to the Step Function execution in the AWS Console.
61
+ *
62
+ * When enabled, adds a clickable console link at the beginning of the Slack message.
63
+ * The link is constructed using the execution ARN from the event payload.
64
+ *
65
+ * Ref: https://stackoverflow.com/a/76008805
66
+ *
67
+ * @default false
68
+ */
69
+ readonly includeConsoleLink?: boolean;
70
+ }
71
+ export declare class SfnSlackNotification extends Construct {
72
+ readonly rule: Rule;
73
+ constructor(scope: Construct, id: string, props: SfnSlackNotificationProps);
74
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SfnSlackNotification = exports.SfnEventStatus = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_events_1 = require("aws-cdk-lib/aws-events");
6
+ const aws_sns_1 = require("aws-cdk-lib/aws-sns");
7
+ const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
8
+ const constructs_1 = require("constructs");
9
+ const config_1 = require("./config");
10
+ const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
11
+ var SfnEventStatus;
12
+ (function (SfnEventStatus) {
13
+ SfnEventStatus["RUNNING"] = "RUNNING";
14
+ SfnEventStatus["SUCCEEDED"] = "SUCCEEDED";
15
+ SfnEventStatus["FAILED"] = "FAILED";
16
+ SfnEventStatus["TIMED_OUT"] = "TIMED_OUT";
17
+ SfnEventStatus["ABORTED"] = "ABORTED";
18
+ })(SfnEventStatus || (exports.SfnEventStatus = SfnEventStatus = {}));
19
+ class SfnSlackNotification extends constructs_1.Construct {
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "0.0.69" };
21
+ rule;
22
+ constructor(scope, id, props) {
23
+ super(scope, id);
24
+ this.rule = new aws_events_1.Rule(this, "SfnSlackNotificationRule", {
25
+ eventBus: props.eventBus,
26
+ description: `Slack notification for Step Function state machine `,
27
+ eventPattern: {
28
+ source: ["aws.states"],
29
+ detailType: ["Step Functions Execution Status Change"],
30
+ detail: {
31
+ stateMachineArn: [props.stateMachine.stateMachineArn],
32
+ status: props.eventStatus,
33
+ },
34
+ },
35
+ });
36
+ // get SNS topic ARN from SSM Parameter Store
37
+ const slackTopicArn = aws_ssm_1.StringParameter.valueForStringParameter(this, config_1.SNS_ALERTS_TOPIC_ARN);
38
+ const slackSnsTopic = aws_sns_1.Topic.fromTopicArn(this, "SlackAlertTopic", slackTopicArn);
39
+ this.rule.addTarget(new aws_events_targets_1.SnsTopic(slackSnsTopic, {
40
+ message: aws_events_1.RuleTargetInput.fromObject({
41
+ version: "1.0",
42
+ source: "custom",
43
+ content: {
44
+ textType: "client-markdown",
45
+ title: props.title,
46
+ description: [
47
+ props.includeConsoleLink
48
+ ? `<https://console.aws.amazon.com/states/home?#/v2/executions/details/${aws_events_1.EventField.fromPath("$.detail.executionArn")}|View in Console>\n`
49
+ : "",
50
+ ...props.message,
51
+ ].join("\n"),
52
+ },
53
+ }),
54
+ }));
55
+ }
56
+ }
57
+ exports.SfnSlackNotification = SfnSlackNotification;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZuLXNsYWNrLW5vdGlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNmbi1zbGFjay1ub3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHVEQUtnQztBQUNoQyxpREFBNEM7QUFDNUMsaURBQXNEO0FBRXRELDJDQUF1QztBQUN2QyxxQ0FBZ0Q7QUFDaEQsdUVBQTBEO0FBRTFELElBQVksY0FNWDtBQU5ELFdBQVksY0FBYztJQUN4QixxQ0FBbUIsQ0FBQTtJQUNuQix5Q0FBdUIsQ0FBQTtJQUN2QixtQ0FBaUIsQ0FBQTtJQUNqQix5Q0FBdUIsQ0FBQTtJQUN2QixxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTlcsY0FBYyw4QkFBZCxjQUFjLFFBTXpCO0FBK0RELE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7O0lBQ2pDLElBQUksQ0FBTztJQUMzQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdDO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGlCQUFJLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO1lBQ3JELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUscURBQXFEO1lBQ2xFLFlBQVksRUFBRTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2dCQUN0RCxNQUFNLEVBQUU7b0JBQ04sZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7b0JBQ3JELE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVztpQkFDMUI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILDZDQUE2QztRQUM3QyxNQUFNLGFBQWEsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUMzRCxJQUFJLEVBQ0osNkJBQW9CLENBQ3JCLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxlQUFLLENBQUMsWUFBWSxDQUN0QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLGFBQWEsQ0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ2pCLElBQUksNkJBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDMUIsT0FBTyxFQUFFLDRCQUFlLENBQUMsVUFBVSxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztvQkFDbEIsV0FBVyxFQUFFO3dCQUNYLEtBQUssQ0FBQyxrQkFBa0I7NEJBQ3RCLENBQUMsQ0FBQyx1RUFBdUUsdUJBQVUsQ0FBQyxRQUFRLENBQ3hGLHVCQUF1QixDQUN4QixxQkFBcUI7NEJBQ3hCLENBQUMsQ0FBQyxFQUFFO3dCQUNOLEdBQUcsS0FBSyxDQUFDLE9BQU87cUJBQ2pCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDYjthQUNGLENBQUM7U0FDSCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O0FBakRILG9EQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEV2ZW50RmllbGQsXG4gIElFdmVudEJ1cyxcbiAgUnVsZSxcbiAgUnVsZVRhcmdldElucHV0LFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHsgVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNuc1wiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7IElTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTTlNfQUxFUlRTX1RPUElDX0FSTiB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU25zVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzXCI7XG5cbmV4cG9ydCBlbnVtIFNmbkV2ZW50U3RhdHVzIHtcbiAgUlVOTklORyA9IFwiUlVOTklOR1wiLFxuICBTVUNDRUVERUQgPSBcIlNVQ0NFRURFRFwiLFxuICBGQUlMRUQgPSBcIkZBSUxFRFwiLFxuICBUSU1FRF9PVVQgPSBcIlRJTUVEX09VVFwiLFxuICBBQk9SVEVEID0gXCJBQk9SVEVEXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ZuU2xhY2tOb3RpZmljYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RlcCBmdW5jdGlvbiBzdGF0ZSBtYWNoaW5lIHRvIGxpc3RlbiB0by5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlTWFjaGluZTogSVN0YXRlTWFjaGluZTtcbiAgLyoqXG4gICAqIFRoZSBldmVudCBzdGF0dXNlcyB0byBsaXN0ZW4gZm9yLlxuICAgKlxuICAgKiAgRGVmYXVsdDogVGhlIGRlZmF1bHQgQVdTIGV2ZW50IGJ1c1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXM/OiBJRXZlbnRCdXM7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgc3RhdHVzZXMgdG8gbGlzdGVuIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50U3RhdHVzOiBTZm5FdmVudFN0YXR1c1tdO1xuICAvKipcbiAgICogVGhlIHRpdGxlIGZvciB0aGUgU2xhY2sgbm90aWZpY2F0aW9uLlxuICAgKlxuICAgKiBDYW4gaW5jbHVkZSBkeW5hbWljIGNvbnRlbnQgZnJvbSB0aGUgZXZlbnQgcGF5bG9hZCB1c2luZyBKU09OUGF0aCBleHByZXNzaW9ucy5cbiAgICogVG8gcmVmZXJlbmNlIGV2ZW50IGZpZWxkcywgeW91IG11c3QgdXNlIGBFdmVudEZpZWxkLmZyb21QYXRoYCwgZS5nLixcbiAgICogYEpvYi1hbHBoYTogJHtFdmVudEZpZWxkLmZyb21QYXRoKFwiJC5kZXRhaWwuaW5wdXQuZGVzdGluYXRpb25JZFwiKX1gLlxuICAgKiBUaGUgYEV2ZW50RmllbGRgIGltcG9ydCBpcyByZXF1aXJlZCBmcm9tIGBhd3MtY2RrLWxpYi9hd3MtZXZlbnRzYC5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGV0YWlsZWQgbWVzc2FnZSBjb250ZW50IGZvciB0aGUgU2xhY2sgbm90aWZpY2F0aW9uLlxuICAgKlxuICAgKiBFYWNoIGFycmF5IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlcGFyYXRlIGxpbmUgaW4gdGhlIG1lc3NhZ2UuXG4gICAqIFN1cHBvcnRzIFNsYWNrJ3MgbWVzc2FnZSBmb3JtYXR0aW5nIHN5bnRheDpcbiAgICogaHR0cHM6Ly9hcGkuc2xhY2suY29tL3JlZmVyZW5jZS9zdXJmYWNlcy9mb3JtYXR0aW5nXG4gICAqXG4gICAqICoqRHluYW1pYyBDb250ZW50OioqXG4gICAqIFRvIGluY2x1ZGUgZHluYW1pYyBldmVudCBkYXRhLCBlbWJlZCBKU09OUGF0aCBleHByZXNzaW9ucyBpbiBzdHJpbmdzIHVzaW5nIGBFdmVudEZpZWxkLmZyb21QYXRoYC5cbiAgICogRm9yIGV4YW1wbGUsIGBFdmVudEZpZWxkLmZyb21QYXRoKFwiJC5kZXRhaWwuZXhlY3V0aW9uQXJuXCIpYCByZWZlcmVuY2VzIHRoZSBgZXhlY3V0aW9uQXJuYCBmaWVsZCBmcm9tIHRoZSBldmVudCBwYXlsb2FkLlxuICAgKiBUaGUgYEV2ZW50RmllbGRgIGlzIGltcG9ydGVkIGZyb20gYGF3cy1jZGstbGliL2F3cy1ldmVudHNgLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIG1lc3NhZ2U6IFtcbiAgICogICBcIipFeGVjdXRpb24gRGV0YWlsczoqXCIsXG4gICAqICAgYOKAoiBBUk46ICR7RXZlbnRGaWVsZC5mcm9tUGF0aChcIiQuZGV0YWlsLmV4ZWN1dGlvbkFyblwiKX1gLFxuICAgKiAgIGDigKIgU3RhdHVzOiAke0V2ZW50RmllbGQuZnJvbVBhdGgoXCIkLmRldGFpbC5zdGF0dXNcIil9YCxcbiAgICogICBcIlwiLFxuICAgKiBdXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nW107XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgYSBsaW5rIHRvIHRoZSBTdGVwIEZ1bmN0aW9uIGV4ZWN1dGlvbiBpbiB0aGUgQVdTIENvbnNvbGUuXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgYWRkcyBhIGNsaWNrYWJsZSBjb25zb2xlIGxpbmsgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgU2xhY2sgbWVzc2FnZS5cbiAgICogVGhlIGxpbmsgaXMgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGV4ZWN1dGlvbiBBUk4gZnJvbSB0aGUgZXZlbnQgcGF5bG9hZC5cbiAgICpcbiAgICogUmVmOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNzYwMDg4MDVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDb25zb2xlTGluaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBTZm5TbGFja05vdGlmaWNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBydWxlOiBSdWxlO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2ZuU2xhY2tOb3RpZmljYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJ1bGUgPSBuZXcgUnVsZSh0aGlzLCBcIlNmblNsYWNrTm90aWZpY2F0aW9uUnVsZVwiLCB7XG4gICAgICBldmVudEJ1czogcHJvcHMuZXZlbnRCdXMsXG4gICAgICBkZXNjcmlwdGlvbjogYFNsYWNrIG5vdGlmaWNhdGlvbiBmb3IgU3RlcCBGdW5jdGlvbiBzdGF0ZSBtYWNoaW5lIGAsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbXCJhd3Muc3RhdGVzXCJdLFxuICAgICAgICBkZXRhaWxUeXBlOiBbXCJTdGVwIEZ1bmN0aW9ucyBFeGVjdXRpb24gU3RhdHVzIENoYW5nZVwiXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgc3RhdGVNYWNoaW5lQXJuOiBbcHJvcHMuc3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybl0sXG4gICAgICAgICAgc3RhdHVzOiBwcm9wcy5ldmVudFN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBnZXQgU05TIHRvcGljIEFSTiBmcm9tIFNTTSBQYXJhbWV0ZXIgU3RvcmVcbiAgICBjb25zdCBzbGFja1RvcGljQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFNOU19BTEVSVFNfVE9QSUNfQVJOLFxuICAgICk7XG5cbiAgICBjb25zdCBzbGFja1Nuc1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgdGhpcyxcbiAgICAgIFwiU2xhY2tBbGVydFRvcGljXCIsXG4gICAgICBzbGFja1RvcGljQXJuLFxuICAgICk7XG4gICAgdGhpcy5ydWxlLmFkZFRhcmdldChcbiAgICAgIG5ldyBTbnNUb3BpYyhzbGFja1Nuc1RvcGljLCB7XG4gICAgICAgIG1lc3NhZ2U6IFJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICB2ZXJzaW9uOiBcIjEuMFwiLFxuICAgICAgICAgIHNvdXJjZTogXCJjdXN0b21cIixcbiAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0ZXh0VHlwZTogXCJjbGllbnQtbWFya2Rvd25cIixcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICAgIHByb3BzLmluY2x1ZGVDb25zb2xlTGlua1xuICAgICAgICAgICAgICAgID8gYDxodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vc3RhdGVzL2hvbWU/Iy92Mi9leGVjdXRpb25zL2RldGFpbHMvJHtFdmVudEZpZWxkLmZyb21QYXRoKFxuICAgICAgICAgICAgICAgICAgICBcIiQuZGV0YWlsLmV4ZWN1dGlvbkFyblwiLFxuICAgICAgICAgICAgICAgICAgKX18VmlldyBpbiBDb25zb2xlPlxcbmBcbiAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgIC4uLnByb3BzLm1lc3NhZ2UsXG4gICAgICAgICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=
package/index.d.ts CHANGED
@@ -8,3 +8,4 @@ export * as provider from "./provider-function";
8
8
  export * as namedLambdaRole from "./named-lambda-role";
9
9
  export * as sharedConfig from "./shared-config";
10
10
  export * as monitoredQueue from "./monitored-queue";
11
+ export * as eventbridgeRule from "./eventbridge-rules";
package/index.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.monitoredQueue = exports.sharedConfig = exports.namedLambdaRole = exports.provider = exports.lambda = exports.ecs = exports.dynamodb = exports.apigateway = exports.deploymentPipeline = exports.utils = void 0;
36
+ exports.eventbridgeRule = exports.monitoredQueue = exports.sharedConfig = exports.namedLambdaRole = exports.provider = exports.lambda = exports.ecs = exports.dynamodb = exports.apigateway = exports.deploymentPipeline = exports.utils = void 0;
37
37
  // Get stage name
38
38
  exports.utils = __importStar(require("./utils"));
39
39
  // Deployment pipeline constructs
@@ -50,4 +50,5 @@ exports.provider = __importStar(require("./provider-function"));
50
50
  exports.namedLambdaRole = __importStar(require("./named-lambda-role"));
51
51
  exports.sharedConfig = __importStar(require("./shared-config"));
52
52
  exports.monitoredQueue = __importStar(require("./monitored-queue"));
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRDtBQUNoRCxvRUFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZXQgc3RhZ2UgbmFtZVxuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vdXRpbHNcIjtcblxuLy8gRGVwbG95bWVudCBwaXBlbGluZSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBkZXBsb3ltZW50UGlwZWxpbmUgZnJvbSBcIi4vZGVwbG95bWVudC1zdGFjay1waXBlbGluZVwiO1xuXG4vLyBBcGkgR2F0ZXdheSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gXCIuL2FwaS1nYXRld2F5XCI7XG5cbi8vIER5bmFtb0RCIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gXCIuL2R5bmFtb2RiXCI7XG5cbi8vIEVDUyAvIEZhcmdhdGUgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZWNzIGZyb20gXCIuL2Vjc1wiO1xuXG4vLyBMYW1iZGEgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgbGFtYmRhIGZyb20gXCIuL2xhbWJkYVwiO1xuXG5leHBvcnQgKiBhcyBwcm92aWRlciBmcm9tIFwiLi9wcm92aWRlci1mdW5jdGlvblwiO1xuZXhwb3J0ICogYXMgbmFtZWRMYW1iZGFSb2xlIGZyb20gXCIuL25hbWVkLWxhbWJkYS1yb2xlXCI7XG5leHBvcnQgKiBhcyBzaGFyZWRDb25maWcgZnJvbSBcIi4vc2hhcmVkLWNvbmZpZ1wiO1xuZXhwb3J0ICogYXMgbW9uaXRvcmVkUXVldWUgZnJvbSBcIi4vbW9uaXRvcmVkLXF1ZXVlXCI7XG4iXX0=
53
+ exports.eventbridgeRule = __importStar(require("./eventbridge-rules"));
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRDtBQUNoRCxvRUFBb0Q7QUFDcEQsdUVBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2V0IHN0YWdlIG5hbWVcbmV4cG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vIERlcGxveW1lbnQgcGlwZWxpbmUgY29uc3RydWN0c1xuZXhwb3J0ICogYXMgZGVwbG95bWVudFBpcGVsaW5lIGZyb20gXCIuL2RlcGxveW1lbnQtc3RhY2stcGlwZWxpbmVcIjtcblxuLy8gQXBpIEdhdGV3YXkgY29uc3RydWN0c1xuZXhwb3J0ICogYXMgYXBpZ2F0ZXdheSBmcm9tIFwiLi9hcGktZ2F0ZXdheVwiO1xuXG4vLyBEeW5hbW9EQiBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBkeW5hbW9kYiBmcm9tIFwiLi9keW5hbW9kYlwiO1xuXG4vLyBFQ1MgLyBGYXJnYXRlIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGVjcyBmcm9tIFwiLi9lY3NcIjtcblxuLy8gTGFtYmRhIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiLi9sYW1iZGFcIjtcblxuZXhwb3J0ICogYXMgcHJvdmlkZXIgZnJvbSBcIi4vcHJvdmlkZXItZnVuY3Rpb25cIjtcbmV4cG9ydCAqIGFzIG5hbWVkTGFtYmRhUm9sZSBmcm9tIFwiLi9uYW1lZC1sYW1iZGEtcm9sZVwiO1xuZXhwb3J0ICogYXMgc2hhcmVkQ29uZmlnIGZyb20gXCIuL3NoYXJlZC1jb25maWdcIjtcbmV4cG9ydCAqIGFzIG1vbml0b3JlZFF1ZXVlIGZyb20gXCIuL21vbml0b3JlZC1xdWV1ZVwiO1xuZXhwb3J0ICogYXMgZXZlbnRicmlkZ2VSdWxlIGZyb20gXCIuL2V2ZW50YnJpZGdlLXJ1bGVzXCI7XG4iXX0=
package/index.ts CHANGED
@@ -20,3 +20,4 @@ export * as provider from "./provider-function";
20
20
  export * as namedLambdaRole from "./named-lambda-role";
21
21
  export * as sharedConfig from "./shared-config";
22
22
  export * as monitoredQueue from "./monitored-queue";
23
+ export * as eventbridgeRule from "./eventbridge-rules";
package/lambda/index.js CHANGED
@@ -57,7 +57,7 @@ function getPythonUvDockerImage() {
57
57
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
58
58
  }
59
59
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
60
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.68" };
60
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.69" };
61
61
  // Class constructs, to be used for caching the layers
62
62
  // This means that if there are multiple lambdas throughout the stack
63
63
  // They will all use the same layer
@@ -13,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
13
13
  * SNS topic.
14
14
  */
15
15
  class MonitoredQueue extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.68" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.69" };
17
17
  queue;
18
18
  deadLetterQueue;
19
19
  alarm;
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  * A construct which represents a named role that a Lambda function can assume.
8
8
  */
9
9
  class NamedLambdaRole extends aws_iam_1.Role {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.68" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.69" };
11
11
  constructor(scope, id, props) {
12
12
  super(scope, id, {
13
13
  assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcabus/platform-cdk-constructs",
3
- "version": "0.0.68",
3
+ "version": "0.0.69",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -28,7 +28,7 @@
28
28
  "@types/node": "^22.17.2",
29
29
  "aws-cdk": "^2.1025.0",
30
30
  "cdk-nag": "^2.37.6",
31
- "aws-cdk-lib": "^2.211.0",
31
+ "aws-cdk-lib": "2.211.0",
32
32
  "constructs": "10.4.2",
33
33
  "jest": "^29.7.0",
34
34
  "jsii": "^5.9.3",
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
15
  * to the provider framework.
16
16
  */
17
17
  class ProviderFunction extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.68" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.69" };
19
19
  _function;
20
20
  _response;
21
21
  constructor(scope, id, props) {
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
23
23
  * Helper for looking up the shared OrcaBus VPC.
24
24
  */
25
25
  class OrcaBusVpc {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.68" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.69" };
27
27
  /**
28
28
  * The shared VPC that is used by OrcaBus.
29
29
  * @param scope
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
42
42
  * Helper for looking up the shared compute security group by name.
43
43
  */
44
44
  class OrcaBusSharedComputeSecurityGroup {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.68" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.69" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope
@@ -11,7 +11,7 @@ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
11
11
  * A helper class to construct the arn for the slack SNS topic.
12
12
  */
13
13
  class SlackAlerts {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.68" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.69" };
15
15
  /**
16
16
  * Format the ARN for the slack alerts SNS topic for the current stack.
17
17
  * @param stack