@orcabus/platform-cdk-constructs 0.0.22 → 0.0.24

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
@@ -4058,6 +4058,16 @@
4058
4058
  },
4059
4059
  "symbolId": "lambda/index:"
4060
4060
  },
4061
+ "@orcabus/platform-cdk-constructs.monitoredQueue": {
4062
+ "locationInModule": {
4063
+ "filename": "index.ts",
4064
+ "line": 22
4065
+ },
4066
+ "readme": {
4067
+ "markdown": "# MonitoredQueue\n\nA construct creating an SQS queue that has an attached dead-letter queue and an alarm that triggers when a message\narrives in the dead-letter queue. An SNS topic can also be notified when the alarm triggers.\n\nUsage example:\n\n```ts\nnew MonitoredQueue(this, \"MonitoredQueue\", {\n queueProps: {\n queueName: \"queue\",\n removalPolicy: RemovalPolicy.RETAIN,\n },\n dlqProps: {\n queueName: `$queue-dlq`,\n removalPolicy: RemovalPolicy.RETAIN,\n retentionPeriod: Duration.days(14),\n },\n snsTopicArn: SlackAlerts.formatArn(this),\n});\n```\n"
4068
+ },
4069
+ "symbolId": "monitored-queue/index:"
4070
+ },
4061
4071
  "@orcabus/platform-cdk-constructs.namedLambdaRole": {
4062
4072
  "locationInModule": {
4063
4073
  "filename": "index.ts",
@@ -4137,6 +4147,13 @@
4137
4147
  },
4138
4148
  "symbolId": "shared-config/s3:"
4139
4149
  },
4150
+ "@orcabus/platform-cdk-constructs.sharedConfig.slack": {
4151
+ "locationInModule": {
4152
+ "filename": "shared-config/index.ts",
4153
+ "line": 8
4154
+ },
4155
+ "symbolId": "shared-config/slack:"
4156
+ },
4140
4157
  "@orcabus/platform-cdk-constructs.utils": {
4141
4158
  "locationInModule": {
4142
4159
  "filename": "index.ts",
@@ -6004,6 +6021,270 @@
6004
6021
  ],
6005
6022
  "symbolId": "lambda/index:PythonUvFunctionProps"
6006
6023
  },
6024
+ "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue": {
6025
+ "assembly": "@orcabus/platform-cdk-constructs",
6026
+ "base": "constructs.Construct",
6027
+ "docs": {
6028
+ "stability": "experimental",
6029
+ "summary": "A construct that defines an SQS queue, along with a DLQ and CloudWatch alarms that can notify an SNS topic."
6030
+ },
6031
+ "fqn": "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue",
6032
+ "initializer": {
6033
+ "docs": {
6034
+ "stability": "experimental"
6035
+ },
6036
+ "locationInModule": {
6037
+ "filename": "monitored-queue/index.ts",
6038
+ "line": 62
6039
+ },
6040
+ "parameters": [
6041
+ {
6042
+ "name": "scope",
6043
+ "type": {
6044
+ "fqn": "constructs.Construct"
6045
+ }
6046
+ },
6047
+ {
6048
+ "name": "id",
6049
+ "type": {
6050
+ "primitive": "string"
6051
+ }
6052
+ },
6053
+ {
6054
+ "name": "props",
6055
+ "type": {
6056
+ "fqn": "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueueProps"
6057
+ }
6058
+ }
6059
+ ]
6060
+ },
6061
+ "kind": "class",
6062
+ "locationInModule": {
6063
+ "filename": "monitored-queue/index.ts",
6064
+ "line": 57
6065
+ },
6066
+ "name": "MonitoredQueue",
6067
+ "namespace": "monitoredQueue",
6068
+ "properties": [
6069
+ {
6070
+ "docs": {
6071
+ "stability": "experimental"
6072
+ },
6073
+ "immutable": true,
6074
+ "locationInModule": {
6075
+ "filename": "monitored-queue/index.ts",
6076
+ "line": 60
6077
+ },
6078
+ "name": "alarm",
6079
+ "type": {
6080
+ "fqn": "aws-cdk-lib.aws_cloudwatch.Alarm"
6081
+ }
6082
+ },
6083
+ {
6084
+ "docs": {
6085
+ "stability": "experimental"
6086
+ },
6087
+ "immutable": true,
6088
+ "locationInModule": {
6089
+ "filename": "monitored-queue/index.ts",
6090
+ "line": 59
6091
+ },
6092
+ "name": "deadLetterQueue",
6093
+ "type": {
6094
+ "fqn": "aws-cdk-lib.aws_sqs.Queue"
6095
+ }
6096
+ },
6097
+ {
6098
+ "docs": {
6099
+ "stability": "experimental"
6100
+ },
6101
+ "immutable": true,
6102
+ "locationInModule": {
6103
+ "filename": "monitored-queue/index.ts",
6104
+ "line": 58
6105
+ },
6106
+ "name": "queue",
6107
+ "type": {
6108
+ "fqn": "aws-cdk-lib.aws_sqs.Queue"
6109
+ }
6110
+ },
6111
+ {
6112
+ "docs": {
6113
+ "stability": "experimental",
6114
+ "summary": "Get the SQS queue ARN."
6115
+ },
6116
+ "immutable": true,
6117
+ "locationInModule": {
6118
+ "filename": "monitored-queue/index.ts",
6119
+ "line": 98
6120
+ },
6121
+ "name": "queueArn",
6122
+ "type": {
6123
+ "primitive": "string"
6124
+ }
6125
+ }
6126
+ ],
6127
+ "symbolId": "monitored-queue/index:MonitoredQueue"
6128
+ },
6129
+ "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueueProps": {
6130
+ "assembly": "@orcabus/platform-cdk-constructs",
6131
+ "datatype": true,
6132
+ "docs": {
6133
+ "stability": "experimental",
6134
+ "summary": "Properties for the monitored queue."
6135
+ },
6136
+ "fqn": "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueueProps",
6137
+ "kind": "interface",
6138
+ "locationInModule": {
6139
+ "filename": "monitored-queue/index.ts",
6140
+ "line": 15
6141
+ },
6142
+ "name": "MonitoredQueueProps",
6143
+ "namespace": "monitoredQueue",
6144
+ "properties": [
6145
+ {
6146
+ "abstract": true,
6147
+ "docs": {
6148
+ "stability": "experimental",
6149
+ "summary": "The props for the dead-letter SQS queue when a message fails."
6150
+ },
6151
+ "immutable": true,
6152
+ "locationInModule": {
6153
+ "filename": "monitored-queue/index.ts",
6154
+ "line": 23
6155
+ },
6156
+ "name": "dlqProps",
6157
+ "optional": true,
6158
+ "type": {
6159
+ "fqn": "@orcabus/platform-cdk-constructs.monitoredQueue.QueueProps"
6160
+ }
6161
+ },
6162
+ {
6163
+ "abstract": true,
6164
+ "docs": {
6165
+ "remarks": "Defaults to 3.",
6166
+ "stability": "experimental",
6167
+ "summary": "The maximum number of times a message can be unsuccessfully received before pushing it to the DLQ."
6168
+ },
6169
+ "immutable": true,
6170
+ "locationInModule": {
6171
+ "filename": "monitored-queue/index.ts",
6172
+ "line": 28
6173
+ },
6174
+ "name": "maxReceiveCount",
6175
+ "optional": true,
6176
+ "type": {
6177
+ "primitive": "number"
6178
+ }
6179
+ },
6180
+ {
6181
+ "abstract": true,
6182
+ "docs": {
6183
+ "stability": "experimental",
6184
+ "summary": "The props for the main SQS queue."
6185
+ },
6186
+ "immutable": true,
6187
+ "locationInModule": {
6188
+ "filename": "monitored-queue/index.ts",
6189
+ "line": 19
6190
+ },
6191
+ "name": "queueProps",
6192
+ "optional": true,
6193
+ "type": {
6194
+ "fqn": "@orcabus/platform-cdk-constructs.monitoredQueue.QueueProps"
6195
+ }
6196
+ },
6197
+ {
6198
+ "abstract": true,
6199
+ "docs": {
6200
+ "stability": "experimental",
6201
+ "summary": "Send the alarm notification to the SNS topic with the ARN."
6202
+ },
6203
+ "immutable": true,
6204
+ "locationInModule": {
6205
+ "filename": "monitored-queue/index.ts",
6206
+ "line": 32
6207
+ },
6208
+ "name": "snsTopicArn",
6209
+ "optional": true,
6210
+ "type": {
6211
+ "primitive": "string"
6212
+ }
6213
+ }
6214
+ ],
6215
+ "symbolId": "monitored-queue/index:MonitoredQueueProps"
6216
+ },
6217
+ "@orcabus/platform-cdk-constructs.monitoredQueue.QueueProps": {
6218
+ "assembly": "@orcabus/platform-cdk-constructs",
6219
+ "datatype": true,
6220
+ "docs": {
6221
+ "stability": "experimental",
6222
+ "summary": "Properties for an SQS queue."
6223
+ },
6224
+ "fqn": "@orcabus/platform-cdk-constructs.monitoredQueue.QueueProps",
6225
+ "kind": "interface",
6226
+ "locationInModule": {
6227
+ "filename": "monitored-queue/index.ts",
6228
+ "line": 38
6229
+ },
6230
+ "name": "QueueProps",
6231
+ "namespace": "monitoredQueue",
6232
+ "properties": [
6233
+ {
6234
+ "abstract": true,
6235
+ "docs": {
6236
+ "remarks": "Defaults to the automatically generated name.",
6237
+ "stability": "experimental",
6238
+ "summary": "The name of the queue to construct."
6239
+ },
6240
+ "immutable": true,
6241
+ "locationInModule": {
6242
+ "filename": "monitored-queue/index.ts",
6243
+ "line": 42
6244
+ },
6245
+ "name": "queueName",
6246
+ "optional": true,
6247
+ "type": {
6248
+ "primitive": "string"
6249
+ }
6250
+ },
6251
+ {
6252
+ "abstract": true,
6253
+ "docs": {
6254
+ "stability": "experimental",
6255
+ "summary": "The removal policy of the queue."
6256
+ },
6257
+ "immutable": true,
6258
+ "locationInModule": {
6259
+ "filename": "monitored-queue/index.ts",
6260
+ "line": 50
6261
+ },
6262
+ "name": "removalPolicy",
6263
+ "optional": true,
6264
+ "type": {
6265
+ "fqn": "aws-cdk-lib.RemovalPolicy"
6266
+ }
6267
+ },
6268
+ {
6269
+ "abstract": true,
6270
+ "docs": {
6271
+ "stability": "experimental",
6272
+ "summary": "How long messages stay in the queue."
6273
+ },
6274
+ "immutable": true,
6275
+ "locationInModule": {
6276
+ "filename": "monitored-queue/index.ts",
6277
+ "line": 46
6278
+ },
6279
+ "name": "retentionPeriod",
6280
+ "optional": true,
6281
+ "type": {
6282
+ "fqn": "aws-cdk-lib.Duration"
6283
+ }
6284
+ }
6285
+ ],
6286
+ "symbolId": "monitored-queue/index:QueueProps"
6287
+ },
6007
6288
  "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole": {
6008
6289
  "assembly": "@orcabus/platform-cdk-constructs",
6009
6290
  "base": "aws-cdk-lib.aws_iam.Role",
@@ -6394,8 +6675,57 @@
6394
6675
  "name": "OrcaBusVpc",
6395
6676
  "namespace": "sharedConfig.networking",
6396
6677
  "symbolId": "shared-config/networking:OrcaBusVpc"
6678
+ },
6679
+ "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts": {
6680
+ "assembly": "@orcabus/platform-cdk-constructs",
6681
+ "docs": {
6682
+ "stability": "experimental",
6683
+ "summary": "A helper class to construct the arn for the slack SNS topic."
6684
+ },
6685
+ "fqn": "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts",
6686
+ "initializer": {
6687
+ "docs": {
6688
+ "stability": "experimental"
6689
+ }
6690
+ },
6691
+ "kind": "class",
6692
+ "locationInModule": {
6693
+ "filename": "shared-config/slack.ts",
6694
+ "line": 11
6695
+ },
6696
+ "methods": [
6697
+ {
6698
+ "docs": {
6699
+ "returns": "Arn",
6700
+ "stability": "experimental",
6701
+ "summary": "Format the ARN for the slack alerts SNS topic for the current stack."
6702
+ },
6703
+ "locationInModule": {
6704
+ "filename": "shared-config/slack.ts",
6705
+ "line": 17
6706
+ },
6707
+ "name": "formatArn",
6708
+ "parameters": [
6709
+ {
6710
+ "name": "stack",
6711
+ "type": {
6712
+ "fqn": "aws-cdk-lib.Stack"
6713
+ }
6714
+ }
6715
+ ],
6716
+ "returns": {
6717
+ "type": {
6718
+ "primitive": "string"
6719
+ }
6720
+ },
6721
+ "static": true
6722
+ }
6723
+ ],
6724
+ "name": "SlackAlerts",
6725
+ "namespace": "sharedConfig.slack",
6726
+ "symbolId": "shared-config/slack:SlackAlerts"
6397
6727
  }
