@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 +332 -2
- package/api-gateway/api-gateway.js +1 -1
- package/deployment-stack-pipeline/artifact-bucket.js +1 -1
- package/deployment-stack-pipeline/pipeline.js +1 -1
- package/dynamodb/index.js +2 -2
- package/ecs/index.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/index.ts +1 -0
- package/lambda/index.js +1 -1
- package/monitored-queue/README.md +21 -0
- package/monitored-queue/index.d.ts +57 -0
- package/monitored-queue/index.js +55 -0
- package/named-lambda-role/index.js +1 -1
- package/package.json +1 -1
- package/provider-function/index.js +1 -1
- package/shared-config/index.d.ts +1 -0
- package/shared-config/index.js +3 -2
- package/shared-config/networking.js +2 -2
- package/shared-config/slack.d.ts +16 -0
- package/shared-config/slack.js +28 -0
- package/test/monitored-queue.test.js +72 -0
- package/test/provider-function.test.d.ts +1 -0
- package/test/provider-function.test.js +121 -0
- package/test/providerFunction.test.js +0 -121
- /package/test/{providerFunction.test.d.ts → monitored-queue.test.d.ts} +0 -0
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.
|
|
6400
|
-
"fingerprint": "
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
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
|
-
|
|
52
|
+
exports.monitoredQueue = __importStar(require("./monitored-queue"));
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQkFBaUI7QUFDakIsaURBQWlDO0FBRWpDLGlDQUFpQztBQUNqQyxrRkFBa0U7QUFFbEUseUJBQXlCO0FBQ3pCLDREQUE0QztBQUU1QyxzQkFBc0I7QUFDdEIsdURBQXVDO0FBRXZDLDJCQUEyQjtBQUMzQiw2Q0FBNkI7QUFFN0Isb0JBQW9CO0FBQ3BCLG1EQUFtQztBQUVuQyxnRUFBZ0Q7QUFDaEQsdUVBQXVEO0FBQ3ZELGdFQUFnRDtBQUNoRCxvRUFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHZXQgc3RhZ2UgbmFtZVxuZXhwb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vdXRpbHNcIjtcblxuLy8gRGVwbG95bWVudCBwaXBlbGluZSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBkZXBsb3ltZW50UGlwZWxpbmUgZnJvbSBcIi4vZGVwbG95bWVudC1zdGFjay1waXBlbGluZVwiO1xuXG4vLyBBcGkgR2F0ZXdheSBjb25zdHJ1Y3RzXG5leHBvcnQgKiBhcyBhcGlnYXRld2F5IGZyb20gXCIuL2FwaS1nYXRld2F5XCI7XG5cbi8vIER5bmFtb0RCIENvbnN0cnVjdHNcbmV4cG9ydCAqIGFzIGR5bmFtb2RiIGZyb20gXCIuL2R5bmFtb2RiXCI7XG5cbi8vIEVDUyAvIEZhcmdhdGUgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgZWNzIGZyb20gXCIuL2Vjc1wiO1xuXG4vLyBMYW1iZGEgQ29uc3RydWN0c1xuZXhwb3J0ICogYXMgbGFtYmRhIGZyb20gXCIuL2xhbWJkYVwiO1xuXG5leHBvcnQgKiBhcyBwcm92aWRlciBmcm9tIFwiLi9wcm92aWRlci1mdW5jdGlvblwiO1xuZXhwb3J0ICogYXMgbmFtZWRMYW1iZGFSb2xlIGZyb20gXCIuL25hbWVkLWxhbWJkYS1yb2xlXCI7XG5leHBvcnQgKiBhcyBzaGFyZWRDb25maWcgZnJvbSBcIi4vc2hhcmVkLWNvbmZpZ1wiO1xuZXhwb3J0ICogYXMgbW9uaXRvcmVkUXVldWUgZnJvbSBcIi4vbW9uaXRvcmVkLXF1ZXVlXCI7XG4iXX0=
|
package/index.ts
CHANGED
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.
|
|
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.
|
|
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
|
@@ -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.
|
|
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) {
|
package/shared-config/index.d.ts
CHANGED
package/shared-config/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.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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
File without changes
|