cdk-events-notify 2.2.769 → 2.2.771
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 +294 -52
- package/.kiro/settings/lsp.json +57 -0
- package/.kiro/steering/CDK.md +82 -0
- package/API.md +3 -18
- package/README.md +8 -13
- package/function/notify.py +81 -0
- package/lib/index.d.ts +2 -10
- package/lib/index.js +6 -10
- package/lib/integ.default.js +2 -3
- package/package.json +3 -3
- package/function/linenotify.py +0 -139
package/.jsii
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
]
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"aws-cdk-lib": "^2.
|
|
10
|
+
"aws-cdk-lib": "^2.175.0",
|
|
11
11
|
"constructs": "^10.5.1"
|
|
12
12
|
},
|
|
13
13
|
"dependencyClosure": {
|
|
@@ -89,6 +89,36 @@
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
|
+
"@aws-cdk/cloud-assembly-schema": {
|
|
93
|
+
"targets": {
|
|
94
|
+
"dotnet": {
|
|
95
|
+
"iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png",
|
|
96
|
+
"namespace": "Amazon.CDK.CloudAssembly.Schema",
|
|
97
|
+
"packageId": "Amazon.CDK.CloudAssembly.Schema"
|
|
98
|
+
},
|
|
99
|
+
"go": {
|
|
100
|
+
"moduleName": "github.com/cdklabs/cloud-assembly-schema-go"
|
|
101
|
+
},
|
|
102
|
+
"java": {
|
|
103
|
+
"maven": {
|
|
104
|
+
"artifactId": "cdk-cloud-assembly-schema",
|
|
105
|
+
"groupId": "software.amazon.awscdk"
|
|
106
|
+
},
|
|
107
|
+
"package": "software.amazon.awscdk.cloudassembly.schema"
|
|
108
|
+
},
|
|
109
|
+
"js": {
|
|
110
|
+
"npm": "@aws-cdk/cloud-assembly-schema"
|
|
111
|
+
},
|
|
112
|
+
"python": {
|
|
113
|
+
"classifiers": [
|
|
114
|
+
"Framework :: AWS CDK",
|
|
115
|
+
"Framework :: AWS CDK :: 2"
|
|
116
|
+
],
|
|
117
|
+
"distName": "aws-cdk.cloud-assembly-schema",
|
|
118
|
+
"module": "aws_cdk.cloud_assembly_schema"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
},
|
|
92
122
|
"aws-cdk-lib": {
|
|
93
123
|
"submodules": {
|
|
94
124
|
"aws-cdk-lib.alexa_ask": {
|
|
@@ -221,8 +251,32 @@
|
|
|
221
251
|
}
|
|
222
252
|
}
|
|
223
253
|
},
|
|
224
|
-
"aws-cdk-lib.aws_apigatewayv2_authorizers": {
|
|
225
|
-
|
|
254
|
+
"aws-cdk-lib.aws_apigatewayv2_authorizers": {
|
|
255
|
+
"targets": {
|
|
256
|
+
"dotnet": {
|
|
257
|
+
"namespace": "Amazon.CDK.AwsApigatewayv2Authorizers"
|
|
258
|
+
},
|
|
259
|
+
"java": {
|
|
260
|
+
"package": "software.amazon.awscdk.aws_apigatewayv2_authorizers"
|
|
261
|
+
},
|
|
262
|
+
"python": {
|
|
263
|
+
"module": "aws_cdk.aws_apigatewayv2_authorizers"
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"aws-cdk-lib.aws_apigatewayv2_integrations": {
|
|
268
|
+
"targets": {
|
|
269
|
+
"dotnet": {
|
|
270
|
+
"namespace": "Amazon.CDK.AwsApigatewayv2Integrations"
|
|
271
|
+
},
|
|
272
|
+
"java": {
|
|
273
|
+
"package": "software.amazon.awscdk.aws_apigatewayv2_integrations"
|
|
274
|
+
},
|
|
275
|
+
"python": {
|
|
276
|
+
"module": "aws_cdk.aws_apigatewayv2_integrations"
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
},
|
|
226
280
|
"aws-cdk-lib.aws_appconfig": {
|
|
227
281
|
"targets": {
|
|
228
282
|
"dotnet": {
|
|
@@ -288,6 +342,19 @@
|
|
|
288
342
|
}
|
|
289
343
|
}
|
|
290
344
|
},
|
|
345
|
+
"aws-cdk-lib.aws_applicationsignals": {
|
|
346
|
+
"targets": {
|
|
347
|
+
"dotnet": {
|
|
348
|
+
"package": "Amazon.CDK.AWS.ApplicationSignals"
|
|
349
|
+
},
|
|
350
|
+
"java": {
|
|
351
|
+
"package": "software.amazon.awscdk.services.applicationsignals"
|
|
352
|
+
},
|
|
353
|
+
"python": {
|
|
354
|
+
"module": "aws_cdk.aws_applicationsignals"
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
},
|
|
291
358
|
"aws-cdk-lib.aws_appmesh": {
|
|
292
359
|
"targets": {
|
|
293
360
|
"dotnet": {
|
|
@@ -340,6 +407,19 @@
|
|
|
340
407
|
}
|
|
341
408
|
}
|
|
342
409
|
},
|
|
410
|
+
"aws-cdk-lib.aws_apptest": {
|
|
411
|
+
"targets": {
|
|
412
|
+
"dotnet": {
|
|
413
|
+
"package": "Amazon.CDK.AWS.AppTest"
|
|
414
|
+
},
|
|
415
|
+
"java": {
|
|
416
|
+
"package": "software.amazon.awscdk.services.apptest"
|
|
417
|
+
},
|
|
418
|
+
"python": {
|
|
419
|
+
"module": "aws_cdk.aws_apptest"
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
},
|
|
343
423
|
"aws-cdk-lib.aws_aps": {
|
|
344
424
|
"targets": {
|
|
345
425
|
"dotnet": {
|
|
@@ -496,10 +576,23 @@
|
|
|
496
576
|
}
|
|
497
577
|
}
|
|
498
578
|
},
|
|
579
|
+
"aws-cdk-lib.aws_bcmdataexports": {
|
|
580
|
+
"targets": {
|
|
581
|
+
"dotnet": {
|
|
582
|
+
"package": "Amazon.CDK.AWS.BCMDataExports"
|
|
583
|
+
},
|
|
584
|
+
"java": {
|
|
585
|
+
"package": "software.amazon.awscdk.services.bcmdataexports"
|
|
586
|
+
},
|
|
587
|
+
"python": {
|
|
588
|
+
"module": "aws_cdk.aws_bcmdataexports"
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
},
|
|
499
592
|
"aws-cdk-lib.aws_bedrock": {
|
|
500
593
|
"targets": {
|
|
501
594
|
"dotnet": {
|
|
502
|
-
"
|
|
595
|
+
"package": "Amazon.CDK.AWS.Bedrock"
|
|
503
596
|
},
|
|
504
597
|
"java": {
|
|
505
598
|
"package": "software.amazon.awscdk.services.bedrock"
|
|
@@ -600,6 +693,19 @@
|
|
|
600
693
|
}
|
|
601
694
|
}
|
|
602
695
|
},
|
|
696
|
+
"aws-cdk-lib.aws_cleanroomsml": {
|
|
697
|
+
"targets": {
|
|
698
|
+
"dotnet": {
|
|
699
|
+
"package": "Amazon.CDK.AWS.CleanRoomsML"
|
|
700
|
+
},
|
|
701
|
+
"java": {
|
|
702
|
+
"package": "software.amazon.awscdk.services.cleanroomsml"
|
|
703
|
+
},
|
|
704
|
+
"python": {
|
|
705
|
+
"module": "aws_cdk.aws_cleanroomsml"
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
},
|
|
603
709
|
"aws-cdk-lib.aws_cloud9": {
|
|
604
710
|
"targets": {
|
|
605
711
|
"dotnet": {
|
|
@@ -731,6 +837,19 @@
|
|
|
731
837
|
}
|
|
732
838
|
}
|
|
733
839
|
},
|
|
840
|
+
"aws-cdk-lib.aws_codeconnections": {
|
|
841
|
+
"targets": {
|
|
842
|
+
"dotnet": {
|
|
843
|
+
"package": "Amazon.CDK.AWS.CodeConnections"
|
|
844
|
+
},
|
|
845
|
+
"java": {
|
|
846
|
+
"package": "software.amazon.awscdk.services.codeconnections"
|
|
847
|
+
},
|
|
848
|
+
"python": {
|
|
849
|
+
"module": "aws_cdk.aws_codeconnections"
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
},
|
|
734
853
|
"aws-cdk-lib.aws_codedeploy": {
|
|
735
854
|
"targets": {
|
|
736
855
|
"dotnet": {
|
|
@@ -900,6 +1019,19 @@
|
|
|
900
1019
|
}
|
|
901
1020
|
}
|
|
902
1021
|
},
|
|
1022
|
+
"aws-cdk-lib.aws_connectcampaignsv2": {
|
|
1023
|
+
"targets": {
|
|
1024
|
+
"dotnet": {
|
|
1025
|
+
"package": "Amazon.CDK.AWS.ConnectCampaignsV2"
|
|
1026
|
+
},
|
|
1027
|
+
"java": {
|
|
1028
|
+
"package": "software.amazon.awscdk.services.connectcampaignsv2"
|
|
1029
|
+
},
|
|
1030
|
+
"python": {
|
|
1031
|
+
"module": "aws_cdk.aws_connectcampaignsv2"
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
},
|
|
903
1035
|
"aws-cdk-lib.aws_controltower": {
|
|
904
1036
|
"targets": {
|
|
905
1037
|
"dotnet": {
|
|
@@ -1004,6 +1136,19 @@
|
|
|
1004
1136
|
}
|
|
1005
1137
|
}
|
|
1006
1138
|
},
|
|
1139
|
+
"aws-cdk-lib.aws_deadline": {
|
|
1140
|
+
"targets": {
|
|
1141
|
+
"dotnet": {
|
|
1142
|
+
"package": "Amazon.CDK.AWS.Deadline"
|
|
1143
|
+
},
|
|
1144
|
+
"java": {
|
|
1145
|
+
"package": "software.amazon.awscdk.services.deadline"
|
|
1146
|
+
},
|
|
1147
|
+
"python": {
|
|
1148
|
+
"module": "aws_cdk.aws_deadline"
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
},
|
|
1007
1152
|
"aws-cdk-lib.aws_detective": {
|
|
1008
1153
|
"targets": {
|
|
1009
1154
|
"dotnet": {
|
|
@@ -1706,6 +1851,19 @@
|
|
|
1706
1851
|
}
|
|
1707
1852
|
}
|
|
1708
1853
|
},
|
|
1854
|
+
"aws-cdk-lib.aws_invoicing": {
|
|
1855
|
+
"targets": {
|
|
1856
|
+
"dotnet": {
|
|
1857
|
+
"package": "Amazon.CDK.AWS.Invoicing"
|
|
1858
|
+
},
|
|
1859
|
+
"java": {
|
|
1860
|
+
"package": "software.amazon.awscdk.services.invoicing"
|
|
1861
|
+
},
|
|
1862
|
+
"python": {
|
|
1863
|
+
"module": "aws_cdk.aws_invoicing"
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
},
|
|
1709
1867
|
"aws-cdk-lib.aws_iot": {
|
|
1710
1868
|
"targets": {
|
|
1711
1869
|
"dotnet": {
|
|
@@ -2057,6 +2215,19 @@
|
|
|
2057
2215
|
}
|
|
2058
2216
|
}
|
|
2059
2217
|
},
|
|
2218
|
+
"aws-cdk-lib.aws_launchwizard": {
|
|
2219
|
+
"targets": {
|
|
2220
|
+
"dotnet": {
|
|
2221
|
+
"package": "Amazon.CDK.AWS.LaunchWizard"
|
|
2222
|
+
},
|
|
2223
|
+
"java": {
|
|
2224
|
+
"package": "software.amazon.awscdk.services.launchwizard"
|
|
2225
|
+
},
|
|
2226
|
+
"python": {
|
|
2227
|
+
"module": "aws_cdk.aws_launchwizard"
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
},
|
|
2060
2231
|
"aws-cdk-lib.aws_lex": {
|
|
2061
2232
|
"targets": {
|
|
2062
2233
|
"dotnet": {
|
|
@@ -2525,6 +2696,19 @@
|
|
|
2525
2696
|
}
|
|
2526
2697
|
}
|
|
2527
2698
|
},
|
|
2699
|
+
"aws-cdk-lib.aws_paymentcryptography": {
|
|
2700
|
+
"targets": {
|
|
2701
|
+
"dotnet": {
|
|
2702
|
+
"package": "Amazon.CDK.AWS.PaymentCryptography"
|
|
2703
|
+
},
|
|
2704
|
+
"java": {
|
|
2705
|
+
"package": "software.amazon.awscdk.services.paymentcryptography"
|
|
2706
|
+
},
|
|
2707
|
+
"python": {
|
|
2708
|
+
"module": "aws_cdk.aws_paymentcryptography"
|
|
2709
|
+
}
|
|
2710
|
+
}
|
|
2711
|
+
},
|
|
2528
2712
|
"aws-cdk-lib.aws_pcaconnectorad": {
|
|
2529
2713
|
"targets": {
|
|
2530
2714
|
"dotnet": {
|
|
@@ -2538,6 +2722,32 @@
|
|
|
2538
2722
|
}
|
|
2539
2723
|
}
|
|
2540
2724
|
},
|
|
2725
|
+
"aws-cdk-lib.aws_pcaconnectorscep": {
|
|
2726
|
+
"targets": {
|
|
2727
|
+
"dotnet": {
|
|
2728
|
+
"package": "Amazon.CDK.AWS.PCAConnectorSCEP"
|
|
2729
|
+
},
|
|
2730
|
+
"java": {
|
|
2731
|
+
"package": "software.amazon.awscdk.services.pcaconnectorscep"
|
|
2732
|
+
},
|
|
2733
|
+
"python": {
|
|
2734
|
+
"module": "aws_cdk.aws_pcaconnectorscep"
|
|
2735
|
+
}
|
|
2736
|
+
}
|
|
2737
|
+
},
|
|
2738
|
+
"aws-cdk-lib.aws_pcs": {
|
|
2739
|
+
"targets": {
|
|
2740
|
+
"dotnet": {
|
|
2741
|
+
"package": "Amazon.CDK.AWS.PCS"
|
|
2742
|
+
},
|
|
2743
|
+
"java": {
|
|
2744
|
+
"package": "software.amazon.awscdk.services.pcs"
|
|
2745
|
+
},
|
|
2746
|
+
"python": {
|
|
2747
|
+
"module": "aws_cdk.aws_pcs"
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2750
|
+
},
|
|
2541
2751
|
"aws-cdk-lib.aws_personalize": {
|
|
2542
2752
|
"targets": {
|
|
2543
2753
|
"dotnet": {
|
|
@@ -2603,6 +2813,19 @@
|
|
|
2603
2813
|
}
|
|
2604
2814
|
}
|
|
2605
2815
|
},
|
|
2816
|
+
"aws-cdk-lib.aws_qbusiness": {
|
|
2817
|
+
"targets": {
|
|
2818
|
+
"dotnet": {
|
|
2819
|
+
"package": "Amazon.CDK.AWS.QBusiness"
|
|
2820
|
+
},
|
|
2821
|
+
"java": {
|
|
2822
|
+
"package": "software.amazon.awscdk.services.qbusiness"
|
|
2823
|
+
},
|
|
2824
|
+
"python": {
|
|
2825
|
+
"module": "aws_cdk.aws_qbusiness"
|
|
2826
|
+
}
|
|
2827
|
+
}
|
|
2828
|
+
},
|
|
2606
2829
|
"aws-cdk-lib.aws_qldb": {
|
|
2607
2830
|
"targets": {
|
|
2608
2831
|
"dotnet": {
|
|
@@ -2642,6 +2865,19 @@
|
|
|
2642
2865
|
}
|
|
2643
2866
|
}
|
|
2644
2867
|
},
|
|
2868
|
+
"aws-cdk-lib.aws_rbin": {
|
|
2869
|
+
"targets": {
|
|
2870
|
+
"dotnet": {
|
|
2871
|
+
"package": "Amazon.CDK.AWS.Rbin"
|
|
2872
|
+
},
|
|
2873
|
+
"java": {
|
|
2874
|
+
"package": "software.amazon.awscdk.services.rbin"
|
|
2875
|
+
},
|
|
2876
|
+
"python": {
|
|
2877
|
+
"module": "aws_cdk.aws_rbin"
|
|
2878
|
+
}
|
|
2879
|
+
}
|
|
2880
|
+
},
|
|
2645
2881
|
"aws-cdk-lib.aws_rds": {
|
|
2646
2882
|
"targets": {
|
|
2647
2883
|
"dotnet": {
|
|
@@ -2811,6 +3047,19 @@
|
|
|
2811
3047
|
}
|
|
2812
3048
|
}
|
|
2813
3049
|
},
|
|
3050
|
+
"aws-cdk-lib.aws_route53profiles": {
|
|
3051
|
+
"targets": {
|
|
3052
|
+
"dotnet": {
|
|
3053
|
+
"package": "Amazon.CDK.AWS.Route53Profiles"
|
|
3054
|
+
},
|
|
3055
|
+
"java": {
|
|
3056
|
+
"package": "software.amazon.awscdk.services.route53profiles"
|
|
3057
|
+
},
|
|
3058
|
+
"python": {
|
|
3059
|
+
"module": "aws_cdk.aws_route53profiles"
|
|
3060
|
+
}
|
|
3061
|
+
}
|
|
3062
|
+
},
|
|
2814
3063
|
"aws-cdk-lib.aws_route53recoverycontrol": {
|
|
2815
3064
|
"targets": {
|
|
2816
3065
|
"dotnet": {
|
|
@@ -2954,6 +3203,19 @@
|
|
|
2954
3203
|
}
|
|
2955
3204
|
}
|
|
2956
3205
|
},
|
|
3206
|
+
"aws-cdk-lib.aws_s3tables": {
|
|
3207
|
+
"targets": {
|
|
3208
|
+
"dotnet": {
|
|
3209
|
+
"package": "Amazon.CDK.AWS.S3Tables"
|
|
3210
|
+
},
|
|
3211
|
+
"java": {
|
|
3212
|
+
"package": "software.amazon.awscdk.services.s3tables"
|
|
3213
|
+
},
|
|
3214
|
+
"python": {
|
|
3215
|
+
"module": "aws_cdk.aws_s3tables"
|
|
3216
|
+
}
|
|
3217
|
+
}
|
|
3218
|
+
},
|
|
2957
3219
|
"aws-cdk-lib.aws_sagemaker": {
|
|
2958
3220
|
"targets": {
|
|
2959
3221
|
"dotnet": {
|
|
@@ -3032,6 +3294,19 @@
|
|
|
3032
3294
|
}
|
|
3033
3295
|
}
|
|
3034
3296
|
},
|
|
3297
|
+
"aws-cdk-lib.aws_securitylake": {
|
|
3298
|
+
"targets": {
|
|
3299
|
+
"dotnet": {
|
|
3300
|
+
"package": "Amazon.CDK.AWS.SecurityLake"
|
|
3301
|
+
},
|
|
3302
|
+
"java": {
|
|
3303
|
+
"package": "software.amazon.awscdk.services.securitylake"
|
|
3304
|
+
},
|
|
3305
|
+
"python": {
|
|
3306
|
+
"module": "aws_cdk.aws_securitylake"
|
|
3307
|
+
}
|
|
3308
|
+
}
|
|
3309
|
+
},
|
|
3035
3310
|
"aws-cdk-lib.aws_servicecatalog": {
|
|
3036
3311
|
"targets": {
|
|
3037
3312
|
"dotnet": {
|
|
@@ -3201,29 +3476,29 @@
|
|
|
3201
3476
|
}
|
|
3202
3477
|
}
|
|
3203
3478
|
},
|
|
3204
|
-
"aws-cdk-lib.
|
|
3479
|
+
"aws-cdk-lib.aws_ssmincidents": {
|
|
3205
3480
|
"targets": {
|
|
3206
3481
|
"dotnet": {
|
|
3207
|
-
"
|
|
3482
|
+
"namespace": "Amazon.CDK.AWS.SSMIncidents"
|
|
3208
3483
|
},
|
|
3209
3484
|
"java": {
|
|
3210
|
-
"package": "software.amazon.awscdk.services.
|
|
3485
|
+
"package": "software.amazon.awscdk.services.ssmincidents"
|
|
3211
3486
|
},
|
|
3212
3487
|
"python": {
|
|
3213
|
-
"module": "aws_cdk.
|
|
3488
|
+
"module": "aws_cdk.aws_ssmincidents"
|
|
3214
3489
|
}
|
|
3215
3490
|
}
|
|
3216
3491
|
},
|
|
3217
|
-
"aws-cdk-lib.
|
|
3492
|
+
"aws-cdk-lib.aws_ssmquicksetup": {
|
|
3218
3493
|
"targets": {
|
|
3219
3494
|
"dotnet": {
|
|
3220
|
-
"
|
|
3495
|
+
"package": "Amazon.CDK.AWS.SSMQuickSetup"
|
|
3221
3496
|
},
|
|
3222
3497
|
"java": {
|
|
3223
|
-
"package": "software.amazon.awscdk.services.
|
|
3498
|
+
"package": "software.amazon.awscdk.services.ssmquicksetup"
|
|
3224
3499
|
},
|
|
3225
3500
|
"python": {
|
|
3226
|
-
"module": "aws_cdk.
|
|
3501
|
+
"module": "aws_cdk.aws_ssmquicksetup"
|
|
3227
3502
|
}
|
|
3228
3503
|
}
|
|
3229
3504
|
},
|
|
@@ -3474,19 +3749,7 @@
|
|
|
3474
3749
|
}
|
|
3475
3750
|
}
|
|
3476
3751
|
},
|
|
3477
|
-
"aws-cdk-lib.cloud_assembly_schema": {
|
|
3478
|
-
"targets": {
|
|
3479
|
-
"dotnet": {
|
|
3480
|
-
"namespace": "Amazon.CDK.CloudAssembly.Schema"
|
|
3481
|
-
},
|
|
3482
|
-
"java": {
|
|
3483
|
-
"package": "software.amazon.awscdk.cloudassembly.schema"
|
|
3484
|
-
},
|
|
3485
|
-
"python": {
|
|
3486
|
-
"module": "aws_cdk.cloud_assembly_schema"
|
|
3487
|
-
}
|
|
3488
|
-
}
|
|
3489
|
-
},
|
|
3752
|
+
"aws-cdk-lib.cloud_assembly_schema": {},
|
|
3490
3753
|
"aws-cdk-lib.cloudformation_include": {
|
|
3491
3754
|
"targets": {
|
|
3492
3755
|
"dotnet": {
|
|
@@ -3680,7 +3943,7 @@
|
|
|
3680
3943
|
},
|
|
3681
3944
|
"name": "cdk-events-notify",
|
|
3682
3945
|
"readme": {
|
|
3683
|
-
"markdown": "[](https://badge.fury.io/js/cdk-events-notify)\n[](https://badge.fury.io/py/cdk-events-notify)\n\n\n\n\n\n\n# cdk-events-notify\n`cdk-events-notify` is an AWS CDK Construct Library that provides you know who login in your aws console.\n\n## Why\nIt
|
|
3946
|
+
"markdown": "[](https://badge.fury.io/js/cdk-events-notify)\n[](https://badge.fury.io/py/cdk-events-notify)\n\n\n\n\n\n\n# cdk-events-notify\n`cdk-events-notify` is an AWS CDK Construct Library that provides you know who login in your aws console.\n\n## Why\nIt's just a small feature at the moment,\nProvides you to trigger Lambda Function push notifications to Slack when you discover Console Login event or switch role event through Cloudtrail.\n\n> Welcome to contribute another event notify case you want.\n\n## Overview\n\n\n### Now support\n- Slack ([webhooks](https://api.slack.com/messaging/webhooks#posting_with_webhooks))\n\n## You need enable one `Management events` in your account.\n> more see https://aws.amazon.com/tw/cloudtrail/pricing/\n\n\n## Install\n```bash\n// for CDKv2\nnpm install cdk-events-notify\nor\nnpm install cdk-events-notify@latest\n```\n\n\n## Usage\n```ts\nimport * as cdk from 'aws-cdk-lib';\nimport { EventNotify } from 'cdk-events-notify';\n\nconst app = new cdk.App();\nconst stack = new cdk.Stack(app, 'integ-stack', { env });\nnew EventNotify(stack, 'SlackEventNotify', {\n slack: {\n slackChannelName: 'your-channel-name',\n slackWebhookUrl: 'https://hooks.slack.com/services/xxx/xxx/xxx',\n },\n});\n\n```\n### To deploy\n```bash\ncdk deploy\n```\n### To destroy\n```bash\ncdk destroy\n```\n### Finally\n- slack\n \n\n## More about EventBridge and Lambda\n- [EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/aws-events.html)\n- [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)\n> Note: Event Bridge can not cross region , if you console sign in not the cdk-events-notify region will not get the evnet in cloudtrail see this [docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html#cloudtrail-integration_signin-regions)\n\n## :clap: Supporters\n[](https://github.com/neilkuan/cdk-events-notify/stargazers)\n[](https://github.com/neilkuan/cdk-events-notify/network/members)\n"
|
|
3684
3947
|
},
|
|
3685
3948
|
"repository": {
|
|
3686
3949
|
"type": "git",
|
|
@@ -3711,7 +3974,7 @@
|
|
|
3711
3974
|
},
|
|
3712
3975
|
"locationInModule": {
|
|
3713
3976
|
"filename": "src/index.ts",
|
|
3714
|
-
"line":
|
|
3977
|
+
"line": 37
|
|
3715
3978
|
},
|
|
3716
3979
|
"parameters": [
|
|
3717
3980
|
{
|
|
@@ -3728,7 +3991,6 @@
|
|
|
3728
3991
|
},
|
|
3729
3992
|
{
|
|
3730
3993
|
"name": "props",
|
|
3731
|
-
"optional": true,
|
|
3732
3994
|
"type": {
|
|
3733
3995
|
"fqn": "cdk-events-notify.EventNotifyProps"
|
|
3734
3996
|
}
|
|
@@ -3738,7 +4000,7 @@
|
|
|
3738
4000
|
"kind": "class",
|
|
3739
4001
|
"locationInModule": {
|
|
3740
4002
|
"filename": "src/index.ts",
|
|
3741
|
-
"line":
|
|
4003
|
+
"line": 36
|
|
3742
4004
|
},
|
|
3743
4005
|
"name": "EventNotify",
|
|
3744
4006
|
"symbolId": "src/index:EventNotify"
|
|
@@ -3761,35 +4023,15 @@
|
|
|
3761
4023
|
{
|
|
3762
4024
|
"abstract": true,
|
|
3763
4025
|
"docs": {
|
|
3764
|
-
"default": "- none",
|
|
3765
|
-
"stability": "experimental",
|
|
3766
|
-
"summary": "Line Notify Token for Lambda send notify permission."
|
|
3767
|
-
},
|
|
3768
|
-
"immutable": true,
|
|
3769
|
-
"locationInModule": {
|
|
3770
|
-
"filename": "src/index.ts",
|
|
3771
|
-
"line": 32
|
|
3772
|
-
},
|
|
3773
|
-
"name": "lineNotifyToken",
|
|
3774
|
-
"optional": true,
|
|
3775
|
-
"type": {
|
|
3776
|
-
"primitive": "string"
|
|
3777
|
-
}
|
|
3778
|
-
},
|
|
3779
|
-
{
|
|
3780
|
-
"abstract": true,
|
|
3781
|
-
"docs": {
|
|
3782
|
-
"default": "- none",
|
|
3783
4026
|
"stability": "experimental",
|
|
3784
4027
|
"summary": "Notify target to Slack channel."
|
|
3785
4028
|
},
|
|
3786
4029
|
"immutable": true,
|
|
3787
4030
|
"locationInModule": {
|
|
3788
4031
|
"filename": "src/index.ts",
|
|
3789
|
-
"line":
|
|
4032
|
+
"line": 30
|
|
3790
4033
|
},
|
|
3791
4034
|
"name": "slack",
|
|
3792
|
-
"optional": true,
|
|
3793
4035
|
"type": {
|
|
3794
4036
|
"fqn": "cdk-events-notify.ISlackEventNotify"
|
|
3795
4037
|
}
|
|
@@ -3847,6 +4089,6 @@
|
|
|
3847
4089
|
"symbolId": "src/index:ISlackEventNotify"
|
|
3848
4090
|
}
|
|
3849
4091
|
},
|
|
3850
|
-
"version": "2.2.
|
|
3851
|
-
"fingerprint": "
|
|
4092
|
+
"version": "2.2.771",
|
|
4093
|
+
"fingerprint": "5DFlFRQDAaYpxqj8bN9pvYPi0rNqAO3+hBMc4BYxH3s="
|
|
3852
4094
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"languages": {
|
|
3
|
+
"typescript": {
|
|
4
|
+
"name": "typescript-language-server",
|
|
5
|
+
"command": "typescript-language-server",
|
|
6
|
+
"args": [
|
|
7
|
+
"--stdio"
|
|
8
|
+
],
|
|
9
|
+
"file_extensions": [
|
|
10
|
+
"ts",
|
|
11
|
+
"js",
|
|
12
|
+
"tsx",
|
|
13
|
+
"jsx"
|
|
14
|
+
],
|
|
15
|
+
"project_patterns": [
|
|
16
|
+
"package.json",
|
|
17
|
+
"tsconfig.json"
|
|
18
|
+
],
|
|
19
|
+
"exclude_patterns": [
|
|
20
|
+
"**/node_modules/**",
|
|
21
|
+
"**/dist/**"
|
|
22
|
+
],
|
|
23
|
+
"multi_workspace": false,
|
|
24
|
+
"initialization_options": {
|
|
25
|
+
"preferences": {
|
|
26
|
+
"disableSuggestions": false
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"request_timeout_secs": 60
|
|
30
|
+
},
|
|
31
|
+
"python": {
|
|
32
|
+
"name": "pyright",
|
|
33
|
+
"command": "pyright-langserver",
|
|
34
|
+
"args": [
|
|
35
|
+
"--stdio"
|
|
36
|
+
],
|
|
37
|
+
"file_extensions": [
|
|
38
|
+
"py"
|
|
39
|
+
],
|
|
40
|
+
"project_patterns": [
|
|
41
|
+
"pyproject.toml",
|
|
42
|
+
"setup.py",
|
|
43
|
+
"requirements.txt",
|
|
44
|
+
"pyrightconfig.json"
|
|
45
|
+
],
|
|
46
|
+
"exclude_patterns": [
|
|
47
|
+
"**/__pycache__/**",
|
|
48
|
+
"**/venv/**",
|
|
49
|
+
"**/.venv/**",
|
|
50
|
+
"**/.pytest_cache/**"
|
|
51
|
+
],
|
|
52
|
+
"multi_workspace": false,
|
|
53
|
+
"initialization_options": {},
|
|
54
|
+
"request_timeout_secs": 60
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
inclusion: always
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# CDK Events Notify - 專案指引
|
|
6
|
+
|
|
7
|
+
## 專案概述
|
|
8
|
+
這是一個 AWS CDK Construct Library(jsii),用於監聽 AWS Console 登入事件(透過 CloudTrail),並將通知發送到 Slack channel。透過 projen 管理專案設定。
|
|
9
|
+
|
|
10
|
+
## 架構
|
|
11
|
+
- **EventBridge Rule** → 捕捉 `AWS Console Sign In via CloudTrail` 事件
|
|
12
|
+
- **Lambda Function (Python 3.13)** → 解析事件並透過 Webhook 發送 Slack 通知
|
|
13
|
+
- 支援 ConsoleLogin、SwitchRole、ExitRole 事件,忽略 CheckMfa
|
|
14
|
+
|
|
15
|
+
## 技術棧
|
|
16
|
+
- **語言**: TypeScript (CDK Construct) + Python (Lambda handler)
|
|
17
|
+
- **CDK 版本**: aws-cdk-lib ^2.126.0
|
|
18
|
+
- **Constructs**: ^10.5.1
|
|
19
|
+
- **建置工具**: projen (AwsCdkConstructLibrary)
|
|
20
|
+
- **jsii**: 5.9.x(支援跨語言發佈至 Python)
|
|
21
|
+
- **測試**: Jest 27 + ts-jest
|
|
22
|
+
- **Node**: >= 24.0.0
|
|
23
|
+
|
|
24
|
+
## 目錄結構
|
|
25
|
+
```
|
|
26
|
+
src/ → TypeScript 原始碼(CDK Construct)
|
|
27
|
+
index.ts → EventNotify construct 主體
|
|
28
|
+
integ.default.ts → 整合測試 stack
|
|
29
|
+
function/ → Lambda handler(Python)
|
|
30
|
+
notify.py → Slack 通知邏輯
|
|
31
|
+
test/ → Jest 單元測試
|
|
32
|
+
lib/ → 編譯輸出(自動產生,勿手動修改)
|
|
33
|
+
dist/ → 發佈套件(js, python)
|
|
34
|
+
.projenrc.js → projen 專案設定
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Projen 產生的檔案
|
|
38
|
+
以下檔案由 projen 自動產生,標記 `# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".`,**不要手動修改**:
|
|
39
|
+
|
|
40
|
+
- `.eslintrc.json`
|
|
41
|
+
- `.gitattributes`
|
|
42
|
+
- `.gitignore`
|
|
43
|
+
- `.mergify.yml`
|
|
44
|
+
- `.npmignore`
|
|
45
|
+
- `.projen/deps.json`
|
|
46
|
+
- `.projen/files.json`
|
|
47
|
+
- `.projen/tasks.json`
|
|
48
|
+
- `package.json`
|
|
49
|
+
- `tsconfig.dev.json`
|
|
50
|
+
- `.github/workflows/auto-approve.yml`
|
|
51
|
+
- `.github/workflows/build.yml`
|
|
52
|
+
- `.github/workflows/pull-request-lint.yml`
|
|
53
|
+
- `.github/workflows/release.yml`
|
|
54
|
+
- `.github/workflows/upgrade-main.yml`
|
|
55
|
+
|
|
56
|
+
## 開發規範
|
|
57
|
+
|
|
58
|
+
### 修改專案設定
|
|
59
|
+
- 所有專案設定透過 `.projenrc.js` 管理,修改後執行 `npx projen` 重新合成
|
|
60
|
+
- 不要手動修改上述 projen 產生的檔案
|
|
61
|
+
|
|
62
|
+
### CDK Construct 開發
|
|
63
|
+
- Construct 程式碼放在 `src/` 目錄
|
|
64
|
+
- 使用 `aws-cdk-lib` 的模組(非獨立套件)
|
|
65
|
+
- Props interface 需加上 JSDoc 註解(jsii 跨語言需要)
|
|
66
|
+
- Lambda handler 放在 `function/` 目錄,使用 `Code.fromAsset` 引用
|
|
67
|
+
|
|
68
|
+
### 測試
|
|
69
|
+
- 使用 `aws-cdk-lib/assertions` 進行 snapshot/fine-grained assertion 測試
|
|
70
|
+
- 執行測試: `npx projen test`
|
|
71
|
+
- 測試檔案放在 `test/` 目錄
|
|
72
|
+
|
|
73
|
+
### 建置與發佈
|
|
74
|
+
- 編譯: `npx projen build`
|
|
75
|
+
- 完整建置(含 lint + test + package): `npx projen build`
|
|
76
|
+
- 發佈至 npm 使用 OIDC trusted publishing
|
|
77
|
+
- 同時發佈 Python 套件至 PyPI
|
|
78
|
+
|
|
79
|
+
### 環境變數
|
|
80
|
+
- `SLACK_WEBHOOK_URL` — Slack Incoming Webhook URL
|
|
81
|
+
- `SLACK_CHANNEL_NAME` — 目標 Slack channel 名稱
|
|
82
|
+
- `CDK_DEFAULT_ACCOUNT` — 部署用 AWS 帳號(integ test 用)
|
package/API.md
CHANGED
|
@@ -11,7 +11,7 @@ Event Notfiy Construct Class.
|
|
|
11
11
|
```typescript
|
|
12
12
|
import { EventNotify } from 'cdk-events-notify'
|
|
13
13
|
|
|
14
|
-
new EventNotify(scope: Construct, id: string, props
|
|
14
|
+
new EventNotify(scope: Construct, id: string, props: EventNotifyProps)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
| **Name** | **Type** | **Description** |
|
|
@@ -34,7 +34,7 @@ new EventNotify(scope: Construct, id: string, props?: EventNotifyProps)
|
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
-
##### `props`<sup>
|
|
37
|
+
##### `props`<sup>Required</sup> <a name="props" id="cdk-events-notify.EventNotify.Initializer.parameter.props"></a>
|
|
38
38
|
|
|
39
39
|
- *Type:* <a href="#cdk-events-notify.EventNotifyProps">EventNotifyProps</a>
|
|
40
40
|
|
|
@@ -157,32 +157,17 @@ const eventNotifyProps: EventNotifyProps = { ... }
|
|
|
157
157
|
|
|
158
158
|
| **Name** | **Type** | **Description** |
|
|
159
159
|
| --- | --- | --- |
|
|
160
|
-
| <code><a href="#cdk-events-notify.EventNotifyProps.property.lineNotifyToken">lineNotifyToken</a></code> | <code>string</code> | Line Notify Token for Lambda send notify permission. |
|
|
161
160
|
| <code><a href="#cdk-events-notify.EventNotifyProps.property.slack">slack</a></code> | <code><a href="#cdk-events-notify.ISlackEventNotify">ISlackEventNotify</a></code> | Notify target to Slack channel. |
|
|
162
161
|
|
|
163
162
|
---
|
|
164
163
|
|
|
165
|
-
##### `
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
public readonly lineNotifyToken: string;
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
- *Type:* string
|
|
172
|
-
- *Default:* none
|
|
173
|
-
|
|
174
|
-
Line Notify Token for Lambda send notify permission.
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
##### `slack`<sup>Optional</sup> <a name="slack" id="cdk-events-notify.EventNotifyProps.property.slack"></a>
|
|
164
|
+
##### `slack`<sup>Required</sup> <a name="slack" id="cdk-events-notify.EventNotifyProps.property.slack"></a>
|
|
179
165
|
|
|
180
166
|
```typescript
|
|
181
167
|
public readonly slack: ISlackEventNotify;
|
|
182
168
|
```
|
|
183
169
|
|
|
184
170
|
- *Type:* <a href="#cdk-events-notify.ISlackEventNotify">ISlackEventNotify</a>
|
|
185
|
-
- *Default:* none
|
|
186
171
|
|
|
187
172
|
Notify target to Slack channel.
|
|
188
173
|
|
package/README.md
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
`cdk-events-notify` is an AWS CDK Construct Library that provides you know who login in your aws console.
|
|
11
11
|
|
|
12
12
|
## Why
|
|
13
|
-
It
|
|
14
|
-
Provides you to trigger Lambda Function push notifications to
|
|
13
|
+
It's just a small feature at the moment,
|
|
14
|
+
Provides you to trigger Lambda Function push notifications to Slack when you discover Console Login event or switch role event through Cloudtrail.
|
|
15
15
|
|
|
16
16
|
> Welcome to contribute another event notify case you want.
|
|
17
17
|
|
|
@@ -19,27 +19,19 @@ Provides you to trigger Lambda Function push notifications to Line Notify or Sla
|
|
|
19
19
|

|
|
20
20
|
|
|
21
21
|
### Now support
|
|
22
|
-
- Line Notify
|
|
23
22
|
- Slack ([webhooks](https://api.slack.com/messaging/webhooks#posting_with_webhooks))
|
|
24
23
|
|
|
25
24
|
## You need enable one `Management events` in your account.
|
|
26
25
|
> more see https://aws.amazon.com/tw/cloudtrail/pricing/
|
|
27
26
|

|
|
28
|
-
# You need Line Notify access token
|
|
29
|
-
> more see [line notify docs](https://notify-bot.line.me/doc/en/)
|
|
30
|
-
|
|
31
|
-

|
|
32
27
|
|
|
33
28
|
## Install
|
|
34
29
|
```bash
|
|
35
|
-
Use the npm dist tag to opt in CDKv1 or CDKv2:
|
|
36
|
-
|
|
37
30
|
// for CDKv2
|
|
38
31
|
npm install cdk-events-notify
|
|
39
32
|
or
|
|
40
33
|
npm install cdk-events-notify@latest
|
|
41
34
|
```
|
|
42
|
-
## 💡💡💡 please click [here](https://github.com/neilkuan/cdk-events-notify/tree/cdkv1#readme), if you are using aws-cdk v1.x.x version.💡💡💡
|
|
43
35
|
|
|
44
36
|
|
|
45
37
|
## Usage
|
|
@@ -49,7 +41,12 @@ import { EventNotify } from 'cdk-events-notify';
|
|
|
49
41
|
|
|
50
42
|
const app = new cdk.App();
|
|
51
43
|
const stack = new cdk.Stack(app, 'integ-stack', { env });
|
|
52
|
-
new EventNotify(stack, '
|
|
44
|
+
new EventNotify(stack, 'SlackEventNotify', {
|
|
45
|
+
slack: {
|
|
46
|
+
slackChannelName: 'your-channel-name',
|
|
47
|
+
slackWebhookUrl: 'https://hooks.slack.com/services/xxx/xxx/xxx',
|
|
48
|
+
},
|
|
49
|
+
});
|
|
53
50
|
|
|
54
51
|
```
|
|
55
52
|
### To deploy
|
|
@@ -61,8 +58,6 @@ cdk deploy
|
|
|
61
58
|
cdk destroy
|
|
62
59
|
```
|
|
63
60
|
### Finally
|
|
64
|
-
- line
|
|
65
|
-

|
|
66
61
|
- slack
|
|
67
62
|

|
|
68
63
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from logging import getLogger, INFO
|
|
2
|
+
from urllib.error import URLError, HTTPError
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
import urllib.request
|
|
6
|
+
|
|
7
|
+
logger = getLogger()
|
|
8
|
+
logger.setLevel(INFO)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def slackNotifyMessage(channel, webhook, msg):
|
|
12
|
+
prepayload = {
|
|
13
|
+
'channel_id': channel,
|
|
14
|
+
'text': msg}
|
|
15
|
+
payload = json.dumps(prepayload).encode('utf8')
|
|
16
|
+
headers = {
|
|
17
|
+
'Content-Type': 'application/json'
|
|
18
|
+
}
|
|
19
|
+
req = urllib.request.Request(webhook,
|
|
20
|
+
data=payload, headers=headers)
|
|
21
|
+
response = 1
|
|
22
|
+
try:
|
|
23
|
+
with urllib.request.urlopen(req) as res:
|
|
24
|
+
res.read()
|
|
25
|
+
logger.info("Message posted.")
|
|
26
|
+
except HTTPError as err:
|
|
27
|
+
logger.error("Request failed: %d %s", err.code, err.reason)
|
|
28
|
+
except URLError as err:
|
|
29
|
+
logger.error("Server connection failed: %s", err.reason)
|
|
30
|
+
else:
|
|
31
|
+
response = 0
|
|
32
|
+
return response
|
|
33
|
+
|
|
34
|
+
def lambda_handler(event, context):
|
|
35
|
+
event_name = event.get('detail').get('eventName', 'eventName_notfound')
|
|
36
|
+
region = event.get('detail').get('awsRegion', 'awsRegion_notfound')
|
|
37
|
+
source_ip = event.get('detail').get('sourceIPAddress', 'sourceIPAddress_notfound')
|
|
38
|
+
## Check user_identity and type
|
|
39
|
+
user_identity = event.get('detail').get('userIdentity')
|
|
40
|
+
user_identity_type = event.get('detail').get('userIdentity').get('type')
|
|
41
|
+
user_name = 'None'
|
|
42
|
+
if user_identity_type == 'IAMUser':
|
|
43
|
+
user_name = user_identity.get('userName', 'userName_notfound')
|
|
44
|
+
elif user_identity_type == 'AssumedRole':
|
|
45
|
+
user_name = user_identity.get('principalId', 'userName_notfound')
|
|
46
|
+
elif user_identity_type == 'Root':
|
|
47
|
+
user_name = user_identity.get('arn', 'root_name_notfound')
|
|
48
|
+
else:
|
|
49
|
+
user_name = f"{user_identity.get('userName')} {user_identity.get('principalId')} {user_identity.get('arn')}"
|
|
50
|
+
account_id = event.get('account', 'account_notfound')
|
|
51
|
+
response_elements = event.get('detail').get('responseElements', 'responseElements_notfound')
|
|
52
|
+
|
|
53
|
+
msg = f'''
|
|
54
|
+
Login Log
|
|
55
|
+
Event Name : {event_name}
|
|
56
|
+
Account ID : {account_id}
|
|
57
|
+
Region : {region}
|
|
58
|
+
User Name : {user_name}
|
|
59
|
+
Source IP : {source_ip}
|
|
60
|
+
Action :
|
|
61
|
+
{list(response_elements.keys())[0]} {list(response_elements.values())[0]}
|
|
62
|
+
'''
|
|
63
|
+
|
|
64
|
+
channel = os.environ.get('SLACK_CHANNEL_NAME')
|
|
65
|
+
webhook = os.environ.get('SLACK_WEBHOOK_URL')
|
|
66
|
+
|
|
67
|
+
if event_name == 'CheckMfa':
|
|
68
|
+
print("Just Check Mfa")
|
|
69
|
+
return
|
|
70
|
+
if event_name == 'SwitchRole':
|
|
71
|
+
switch_role = event.get('detail').get('additionalEventData').get('SwitchTo', 'SwitchTo_not_found')
|
|
72
|
+
msg = msg + "\n" + "Switch To : " + switch_role
|
|
73
|
+
if switch_role != 'SwitchTo_not_found':
|
|
74
|
+
slackNotifyMessage(channel, webhook, msg)
|
|
75
|
+
elif event_name == 'ExitRole':
|
|
76
|
+
switch_role = event.get('detail').get('additionalEventData').get('SwitchFrom', 'SwitchFrom_not_found')
|
|
77
|
+
msg = msg + "\n" + "Switch From : " + switch_role
|
|
78
|
+
if switch_role != 'SwitchFrom_not_found':
|
|
79
|
+
slackNotifyMessage(channel, webhook, msg)
|
|
80
|
+
elif event_name == 'ConsoleLogin':
|
|
81
|
+
slackNotifyMessage(channel, webhook, msg)
|
package/lib/index.d.ts
CHANGED
|
@@ -16,22 +16,14 @@ export interface ISlackEventNotify {
|
|
|
16
16
|
* event notify interface.
|
|
17
17
|
*/
|
|
18
18
|
export interface EventNotifyProps {
|
|
19
|
-
/**
|
|
20
|
-
* Line Notify Token for Lambda send notify permission.
|
|
21
|
-
*
|
|
22
|
-
* @default - none
|
|
23
|
-
*/
|
|
24
|
-
readonly lineNotifyToken?: string | undefined;
|
|
25
19
|
/**
|
|
26
20
|
* Notify target to Slack channel.
|
|
27
|
-
*
|
|
28
|
-
* @default - none
|
|
29
21
|
*/
|
|
30
|
-
readonly slack
|
|
22
|
+
readonly slack: ISlackEventNotify;
|
|
31
23
|
}
|
|
32
24
|
/**
|
|
33
25
|
* Event Notfiy Construct Class.
|
|
34
26
|
*/
|
|
35
27
|
export declare class EventNotify extends Construct {
|
|
36
|
-
constructor(scope: Construct, id: string, props
|
|
28
|
+
constructor(scope: Construct, id: string, props: EventNotifyProps);
|
|
37
29
|
}
|
package/lib/index.js
CHANGED
|
@@ -16,19 +16,15 @@ const constructs_1 = require("constructs");
|
|
|
16
16
|
class EventNotify extends constructs_1.Construct {
|
|
17
17
|
constructor(scope, id, props) {
|
|
18
18
|
super(scope, id);
|
|
19
|
-
if (!props?.lineNotifyToken && !props?.slack) {
|
|
20
|
-
throw new Error('Please input lineNotifyToken or slack options');
|
|
21
|
-
}
|
|
22
19
|
const lambdaFun = new lambda.Function(this, 'lambda_fun', {
|
|
23
|
-
handler: '
|
|
20
|
+
handler: 'notify.lambda_handler',
|
|
24
21
|
code: lambda.Code.fromAsset(path.join(__dirname, '../function')),
|
|
25
|
-
runtime: lambda.Runtime.
|
|
22
|
+
runtime: lambda.Runtime.PYTHON_3_13,
|
|
26
23
|
timeout: cdk.Duration.minutes(3),
|
|
27
24
|
logRetention: logs.RetentionDays.THREE_DAYS,
|
|
28
25
|
environment: {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
SLACK_CHANNEL_NAME: props?.slack?.slackChannelName ? props?.slack?.slackChannelName : 'none',
|
|
26
|
+
SLACK_WEBHOOK_URL: props.slack.slackWebhookUrl,
|
|
27
|
+
SLACK_CHANNEL_NAME: props.slack.slackChannelName,
|
|
32
28
|
},
|
|
33
29
|
});
|
|
34
30
|
const eventNotifyTarget = new target.LambdaFunction(lambdaFun);
|
|
@@ -44,5 +40,5 @@ class EventNotify extends constructs_1.Construct {
|
|
|
44
40
|
}
|
|
45
41
|
exports.EventNotify = EventNotify;
|
|
46
42
|
_a = JSII_RTTI_SYMBOL_1;
|
|
47
|
-
EventNotify[_a] = { fqn: "cdk-events-notify.EventNotify", version: "2.2.
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
EventNotify[_a] = { fqn: "cdk-events-notify.EventNotify", version: "2.2.771" };
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW1DO0FBQ25DLGlEQUFpRDtBQUNqRCx5REFBeUQ7QUFDekQsaURBQWlEO0FBQ2pELDZDQUE2QztBQUM3QywyQ0FBdUM7QUEwQnZDOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFDeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3hELE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFFO1lBQ2pFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVO1lBQzNDLFdBQVcsRUFBRTtnQkFDWCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWU7Z0JBQzlDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCO2FBQ2pEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRTtZQUNqRCxRQUFRLEVBQUUsMkJBQTJCO1lBQ3JDLFdBQVcsRUFBRSxrQ0FBa0M7WUFDL0MsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDNUIsWUFBWSxFQUFFO2dCQUNaLFVBQVUsRUFBRSxDQUFDLG9DQUFvQyxDQUFDO2FBQ25EO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6Qkgsa0NBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG4vKipcbiAqIHNsYWNrIGV2ZW50IG5vdGlmeSBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNsYWNrRXZlbnROb3RpZnkge1xuICAvKipcbiAgICogc2xhY2sgV2ViaG9vayBVcmwgZm9yIExhbWJkYSBzZW5kIG1lc3NhZ2UgdG8gc2xhY2suXG4gICAqL1xuICByZWFkb25seSBzbGFja1dlYmhvb2tVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIHNsYWNrIENoYW5uZWwgTmFtZSBmb3IgTGFtYmRhIHNlbmQgbWVzc2FnZSB0byBzbGFjay5cbiAgICovXG4gIHJlYWRvbmx5IHNsYWNrQ2hhbm5lbE5hbWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIGV2ZW50IG5vdGlmeSBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnROb3RpZnlQcm9wcyB7XG4gIC8qKlxuICAgKiBOb3RpZnkgdGFyZ2V0IHRvIFNsYWNrIGNoYW5uZWwuXG4gICAqL1xuICByZWFkb25seSBzbGFjazogSVNsYWNrRXZlbnROb3RpZnk7XG59XG5cbi8qKlxuICogRXZlbnQgTm90Zml5IENvbnN0cnVjdCBDbGFzcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50Tm90aWZ5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEV2ZW50Tm90aWZ5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbGFtYmRhRnVuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnbGFtYmRhX2Z1bicsIHtcbiAgICAgIGhhbmRsZXI6ICdub3RpZnkubGFtYmRhX2hhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9mdW5jdGlvbicpICksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5QWVRIT05fM18xMyxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDMpLFxuICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuVEhSRUVfREFZUyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNMQUNLX1dFQkhPT0tfVVJMOiBwcm9wcy5zbGFjay5zbGFja1dlYmhvb2tVcmwsXG4gICAgICAgIFNMQUNLX0NIQU5ORUxfTkFNRTogcHJvcHMuc2xhY2suc2xhY2tDaGFubmVsTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBldmVudE5vdGlmeVRhcmdldCA9IG5ldyB0YXJnZXQuTGFtYmRhRnVuY3Rpb24obGFtYmRhRnVuKTtcbiAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ0V2ZW50QnVzQ29uc29sZUxvZ2luRXZlbnQnLCB7XG4gICAgICBydWxlTmFtZTogJ0V2ZW50QnVzQ29uc29sZUxvZ2luRXZlbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdDb25zb2xlIGxvZ2luIGluIHNwZWNpZmljIHJlZ2lvbicsXG4gICAgICB0YXJnZXRzOiBbZXZlbnROb3RpZnlUYXJnZXRdLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIGRldGFpbFR5cGU6IFsnQVdTIENvbnNvbGUgU2lnbiBJbiB2aWEgQ2xvdWRUcmFpbCddLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufSJdfQ==
|
package/lib/integ.default.js
CHANGED
|
@@ -13,12 +13,11 @@ const app = new cdk.App();
|
|
|
13
13
|
account: process.env.CDK_DEFAULT_ACCOUNT,
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
|
-
new _1.EventNotify(stack, '
|
|
17
|
-
lineNotifyToken: process.env.LINE_NOTIFY_TOKEN,
|
|
16
|
+
new _1.EventNotify(stack, 'SlackEventNotify', {
|
|
18
17
|
slack: {
|
|
19
18
|
slackChannelName: `${process.env.SLACK_CHANNEL_NAME}`,
|
|
20
19
|
slackWebhookUrl: `${process.env.SLACK_WEBHOOK_URL}`,
|
|
21
20
|
},
|
|
22
21
|
});
|
|
23
22
|
});
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQW1DO0FBQ25DLHlCQUFpQztBQUdqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUUxQjtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7Q0FDakIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxlQUFlLE1BQU0sRUFBRSxFQUFFO1FBQ3hELEdBQUcsRUFBRTtZQUNILE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO1NBQ3pDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxjQUFXLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1FBQ3pDLEtBQUssRUFBRTtZQUNMLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRTtZQUNyRCxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFO1NBQ3BEO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRXZlbnROb3RpZnkgfSBmcm9tICcuLyc7XG5cblxuY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcblxuW1xuICAndXMtZWFzdC0xJyxcbiAgJ2FwLW5vcnRoZWFzdC0xJyxcbl0uZm9yRWFjaChyZWdpb24gPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soYXBwLCBgaW50ZWctc3RhY2stJHtyZWdpb259YCwge1xuICAgIGVudjoge1xuICAgICAgcmVnaW9uOiByZWdpb24sXG4gICAgICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICAgIH0sXG4gIH0pO1xuICBuZXcgRXZlbnROb3RpZnkoc3RhY2ssICdTbGFja0V2ZW50Tm90aWZ5Jywge1xuICAgIHNsYWNrOiB7XG4gICAgICBzbGFja0NoYW5uZWxOYW1lOiBgJHtwcm9jZXNzLmVudi5TTEFDS19DSEFOTkVMX05BTUV9YCxcbiAgICAgIHNsYWNrV2ViaG9va1VybDogYCR7cHJvY2Vzcy5lbnYuU0xBQ0tfV0VCSE9PS19VUkx9YCxcbiAgICB9LFxuICB9KTtcbn0pO1xuXG5cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@types/node": "^24",
|
|
42
42
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
43
43
|
"@typescript-eslint/parser": "^8",
|
|
44
|
-
"aws-cdk-lib": "2.
|
|
44
|
+
"aws-cdk-lib": "2.175.0",
|
|
45
45
|
"commit-and-tag-version": "^12",
|
|
46
46
|
"constructs": "10.5.1",
|
|
47
47
|
"eslint": "^9",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"typescript": "^5"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
|
-
"aws-cdk-lib": "^2.
|
|
62
|
+
"aws-cdk-lib": "^2.175.0",
|
|
63
63
|
"constructs": "^10.5.1"
|
|
64
64
|
},
|
|
65
65
|
"keywords": [
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"access": "public",
|
|
78
78
|
"provenance": true
|
|
79
79
|
},
|
|
80
|
-
"version": "2.2.
|
|
80
|
+
"version": "2.2.771",
|
|
81
81
|
"jest": {
|
|
82
82
|
"coverageProvider": "v8",
|
|
83
83
|
"testMatch": [
|
package/function/linenotify.py
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
from logging import getLogger, INFO
|
|
2
|
-
from urllib.error import URLError, HTTPError
|
|
3
|
-
import json
|
|
4
|
-
#import boto3
|
|
5
|
-
import os
|
|
6
|
-
from base64 import b64decode
|
|
7
|
-
import logging
|
|
8
|
-
import json
|
|
9
|
-
import urllib.request
|
|
10
|
-
import urllib.parse
|
|
11
|
-
|
|
12
|
-
logger = getLogger()
|
|
13
|
-
logger.setLevel(INFO)
|
|
14
|
-
|
|
15
|
-
TOKEN = os.environ['LINE_NOTIFY_TOKEN']
|
|
16
|
-
|
|
17
|
-
# for use kms ECRYPTED token .
|
|
18
|
-
#DECRYPTED = boto3.client('kms').decrypt(
|
|
19
|
-
# CiphertextBlob=b64decode(token),
|
|
20
|
-
# EncryptionContext={
|
|
21
|
-
# 'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']
|
|
22
|
-
# })['Plaintext'].decode('utf-8')
|
|
23
|
-
# example console login event https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-console-event-type
|
|
24
|
-
|
|
25
|
-
def lineNotifyMessage(token, msg):
|
|
26
|
-
prepayload = {'message': msg}
|
|
27
|
-
payload = urllib.parse.urlencode(prepayload).encode('utf8')
|
|
28
|
-
headers = {
|
|
29
|
-
'Authorization': 'Bearer {token}'.format(token=token),
|
|
30
|
-
'Content-Type': 'application/x-www-form-urlencoded'
|
|
31
|
-
}
|
|
32
|
-
req = urllib.request.Request("https://notify-api.line.me/api/notify",
|
|
33
|
-
data=payload, headers=headers)
|
|
34
|
-
response = 1
|
|
35
|
-
try:
|
|
36
|
-
with urllib.request.urlopen(req) as res:
|
|
37
|
-
res.read()
|
|
38
|
-
logger.info("Message posted.")
|
|
39
|
-
except HTTPError as err:
|
|
40
|
-
logger.error("Request failed: %d %s", err.code, err.reason)
|
|
41
|
-
except URLError as err:
|
|
42
|
-
logger.error("Server connection failed: %s", err.reason)
|
|
43
|
-
else:
|
|
44
|
-
response = 0
|
|
45
|
-
return response
|
|
46
|
-
|
|
47
|
-
def slackNotifyMessage(channel, webhook, msg):
|
|
48
|
-
prepayload = {
|
|
49
|
-
'channel_id': channel,
|
|
50
|
-
'text': msg}
|
|
51
|
-
payload = json.dumps(prepayload).encode('utf8')
|
|
52
|
-
headers = {
|
|
53
|
-
'Content-Type': 'application/json'
|
|
54
|
-
}
|
|
55
|
-
req = urllib.request.Request(webhook,
|
|
56
|
-
data=payload, headers=headers)
|
|
57
|
-
response = 1
|
|
58
|
-
try:
|
|
59
|
-
with urllib.request.urlopen(req) as res:
|
|
60
|
-
res.read()
|
|
61
|
-
logger.info("Message posted.")
|
|
62
|
-
except HTTPError as err:
|
|
63
|
-
logger.error("Request failed: %d %s", err.code, err.reason)
|
|
64
|
-
except URLError as err:
|
|
65
|
-
logger.error("Server connection failed: %s", err.reason)
|
|
66
|
-
else:
|
|
67
|
-
response = 0
|
|
68
|
-
return response
|
|
69
|
-
|
|
70
|
-
def lambda_handler(event, context):
|
|
71
|
-
event_name = event.get('detail').get('eventName', 'eventName_notfound')
|
|
72
|
-
region = event.get('detail').get('awsRegion', 'awsRegion_notfound')
|
|
73
|
-
source_ip = event.get('detail').get('sourceIPAddress', 'sourceIPAddress_notfound')
|
|
74
|
-
## Check user_identity and type
|
|
75
|
-
user_identity = event.get('detail').get('userIdentity')
|
|
76
|
-
user_identity_type = event.get('detail').get('userIdentity').get('type')
|
|
77
|
-
user_name = 'None'
|
|
78
|
-
if user_identity_type == 'IAMUser':
|
|
79
|
-
user_name = user_identity.get('userName', 'userName_notfound')
|
|
80
|
-
elif user_identity_type == 'AssumedRole':
|
|
81
|
-
user_name = user_identity.get('principalId', 'userName_notfound')
|
|
82
|
-
elif user_identity_type == 'Root':
|
|
83
|
-
user_name = user_identity.get('arn', 'root_name_notfound')
|
|
84
|
-
else:
|
|
85
|
-
user_name = f"{user_identity.get('userName')} {user_identity.get('principalId')} {user_identity.get('arn')}"
|
|
86
|
-
account_id = event.get('account', 'account_notfound')
|
|
87
|
-
response_elements = event.get('detail').get('responseElements', 'responseElements_notfound')
|
|
88
|
-
|
|
89
|
-
msg = f'''
|
|
90
|
-
Login Log
|
|
91
|
-
Event Name : {event_name}
|
|
92
|
-
Account ID : {account_id}
|
|
93
|
-
Region : {region}
|
|
94
|
-
User Name : {user_name}
|
|
95
|
-
Source IP : {source_ip}
|
|
96
|
-
Action :
|
|
97
|
-
{list(response_elements.keys())[0]} {list(response_elements.values())[0]}
|
|
98
|
-
'''
|
|
99
|
-
|
|
100
|
-
if TOKEN != 'none':
|
|
101
|
-
if event_name == 'CheckMfa':
|
|
102
|
-
print("Just Check Mfa")
|
|
103
|
-
if event_name == 'SwitchRole':
|
|
104
|
-
swithch_role = event.get('detail').get('additionalEventData').get('SwitchTo', 'SwitchTo_not_found')
|
|
105
|
-
msg = msg + "\n" + "Switch To : " + swithch_role
|
|
106
|
-
if swithch_role == 'SwitchTo_not_found':
|
|
107
|
-
print('SwitchTo_not_found')
|
|
108
|
-
else:
|
|
109
|
-
lineNotifyMessage(TOKEN, msg)
|
|
110
|
-
if event_name == 'ExitRole':
|
|
111
|
-
swithch_role = event.get('detail').get('additionalEventData').get('SwitchFrom', 'SwitchFrom_not_found')
|
|
112
|
-
msg = msg + "\n" + "Switch From : " + swithch_role
|
|
113
|
-
if swithch_role == 'SwitchFrom_not_found':
|
|
114
|
-
print('SwitchFrom_not_found')
|
|
115
|
-
else:
|
|
116
|
-
lineNotifyMessage(TOKEN, msg)
|
|
117
|
-
if event_name == 'ConsoleLogin':
|
|
118
|
-
msg = msg
|
|
119
|
-
lineNotifyMessage(TOKEN, msg)
|
|
120
|
-
if os.environ.get('SLACK_CHANNEL_NAME') != 'none' and os.environ.get('SLACK_WEBHOOK_URL') != 'none':
|
|
121
|
-
if event_name == 'CheckMfa':
|
|
122
|
-
print("Just Check Mfa")
|
|
123
|
-
if event_name == 'SwitchRole':
|
|
124
|
-
swithch_role = event.get('detail').get('additionalEventData').get('SwitchTo', 'SwitchTo_not_found')
|
|
125
|
-
msg = msg + "\n" + "Switch To : " + swithch_role
|
|
126
|
-
if swithch_role == 'SwitchTo_not_found':
|
|
127
|
-
print('SwitchTo_not_found')
|
|
128
|
-
else:
|
|
129
|
-
slackNotifyMessage(os.environ.get('SLACK_CHANNEL_NAME'), os.environ.get('SLACK_WEBHOOK_URL'), msg)
|
|
130
|
-
if event_name == 'ExitRole':
|
|
131
|
-
swithch_role = event.get('detail').get('additionalEventData').get('SwitchFrom', 'SwitchFrom_not_found')
|
|
132
|
-
msg = msg + "\n" + "Switch From : " + swithch_role
|
|
133
|
-
if swithch_role == 'SwitchFrom_not_found':
|
|
134
|
-
print('SwitchFrom_not_found')
|
|
135
|
-
else:
|
|
136
|
-
slackNotifyMessage(os.environ.get('SLACK_CHANNEL_NAME'), os.environ.get('SLACK_WEBHOOK_URL'), msg)
|
|
137
|
-
if event_name == 'ConsoleLogin':
|
|
138
|
-
msg = msg
|
|
139
|
-
slackNotifyMessage(os.environ.get('SLACK_CHANNEL_NAME'), os.environ.get('SLACK_WEBHOOK_URL'), msg)
|