6398
6728
  },
6399
- "version": "0.0.22",
6400
- "fingerprint": "gDadz17rfgisbpjWhJDdpXmpdrlwWE4XcQl34aoiQ20="
6729
+ "version": "0.0.24",
6730
+ "fingerprint": "449WN9SbdWp3j6RunQIriYNxkf3/5xiShs7lI9HEBd0="
6401
6731
  }
@@ -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.22" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.24" };
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.22" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.24" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -31,7 +31,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
31
31
  * before using this construct.
32
32
  */
33
33
  class DeploymentStackPipeline extends constructs_1.Construct {
34
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.22" };
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.24" };
35
35
  /**
36
36
  * The code pipeline construct that is created.
37
37
  */
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.22" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.24" };
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.22" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.24" };
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.22" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.24" };
59
59
  cluster;
60
60
  taskDefinition;
61
61
  securityGroup;
package/index.d.ts CHANGED
@@ -7,3 +7,4 @@ export * as lambda from "./lambda";
7
7
  export * as provider from "./provider-function";
8
8
  export * as namedLambdaRole from "./named-lambda-role";
9
9
  export * as sharedConfig from "./shared-config";
10
+ export * as monitoredQueue from "./monitored-queue";
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.sharedConfig = exports.namedLambdaRole = exports.provider = exports.lambda = exports.ecs = exports.dynamodb = exports.apigateway = exports.deploymentPipeline = exports.utils = void 0;
36
+ 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
@@ -49,4 +49,5 @@ exports.lambda = __importStar(require("./lambda"));
49
49
  exports.provider = __importStar(require("./provider-function"));
50
50
  exports.namedLambdaRole = __importStar(require("./named-lambda-role"));
