@aws-solutions-constructs/aws-lambda-opensearch 2.26.0

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.
@@ -0,0 +1,675 @@
1
+ {
2
+ "Resources": {
3
+ "testlambdaopensearchLambdaFunctionServiceRole4722AB8A": {
4
+ "Type": "AWS::IAM::Role",
5
+ "Properties": {
6
+ "AssumeRolePolicyDocument": {
7
+ "Statement": [
8
+ {
9
+ "Action": "sts:AssumeRole",
10
+ "Effect": "Allow",
11
+ "Principal": {
12
+ "Service": "lambda.amazonaws.com"
13
+ }
14
+ }
15
+ ],
16
+ "Version": "2012-10-17"
17
+ },
18
+ "Policies": [
19
+ {
20
+ "PolicyDocument": {
21
+ "Statement": [
22
+ {
23
+ "Action": [
24
+ "logs:CreateLogGroup",
25
+ "logs:CreateLogStream",
26
+ "logs:PutLogEvents"
27
+ ],
28
+ "Effect": "Allow",
29
+ "Resource": {
30
+ "Fn::Join": [
31
+ "",
32
+ [
33
+ "arn:",
34
+ {
35
+ "Ref": "AWS::Partition"
36
+ },
37
+ ":logs:",
38
+ {
39
+ "Ref": "AWS::Region"
40
+ },
41
+ ":",
42
+ {
43
+ "Ref": "AWS::AccountId"
44
+ },
45
+ ":log-group:/aws/lambda/*"
46
+ ]
47
+ ]
48
+ }
49
+ }
50
+ ],
51
+ "Version": "2012-10-17"
52
+ },
53
+ "PolicyName": "LambdaFunctionServiceRolePolicy"
54
+ }
55
+ ]
56
+ }
57
+ },
58
+ "testlambdaopensearchLambdaFunctionServiceRoleDefaultPolicy78C56359": {
59
+ "Type": "AWS::IAM::Policy",
60
+ "Properties": {
61
+ "PolicyDocument": {
62
+ "Statement": [
63
+ {
64
+ "Action": [
65
+ "xray:PutTraceSegments",
66
+ "xray:PutTelemetryRecords"
67
+ ],
68
+ "Effect": "Allow",
69
+ "Resource": "*"
70
+ }
71
+ ],
72
+ "Version": "2012-10-17"
73
+ },
74
+ "PolicyName": "testlambdaopensearchLambdaFunctionServiceRoleDefaultPolicy78C56359",
75
+ "Roles": [
76
+ {
77
+ "Ref": "testlambdaopensearchLambdaFunctionServiceRole4722AB8A"
78
+ }
79
+ ]
80
+ },
81
+ "Metadata": {
82
+ "cfn_nag": {
83
+ "rules_to_suppress": [
84
+ {
85
+ "id": "W12",
86
+ "reason": "Lambda needs the following minimum required permissions to send trace data to X-Ray and access ENIs in a VPC."
87
+ }
88
+ ]
89
+ }
90
+ }
91
+ },
92
+ "testlambdaopensearchLambdaFunction93FD38F7": {
93
+ "Type": "AWS::Lambda::Function",
94
+ "Properties": {
95
+ "Code": {
96
+ "S3Bucket": {
97
+ "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
98
+ },
99
+ "S3Key": "abbc4eca9e7ddabc31da3ce83159e6eee8e72e2c358ab8af0711044514c41290.zip"
100
+ },
101
+ "Role": {
102
+ "Fn::GetAtt": [
103
+ "testlambdaopensearchLambdaFunctionServiceRole4722AB8A",
104
+ "Arn"
105
+ ]
106
+ },
107
+ "Environment": {
108
+ "Variables": {
109
+ "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1",
110
+ "DOMAIN_ENDPOINT": {
111
+ "Fn::GetAtt": [
112
+ "testlambdaopensearchOpenSearchDomainF9CCC3D3",
113
+ "DomainEndpoint"
114
+ ]
115
+ }
116
+ }
117
+ },
118
+ "Handler": "index.handler",
119
+ "Runtime": "nodejs14.x",
120
+ "TracingConfig": {
121
+ "Mode": "Active"
122
+ }
123
+ },
124
+ "DependsOn": [
125
+ "testlambdaopensearchLambdaFunctionServiceRoleDefaultPolicy78C56359",
126
+ "testlambdaopensearchLambdaFunctionServiceRole4722AB8A"
127
+ ],
128
+ "Metadata": {
129
+ "cfn_nag": {
130
+ "rules_to_suppress": [
131
+ {
132
+ "id": "W58",
133
+ "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions."
134
+ },
135
+ {
136
+ "id": "W89",
137
+ "reason": "This is not a rule for the general case, just for specific use cases/industries"
138
+ },
139
+ {
140
+ "id": "W92",
141
+ "reason": "Impossible for us to define the correct concurrency for clients"
142
+ }
143
+ ]
144
+ }
145
+ }
146
+ },
147
+ "testlambdaopensearchCognitoUserPoolA09096F9": {
148
+ "Type": "AWS::Cognito::UserPool",
149
+ "Properties": {
150
+ "AccountRecoverySetting": {
151
+ "RecoveryMechanisms": [
152
+ {
153
+ "Name": "verified_phone_number",
154
+ "Priority": 1
155
+ },
156
+ {
157
+ "Name": "verified_email",
158
+ "Priority": 2
159
+ }
160
+ ]
161
+ },
162
+ "AdminCreateUserConfig": {
163
+ "AllowAdminCreateUserOnly": true
164
+ },
165
+ "EmailVerificationMessage": "The verification code to your new account is {####}",
166
+ "EmailVerificationSubject": "Verify your new account",
167
+ "SmsVerificationMessage": "The verification code to your new account is {####}",
168
+ "UserPoolAddOns": {
169
+ "AdvancedSecurityMode": "ENFORCED"
170
+ },
171
+ "VerificationMessageTemplate": {
172
+ "DefaultEmailOption": "CONFIRM_WITH_CODE",
173
+ "EmailMessage": "The verification code to your new account is {####}",
174
+ "EmailSubject": "Verify your new account",
175
+ "SmsMessage": "The verification code to your new account is {####}"
176
+ }
177
+ },
178
+ "UpdateReplacePolicy": "Retain",
179
+ "DeletionPolicy": "Retain"
180
+ },
181
+ "testlambdaopensearchCognitoUserPoolClient39C21D94": {
182
+ "Type": "AWS::Cognito::UserPoolClient",
183
+ "Properties": {
184
+ "UserPoolId": {
185
+ "Ref": "testlambdaopensearchCognitoUserPoolA09096F9"
186
+ },
187
+ "AllowedOAuthFlows": [
188
+ "implicit",
189
+ "code"
190
+ ],
191
+ "AllowedOAuthFlowsUserPoolClient": true,
192
+ "AllowedOAuthScopes": [
193
+ "profile",
194
+ "phone",
195
+ "email",
196
+ "openid",
197
+ "aws.cognito.signin.user.admin"
198
+ ],
199
+ "CallbackURLs": [
200
+ "https://example.com"
201
+ ],
202
+ "SupportedIdentityProviders": [
203
+ "COGNITO"
204
+ ]
205
+ }
206
+ },
207
+ "testlambdaopensearchCognitoIdentityPool0B1FB311": {
208
+ "Type": "AWS::Cognito::IdentityPool",
209
+ "Properties": {
210
+ "AllowUnauthenticatedIdentities": false,
211
+ "CognitoIdentityProviders": [
212
+ {
213
+ "ClientId": {
214
+ "Ref": "testlambdaopensearchCognitoUserPoolClient39C21D94"
215
+ },
216
+ "ProviderName": {
217
+ "Fn::GetAtt": [
218
+ "testlambdaopensearchCognitoUserPoolA09096F9",
219
+ "ProviderName"
220
+ ]
221
+ },
222
+ "ServerSideTokenCheck": true
223
+ }
224
+ ]
225
+ }
226
+ },
227
+ "testlambdaopensearchUserPoolDomain98864920": {
228
+ "Type": "AWS::Cognito::UserPoolDomain",
229
+ "Properties": {
230
+ "Domain": "solutions-constructs-domain",
231
+ "UserPoolId": {
232
+ "Ref": "testlambdaopensearchCognitoUserPoolA09096F9"
233
+ }
234
+ },
235
+ "DependsOn": [
236
+ "testlambdaopensearchCognitoUserPoolA09096F9"
237
+ ]
238
+ },
239
+ "testlambdaopensearchCognitoAuthorizedRole58A1ED44": {
240
+ "Type": "AWS::IAM::Role",
241
+ "Properties": {
242
+ "AssumeRolePolicyDocument": {
243
+ "Statement": [
244
+ {
245
+ "Action": "sts:AssumeRoleWithWebIdentity",
246
+ "Condition": {
247
+ "StringEquals": {
248
+ "cognito-identity.amazonaws.com:aud": {
249
+ "Ref": "testlambdaopensearchCognitoIdentityPool0B1FB311"
250
+ }
251
+ },
252
+ "ForAnyValue:StringLike": {
253
+ "cognito-identity.amazonaws.com:amr": "authenticated"
254
+ }
255
+ },
256
+ "Effect": "Allow",
257
+ "Principal": {
258
+ "Federated": "cognito-identity.amazonaws.com"
259
+ }
260
+ }
261
+ ],
262
+ "Version": "2012-10-17"
263
+ },
264
+ "Policies": [
265
+ {
266
+ "PolicyDocument": {
267
+ "Statement": [
268
+ {
269
+ "Action": "es:ESHttp*",
270
+ "Effect": "Allow",
271
+ "Resource": {
272
+ "Fn::Join": [
273
+ "",
274
+ [
275
+ "arn:",
276
+ {
277
+ "Ref": "AWS::Partition"
278
+ },
279
+ ":es:",
280
+ {
281
+ "Ref": "AWS::Region"
282
+ },
283
+ ":",
284
+ {
285
+ "Ref": "AWS::AccountId"
286
+ },
287
+ ":domain/solutions-constructs-domain/*"
288
+ ]
289
+ ]
290
+ }
291
+ }
292
+ ],
293
+ "Version": "2012-10-17"
294
+ },
295
+ "PolicyName": "CognitoAccessPolicy"
296
+ }
297
+ ]
298
+ }
299
+ },
300
+ "testlambdaopensearchIdentityPoolRoleMappingD8C765B1": {
301
+ "Type": "AWS::Cognito::IdentityPoolRoleAttachment",
302
+ "Properties": {
303
+ "IdentityPoolId": {
304
+ "Ref": "testlambdaopensearchCognitoIdentityPool0B1FB311"
305
+ },
306
+ "Roles": {
307
+ "authenticated": {
308
+ "Fn::GetAtt": [
309
+ "testlambdaopensearchCognitoAuthorizedRole58A1ED44",
310
+ "Arn"
311
+ ]
312
+ }
313
+ }
314
+ }
315
+ },
316
+ "testlambdaopensearchCognitoDashboardConfigureRole1F2B7B7A": {
317
+ "Type": "AWS::IAM::Role",
318
+ "Properties": {
319
+ "AssumeRolePolicyDocument": {
320
+ "Statement": [
321
+ {
322
+ "Action": "sts:AssumeRole",
323
+ "Effect": "Allow",
324
+ "Principal": {
325
+ "Service": "es.amazonaws.com"
326
+ }
327
+ }
328
+ ],
329
+ "Version": "2012-10-17"
330
+ }
331
+ }
332
+ },
333
+ "testlambdaopensearchCognitoDashboardConfigureRolePolicyC9C6A6A2": {
334
+ "Type": "AWS::IAM::Policy",
335
+ "Properties": {
336
+ "PolicyDocument": {
337
+ "Statement": [
338
+ {
339
+ "Action": [
340
+ "cognito-idp:DescribeUserPool",
341
+ "cognito-idp:CreateUserPoolClient",
342
+ "cognito-idp:DeleteUserPoolClient",
343
+ "cognito-idp:DescribeUserPoolClient",
344
+ "cognito-idp:AdminInitiateAuth",
345
+ "cognito-idp:AdminUserGlobalSignOut",
346
+ "cognito-idp:ListUserPoolClients",
347
+ "cognito-identity:DescribeIdentityPool",
348
+ "cognito-identity:UpdateIdentityPool",
349
+ "cognito-identity:SetIdentityPoolRoles",
350
+ "cognito-identity:GetIdentityPoolRoles",
351
+ "es:UpdateDomainConfig"
352
+ ],
353
+ "Effect": "Allow",
354
+ "Resource": [
355
+ {
356
+ "Fn::GetAtt": [
357
+ "testlambdaopensearchCognitoUserPoolA09096F9",
358
+ "Arn"
359
+ ]
360
+ },
361
+ {
362
+ "Fn::Join": [
363
+ "",
364
+ [
365
+ "arn:aws:cognito-identity:",
366
+ {
367
+ "Ref": "AWS::Region"
368
+ },
369
+ ":",
370
+ {
371
+ "Ref": "AWS::AccountId"
372
+ },
373
+ ":identitypool/",
374
+ {
375
+ "Ref": "testlambdaopensearchCognitoIdentityPool0B1FB311"
376
+ }
377
+ ]
378
+ ]
379
+ },
380
+ {
381
+ "Fn::Join": [
382
+ "",
383
+ [
384
+ "arn:aws:es:",
385
+ {
386
+ "Ref": "AWS::Region"
387
+ },
388
+ ":",
389
+ {
390
+ "Ref": "AWS::AccountId"
391
+ },
392
+ ":domain/solutions-constructs-domain"
393
+ ]
394
+ ]
395
+ }
396
+ ]
397
+ },
398
+ {
399
+ "Action": "iam:PassRole",
400
+ "Condition": {
401
+ "StringLike": {
402
+ "iam:PassedToService": "cognito-identity.amazonaws.com"
403
+ }
404
+ },
405
+ "Effect": "Allow",
406
+ "Resource": {
407
+ "Fn::GetAtt": [
408
+ "testlambdaopensearchCognitoDashboardConfigureRole1F2B7B7A",
409
+ "Arn"
410
+ ]
411
+ }
412
+ }
413
+ ],
414
+ "Version": "2012-10-17"
415
+ },
416
+ "PolicyName": "testlambdaopensearchCognitoDashboardConfigureRolePolicyC9C6A6A2",
417
+ "Roles": [
418
+ {
419
+ "Ref": "testlambdaopensearchCognitoDashboardConfigureRole1F2B7B7A"
420
+ }
421
+ ]
422
+ }
423
+ },
424
+ "testlambdaopensearchOpenSearchDomainF9CCC3D3": {
425
+ "Type": "AWS::OpenSearchService::Domain",
426
+ "Properties": {
427
+ "AccessPolicies": {
428
+ "Statement": [
429
+ {
430
+ "Action": "es:ESHttp*",
431
+ "Effect": "Allow",
432
+ "Principal": {
433
+ "AWS": [
434
+ {
435
+ "Fn::GetAtt": [
436
+ "testlambdaopensearchCognitoAuthorizedRole58A1ED44",
437
+ "Arn"
438
+ ]
439
+ },
440
+ {
441
+ "Fn::GetAtt": [
442
+ "testlambdaopensearchLambdaFunctionServiceRole4722AB8A",
443
+ "Arn"
444
+ ]
445
+ }
446
+ ]
447
+ },
448
+ "Resource": {
449
+ "Fn::Join": [
450
+ "",
451
+ [
452
+ "arn:aws:es:",
453
+ {
454
+ "Ref": "AWS::Region"
455
+ },
456
+ ":",
457
+ {
458
+ "Ref": "AWS::AccountId"
459
+ },
460
+ ":domain/solutions-constructs-domain/*"
461
+ ]
462
+ ]
463
+ }
464
+ }
465
+ ],
466
+ "Version": "2012-10-17"
467
+ },
468
+ "ClusterConfig": {
469
+ "DedicatedMasterCount": 3,
470
+ "DedicatedMasterEnabled": true,
471
+ "InstanceCount": 3,
472
+ "ZoneAwarenessConfig": {
473
+ "AvailabilityZoneCount": 3
474
+ },
475
+ "ZoneAwarenessEnabled": true
476
+ },
477
+ "CognitoOptions": {
478
+ "Enabled": true,
479
+ "IdentityPoolId": {
480
+ "Ref": "testlambdaopensearchCognitoIdentityPool0B1FB311"
481
+ },
482
+ "RoleArn": {
483
+ "Fn::GetAtt": [
484
+ "testlambdaopensearchCognitoDashboardConfigureRole1F2B7B7A",
485
+ "Arn"
486
+ ]
487
+ },
488
+ "UserPoolId": {
489
+ "Ref": "testlambdaopensearchCognitoUserPoolA09096F9"
490
+ }
491
+ },
492
+ "DomainName": "solutions-constructs-domain",
493
+ "EBSOptions": {
494
+ "EBSEnabled": true,
495
+ "VolumeSize": 10
496
+ },
497
+ "EncryptionAtRestOptions": {
498
+ "Enabled": true
499
+ },
500
+ "EngineVersion": "OpenSearch_1.3",
501
+ "NodeToNodeEncryptionOptions": {
502
+ "Enabled": true
503
+ },
504
+ "SnapshotOptions": {
505
+ "AutomatedSnapshotStartHour": 1
506
+ }
507
+ },
508
+ "Metadata": {
509
+ "cfn_nag": {
510
+ "rules_to_suppress": [
511
+ {
512
+ "id": "W28",
513
+ "reason": "The OpenSearch Service domain is passed dynamically as as parameter and explicitly specified to ensure that IAM policies are configured to lockdown access to this specific OpenSearch Service instance only"
514
+ },
515
+ {
516
+ "id": "W90",
517
+ "reason": "This is not a rule for the general case, just for specific use cases/industries"
518
+ }
519
+ ]
520
+ }
521
+ }
522
+ },
523
+ "testlambdaopensearchStatusRedAlarm1627144D": {
524
+ "Type": "AWS::CloudWatch::Alarm",
525
+ "Properties": {
526
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
527
+ "EvaluationPeriods": 1,
528
+ "AlarmDescription": "At least one primary shard and its replicas are not allocated to a node. ",
529
+ "MetricName": "ClusterStatus.red",
530
+ "Namespace": "AWS/ES",
531
+ "Period": 60,
532
+ "Statistic": "Maximum",
533
+ "Threshold": 1
534
+ }
535
+ },
536
+ "testlambdaopensearchStatusYellowAlarm57139CF0": {
537
+ "Type": "AWS::CloudWatch::Alarm",
538
+ "Properties": {
539
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
540
+ "EvaluationPeriods": 1,
541
+ "AlarmDescription": "At least one replica shard is not allocated to a node.",
542
+ "MetricName": "ClusterStatus.yellow",
543
+ "Namespace": "AWS/ES",
544
+ "Period": 60,
545
+ "Statistic": "Maximum",
546
+ "Threshold": 1
547
+ }
548
+ },
549
+ "testlambdaopensearchFreeStorageSpaceTooLowAlarm6A5E1E96": {
550
+ "Type": "AWS::CloudWatch::Alarm",
551
+ "Properties": {
552
+ "ComparisonOperator": "LessThanOrEqualToThreshold",
553
+ "EvaluationPeriods": 1,
554
+ "AlarmDescription": "A node in your cluster is down to 20 GiB of free storage space.",
555
+ "MetricName": "FreeStorageSpace",
556
+ "Namespace": "AWS/ES",
557
+ "Period": 60,
558
+ "Statistic": "Minimum",
559
+ "Threshold": 20000
560
+ }
561
+ },
562
+ "testlambdaopensearchIndexWritesBlockedTooHighAlarmD2E041A3": {
563
+ "Type": "AWS::CloudWatch::Alarm",
564
+ "Properties": {
565
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
566
+ "EvaluationPeriods": 1,
567
+ "AlarmDescription": "Your cluster is blocking write requests.",
568
+ "MetricName": "ClusterIndexWritesBlocked",
569
+ "Namespace": "AWS/ES",
570
+ "Period": 300,
571
+ "Statistic": "Maximum",
572
+ "Threshold": 1
573
+ }
574
+ },
575
+ "testlambdaopensearchAutomatedSnapshotFailureTooHighAlarm9A4D0B1F": {
576
+ "Type": "AWS::CloudWatch::Alarm",
577
+ "Properties": {
578
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
579
+ "EvaluationPeriods": 1,
580
+ "AlarmDescription": "An automated snapshot failed. This failure is often the result of a red cluster health status.",
581
+ "MetricName": "AutomatedSnapshotFailure",
582
+ "Namespace": "AWS/ES",
583
+ "Period": 60,
584
+ "Statistic": "Maximum",
585
+ "Threshold": 1
586
+ }
587
+ },
588
+ "testlambdaopensearchCPUUtilizationTooHighAlarmC4850758": {
589
+ "Type": "AWS::CloudWatch::Alarm",
590
+ "Properties": {
591
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
592
+ "EvaluationPeriods": 3,
593
+ "AlarmDescription": "100% CPU utilization is not uncommon, but sustained high usage is problematic. Consider using larger instance types or adding instances.",
594
+ "MetricName": "CPUUtilization",
595
+ "Namespace": "AWS/ES",
596
+ "Period": 900,
597
+ "Statistic": "Average",
598
+ "Threshold": 80
599
+ }
600
+ },
601
+ "testlambdaopensearchJVMMemoryPressureTooHighAlarmEFB09A7C": {
602
+ "Type": "AWS::CloudWatch::Alarm",
603
+ "Properties": {
604
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
605
+ "EvaluationPeriods": 1,
606
+ "AlarmDescription": "Average JVM memory pressure over last 15 minutes too high. Consider scaling vertically.",
607
+ "MetricName": "JVMMemoryPressure",
608
+ "Namespace": "AWS/ES",
609
+ "Period": 900,
610
+ "Statistic": "Average",
611
+ "Threshold": 80
612
+ }
613
+ },
614
+ "testlambdaopensearchMasterCPUUtilizationTooHighAlarm124D5748": {
615
+ "Type": "AWS::CloudWatch::Alarm",
616
+ "Properties": {
617
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
618
+ "EvaluationPeriods": 3,
619
+ "AlarmDescription": "Average CPU utilization over last 45 minutes too high. Consider using larger instance types for your dedicated master nodes.",
620
+ "MetricName": "MasterCPUUtilization",
621
+ "Namespace": "AWS/ES",
622
+ "Period": 900,
623
+ "Statistic": "Average",
624
+ "Threshold": 50
625
+ }
626
+ },
627
+ "testlambdaopensearchMasterJVMMemoryPressureTooHighAlarmBC9524D3": {
628
+ "Type": "AWS::CloudWatch::Alarm",
629
+ "Properties": {
630
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
631
+ "EvaluationPeriods": 1,
632
+ "AlarmDescription": "Average JVM memory pressure over last 15 minutes too high. Consider scaling vertically.",
633
+ "MetricName": "MasterJVMMemoryPressure",
634
+ "Namespace": "AWS/ES",
635
+ "Period": 900,
636
+ "Statistic": "Average",
637
+ "Threshold": 50
638
+ }
639
+ }
640
+ },
641
+ "Parameters": {
642
+ "BootstrapVersion": {
643
+ "Type": "AWS::SSM::Parameter::Value<String>",
644
+ "Default": "/cdk-bootstrap/hnb659fds/version",
645
+ "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
646
+ }
647
+ },
648
+ "Rules": {
649
+ "CheckBootstrapVersion": {
650
+ "Assertions": [
651
+ {
652
+ "Assert": {
653
+ "Fn::Not": [
654
+ {
655
+ "Fn::Contains": [
656
+ [
657
+ "1",
658
+ "2",
659
+ "3",
660
+ "4",
661
+ "5"
662
+ ],
663
+ {
664
+ "Ref": "BootstrapVersion"
665
+ }
666
+ ]
667
+ }
668
+ ]
669
+ },
670
+ "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
671
+ }
672
+ ]
673
+ }
674
+ }
675
+ }