51
51
  exports.sharedConfig = __importStar(require("./shared-config"));
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdldCBzdGFnZSBuYW1lXG5leHBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi91dGlsc1wiO1xuXG4vLyBEZXBsb3ltZW50IHBpcGVsaW5lIGNvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGRlcGxveW1lbnRQaXBlbGluZSBmcm9tIFwiLi9kZXBsb3ltZW50LXN0YWNrLXBpcGVsaW5lXCI7XG5cbi8vIEFwaSBHYXRld2F5IGNvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSBcIi4vYXBpLWdhdGV3YXlcIjtcblxuLy8gRHluYW1vREIgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZHluYW1vZGIgZnJvbSBcIi4vZHluYW1vZGJcIjtcblxuLy8gRUNTIC8gRmFyZ2F0ZSBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBlY3MgZnJvbSBcIi4vZWNzXCI7XG5cbi8vIExhbWJkYSBDb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcIi4vbGFtYmRhXCI7XG5cbmV4cG9ydCAqIGFzIHByb3ZpZGVyIGZyb20gXCIuL3Byb3ZpZGVyLWZ1bmN0aW9uXCI7XG5leHBvcnQgKiBhcyBuYW1lZExhbWJkYVJvbGUgZnJvbSBcIi4vbmFtZWQtbGFtYmRhLXJvbGVcIjtcbmV4cG9ydCAqIGFzIHNoYXJlZENvbmZpZyBmcm9tIFwiLi9zaGFyZWQtY29uZmlnXCI7XG4iXX0=
52
+ exports.monitoredQueue = __importStar(require("./monitored-queue"));
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRDtBQUNoRCxvRUFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZXQgc3RhZ2UgbmFtZVxuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vdXRpbHNcIjtcblxuLy8gRGVwbG95bWVudCBwaXBlbGluZSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBkZXBsb3ltZW50UGlwZWxpbmUgZnJvbSBcIi4vZGVwbG95bWVudC1zdGFjay1waXBlbGluZVwiO1xuXG4vLyBBcGkgR2F0ZXdheSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gXCIuL2FwaS1nYXRld2F5XCI7XG5cbi8vIER5bmFtb0RCIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gXCIuL2R5bmFtb2RiXCI7XG5cbi8vIEVDUyAvIEZhcmdhdGUgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZWNzIGZyb20gXCIuL2Vjc1wiO1xuXG4vLyBMYW1iZGEgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgbGFtYmRhIGZyb20gXCIuL2xhbWJkYVwiO1xuXG5leHBvcnQgKiBhcyBwcm92aWRlciBmcm9tIFwiLi9wcm92aWRlci1mdW5jdGlvblwiO1xuZXhwb3J0ICogYXMgbmFtZWRMYW1iZGFSb2xlIGZyb20gXCIuL25hbWVkLWxhbWJkYS1yb2xlXCI7XG5leHBvcnQgKiBhcyBzaGFyZWRDb25maWcgZnJvbSBcIi4vc2hhcmVkLWNvbmZpZ1wiO1xuZXhwb3J0ICogYXMgbW9uaXRvcmVkUXVldWUgZnJvbSBcIi4vbW9uaXRvcmVkLXF1ZXVlXCI7XG4iXX0=
package/index.ts CHANGED
@@ -19,3 +19,4 @@ export * as lambda from "./lambda";
19
19
  export * as provider from "./provider-function";
20
20
  export * as namedLambdaRole from "./named-lambda-role";
21
21
  export * as sharedConfig from "./shared-config";
22
+ export * as monitoredQueue from "./monitored-queue";
package/lambda/index.js CHANGED
@@ -56,7 +56,7 @@ function getPythonUvDockerImage() {
56
56
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
57
57
  }
58
58
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
59
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.22" };
59
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.24" };
60
60
  // Class constructs, to be used for caching the layers
61
61
  // This means that if there are multiple lambdas throughout the stack
62
62
  // They will all use the same layer
@@ -0,0 +1,21 @@
1
+ # MonitoredQueue
2
+
3
+ A construct creating an SQS queue that has an attached dead-letter queue and an alarm that triggers when a message
4
+ arrives in the dead-letter queue. An SNS topic can also be notified when the alarm triggers.
5
+
6
+ Usage example:
7
+
8
+ ```ts
9
+ new MonitoredQueue(this, "MonitoredQueue", {
10
+ queueProps: {
11
+ queueName: "queue",
12
+ removalPolicy: RemovalPolicy.RETAIN,
13
+ },
14
+ dlqProps: {
15
+ queueName: `$queue-dlq`,
16
+ removalPolicy: RemovalPolicy.RETAIN,
17
+ retentionPeriod: Duration.days(14),
18
+ },
19
+ snsTopicArn: SlackAlerts.formatArn(this),
20
+ });
21
+ ```
@@ -0,0 +1,57 @@
1
+ import { Construct } from "constructs";
2
+ import { Queue } from "aws-cdk-lib/aws-sqs";
3
+ import { Alarm } from "aws-cdk-lib/aws-cloudwatch";
4
+ import { Duration, RemovalPolicy } from "aws-cdk-lib";
5
+ /**
6
+ * Properties for the monitored queue.
7
+ */
8
+ export interface MonitoredQueueProps {
9
+ /**
10
+ * The props for the main SQS queue.
11
+ */
12
+ readonly queueProps?: QueueProps;
13
+ /**
14
+ * The props for the dead-letter SQS queue when a message fails.
15
+ */
16
+ readonly dlqProps?: QueueProps;
17
+ /**
18
+ * The maximum number of times a message can be unsuccessfully received before
19
+ * pushing it to the DLQ. Defaults to 3.
20
+ */
21
+ readonly maxReceiveCount?: number;
22
+ /**
23
+ * Send the alarm notification to the SNS topic with the ARN.
24
+ */
25
+ readonly snsTopicArn?: string;
26
+ }
27
+ /**
28
+ * Properties for an SQS queue.
29
+ */
30
+ export interface QueueProps {
31
+ /**
32
+ * The name of the queue to construct. Defaults to the automatically generated name.
33
+ */
34
+ readonly queueName?: string;
35
+ /**
36
+ * How long messages stay in the queue.
37
+ */
38
+ readonly retentionPeriod?: Duration;
39
+ /**
40
+ * The removal policy of the queue.
41
+ */
42
+ readonly removalPolicy?: RemovalPolicy;
43
+ }
44
+ /**
45
+ * A construct that defines an SQS queue, along with a DLQ and CloudWatch alarms that can notify an
46
+ * SNS topic.
47
+ */
48
+ export declare class MonitoredQueue extends Construct {
49
+ readonly queue: Queue;
50
+ readonly deadLetterQueue: Queue;
51
+ readonly alarm: Alarm;
52
+ constructor(scope: Construct, id: string, props: MonitoredQueueProps);
53
+ /**
54
+ * Get the SQS queue ARN.
55
+ */
56
+ get queueArn(): string;
57
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MonitoredQueue = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const constructs_1 = require("constructs");
6
+ const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
7
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
8
+ const aws_sns_1 = require("aws-cdk-lib/aws-sns");
9
+ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
10
+ /**
11
+ * A construct that defines an SQS queue, along with a DLQ and CloudWatch alarms that can notify an
12
+ * SNS topic.
13
+ */
14
+ class MonitoredQueue extends constructs_1.Construct {
15
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "0.0.24" };
16
+ queue;
17
+ deadLetterQueue;
18
+ alarm;
19
+ constructor(scope, id, props) {
20
+ super(scope, id);
21
+ this.deadLetterQueue = new aws_sqs_1.Queue(this, "DeadLetterQueue", {
22
+ enforceSSL: true,
23
+ ...props.dlqProps,
24
+ });
25
+ this.queue = new aws_sqs_1.Queue(this, "Queue", {
26
+ enforceSSL: true,
27
+ deadLetterQueue: {
28
+ maxReceiveCount: props.maxReceiveCount ?? 3,
29
+ queue: this.deadLetterQueue,
30
+ },
31
+ ...props.queueProps,
32
+ });
33
+ this.alarm = new aws_cloudwatch_1.Alarm(this, "Alarm", {
34
+ metric: this.deadLetterQueue.metricApproximateNumberOfMessagesVisible(),
35
+ treatMissingData: aws_cloudwatch_1.TreatMissingData.BREACHING,
36
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_THRESHOLD,
37
+ threshold: 0,
38
+ evaluationPeriods: 1,
39
+ alarmName: `${this.queue.queueName}-alarm`,
40
+ alarmDescription: "An event has been received in the dead letter queue.",
41
+ });
42
+ if (props.snsTopicArn !== undefined) {
43
+ const topic = aws_sns_1.Topic.fromTopicArn(this, "Topic", props.snsTopicArn);
44
+ this.alarm.addAlarmAction(new aws_cloudwatch_actions_1.SnsAction(topic));
45
+ }
46
+ }
47
+ /**
48
+ * Get the SQS queue ARN.
49
+ */
50
+ get queueArn() {
51
+ return this.queue.queueArn;
52
+ }
53
+ }
54
+ exports.MonitoredQueue = MonitoredQueue;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLGlEQUE0QztBQUM1QywrREFJb0M7QUFFcEMsaURBQTRDO0FBQzVDLCtFQUErRDtBQTJDL0Q7OztHQUdHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7O0lBQ2xDLEtBQUssQ0FBUTtJQUNiLGVBQWUsQ0FBUTtJQUN2QixLQUFLLENBQVE7SUFFdEIsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsS0FBSyxDQUFDLFFBQVE7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGVBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ3BDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGVBQWUsRUFBRTtnQkFDZixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSxDQUFDO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDNUI7WUFDRCxHQUFHLEtBQUssQ0FBQyxVQUFVO1NBQ3BCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxzQkFBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsd0NBQXdDLEVBQUU7WUFDdkUsZ0JBQWdCLEVBQUUsaUNBQWdCLENBQUMsU0FBUztZQUM1QyxrQkFBa0IsRUFBRSxtQ0FBa0IsQ0FBQyxzQkFBc0I7WUFDN0QsU0FBUyxFQUFFLENBQUM7WUFDWixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxRQUFRO1lBQzFDLGdCQUFnQixFQUFFLHNEQUFzRDtTQUN6RSxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMsTUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLGtDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDOztBQTNDSCx3Q0E0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUXVldWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHtcbiAgQWxhcm0sXG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNuc1wiO1xuaW1wb3J0IHsgU25zQWN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoLWFjdGlvbnNcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgbW9uaXRvcmVkIHF1ZXVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JlZFF1ZXVlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHByb3BzIGZvciB0aGUgbWFpbiBTUVMgcXVldWUuXG4gICAqL1xuICByZWFkb25seSBxdWV1ZVByb3BzPzogUXVldWVQcm9wcztcbiAgLyoqXG4gICAqIFRoZSBwcm9wcyBmb3IgdGhlIGRlYWQtbGV0dGVyIFNRUyBxdWV1ZSB3aGVuIGEgbWVzc2FnZSBmYWlscy5cbiAgICovXG4gIHJlYWRvbmx5IGRscVByb3BzPzogUXVldWVQcm9wcztcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyBhIG1lc3NhZ2UgY2FuIGJlIHVuc3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGJlZm9yZVxuICAgKiBwdXNoaW5nIGl0IHRvIHRoZSBETFEuIERlZmF1bHRzIHRvIDMuXG4gICAqL1xuICByZWFkb25seSBtYXhSZWNlaXZlQ291bnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTZW5kIHRoZSBhbGFybSBub3RpZmljYXRpb24gdG8gdGhlIFNOUyB0b3BpYyB3aXRoIHRoZSBBUk4uXG4gICAqL1xuICByZWFkb25seSBzbnNUb3BpY0Fybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBTUVMgcXVldWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVldWVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcXVldWUgdG8gY29uc3RydWN0LiBEZWZhdWx0cyB0byB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEhvdyBsb25nIG1lc3NhZ2VzIHN0YXkgaW4gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0ZW50aW9uUGVyaW9kPzogRHVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgcmVtb3ZhbCBwb2xpY3kgb2YgdGhlIHF1ZXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdGhhdCBkZWZpbmVzIGFuIFNRUyBxdWV1ZSwgYWxvbmcgd2l0aCBhIERMUSBhbmQgQ2xvdWRXYXRjaCBhbGFybXMgdGhhdCBjYW4gbm90aWZ5IGFuXG4gKiBTTlMgdG9waWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yZWRRdWV1ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHF1ZXVlOiBRdWV1ZTtcbiAgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlOiBRdWV1ZTtcbiAgcmVhZG9ubHkgYWxhcm06IEFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNb25pdG9yZWRRdWV1ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZGVhZExldHRlclF1ZXVlID0gbmV3IFF1ZXVlKHRoaXMsIFwiRGVhZExldHRlclF1ZXVlXCIsIHtcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICAuLi5wcm9wcy5kbHFQcm9wcyxcbiAgICB9KTtcblxuICAgIHRoaXMucXVldWUgPSBuZXcgUXVldWUodGhpcywgXCJRdWV1ZVwiLCB7XG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgZGVhZExldHRlclF1ZXVlOiB7XG4gICAgICAgIG1heFJlY2VpdmVDb3VudDogcHJvcHMubWF4UmVjZWl2ZUNvdW50ID8/IDMsXG4gICAgICAgIHF1ZXVlOiB0aGlzLmRlYWRMZXR0ZXJRdWV1ZSxcbiAgICAgIH0sXG4gICAgICAuLi5wcm9wcy5xdWV1ZVByb3BzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hbGFybSA9IG5ldyBBbGFybSh0aGlzLCBcIkFsYXJtXCIsIHtcbiAgICAgIG1ldHJpYzogdGhpcy5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSgpLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgdGhyZXNob2xkOiAwLFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICBhbGFybU5hbWU6IGAke3RoaXMucXVldWUucXVldWVOYW1lfS1hbGFybWAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBcIkFuIGV2ZW50IGhhcyBiZWVuIHJlY2VpdmVkIGluIHRoZSBkZWFkIGxldHRlciBxdWV1ZS5cIixcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zbnNUb3BpY0FybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0b3BpYyA9IFRvcGljLmZyb21Ub3BpY0Fybih0aGlzLCBcIlRvcGljXCIsIHByb3BzLnNuc1RvcGljQXJuKTtcbiAgICAgIHRoaXMuYWxhcm0uYWRkQWxhcm1BY3Rpb24obmV3IFNuc0FjdGlvbih0b3BpYykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBBUk4uXG4gICAqL1xuICBnZXQgcXVldWVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZUFybjtcbiAgfVxufVxuIl19
@@ -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.22" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.24" };
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.22",
3
+ "version": "0.0.24",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -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.22" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.24" };
19
19
  _function;
20
20
  _response;
21
21
  constructor(scope, id, props) {
@@ -5,3 +5,4 @@ export * as account from "./accounts";
5
5
  export * as database from "./database";
6
6
  export * as s3 from "./s3";
7
7
  export * as icav2 from "./icav2";
8
+ export * as slack from "./slack";
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.icav2 = exports.s3 = exports.database = exports.account = exports.eventBridge = exports.networking = exports.fileManager = void 0;
36
+ exports.slack = exports.icav2 = exports.s3 = exports.database = exports.account = exports.eventBridge = exports.networking = exports.fileManager = void 0;
37
37
  exports.fileManager = __importStar(require("./file-manager"));
38
38
  exports.networking = __importStar(require("./networking"));
39
39
  exports.eventBridge = __importStar(require("./event-bridge"));
@@ -41,4 +41,5 @@ exports.account = __importStar(require("./accounts"));
41
41
  exports.database = __importStar(require("./database"));
42
42
  exports.s3 = __importStar(require("./s3"));
43
43
  exports.icav2 = __importStar(require("./icav2"));
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBOEM7QUFDOUMsMkRBQTJDO0FBQzNDLDhEQUE4QztBQUM5QyxzREFBc0M7QUFDdEMsdURBQXVDO0FBQ3ZDLDJDQUEyQjtBQUMzQixpREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBmaWxlTWFuYWdlciBmcm9tIFwiLi9maWxlLW1hbmFnZXJcIjtcbmV4cG9ydCAqIGFzIG5ldHdvcmtpbmcgZnJvbSBcIi4vbmV0d29ya2luZ1wiO1xuZXhwb3J0ICogYXMgZXZlbnRCcmlkZ2UgZnJvbSBcIi4vZXZlbnQtYnJpZGdlXCI7XG5leHBvcnQgKiBhcyBhY2NvdW50IGZyb20gXCIuL2FjY291bnRzXCI7XG5leHBvcnQgKiBhcyBkYXRhYmFzZSBmcm9tIFwiLi9kYXRhYmFzZVwiO1xuZXhwb3J0ICogYXMgczMgZnJvbSBcIi4vczNcIjtcbmV4cG9ydCAqIGFzIGljYXYyIGZyb20gXCIuL2ljYXYyXCI7Il19
44
+ exports.slack = __importStar(require("./slack"));
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBOEM7QUFDOUMsMkRBQTJDO0FBQzNDLDhEQUE4QztBQUM5QyxzREFBc0M7QUFDdEMsdURBQXVDO0FBQ3ZDLDJDQUEyQjtBQUMzQixpREFBaUM7QUFDakMsaURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgZmlsZU1hbmFnZXIgZnJvbSBcIi4vZmlsZS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBhcyBuZXR3b3JraW5nIGZyb20gXCIuL25ldHdvcmtpbmdcIjtcbmV4cG9ydCAqIGFzIGV2ZW50QnJpZGdlIGZyb20gXCIuL2V2ZW50LWJyaWRnZVwiO1xuZXhwb3J0ICogYXMgYWNjb3VudCBmcm9tIFwiLi9hY2NvdW50c1wiO1xuZXhwb3J0ICogYXMgZGF0YWJhc2UgZnJvbSBcIi4vZGF0YWJhc2VcIjtcbmV4cG9ydCAqIGFzIHMzIGZyb20gXCIuL3MzXCI7XG5leHBvcnQgKiBhcyBpY2F2MiBmcm9tIFwiLi9pY2F2MlwiO1xuZXhwb3J0ICogYXMgc2xhY2sgZnJvbSBcIi4vc2xhY2tcIjtcbiJdfQ==
@@ -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.22" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.24" };
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.22" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.24" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope
@@ -0,0 +1,16 @@
1
+ import { Stack } from "aws-cdk-lib";
2
+ /**
3
+ * The SNS topic for slack alerts to alerts-dev, alerts-stg, or alerts-prod.
4
+ */
5
+ export declare const SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
6
+ /**
7
+ * A helper class to construct the arn for the slack SNS topic.
8
+ */
9
+ export declare class SlackAlerts {
10
+ /**
11
+ * Format the ARN for the slack alerts SNS topic for the current stack.
12
+ * @param stack
13
+ * @returns Arn
14
+ */
15
+ static formatArn(stack: Stack): string;
16
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlackAlerts = exports.SLACK_ALERTS_SNS_TOPIC = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ /**
7
+ * The SNS topic for slack alerts to alerts-dev, alerts-stg, or alerts-prod.
8
+ */
9
+ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
10
+ /**
11
+ * A helper class to construct the arn for the slack SNS topic.
12
+ */
13
+ class SlackAlerts {
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "0.0.24" };
15
+ /**
16
+ * Format the ARN for the slack alerts SNS topic for the current stack.
17
+ * @param stack
18
+ * @returns Arn
19
+ */
20
+ static formatArn(stack) {
21
+ return aws_cdk_lib_1.Arn.format({
22
+ service: "sns",
23
+ resource: exports.SLACK_ALERTS_SNS_TOPIC,
24
+ }, stack);
25
+ }
26
+ }
27
+ exports.SlackAlerts = SlackAlerts;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzbGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkNBQXlDO0FBRXpDOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyx3QkFBd0IsQ0FBQztBQUUvRDs7R0FFRztBQUNILE1BQWEsV0FBVzs7SUFDdEI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBWTtRQUNsQyxPQUFPLGlCQUFHLENBQUMsTUFBTSxDQUNmO1lBQ0UsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsOEJBQXNCO1NBQ2pDLEVBQ0QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDOztBQWRILGtDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG4vKipcbiAqIFRoZSBTTlMgdG9waWMgZm9yIHNsYWNrIGFsZXJ0cyB0byBhbGVydHMtZGV2LCBhbGVydHMtc3RnLCBvciBhbGVydHMtcHJvZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNMQUNLX0FMRVJUU19TTlNfVE9QSUMgPSBcIkF3c0NoYXRCb3RUb3BpYy1hbGVydHNcIjtcblxuLyoqXG4gKiBBIGhlbHBlciBjbGFzcyB0byBjb25zdHJ1Y3QgdGhlIGFybiBmb3IgdGhlIHNsYWNrIFNOUyB0b3BpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNsYWNrQWxlcnRzIHtcbiAgLyoqXG4gICAqIEZvcm1hdCB0aGUgQVJOIGZvciB0aGUgc2xhY2sgYWxlcnRzIFNOUyB0b3BpYyBmb3IgdGhlIGN1cnJlbnQgc3RhY2suXG4gICAqIEBwYXJhbSBzdGFja1xuICAgKiBAcmV0dXJucyBBcm5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0QXJuKHN0YWNrOiBTdGFjayk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFybi5mb3JtYXQoXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2U6IFwic25zXCIsXG4gICAgICAgIHJlc291cmNlOiBTTEFDS19BTEVSVFNfU05TX1RPUElDLFxuICAgICAgfSxcbiAgICAgIHN0YWNrLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const cdk = __importStar(require("aws-cdk-lib"));
37
+ const assertions_1 = require("aws-cdk-lib/assertions");
38
+ const monitored_queue_1 = require("../monitored-queue");
39
+ let stack;
40
+ beforeEach(() => {
41
+ stack = new cdk.Stack();
42
+ });
43
+ test("Test monitored queue created props", () => {
44
+ new monitored_queue_1.MonitoredQueue(stack, "MonitoredQueue", {
45
+ queueProps: {
46
+ queueName: "queue",
47
+ },
48
+ dlqProps: {
49
+ queueName: "queue-dlq",
50
+ },
51
+ snsTopicArn: "arn:aws:sns:ap-southeast-2:123456789012:topic",
52
+ });
53
+ const template = assertions_1.Template.fromStack(stack);
54
+ template.resourceCountIs("AWS::SQS::Queue", 2);
55
+ template.hasResourceProperties("AWS::SQS::Queue", {
56
+ QueueName: "queue",
57
+ RedrivePolicy: {
58
+ deadLetterTargetArn: assertions_1.Match.anyValue(),
59
+ maxReceiveCount: 3,
60
+ },
61
+ });
62
+ template.hasResourceProperties("AWS::SQS::Queue", {
63
+ QueueName: "queue-dlq",
64
+ });
65
+ template.hasResourceProperties("AWS::CloudWatch::Alarm", {
66
+ ComparisonOperator: "GreaterThanThreshold",
67
+ EvaluationPeriods: 1,
68
+ Threshold: 0,
69
+ AlarmActions: ["arn:aws:sns:ap-southeast-2:123456789012:topic"],
70
+ });
71
+ });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmVkLXF1ZXVlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb25pdG9yZWQtcXVldWUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFtQztBQUNuQyx1REFBeUQ7QUFDekQsd0RBQW9EO0FBRXBELElBQUksS0FBZ0IsQ0FBQztBQUVyQixVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtJQUM5QyxJQUFJLGdDQUFjLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1FBQzFDLFVBQVUsRUFBRTtZQUNWLFNBQVMsRUFBRSxPQUFPO1NBQ25CO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsU0FBUyxFQUFFLFdBQVc7U0FDdkI7UUFDRCxXQUFXLEVBQUUsK0NBQStDO0tBQzdELENBQUMsQ0FBQztJQUNILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTNDLFFBQVEsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFO1FBQ2hELFNBQVMsRUFBRSxPQUFPO1FBQ2xCLGFBQWEsRUFBRTtZQUNiLG1CQUFtQixFQUFFLGtCQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3JDLGVBQWUsRUFBRSxDQUFDO1NBQ25CO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFO1FBQ2hELFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsRUFBRTtRQUN2RCxrQkFBa0IsRUFBRSxzQkFBc0I7UUFDMUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixTQUFTLEVBQUUsQ0FBQztRQUNaLFlBQVksRUFBRSxDQUFDLCtDQUErQyxDQUFDO0tBQ2hFLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgTWF0Y2gsIFRlbXBsYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7IE1vbml0b3JlZFF1ZXVlIH0gZnJvbSBcIi4uL21vbml0b3JlZC1xdWV1ZVwiO1xuXG5sZXQgc3RhY2s6IGNkay5TdGFjaztcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xufSk7XG5cbnRlc3QoXCJUZXN0IG1vbml0b3JlZCBxdWV1ZSBjcmVhdGVkIHByb3BzXCIsICgpID0+IHtcbiAgbmV3IE1vbml0b3JlZFF1ZXVlKHN0YWNrLCBcIk1vbml0b3JlZFF1ZXVlXCIsIHtcbiAgICBxdWV1ZVByb3BzOiB7XG4gICAgICBxdWV1ZU5hbWU6IFwicXVldWVcIixcbiAgICB9LFxuICAgIGRscVByb3BzOiB7XG4gICAgICBxdWV1ZU5hbWU6IFwicXVldWUtZGxxXCIsXG4gICAgfSxcbiAgICBzbnNUb3BpY0FybjogXCJhcm46YXdzOnNuczphcC1zb3V0aGVhc3QtMjoxMjM0NTY3ODkwMTI6dG9waWNcIixcbiAgfSk7XG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoXCJBV1M6OlNRUzo6UXVldWVcIiwgMik7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6U1FTOjpRdWV1ZVwiLCB7XG4gICAgUXVldWVOYW1lOiBcInF1ZXVlXCIsXG4gICAgUmVkcml2ZVBvbGljeToge1xuICAgICAgZGVhZExldHRlclRhcmdldEFybjogTWF0Y2guYW55VmFsdWUoKSxcbiAgICAgIG1heFJlY2VpdmVDb3VudDogMyxcbiAgICB9LFxuICB9KTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBRdWV1ZU5hbWU6IFwicXVldWUtZGxxXCIsXG4gIH0pO1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoXCJBV1M6OkNsb3VkV2F0Y2g6OkFsYXJtXCIsIHtcbiAgICBDb21wYXJpc29uT3BlcmF0b3I6IFwiR3JlYXRlclRoYW5UaHJlc2hvbGRcIixcbiAgICBFdmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICBUaHJlc2hvbGQ6IDAsXG4gICAgQWxhcm1BY3Rpb25zOiBbXCJhcm46YXdzOnNuczphcC1zb3V0aGVhc3QtMjoxMjM0NTY3ODkwMTI6dG9waWNcIl0sXG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const cdk = __importStar(require("aws-cdk-lib"));
37
+ const assertions_1 = require("aws-cdk-lib/assertions");
38
+ const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
39
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
40
+ const aws_s3_1 = require("aws-cdk-lib/aws-s3");
41
+ const index_1 = require("../provider-function/index");
42
+ let stack;
43
+ let vpc;
44
+ beforeEach(() => {
45
+ stack = new cdk.Stack();
46
+ vpc = new ec2.Vpc(stack, "MockExistingVPC", {
47
+ subnetConfiguration: [
48
+ {
49
+ cidrMask: 24,
50
+ name: "publicSubnet",
51
+ subnetType: ec2.SubnetType.PUBLIC,
52
+ },
53
+ {
54
+ cidrMask: 24,
55
+ name: "privateWithEgressSubnet",
56
+ subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
57
+ },
58
+ ],
59
+ });
60
+ });
61
+ function assert_common(template, key) {
62
+ // Contains the provider.
63
+ template.hasResourceProperties("AWS::Lambda::Function", {
64
+ Environment: {
65
+ Variables: {
66
+ USER_ON_EVENT_FUNCTION_ARN: {
67
+ "Fn::GetAtt": [assertions_1.Match.stringLikeRegexp("TestFunction*"), "Arn"],
68
+ },
69
+ },
70
+ },
71
+ });
72
+ // Contains the custom resource.
73
+ template.hasResourceProperties("AWS::CloudFormation::CustomResource", {
74
+ S3Key: key,
75
+ });
76
+ }
77
+ test("Test ProviderFunction", () => {
78
+ const testFunction = new aws_lambda_1.Function(stack, "TestFunction", {
79
+ code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, "TestBucket", { bucketName: "bucket" }), "key"),
80
+ runtime: aws_lambda_1.Runtime.NODEJS_20_X,
81
+ handler: "index.handler",
82
+ });
83
+ new index_1.ProviderFunction(stack, "TestProviderFunction", {
84
+ function: testFunction,
85
+ vpc,
86
+ });
87
+ const template = assertions_1.Template.fromStack(stack);
88
+ assert_common(template, "key");
89
+ });
90
+ test("Test ProviderFunction additionalHash", () => {
91
+ const testFunction = new aws_lambda_1.Function(stack, "TestFunction", {
92
+ code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, "TestBucket", { bucketName: "bucket" }), "key"),
93
+ runtime: aws_lambda_1.Runtime.NODEJS_20_X,
94
+ handler: "index.handler",
95
+ });
96
+ new index_1.ProviderFunction(stack, "TestProviderFunction", {
97
+ function: testFunction,
98
+ vpc,
99
+ additionalHash: "hash",
100
+ });
101
+ const template = assertions_1.Template.fromStack(stack);
102
+ assert_common(template, "hash");
103
+ });
104
+ test("Test ProviderFunction properties", () => {
105
+ const testFunction = new aws_lambda_1.Function(stack, "TestFunction", {
106
+ code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, "TestBucket", { bucketName: "bucket" }), "key"),
107
+ runtime: aws_lambda_1.Runtime.NODEJS_20_X,
108
+ handler: "index.handler",
109
+ });
110
+ new index_1.ProviderFunction(stack, "TestProviderFunction", {
111
+ function: testFunction,
112
+ vpc,
113
+ resourceProperties: { Property: "value" },
114
+ });
115
+ const template = assertions_1.Template.fromStack(stack);
116
+ assert_common(template, "key");
117
+ template.hasResourceProperties("AWS::CloudFormation::CustomResource", {
118
+ Property: "value",
119
+ });
120
+ });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItZnVuY3Rpb24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb3ZpZGVyLWZ1bmN0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFDbkMsdURBQXlEO0FBQ3pELHlEQUEyQztBQUMzQyx1REFBbUU7QUFDbkUsK0NBQTRDO0FBQzVDLHNEQUE4RDtBQUU5RCxJQUFJLEtBQWdCLENBQUM7QUFDckIsSUFBSSxHQUFZLENBQUM7QUFFakIsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtRQUMxQyxtQkFBbUIsRUFBRTtZQUNuQjtnQkFDRSxRQUFRLEVBQUUsRUFBRTtnQkFDWixJQUFJLEVBQUUsY0FBYztnQkFDcEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTTthQUNsQztZQUNEO2dCQUNFLFFBQVEsRUFBRSxFQUFFO2dCQUNaLElBQUksRUFBRSx5QkFBeUI7Z0JBQy9CLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLG1CQUFtQjthQUMvQztTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxTQUFTLGFBQWEsQ0FBQyxRQUFrQixFQUFFLEdBQVc7SUFDcEQseUJBQXlCO0lBQ3pCLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyx1QkFBdUIsRUFBRTtRQUN0RCxXQUFXLEVBQUU7WUFDWCxTQUFTLEVBQUU7Z0JBQ1QsMEJBQTBCLEVBQUU7b0JBQzFCLFlBQVksRUFBRSxDQUFDLGtCQUFLLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDO2lCQUMvRDthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFFSCxnQ0FBZ0M7SUFDaEMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLHFDQUFxQyxFQUFFO1FBQ3BFLEtBQUssRUFBRSxHQUFHO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7UUFDdkQsSUFBSSxFQUFFLElBQUksbUJBQU0sQ0FDZCxJQUFJLGVBQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQ3pELEtBQUssQ0FDTjtRQUNELE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7UUFDNUIsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSx3QkFBZ0IsQ0FBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7UUFDbEQsUUFBUSxFQUFFLFlBQVk7UUFDdEIsR0FBRztLQUNKLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUkscUJBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO1FBQ3ZELElBQUksRUFBRSxJQUFJLG1CQUFNLENBQ2QsSUFBSSxlQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUN6RCxLQUFLLENBQ047UUFDRCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1FBQzVCLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksd0JBQWdCLENBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1FBQ2xELFFBQVEsRUFBRSxZQUFZO1FBQ3RCLEdBQUc7UUFDSCxjQUFjLEVBQUUsTUFBTTtLQUN2QixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxhQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtJQUM1QyxNQUFNLFlBQVksR0FBRyxJQUFJLHFCQUFRLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtRQUN2RCxJQUFJLEVBQUUsSUFBSSxtQkFBTSxDQUNkLElBQUksZUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFDekQsS0FBSyxDQUNOO1FBQ0QsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztRQUM1QixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLHdCQUFnQixDQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtRQUNsRCxRQUFRLEVBQUUsWUFBWTtRQUN0QixHQUFHO1FBQ0gsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO0tBQzFDLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFL0IsUUFBUSxDQUFDLHFCQUFxQixDQUFDLHFDQUFxQyxFQUFFO1FBQ3BFLFFBQVEsRUFBRSxPQUFPO0tBQ2xCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgTWF0Y2gsIFRlbXBsYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgRnVuY3Rpb24sIFJ1bnRpbWUsIFMzQ29kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBQcm92aWRlckZ1bmN0aW9uIH0gZnJvbSBcIi4uL3Byb3ZpZGVyLWZ1bmN0aW9uL2luZGV4XCI7XG5cbmxldCBzdGFjazogY2RrLlN0YWNrO1xubGV0IHZwYzogZWMyLlZwYztcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICB2cGMgPSBuZXcgZWMyLlZwYyhzdGFjaywgXCJNb2NrRXhpc3RpbmdWUENcIiwge1xuICAgIHN1Ym5ldENvbmZpZ3VyYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgY2lkck1hc2s6IDI0LFxuICAgICAgICBuYW1lOiBcInB1YmxpY1N1Ym5ldFwiLFxuICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgIG5hbWU6IFwicHJpdmF0ZVdpdGhFZ3Jlc3NTdWJuZXRcIixcbiAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gYXNzZXJ0X2NvbW1vbih0ZW1wbGF0ZTogVGVtcGxhdGUsIGtleTogc3RyaW5nKSB7XG4gIC8vIENvbnRhaW5zIHRoZSBwcm92aWRlci5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpMYW1iZGE6OkZ1bmN0aW9uXCIsIHtcbiAgICBFbnZpcm9ubWVudDoge1xuICAgICAgVmFyaWFibGVzOiB7XG4gICAgICAgIFVTRVJfT05fRVZFTlRfRlVOQ1RJT05fQVJOOiB7XG4gICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKFwiVGVzdEZ1bmN0aW9uKlwiKSwgXCJBcm5cIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIENvbnRhaW5zIHRoZSBjdXN0b20gcmVzb3VyY2UuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcyhcIkFXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlXCIsIHtcbiAgICBTM0tleToga2V5LFxuICB9KTtcbn1cblxudGVzdChcIlRlc3QgUHJvdmlkZXJGdW5jdGlvblwiLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3RGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbihzdGFjaywgXCJUZXN0RnVuY3Rpb25cIiwge1xuICAgIGNvZGU6IG5ldyBTM0NvZGUoXG4gICAgICBuZXcgQnVja2V0KHN0YWNrLCBcIlRlc3RCdWNrZXRcIiwgeyBidWNrZXROYW1lOiBcImJ1Y2tldFwiIH0pLFxuICAgICAgXCJrZXlcIixcbiAgICApLFxuICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gIH0pO1xuXG4gIG5ldyBQcm92aWRlckZ1bmN0aW9uKHN0YWNrLCBcIlRlc3RQcm92aWRlckZ1bmN0aW9uXCIsIHtcbiAgICBmdW5jdGlvbjogdGVzdEZ1bmN0aW9uLFxuICAgIHZwYyxcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBhc3NlcnRfY29tbW9uKHRlbXBsYXRlLCBcImtleVwiKTtcbn0pO1xuXG50ZXN0KFwiVGVzdCBQcm92aWRlckZ1bmN0aW9uIGFkZGl0aW9uYWxIYXNoXCIsICgpID0+IHtcbiAgY29uc3QgdGVzdEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHN0YWNrLCBcIlRlc3RGdW5jdGlvblwiLCB7XG4gICAgY29kZTogbmV3IFMzQ29kZShcbiAgICAgIG5ldyBCdWNrZXQoc3RhY2ssIFwiVGVzdEJ1Y2tldFwiLCB7IGJ1Y2tldE5hbWU6IFwiYnVja2V0XCIgfSksXG4gICAgICBcImtleVwiLFxuICAgICksXG4gICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgfSk7XG5cbiAgbmV3IFByb3ZpZGVyRnVuY3Rpb24oc3RhY2ssIFwiVGVzdFByb3ZpZGVyRnVuY3Rpb25cIiwge1xuICAgIGZ1bmN0aW9uOiB0ZXN0RnVuY3Rpb24sXG4gICAgdnBjLFxuICAgIGFkZGl0aW9uYWxIYXNoOiBcImhhc2hcIixcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBhc3NlcnRfY29tbW9uKHRlbXBsYXRlLCBcImhhc2hcIik7XG59KTtcblxudGVzdChcIlRlc3QgUHJvdmlkZXJGdW5jdGlvbiBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgY29uc3QgdGVzdEZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHN0YWNrLCBcIlRlc3RGdW5jdGlvblwiLCB7XG4gICAgY29kZTogbmV3IFMzQ29kZShcbiAgICAgIG5ldyBCdWNrZXQoc3RhY2ssIFwiVGVzdEJ1Y2tldFwiLCB7IGJ1Y2tldE5hbWU6IFwiYnVja2V0XCIgfSksXG4gICAgICBcImtleVwiLFxuICAgICksXG4gICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgfSk7XG5cbiAgbmV3IFByb3ZpZGVyRnVuY3Rpb24oc3RhY2ssIFwiVGVzdFByb3ZpZGVyRnVuY3Rpb25cIiwge1xuICAgIGZ1bmN0aW9uOiB0ZXN0RnVuY3Rpb24sXG4gICAgdnBjLFxuICAgIHJlc291cmNlUHJvcGVydGllczogeyBQcm9wZXJ0eTogXCJ2YWx1ZVwiIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgYXNzZXJ0X2NvbW1vbih0ZW1wbGF0ZSwgXCJrZXlcIik7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKFwiQVdTOjpDbG91ZEZvcm1hdGlvbjo6Q3VzdG9tUmVzb3VyY2VcIiwge1xuICAgIFByb3BlcnR5OiBcInZhbHVlXCIsXG4gIH0pO1xufSk7XG4iXX0=
@@ -1,121 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const cdk = __importStar(require("aws-cdk-lib"));
37
- const assertions_1 = require("aws-cdk-lib/assertions");
38
- const ec2 = __importStar(require("aws-cdk-lib/aws-ec2"));
39
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
40
- const aws_s3_1 = require("aws-cdk-lib/aws-s3");
41
- const index_1 = require("../provider-function/index");
42
- let stack;
43
- let vpc;
44
- beforeEach(() => {
45
- stack = new cdk.Stack();
46
- vpc = new ec2.Vpc(stack, 'MockExistingVPC', {
47
- subnetConfiguration: [
48
- {
49
- cidrMask: 24,
50
- name: 'publicSubnet',
51
- subnetType: ec2.SubnetType.PUBLIC,
52
- },
53
- {
54
- cidrMask: 24,
55
- name: 'privateWithEgressSubnet',
56
- subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
57
- },
58
- ],
59
- });
60
- });
61
- function assert_common(template, key) {
62
- // Contains the provider.
63
- template.hasResourceProperties('AWS::Lambda::Function', {
64
- Environment: {
65
- Variables: {
66
- USER_ON_EVENT_FUNCTION_ARN: {
67
- 'Fn::GetAtt': [assertions_1.Match.stringLikeRegexp('TestFunction*'), 'Arn'],
68
- },
69
- },
70
- },
71
- });
72
- // Contains the custom resource.
73
- template.hasResourceProperties('AWS::CloudFormation::CustomResource', {
74
- S3Key: key,
75
- });
76
- }
77
- test('Test ProviderFunction', () => {
78
- const testFunction = new aws_lambda_1.Function(stack, 'TestFunction', {
79
- code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, 'TestBucket', { bucketName: 'bucket' }), 'key'),
80
- runtime: aws_lambda_1.Runtime.NODEJS_20_X,
81
- handler: 'index.handler',
82
- });
83
- new index_1.ProviderFunction(stack, 'TestProviderFunction', {
84
- function: testFunction,
85
- vpc,
86
- });
87
- const template = assertions_1.Template.fromStack(stack);
88
- assert_common(template, 'key');
89
- });
90
- test('Test ProviderFunction additionalHash', () => {
91
- const testFunction = new aws_lambda_1.Function(stack, 'TestFunction', {
92
- code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, 'TestBucket', { bucketName: 'bucket' }), 'key'),
93
- runtime: aws_lambda_1.Runtime.NODEJS_20_X,
94
- handler: 'index.handler',
95
- });
96
- new index_1.ProviderFunction(stack, 'TestProviderFunction', {
97
- function: testFunction,
98
- vpc,
99
- additionalHash: 'hash',
100
- });
101
- const template = assertions_1.Template.fromStack(stack);
102
- assert_common(template, 'hash');
103
- });
104
- test('Test ProviderFunction properties', () => {
105
- const testFunction = new aws_lambda_1.Function(stack, 'TestFunction', {
106
- code: new aws_lambda_1.S3Code(new aws_s3_1.Bucket(stack, 'TestBucket', { bucketName: 'bucket' }), 'key'),
107
- runtime: aws_lambda_1.Runtime.NODEJS_20_X,
108
- handler: 'index.handler',
109
- });
110
- new index_1.ProviderFunction(stack, 'TestProviderFunction', {
111
- function: testFunction,
112
- vpc,
113
- resourceProperties: { Property: 'value' },
114
- });
115
- const template = assertions_1.Template.fromStack(stack);
116
- assert_common(template, 'key');
117
- template.hasResourceProperties('AWS::CloudFormation::CustomResource', {
118
- Property: 'value',
119
- });
120
- });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJGdW5jdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJvdmlkZXJGdW5jdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW1DO0FBQ25DLHVEQUF5RDtBQUN6RCx5REFBMkM7QUFDM0MsdURBQW1FO0FBQ25FLCtDQUE0QztBQUM1QyxzREFBNEQ7QUFFNUQsSUFBSSxLQUFnQixDQUFDO0FBQ3JCLElBQUksR0FBWSxDQUFDO0FBRWpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDZCxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7UUFDMUMsbUJBQW1CLEVBQUU7WUFDbkI7Z0JBQ0UsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU07YUFDbEM7WUFDRDtnQkFDRSxRQUFRLEVBQUUsRUFBRTtnQkFDWixJQUFJLEVBQUUseUJBQXlCO2dCQUMvQixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7YUFDL0M7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxhQUFhLENBQUMsUUFBa0IsRUFBRSxHQUFXO0lBQ3BELHlCQUF5QjtJQUN6QixRQUFRLENBQUMscUJBQXFCLENBQUMsdUJBQXVCLEVBQUU7UUFDdEQsV0FBVyxFQUFFO1lBQ1gsU0FBUyxFQUFFO2dCQUNULDBCQUEwQixFQUFFO29CQUMxQixZQUFZLEVBQUUsQ0FBQyxrQkFBSyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQztpQkFDL0Q7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsZ0NBQWdDO0lBQ2hDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxxQ0FBcUMsRUFBRTtRQUNwRSxLQUFLLEVBQUUsR0FBRztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLElBQUkscUJBQVEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO1FBQ3ZELElBQUksRUFBRSxJQUFJLG1CQUFNLENBQUMsSUFBSSxlQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNsRixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1FBQzVCLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksd0JBQWdCLENBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1FBQ2xELFFBQVEsRUFBRSxZQUFZO1FBQ3RCLEdBQUc7S0FDSixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxNQUFNLFlBQVksR0FBRyxJQUFJLHFCQUFRLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtRQUN2RCxJQUFJLEVBQUUsSUFBSSxtQkFBTSxDQUFDLElBQUksZUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbEYsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztRQUM1QixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLHdCQUFnQixDQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtRQUNsRCxRQUFRLEVBQUUsWUFBWTtRQUN0QixHQUFHO1FBQ0gsY0FBYyxFQUFFLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7SUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBUSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7UUFDdkQsSUFBSSxFQUFFLElBQUksbUJBQU0sQ0FBQyxJQUFJLGVBQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7UUFDNUIsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQyxDQUFDO0lBRUgsSUFBSSx3QkFBZ0IsQ0FBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7UUFDbEQsUUFBUSxFQUFFLFlBQVk7UUFDdEIsR0FBRztRQUNILGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtLQUMxQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9CLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxxQ0FBcUMsRUFBRTtRQUNwRSxRQUFRLEVBQUUsT0FBTztLQUNsQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEZ1bmN0aW9uLCBSdW50aW1lLCBTM0NvZGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQge1Byb3ZpZGVyRnVuY3Rpb259IGZyb20gXCIuLi9wcm92aWRlci1mdW5jdGlvbi9pbmRleFwiO1xuXG5sZXQgc3RhY2s6IGNkay5TdGFjaztcbmxldCB2cGM6IGVjMi5WcGM7XG5cbmJlZm9yZUVhY2goKCkgPT4ge1xuICBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgdnBjID0gbmV3IGVjMi5WcGMoc3RhY2ssICdNb2NrRXhpc3RpbmdWUEMnLCB7XG4gICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xuICAgICAge1xuICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgIG5hbWU6ICdwdWJsaWNTdWJuZXQnLFxuICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgIG5hbWU6ICdwcml2YXRlV2l0aEVncmVzc1N1Ym5ldCcsXG4gICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIGFzc2VydF9jb21tb24odGVtcGxhdGU6IFRlbXBsYXRlLCBrZXk6IHN0cmluZykge1xuICAvLyBDb250YWlucyB0aGUgcHJvdmlkZXIuXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywge1xuICAgIEVudmlyb25tZW50OiB7XG4gICAgICBWYXJpYWJsZXM6IHtcbiAgICAgICAgVVNFUl9PTl9FVkVOVF9GVU5DVElPTl9BUk46IHtcbiAgICAgICAgICAnRm46OkdldEF0dCc6IFtNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCdUZXN0RnVuY3Rpb24qJyksICdBcm4nXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gQ29udGFpbnMgdGhlIGN1c3RvbSByZXNvdXJjZS5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZScsIHtcbiAgICBTM0tleToga2V5LFxuICB9KTtcbn1cblxudGVzdCgnVGVzdCBQcm92aWRlckZ1bmN0aW9uJywgKCkgPT4ge1xuICBjb25zdCB0ZXN0RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24oc3RhY2ssICdUZXN0RnVuY3Rpb24nLCB7XG4gICAgY29kZTogbmV3IFMzQ29kZShuZXcgQnVja2V0KHN0YWNrLCAnVGVzdEJ1Y2tldCcsIHsgYnVja2V0TmFtZTogJ2J1Y2tldCcgfSksICdrZXknKSxcbiAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgfSk7XG5cbiAgbmV3IFByb3ZpZGVyRnVuY3Rpb24oc3RhY2ssICdUZXN0UHJvdmlkZXJGdW5jdGlvbicsIHtcbiAgICBmdW5jdGlvbjogdGVzdEZ1bmN0aW9uLFxuICAgIHZwYyxcbiAgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICBhc3NlcnRfY29tbW9uKHRlbXBsYXRlLCAna2V5Jyk7XG59KTtcblxudGVzdCgnVGVzdCBQcm92aWRlckZ1bmN0aW9uIGFkZGl0aW9uYWxIYXNoJywgKCkgPT4ge1xuICBjb25zdCB0ZXN0RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24oc3RhY2ssICdUZXN0RnVuY3Rpb24nLCB7XG4gICAgY29kZTogbmV3IFMzQ29kZShuZXcgQnVja2V0KHN0YWNrLCAnVGVzdEJ1Y2tldCcsIHsgYnVja2V0TmFtZTogJ2J1Y2tldCcgfSksICdrZXknKSxcbiAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgfSk7XG5cbiAgbmV3IFByb3ZpZGVyRnVuY3Rpb24oc3RhY2ssICdUZXN0UHJvdmlkZXJGdW5jdGlvbicsIHtcbiAgICBmdW5jdGlvbjogdGVzdEZ1bmN0aW9uLFxuICAgIHZwYyxcbiAgICBhZGRpdGlvbmFsSGFzaDogJ2hhc2gnLFxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIGFzc2VydF9jb21tb24odGVtcGxhdGUsICdoYXNoJyk7XG59KTtcblxudGVzdCgnVGVzdCBQcm92aWRlckZ1bmN0aW9uIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3RGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbihzdGFjaywgJ1Rlc3RGdW5jdGlvbicsIHtcbiAgICBjb2RlOiBuZXcgUzNDb2RlKG5ldyBCdWNrZXQoc3RhY2ssICdUZXN0QnVja2V0JywgeyBidWNrZXROYW1lOiAnYnVja2V0JyB9KSwgJ2tleScpLFxuICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICB9KTtcblxuICBuZXcgUHJvdmlkZXJGdW5jdGlvbihzdGFjaywgJ1Rlc3RQcm92aWRlckZ1bmN0aW9uJywge1xuICAgIGZ1bmN0aW9uOiB0ZXN0RnVuY3Rpb24sXG4gICAgdnBjLFxuICAgIHJlc291cmNlUHJvcGVydGllczogeyBQcm9wZXJ0eTogJ3ZhbHVlJyB9LFxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIGFzc2VydF9jb21tb24odGVtcGxhdGUsICdrZXknKTtcblxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6Q2xvdWRGb3JtYXRpb246OkN1c3RvbVJlc291cmNlJywge1xuICAgIFByb3BlcnR5OiAndmFsdWUnLFxuICB9KTtcbn0pO1xuIl19