aws-cdk-lib 2.200.2__py3-none-any.whl → 2.224.0__py3-none-any.whl

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.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (569) hide show
  1. aws_cdk/__init__.py +1349 -373
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.200.2.jsii.tgz → aws-cdk-lib@2.224.0.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +12 -2
  5. aws_cdk/aws_accessanalyzer/__init__.py +323 -6
  6. aws_cdk/aws_acmpca/__init__.py +53 -10
  7. aws_cdk/aws_aiops/__init__.py +1019 -0
  8. aws_cdk/aws_amazonmq/__init__.py +357 -313
  9. aws_cdk/aws_amplify/__init__.py +173 -17
  10. aws_cdk/aws_amplifyuibuilder/__init__.py +35 -6
  11. aws_cdk/aws_apigateway/__init__.py +1017 -155
  12. aws_cdk/aws_apigatewayv2/__init__.py +2796 -379
  13. aws_cdk/aws_apigatewayv2_integrations/__init__.py +94 -16
  14. aws_cdk/aws_appconfig/__init__.py +298 -43
  15. aws_cdk/aws_appflow/__init__.py +151 -6
  16. aws_cdk/aws_appintegrations/__init__.py +546 -6
  17. aws_cdk/aws_applicationautoscaling/__init__.py +29 -6
  18. aws_cdk/aws_applicationinsights/__init__.py +13 -2
  19. aws_cdk/aws_applicationsignals/__init__.py +374 -6
  20. aws_cdk/aws_appmesh/__init__.py +94 -26
  21. aws_cdk/aws_apprunner/__init__.py +66 -18
  22. aws_cdk/aws_appstream/__init__.py +309 -55
  23. aws_cdk/aws_appsync/__init__.py +227 -53
  24. aws_cdk/aws_apptest/__init__.py +71 -2
  25. aws_cdk/aws_aps/__init__.py +1875 -132
  26. aws_cdk/aws_arcregionswitch/__init__.py +5095 -0
  27. aws_cdk/aws_arczonalshift/__init__.py +39 -12
  28. aws_cdk/aws_athena/__init__.py +365 -29
  29. aws_cdk/aws_auditmanager/__init__.py +71 -2
  30. aws_cdk/aws_autoscaling/__init__.py +135 -55
  31. aws_cdk/aws_autoscaling_common/__init__.py +3 -0
  32. aws_cdk/aws_autoscalingplans/__init__.py +13 -2
  33. aws_cdk/aws_b2bi/__init__.py +1819 -99
  34. aws_cdk/aws_backup/__init__.py +317 -28
  35. aws_cdk/aws_backupgateway/__init__.py +13 -2
  36. aws_cdk/aws_batch/__init__.py +1405 -178
  37. aws_cdk/aws_bcmdataexports/__init__.py +21 -2
  38. aws_cdk/aws_bedrock/__init__.py +6747 -627
  39. aws_cdk/aws_bedrockagentcore/__init__.py +10425 -0
  40. aws_cdk/aws_billingconductor/__init__.py +197 -11
  41. aws_cdk/aws_budgets/__init__.py +42 -4
  42. aws_cdk/aws_cassandra/__init__.py +247 -6
  43. aws_cdk/aws_ce/__init__.py +35 -6
  44. aws_cdk/aws_certificatemanager/__init__.py +237 -32
  45. aws_cdk/aws_chatbot/__init__.py +70 -6
  46. aws_cdk/aws_cleanrooms/__init__.py +709 -206
  47. aws_cdk/aws_cleanroomsml/__init__.py +13 -2
  48. aws_cdk/aws_cloud9/__init__.py +13 -2
  49. aws_cdk/aws_cloudformation/__init__.py +345 -166
  50. aws_cdk/aws_cloudfront/__init__.py +2101 -680
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +108 -16
  52. aws_cdk/aws_cloudfront_origins/__init__.py +614 -73
  53. aws_cdk/aws_cloudtrail/__init__.py +301 -17
  54. aws_cdk/aws_cloudwatch/__init__.py +1414 -153
  55. aws_cdk/aws_codeartifact/__init__.py +35 -6
  56. aws_cdk/aws_codebuild/__init__.py +1103 -118
  57. aws_cdk/aws_codecommit/__init__.py +23 -9
  58. aws_cdk/aws_codeconnections/__init__.py +13 -2
  59. aws_cdk/aws_codedeploy/__init__.py +67 -6
  60. aws_cdk/aws_codeguruprofiler/__init__.py +74 -2
  61. aws_cdk/aws_codegurureviewer/__init__.py +13 -2
  62. aws_cdk/aws_codepipeline/__init__.py +127 -64
  63. aws_cdk/aws_codepipeline_actions/__init__.py +749 -0
  64. aws_cdk/aws_codestar/__init__.py +13 -2
  65. aws_cdk/aws_codestarconnections/__init__.py +35 -6
  66. aws_cdk/aws_codestarnotifications/__init__.py +16 -2
  67. aws_cdk/aws_cognito/__init__.py +814 -80
  68. aws_cdk/aws_cognito_identitypool/__init__.py +17 -12
  69. aws_cdk/aws_comprehend/__init__.py +24 -4
  70. aws_cdk/aws_config/__init__.py +191 -30
  71. aws_cdk/aws_connect/__init__.py +2736 -191
  72. aws_cdk/aws_connectcampaigns/__init__.py +13 -2
  73. aws_cdk/aws_connectcampaignsv2/__init__.py +268 -6
  74. aws_cdk/aws_controltower/__init__.py +35 -6
  75. aws_cdk/aws_cur/__init__.py +100 -4
  76. aws_cdk/aws_customerprofiles/__init__.py +617 -27
  77. aws_cdk/aws_databrew/__init__.py +68 -12
  78. aws_cdk/aws_datapipeline/__init__.py +42 -2
  79. aws_cdk/aws_datasync/__init__.py +723 -203
  80. aws_cdk/aws_datazone/__init__.py +4425 -608
  81. aws_cdk/aws_dax/__init__.py +83 -6
  82. aws_cdk/aws_deadline/__init__.py +321 -32
  83. aws_cdk/aws_detective/__init__.py +35 -6
  84. aws_cdk/aws_devicefarm/__init__.py +68 -12
  85. aws_cdk/aws_devopsguru/__init__.py +37 -6
  86. aws_cdk/aws_directoryservice/__init__.py +53 -4
  87. aws_cdk/aws_dlm/__init__.py +13 -2
  88. aws_cdk/aws_dms/__init__.py +184 -27
  89. aws_cdk/aws_docdb/__init__.py +323 -46
  90. aws_cdk/aws_docdbelastic/__init__.py +13 -2
  91. aws_cdk/aws_dsql/__init__.py +340 -12
  92. aws_cdk/aws_dynamodb/__init__.py +1463 -166
  93. aws_cdk/aws_ec2/__init__.py +9636 -1120
  94. aws_cdk/aws_ecr/__init__.py +631 -43
  95. aws_cdk/aws_ecr_assets/__init__.py +4 -0
  96. aws_cdk/aws_ecs/__init__.py +6524 -497
  97. aws_cdk/aws_ecs_patterns/__init__.py +2 -0
  98. aws_cdk/aws_efs/__init__.py +264 -24
  99. aws_cdk/aws_eks/__init__.py +1050 -218
  100. aws_cdk/aws_elasticache/__init__.py +373 -20
  101. aws_cdk/aws_elasticbeanstalk/__init__.py +75 -8
  102. aws_cdk/aws_elasticloadbalancing/__init__.py +16 -2
  103. aws_cdk/aws_elasticloadbalancingv2/__init__.py +1670 -106
  104. aws_cdk/aws_elasticsearch/__init__.py +282 -9
  105. aws_cdk/aws_emr/__init__.py +187 -20
  106. aws_cdk/aws_emrcontainers/__init__.py +71 -2
  107. aws_cdk/aws_emrserverless/__init__.py +188 -3
  108. aws_cdk/aws_entityresolution/__init__.py +585 -58
  109. aws_cdk/aws_events/__init__.py +969 -124
  110. aws_cdk/aws_events_targets/__init__.py +310 -54
  111. aws_cdk/aws_eventschemas/__init__.py +46 -8
  112. aws_cdk/aws_evidently/__init__.py +57 -10
  113. aws_cdk/aws_evs/__init__.py +2244 -0
  114. aws_cdk/aws_finspace/__init__.py +71 -2
  115. aws_cdk/aws_fis/__init__.py +26 -4
  116. aws_cdk/aws_fms/__init__.py +35 -6
  117. aws_cdk/aws_forecast/__init__.py +24 -4
  118. aws_cdk/aws_frauddetector/__init__.py +79 -14
  119. aws_cdk/aws_fsx/__init__.py +1236 -142
  120. aws_cdk/aws_gamelift/__init__.py +653 -78
  121. aws_cdk/aws_gameliftstreams/__init__.py +38 -16
  122. aws_cdk/aws_globalaccelerator/__init__.py +55 -14
  123. aws_cdk/aws_glue/__init__.py +1368 -320
  124. aws_cdk/aws_grafana/__init__.py +13 -2
  125. aws_cdk/aws_greengrass/__init__.py +654 -32
  126. aws_cdk/aws_greengrassv2/__init__.py +53 -4
  127. aws_cdk/aws_groundstation/__init__.py +122 -6
  128. aws_cdk/aws_guardduty/__init__.py +1613 -123
  129. aws_cdk/aws_healthimaging/__init__.py +71 -2
  130. aws_cdk/aws_healthlake/__init__.py +42 -2
  131. aws_cdk/aws_iam/__init__.py +480 -140
  132. aws_cdk/aws_identitystore/__init__.py +24 -4
  133. aws_cdk/aws_imagebuilder/__init__.py +1433 -183
  134. aws_cdk/aws_inspector/__init__.py +38 -6
  135. aws_cdk/aws_inspectorv2/__init__.py +2285 -243
  136. aws_cdk/aws_internetmonitor/__init__.py +71 -2
  137. aws_cdk/aws_invoicing/__init__.py +13 -2
  138. aws_cdk/aws_iot/__init__.py +1730 -86
  139. aws_cdk/aws_iotanalytics/__init__.py +162 -8
  140. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +106 -40
  141. aws_cdk/aws_iotevents/__init__.py +122 -6
  142. aws_cdk/aws_iotfleethub/__init__.py +71 -2
  143. aws_cdk/aws_iotfleetwise/__init__.py +195 -14
  144. aws_cdk/aws_iotsitewise/__init__.py +1837 -89
  145. aws_cdk/aws_iotthingsgraph/__init__.py +13 -2
  146. aws_cdk/aws_iottwinmaker/__init__.py +115 -10
  147. aws_cdk/aws_iotwireless/__init__.py +649 -22
  148. aws_cdk/aws_ivs/__init__.py +561 -57
  149. aws_cdk/aws_ivschat/__init__.py +24 -4
  150. aws_cdk/aws_kafkaconnect/__init__.py +35 -6
  151. aws_cdk/aws_kendra/__init__.py +120 -28
  152. aws_cdk/aws_kendraranking/__init__.py +13 -2
  153. aws_cdk/aws_kinesis/__init__.py +622 -22
  154. aws_cdk/aws_kinesisanalytics/__init__.py +467 -94
  155. aws_cdk/aws_kinesisanalyticsv2/__init__.py +201 -11
  156. aws_cdk/aws_kinesisfirehose/__init__.py +3077 -295
  157. aws_cdk/aws_kinesisvideo/__init__.py +24 -4
  158. aws_cdk/aws_kms/__init__.py +188 -41
  159. aws_cdk/aws_lakeformation/__init__.py +80 -15
  160. aws_cdk/aws_lambda/__init__.py +2101 -252
  161. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  162. aws_cdk/aws_lambda_nodejs/__init__.py +63 -24
  163. aws_cdk/aws_launchwizard/__init__.py +13 -2
  164. aws_cdk/aws_lex/__init__.py +871 -8
  165. aws_cdk/aws_licensemanager/__init__.py +24 -4
  166. aws_cdk/aws_lightsail/__init__.py +2159 -975
  167. aws_cdk/aws_location/__init__.py +618 -14
  168. aws_cdk/aws_logs/__init__.py +5904 -956
  169. aws_cdk/aws_lookoutequipment/__init__.py +13 -2
  170. aws_cdk/aws_lookoutmetrics/__init__.py +38 -6
  171. aws_cdk/aws_lookoutvision/__init__.py +71 -2
  172. aws_cdk/aws_m2/__init__.py +94 -19
  173. aws_cdk/aws_macie/__init__.py +49 -11
  174. aws_cdk/aws_managedblockchain/__init__.py +180 -6
  175. aws_cdk/aws_mediaconnect/__init__.py +101 -18
  176. aws_cdk/aws_mediaconvert/__init__.py +35 -6
  177. aws_cdk/aws_medialive/__init__.py +1239 -35
  178. aws_cdk/aws_mediapackage/__init__.py +59 -12
  179. aws_cdk/aws_mediapackagev2/__init__.py +1607 -225
  180. aws_cdk/aws_mediastore/__init__.py +13 -2
  181. aws_cdk/aws_mediatailor/__init__.py +583 -12
  182. aws_cdk/aws_memorydb/__init__.py +271 -12
  183. aws_cdk/aws_mpa/__init__.py +1495 -0
  184. aws_cdk/aws_msk/__init__.py +104 -18
  185. aws_cdk/aws_mwaa/__init__.py +121 -9
  186. aws_cdk/aws_neptune/__init__.py +290 -78
  187. aws_cdk/aws_neptunegraph/__init__.py +24 -4
  188. aws_cdk/aws_networkfirewall/__init__.py +1289 -273
  189. aws_cdk/aws_networkmanager/__init__.py +349 -33
  190. aws_cdk/aws_nimblestudio/__init__.py +75 -8
  191. aws_cdk/aws_notifications/__init__.py +317 -12
  192. aws_cdk/aws_notificationscontacts/__init__.py +13 -2
  193. aws_cdk/aws_oam/__init__.py +24 -4
  194. aws_cdk/aws_observabilityadmin/__init__.py +2561 -0
  195. aws_cdk/aws_odb/__init__.py +5872 -0
  196. aws_cdk/aws_omics/__init__.py +2495 -529
  197. aws_cdk/aws_opensearchserverless/__init__.py +312 -37
  198. aws_cdk/aws_opensearchservice/__init__.py +495 -19
  199. aws_cdk/aws_opsworks/__init__.py +235 -139
  200. aws_cdk/aws_opsworkscm/__init__.py +16 -52
  201. aws_cdk/aws_organizations/__init__.py +70 -10
  202. aws_cdk/aws_osis/__init__.py +167 -2
  203. aws_cdk/aws_panorama/__init__.py +151 -6
  204. aws_cdk/aws_paymentcryptography/__init__.py +24 -4
  205. aws_cdk/aws_pcaconnectorad/__init__.py +59 -10
  206. aws_cdk/aws_pcaconnectorscep/__init__.py +24 -4
  207. aws_cdk/aws_pcs/__init__.py +387 -68
  208. aws_cdk/aws_personalize/__init__.py +46 -8
  209. aws_cdk/aws_pinpoint/__init__.py +329 -38
  210. aws_cdk/aws_pinpointemail/__init__.py +48 -8
  211. aws_cdk/aws_pipes/__init__.py +12 -2
  212. aws_cdk/aws_proton/__init__.py +37 -6
  213. aws_cdk/aws_qbusiness/__init__.py +635 -34
  214. aws_cdk/aws_qldb/__init__.py +24 -4
  215. aws_cdk/aws_quicksight/__init__.py +7900 -1160
  216. aws_cdk/aws_ram/__init__.py +24 -4
  217. aws_cdk/aws_rbin/__init__.py +12 -2
  218. aws_cdk/aws_rds/__init__.py +3345 -512
  219. aws_cdk/aws_redshift/__init__.py +143 -20
  220. aws_cdk/aws_redshiftserverless/__init__.py +692 -4
  221. aws_cdk/aws_refactorspaces/__init__.py +64 -14
  222. aws_cdk/aws_rekognition/__init__.py +93 -6
  223. aws_cdk/aws_resiliencehub/__init__.py +24 -4
  224. aws_cdk/aws_resourceexplorer2/__init__.py +35 -6
  225. aws_cdk/aws_resourcegroups/__init__.py +82 -4
  226. aws_cdk/aws_robomaker/__init__.py +72 -12
  227. aws_cdk/aws_rolesanywhere/__init__.py +180 -6
  228. aws_cdk/aws_route53/__init__.py +3273 -1442
  229. aws_cdk/aws_route53_targets/__init__.py +3 -0
  230. aws_cdk/aws_route53profiles/__init__.py +37 -6
  231. aws_cdk/aws_route53recoverycontrol/__init__.py +46 -8
  232. aws_cdk/aws_route53recoveryreadiness/__init__.py +104 -8
  233. aws_cdk/aws_route53resolver/__init__.py +226 -36
  234. aws_cdk/aws_rtbfabric/__init__.py +3498 -0
  235. aws_cdk/aws_rum/__init__.py +13 -2
  236. aws_cdk/aws_s3/__init__.py +1291 -158
  237. aws_cdk/aws_s3_assets/__init__.py +11 -11
  238. aws_cdk/aws_s3_deployment/__init__.py +147 -11
  239. aws_cdk/aws_s3_notifications/__init__.py +7 -7
  240. aws_cdk/aws_s3express/__init__.py +266 -8
  241. aws_cdk/aws_s3objectlambda/__init__.py +68 -16
  242. aws_cdk/aws_s3outposts/__init__.py +46 -8
  243. aws_cdk/aws_s3tables/__init__.py +2000 -323
  244. aws_cdk/aws_s3vectors/__init__.py +1378 -0
  245. aws_cdk/aws_sagemaker/__init__.py +6617 -363
  246. aws_cdk/aws_sam/__init__.py +79 -14
  247. aws_cdk/aws_scheduler/__init__.py +237 -4
  248. aws_cdk/aws_sdb/__init__.py +12 -2
  249. aws_cdk/aws_secretsmanager/__init__.py +170 -14
  250. aws_cdk/aws_securityhub/__init__.py +3121 -176
  251. aws_cdk/aws_securitylake/__init__.py +46 -8
  252. aws_cdk/aws_servicecatalog/__init__.py +405 -246
  253. aws_cdk/aws_servicecatalogappregistry/__init__.py +164 -8
  254. aws_cdk/aws_servicediscovery/__init__.py +140 -47
  255. aws_cdk/aws_ses/__init__.py +1231 -140
  256. aws_cdk/aws_shield/__init__.py +46 -8
  257. aws_cdk/aws_signer/__init__.py +27 -4
  258. aws_cdk/aws_simspaceweaver/__init__.py +42 -2
  259. aws_cdk/aws_smsvoice/__init__.py +4716 -0
  260. aws_cdk/aws_sns/__init__.py +245 -29
  261. aws_cdk/aws_sns_subscriptions/__init__.py +3 -1
  262. aws_cdk/aws_sqs/__init__.py +211 -14
  263. aws_cdk/aws_ssm/__init__.py +401 -58
  264. aws_cdk/aws_ssmcontacts/__init__.py +46 -8
  265. aws_cdk/aws_ssmguiconnect/__init__.py +13 -2
  266. aws_cdk/aws_ssmincidents/__init__.py +24 -4
  267. aws_cdk/aws_ssmquicksetup/__init__.py +383 -6
  268. aws_cdk/aws_sso/__init__.py +70 -12
  269. aws_cdk/aws_stepfunctions/__init__.py +615 -70
  270. aws_cdk/aws_stepfunctions_tasks/__init__.py +781 -144
  271. aws_cdk/aws_supportapp/__init__.py +39 -6
  272. aws_cdk/aws_synthetics/__init__.py +861 -75
  273. aws_cdk/aws_systemsmanagersap/__init__.py +13 -2
  274. aws_cdk/aws_timestream/__init__.py +104 -8
  275. aws_cdk/aws_transfer/__init__.py +784 -87
  276. aws_cdk/aws_verifiedpermissions/__init__.py +145 -17
  277. aws_cdk/aws_voiceid/__init__.py +41 -2
  278. aws_cdk/aws_vpclattice/__init__.py +376 -30
  279. aws_cdk/aws_waf/__init__.py +79 -14
  280. aws_cdk/aws_wafregional/__init__.py +123 -22
  281. aws_cdk/aws_wafv2/__init__.py +1179 -60
  282. aws_cdk/aws_wisdom/__init__.py +1401 -90
  283. aws_cdk/aws_workspaces/__init__.py +93 -6
  284. aws_cdk/aws_workspacesinstances/__init__.py +3940 -0
  285. aws_cdk/aws_workspacesthinclient/__init__.py +79 -10
  286. aws_cdk/aws_workspacesweb/__init__.py +1057 -141
  287. aws_cdk/aws_xray/__init__.py +48 -8
  288. aws_cdk/cloud_assembly_schema/__init__.py +231 -6
  289. aws_cdk/custom_resources/__init__.py +40 -12
  290. aws_cdk/cx_api/__init__.py +85 -14
  291. aws_cdk/interfaces/__init__.py +739 -0
  292. aws_cdk/interfaces/alexa_ask/__init__.py +146 -0
  293. aws_cdk/interfaces/aws_accessanalyzer/__init__.py +146 -0
  294. aws_cdk/interfaces/aws_acmpca/__init__.py +501 -0
  295. aws_cdk/interfaces/aws_aiops/__init__.py +146 -0
  296. aws_cdk/interfaces/aws_amazonmq/__init__.py +386 -0
  297. aws_cdk/interfaces/aws_amplify/__init__.py +352 -0
  298. aws_cdk/interfaces/aws_amplifyuibuilder/__init__.py +454 -0
  299. aws_cdk/interfaces/aws_apigateway/__init__.py +2486 -0
  300. aws_cdk/interfaces/aws_apigatewayv2/__init__.py +1651 -0
  301. aws_cdk/interfaces/aws_appconfig/__init__.py +1020 -0
  302. aws_cdk/interfaces/aws_appflow/__init__.py +404 -0
  303. aws_cdk/interfaces/aws_appintegrations/__init__.py +396 -0
  304. aws_cdk/interfaces/aws_applicationautoscaling/__init__.py +307 -0
  305. aws_cdk/interfaces/aws_applicationinsights/__init__.py +148 -0
  306. aws_cdk/interfaces/aws_applicationsignals/__init__.py +358 -0
  307. aws_cdk/interfaces/aws_appmesh/__init__.py +888 -0
  308. aws_cdk/interfaces/aws_apprunner/__init__.py +564 -0
  309. aws_cdk/interfaces/aws_appstream/__init__.py +1482 -0
  310. aws_cdk/interfaces/aws_appsync/__init__.py +1326 -0
  311. aws_cdk/interfaces/aws_apptest/__init__.py +163 -0
  312. aws_cdk/interfaces/aws_aps/__init__.py +558 -0
  313. aws_cdk/interfaces/aws_arcregionswitch/__init__.py +146 -0
  314. aws_cdk/interfaces/aws_arczonalshift/__init__.py +273 -0
  315. aws_cdk/interfaces/aws_athena/__init__.py +575 -0
  316. aws_cdk/interfaces/aws_auditmanager/__init__.py +163 -0
  317. aws_cdk/interfaces/aws_autoscaling/__init__.py +705 -0
  318. aws_cdk/interfaces/aws_autoscalingplans/__init__.py +148 -0
  319. aws_cdk/interfaces/aws_b2bi/__init__.py +524 -0
  320. aws_cdk/interfaces/aws_backup/__init__.py +955 -0
  321. aws_cdk/interfaces/aws_backupgateway/__init__.py +146 -0
  322. aws_cdk/interfaces/aws_batch/__init__.py +681 -0
  323. aws_cdk/interfaces/aws_bcmdataexports/__init__.py +146 -0
  324. aws_cdk/interfaces/aws_bedrock/__init__.py +1942 -0
  325. aws_cdk/interfaces/aws_bedrockagentcore/__init__.py +934 -0
  326. aws_cdk/interfaces/aws_billing/__init__.py +146 -0
  327. aws_cdk/interfaces/aws_billingconductor/__init__.py +463 -0
  328. aws_cdk/interfaces/aws_budgets/__init__.py +261 -0
  329. aws_cdk/interfaces/aws_cassandra/__init__.py +381 -0
  330. aws_cdk/interfaces/aws_ce/__init__.py +352 -0
  331. aws_cdk/interfaces/aws_certificatemanager/__init__.py +251 -0
  332. aws_cdk/interfaces/aws_chatbot/__init__.py +366 -0
  333. aws_cdk/interfaces/aws_cleanrooms/__init__.py +1103 -0
  334. aws_cdk/interfaces/aws_cleanroomsml/__init__.py +148 -0
  335. aws_cdk/interfaces/aws_cloud9/__init__.py +166 -0
  336. aws_cdk/interfaces/aws_cloudformation/__init__.py +1919 -0
  337. aws_cdk/interfaces/aws_cloudfront/__init__.py +1998 -0
  338. aws_cdk/interfaces/aws_cloudtrail/__init__.py +570 -0
  339. aws_cdk/interfaces/aws_cloudwatch/__init__.py +733 -0
  340. aws_cdk/interfaces/aws_codeartifact/__init__.py +352 -0
  341. aws_cdk/interfaces/aws_codebuild/__init__.py +487 -0
  342. aws_cdk/interfaces/aws_codecommit/__init__.py +163 -0
  343. aws_cdk/interfaces/aws_codeconnections/__init__.py +146 -0
  344. aws_cdk/interfaces/aws_codedeploy/__init__.py +352 -0
  345. aws_cdk/interfaces/aws_codeguruprofiler/__init__.py +168 -0
  346. aws_cdk/interfaces/aws_codegurureviewer/__init__.py +148 -0
  347. aws_cdk/interfaces/aws_codepipeline/__init__.py +388 -0
  348. aws_cdk/interfaces/aws_codestar/__init__.py +146 -0
  349. aws_cdk/interfaces/aws_codestarconnections/__init__.py +370 -0
  350. aws_cdk/interfaces/aws_codestarnotifications/__init__.py +148 -0
  351. aws_cdk/interfaces/aws_cognito/__init__.py +1929 -0
  352. aws_cdk/interfaces/aws_comprehend/__init__.py +251 -0
  353. aws_cdk/interfaces/aws_config/__init__.py +1165 -0
  354. aws_cdk/interfaces/aws_connect/__init__.py +2949 -0
  355. aws_cdk/interfaces/aws_connectcampaigns/__init__.py +146 -0
  356. aws_cdk/interfaces/aws_connectcampaignsv2/__init__.py +146 -0
  357. aws_cdk/interfaces/aws_controltower/__init__.py +394 -0
  358. aws_cdk/interfaces/aws_cur/__init__.py +146 -0
  359. aws_cdk/interfaces/aws_customerprofiles/__init__.py +915 -0
  360. aws_cdk/interfaces/aws_databrew/__init__.py +661 -0
  361. aws_cdk/interfaces/aws_datapipeline/__init__.py +146 -0
  362. aws_cdk/interfaces/aws_datasync/__init__.py +1384 -0
  363. aws_cdk/interfaces/aws_datazone/__init__.py +2238 -0
  364. aws_cdk/interfaces/aws_dax/__init__.py +364 -0
  365. aws_cdk/interfaces/aws_deadline/__init__.py +1303 -0
  366. aws_cdk/interfaces/aws_detective/__init__.py +364 -0
  367. aws_cdk/interfaces/aws_devicefarm/__init__.py +663 -0
  368. aws_cdk/interfaces/aws_devopsguru/__init__.py +362 -0
  369. aws_cdk/interfaces/aws_directoryservice/__init__.py +251 -0
  370. aws_cdk/interfaces/aws_dlm/__init__.py +166 -0
  371. aws_cdk/interfaces/aws_dms/__init__.py +1176 -0
  372. aws_cdk/interfaces/aws_docdb/__init__.py +560 -0
  373. aws_cdk/interfaces/aws_docdbelastic/__init__.py +146 -0
  374. aws_cdk/interfaces/aws_dsql/__init__.py +146 -0
  375. aws_cdk/interfaces/aws_dynamodb/__init__.py +278 -0
  376. aws_cdk/interfaces/aws_ec2/__init__.py +11963 -0
  377. aws_cdk/interfaces/aws_ecr/__init__.py +814 -0
  378. aws_cdk/interfaces/aws_ecs/__init__.py +845 -0
  379. aws_cdk/interfaces/aws_efs/__init__.py +392 -0
  380. aws_cdk/interfaces/aws_eks/__init__.py +948 -0
  381. aws_cdk/interfaces/aws_elasticache/__init__.py +1108 -0
  382. aws_cdk/interfaces/aws_elasticbeanstalk/__init__.py +503 -0
  383. aws_cdk/interfaces/aws_elasticloadbalancing/__init__.py +148 -0
  384. aws_cdk/interfaces/aws_elasticloadbalancingv2/__init__.py +795 -0
  385. aws_cdk/interfaces/aws_elasticsearch/__init__.py +158 -0
  386. aws_cdk/interfaces/aws_emr/__init__.py +913 -0
  387. aws_cdk/interfaces/aws_emrcontainers/__init__.py +168 -0
  388. aws_cdk/interfaces/aws_emrserverless/__init__.py +166 -0
  389. aws_cdk/interfaces/aws_entityresolution/__init__.py +608 -0
  390. aws_cdk/interfaces/aws_events/__init__.py +872 -0
  391. aws_cdk/interfaces/aws_eventschemas/__init__.py +455 -0
  392. aws_cdk/interfaces/aws_evidently/__init__.py +558 -0
  393. aws_cdk/interfaces/aws_evs/__init__.py +166 -0
  394. aws_cdk/interfaces/aws_finspace/__init__.py +166 -0
  395. aws_cdk/interfaces/aws_fis/__init__.py +271 -0
  396. aws_cdk/interfaces/aws_fms/__init__.py +364 -0
  397. aws_cdk/interfaces/aws_forecast/__init__.py +249 -0
  398. aws_cdk/interfaces/aws_frauddetector/__init__.py +764 -0
  399. aws_cdk/interfaces/aws_fsx/__init__.py +663 -0
  400. aws_cdk/interfaces/aws_gamelift/__init__.py +1325 -0
  401. aws_cdk/interfaces/aws_gameliftstreams/__init__.py +249 -0
  402. aws_cdk/interfaces/aws_globalaccelerator/__init__.py +461 -0
  403. aws_cdk/interfaces/aws_glue/__init__.py +2377 -0
  404. aws_cdk/interfaces/aws_grafana/__init__.py +146 -0
  405. aws_cdk/interfaces/aws_greengrass/__init__.py +1871 -0
  406. aws_cdk/interfaces/aws_greengrassv2/__init__.py +251 -0
  407. aws_cdk/interfaces/aws_groundstation/__init__.py +396 -0
  408. aws_cdk/interfaces/aws_guardduty/__init__.py +1225 -0
  409. aws_cdk/interfaces/aws_healthimaging/__init__.py +163 -0
  410. aws_cdk/interfaces/aws_healthlake/__init__.py +146 -0
  411. aws_cdk/interfaces/aws_iam/__init__.py +1803 -0
  412. aws_cdk/interfaces/aws_identitystore/__init__.py +288 -0
  413. aws_cdk/interfaces/aws_imagebuilder/__init__.py +984 -0
  414. aws_cdk/interfaces/aws_inspector/__init__.py +354 -0
  415. aws_cdk/interfaces/aws_inspectorv2/__init__.py +467 -0
  416. aws_cdk/interfaces/aws_internetmonitor/__init__.py +163 -0
  417. aws_cdk/interfaces/aws_invoicing/__init__.py +146 -0
  418. aws_cdk/interfaces/aws_iot/__init__.py +3483 -0
  419. aws_cdk/interfaces/aws_iotanalytics/__init__.py +455 -0
  420. aws_cdk/interfaces/aws_iotcoredeviceadvisor/__init__.py +168 -0
  421. aws_cdk/interfaces/aws_iotevents/__init__.py +352 -0
  422. aws_cdk/interfaces/aws_iotfleethub/__init__.py +166 -0
  423. aws_cdk/interfaces/aws_iotfleetwise/__init__.py +892 -0
  424. aws_cdk/interfaces/aws_iotsitewise/__init__.py +1097 -0
  425. aws_cdk/interfaces/aws_iotthingsgraph/__init__.py +146 -0
  426. aws_cdk/interfaces/aws_iottwinmaker/__init__.py +711 -0
  427. aws_cdk/interfaces/aws_iotwireless/__init__.py +1401 -0
  428. aws_cdk/interfaces/aws_ivs/__init__.py +1075 -0
  429. aws_cdk/interfaces/aws_ivschat/__init__.py +251 -0
  430. aws_cdk/interfaces/aws_kafkaconnect/__init__.py +354 -0
  431. aws_cdk/interfaces/aws_kendra/__init__.py +428 -0
  432. aws_cdk/interfaces/aws_kendraranking/__init__.py +166 -0
  433. aws_cdk/interfaces/aws_kinesis/__init__.py +364 -0
  434. aws_cdk/interfaces/aws_kinesisanalytics/__init__.py +364 -0
  435. aws_cdk/interfaces/aws_kinesisanalyticsv2/__init__.py +479 -0
  436. aws_cdk/interfaces/aws_kinesisfirehose/__init__.py +168 -0
  437. aws_cdk/interfaces/aws_kinesisvideo/__init__.py +283 -0
  438. aws_cdk/interfaces/aws_kms/__init__.py +376 -0
  439. aws_cdk/interfaces/aws_lakeformation/__init__.py +860 -0
  440. aws_cdk/interfaces/aws_lambda/__init__.py +1141 -0
  441. aws_cdk/interfaces/aws_launchwizard/__init__.py +146 -0
  442. aws_cdk/interfaces/aws_lex/__init__.py +513 -0
  443. aws_cdk/interfaces/aws_licensemanager/__init__.py +249 -0
  444. aws_cdk/interfaces/aws_lightsail/__init__.py +1744 -0
  445. aws_cdk/interfaces/aws_location/__init__.py +879 -0
  446. aws_cdk/interfaces/aws_logs/__init__.py +1667 -0
  447. aws_cdk/interfaces/aws_lookoutequipment/__init__.py +168 -0
  448. aws_cdk/interfaces/aws_lookoutmetrics/__init__.py +251 -0
  449. aws_cdk/interfaces/aws_lookoutvision/__init__.py +163 -0
  450. aws_cdk/interfaces/aws_m2/__init__.py +352 -0
  451. aws_cdk/interfaces/aws_macie/__init__.py +512 -0
  452. aws_cdk/interfaces/aws_managedblockchain/__init__.py +381 -0
  453. aws_cdk/interfaces/aws_mediaconnect/__init__.py +1028 -0
  454. aws_cdk/interfaces/aws_mediaconvert/__init__.py +396 -0
  455. aws_cdk/interfaces/aws_medialive/__init__.py +1755 -0
  456. aws_cdk/interfaces/aws_mediapackage/__init__.py +644 -0
  457. aws_cdk/interfaces/aws_mediapackagev2/__init__.py +618 -0
  458. aws_cdk/interfaces/aws_mediastore/__init__.py +146 -0
  459. aws_cdk/interfaces/aws_mediatailor/__init__.py +788 -0
  460. aws_cdk/interfaces/aws_memorydb/__init__.py +685 -0
  461. aws_cdk/interfaces/aws_mpa/__init__.py +249 -0
  462. aws_cdk/interfaces/aws_msk/__init__.py +764 -0
  463. aws_cdk/interfaces/aws_mwaa/__init__.py +166 -0
  464. aws_cdk/interfaces/aws_neptune/__init__.py +663 -0
  465. aws_cdk/interfaces/aws_neptunegraph/__init__.py +265 -0
  466. aws_cdk/interfaces/aws_networkfirewall/__init__.py +669 -0
  467. aws_cdk/interfaces/aws_networkmanager/__init__.py +1832 -0
  468. aws_cdk/interfaces/aws_nimblestudio/__init__.py +388 -0
  469. aws_cdk/interfaces/aws_notifications/__init__.py +868 -0
  470. aws_cdk/interfaces/aws_notificationscontacts/__init__.py +148 -0
  471. aws_cdk/interfaces/aws_oam/__init__.py +249 -0
  472. aws_cdk/interfaces/aws_observabilityadmin/__init__.py +362 -0
  473. aws_cdk/interfaces/aws_odb/__init__.py +562 -0
  474. aws_cdk/interfaces/aws_omics/__init__.py +838 -0
  475. aws_cdk/interfaces/aws_opensearchserverless/__init__.py +859 -0
  476. aws_cdk/interfaces/aws_opensearchservice/__init__.py +283 -0
  477. aws_cdk/interfaces/aws_opsworks/__init__.py +772 -0
  478. aws_cdk/interfaces/aws_opsworkscm/__init__.py +146 -0
  479. aws_cdk/interfaces/aws_organizations/__init__.py +646 -0
  480. aws_cdk/interfaces/aws_osis/__init__.py +146 -0
  481. aws_cdk/interfaces/aws_panorama/__init__.py +420 -0
  482. aws_cdk/interfaces/aws_paymentcryptography/__init__.py +249 -0
  483. aws_cdk/interfaces/aws_pcaconnectorad/__init__.py +608 -0
  484. aws_cdk/interfaces/aws_pcaconnectorscep/__init__.py +249 -0
  485. aws_cdk/interfaces/aws_pcs/__init__.py +352 -0
  486. aws_cdk/interfaces/aws_personalize/__init__.py +455 -0
  487. aws_cdk/interfaces/aws_pinpoint/__init__.py +2125 -0
  488. aws_cdk/interfaces/aws_pinpointemail/__init__.py +467 -0
  489. aws_cdk/interfaces/aws_pipes/__init__.py +158 -0
  490. aws_cdk/interfaces/aws_proton/__init__.py +360 -0
  491. aws_cdk/interfaces/aws_qbusiness/__init__.py +1122 -0
  492. aws_cdk/interfaces/aws_qldb/__init__.py +283 -0
  493. aws_cdk/interfaces/aws_quicksight/__init__.py +1566 -0
  494. aws_cdk/interfaces/aws_ram/__init__.py +249 -0
  495. aws_cdk/interfaces/aws_rbin/__init__.py +146 -0
  496. aws_cdk/interfaces/aws_rds/__init__.py +1780 -0
  497. aws_cdk/interfaces/aws_redshift/__init__.py +1104 -0
  498. aws_cdk/interfaces/aws_redshiftserverless/__init__.py +356 -0
  499. aws_cdk/interfaces/aws_refactorspaces/__init__.py +605 -0
  500. aws_cdk/interfaces/aws_rekognition/__init__.py +406 -0
  501. aws_cdk/interfaces/aws_resiliencehub/__init__.py +251 -0
  502. aws_cdk/interfaces/aws_resourceexplorer2/__init__.py +354 -0
  503. aws_cdk/interfaces/aws_resourcegroups/__init__.py +261 -0
  504. aws_cdk/interfaces/aws_robomaker/__init__.py +673 -0
  505. aws_cdk/interfaces/aws_rolesanywhere/__init__.py +384 -0
  506. aws_cdk/interfaces/aws_route53/__init__.py +804 -0
  507. aws_cdk/interfaces/aws_route53profiles/__init__.py +368 -0
  508. aws_cdk/interfaces/aws_route53recoverycontrol/__init__.py +463 -0
  509. aws_cdk/interfaces/aws_route53recoveryreadiness/__init__.py +535 -0
  510. aws_cdk/interfaces/aws_route53resolver/__init__.py +1356 -0
  511. aws_cdk/interfaces/aws_rtbfabric/__init__.py +352 -0
  512. aws_cdk/interfaces/aws_rum/__init__.py +146 -0
  513. aws_cdk/interfaces/aws_s3/__init__.py +1171 -0
  514. aws_cdk/interfaces/aws_s3express/__init__.py +392 -0
  515. aws_cdk/interfaces/aws_s3objectlambda/__init__.py +271 -0
  516. aws_cdk/interfaces/aws_s3outposts/__init__.py +455 -0
  517. aws_cdk/interfaces/aws_s3tables/__init__.py +575 -0
  518. aws_cdk/interfaces/aws_s3vectors/__init__.py +354 -0
  519. aws_cdk/interfaces/aws_sagemaker/__init__.py +3797 -0
  520. aws_cdk/interfaces/aws_sam/__init__.py +603 -0
  521. aws_cdk/interfaces/aws_scheduler/__init__.py +286 -0
  522. aws_cdk/interfaces/aws_sdb/__init__.py +146 -0
  523. aws_cdk/interfaces/aws_secretsmanager/__init__.py +461 -0
  524. aws_cdk/interfaces/aws_securityhub/__init__.py +1499 -0
  525. aws_cdk/interfaces/aws_securitylake/__init__.py +474 -0
  526. aws_cdk/interfaces/aws_servicecatalog/__init__.py +1829 -0
  527. aws_cdk/interfaces/aws_servicecatalogappregistry/__init__.py +557 -0
  528. aws_cdk/interfaces/aws_servicediscovery/__init__.py +636 -0
  529. aws_cdk/interfaces/aws_ses/__init__.py +2018 -0
  530. aws_cdk/interfaces/aws_shield/__init__.py +455 -0
  531. aws_cdk/interfaces/aws_signer/__init__.py +266 -0
  532. aws_cdk/interfaces/aws_simspaceweaver/__init__.py +146 -0
  533. aws_cdk/interfaces/aws_smsvoice/__init__.py +892 -0
  534. aws_cdk/interfaces/aws_sns/__init__.py +455 -0
  535. aws_cdk/interfaces/aws_sqs/__init__.py +364 -0
  536. aws_cdk/interfaces/aws_ssm/__init__.py +982 -0
  537. aws_cdk/interfaces/aws_ssmcontacts/__init__.py +455 -0
  538. aws_cdk/interfaces/aws_ssmguiconnect/__init__.py +146 -0
  539. aws_cdk/interfaces/aws_ssmincidents/__init__.py +249 -0
  540. aws_cdk/interfaces/aws_ssmquicksetup/__init__.py +253 -0
  541. aws_cdk/interfaces/aws_sso/__init__.py +797 -0
  542. aws_cdk/interfaces/aws_stepfunctions/__init__.py +459 -0
  543. aws_cdk/interfaces/aws_supportapp/__init__.py +372 -0
  544. aws_cdk/interfaces/aws_synthetics/__init__.py +249 -0
  545. aws_cdk/interfaces/aws_systemsmanagersap/__init__.py +148 -0
  546. aws_cdk/interfaces/aws_timestream/__init__.py +526 -0
  547. aws_cdk/interfaces/aws_transfer/__init__.py +967 -0
  548. aws_cdk/interfaces/aws_verifiedpermissions/__init__.py +538 -0
  549. aws_cdk/interfaces/aws_voiceid/__init__.py +146 -0
  550. aws_cdk/interfaces/aws_vpclattice/__init__.py +1418 -0
  551. aws_cdk/interfaces/aws_waf/__init__.py +764 -0
  552. aws_cdk/interfaces/aws_wafregional/__init__.py +1182 -0
  553. aws_cdk/interfaces/aws_wafv2/__init__.py +870 -0
  554. aws_cdk/interfaces/aws_wisdom/__init__.py +1556 -0
  555. aws_cdk/interfaces/aws_workspaces/__init__.py +352 -0
  556. aws_cdk/interfaces/aws_workspacesinstances/__init__.py +390 -0
  557. aws_cdk/interfaces/aws_workspacesthinclient/__init__.py +168 -0
  558. aws_cdk/interfaces/aws_workspacesweb/__init__.py +1085 -0
  559. aws_cdk/interfaces/aws_xray/__init__.py +457 -0
  560. aws_cdk/pipelines/__init__.py +192 -42
  561. aws_cdk/region_info/__init__.py +3 -0
  562. aws_cdk/triggers/__init__.py +60 -18
  563. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/METADATA +338 -16
  564. aws_cdk_lib-2.224.0.dist-info/RECORD +584 -0
  565. aws_cdk_lib-2.200.2.dist-info/RECORD +0 -304
  566. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/LICENSE +0 -0
  567. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/NOTICE +0 -0
  568. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/WHEEL +0 -0
  569. {aws_cdk_lib-2.200.2.dist-info → aws_cdk_lib-2.224.0.dist-info}/top_level.txt +0 -0
@@ -88,6 +88,28 @@ schedule = synthetics.Schedule.cron(
88
88
 
89
89
  If you want the canary to run just once upon deployment, you can use `Schedule.once()`.
90
90
 
91
+ ### Automatic Retries
92
+
93
+ You can configure the canary to automatically retry failed runs by using the `maxRetries` property.
94
+
95
+ This is only supported on the following runtimes or newer: `Runtime.SYNTHETICS_NODEJS_PUPPETEER_10_0`, `Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_2_0`, `Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1`.
96
+
97
+ Max retries can be set between 0 and 2. Canaries which time out after 10 minutes are automatically limited to one retry.
98
+
99
+ For more information, see [Configuring your canary to retry automatically](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_autoretry.html).
100
+
101
+ ```python
102
+ canary = synthetics.Canary(self, "MyCanary",
103
+ schedule=synthetics.Schedule.rate(Duration.minutes(5)),
104
+ test=synthetics.Test.custom(
105
+ handler="canary.handler",
106
+ code=synthetics.Code.from_asset(path.join(__dirname, "canaries"))
107
+ ),
108
+ runtime=synthetics.Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1,
109
+ max_retries=2
110
+ )
111
+ ```
112
+
91
113
  ### Active Tracing
92
114
 
93
115
  You can choose to enable active AWS X-Ray tracing on canaries that use the `syn-nodejs-2.0` or later runtime by setting `activeTracing` to `true`.
@@ -146,6 +168,32 @@ canary = synthetics.Canary(self, "MyCanary",
146
168
  )
147
169
  ```
148
170
 
171
+ ### Browser Type Configuration
172
+
173
+ You can configure which browsers your canary uses for testing by specifying the `browserConfigs` property. This allows you to test your application across different browsers to ensure compatibility.
174
+
175
+ Available browser types:
176
+
177
+ * `BrowserType.CHROME` - Google Chrome browser
178
+ * `BrowserType.FIREFOX` - Mozilla Firefox browser
179
+
180
+ You can specify up to 2 browser configurations. When multiple browsers are configured, the canary will run tests on each browser sequentially.
181
+
182
+ ```python
183
+ canary = synthetics.Canary(self, "MyCanary",
184
+ schedule=synthetics.Schedule.rate(Duration.minutes(5)),
185
+ test=synthetics.Test.custom(
186
+ code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
187
+ handler="index.handler"
188
+ ),
189
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_9_1,
190
+ browser_configs=[synthetics.BrowserType.CHROME, synthetics.BrowserType.FIREFOX
191
+ ]
192
+ )
193
+ ```
194
+
195
+ > **Note:** Firefox support is available for Node.js runtimes (Puppeteer and Playwright) but not for Python Selenium runtimes. When using Firefox, ensure your runtime version supports it.
196
+
149
197
  ### Deleting underlying resources on canary deletion
150
198
 
151
199
  When you delete a lambda, the following underlying resources are isolated in your AWS account:
@@ -220,7 +268,18 @@ synthetics.Canary(self, "Bucket Canary",
220
268
  ```
221
269
 
222
270
  > **Note:** Synthetics have a specified folder structure for canaries.
223
- > For Node with puppeteer scripts supplied via `code.fromAsset()` or `code.fromBucket()`, the canary resource requires the following folder structure:
271
+ > For Node with puppeteer scripts supplied via `code.fromAsset()` or `code.fromBucket()`, the canary resource requires the following folder structure for runtime versions older than `syn-nodejs-puppeteer-11.0`:
272
+ >
273
+ > ```plaintext
274
+ > canary/
275
+ > ├── nodejs/
276
+ > ├── node_modules/
277
+ > ├── <filename>.js
278
+ > ```
279
+ >
280
+ > For puppeteer based runtime versions newer than or equal to `syn-nodejs-puppeteer-11.0`, `nodjs/node_modules` is not necessary but supported.
281
+ >
282
+ > Both
224
283
  >
225
284
  > ```plaintext
226
285
  > canary/
@@ -229,6 +288,15 @@ synthetics.Canary(self, "Bucket Canary",
229
288
  > ├── <filename>.js
230
289
  > ```
231
290
  >
291
+ > And
292
+ >
293
+ > ```plaintext
294
+ > canary/
295
+ > ├── <filename>.js
296
+ > ```
297
+ >
298
+ > are supported.
299
+ >
232
300
  > For Node with playwright scripts supplied via `code.fromAsset()` or `code.fromBucket()`, the canary resource requires the following folder structure:
233
301
  >
234
302
  > ```plaintext
@@ -302,6 +370,29 @@ cloudwatch.Alarm(self, "CanaryAlarm",
302
370
  )
303
371
  ```
304
372
 
373
+ ### Performing safe canary updates
374
+
375
+ You can configure a canary to first perform a dry run before applying any updates. The `dryRunAndUpdate` property can be used to safely update canaries by validating the changes before they're applied.
376
+ This feature is supported for canary runtime versions `syn-nodejs-puppeteer-10.0+`, `syn-nodejs-playwright-2.0+`, and `syn-python-selenium-5.1+`.
377
+
378
+ When `dryRunAndUpdate` is set to `true`, CDK will execute a dry run to validate the changes before applying them to the canary.
379
+ If the dry run succeeds, the canary will be updated with the changes.
380
+ If the dry run fails, the CloudFormation deployment will fail with the dry run's failure reason.
381
+
382
+ ```python
383
+ canary = synthetics.Canary(self, "MyCanary",
384
+ schedule=synthetics.Schedule.rate(Duration.minutes(5)),
385
+ test=synthetics.Test.custom(
386
+ code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
387
+ handler="index.handler"
388
+ ),
389
+ runtime=synthetics.Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1,
390
+ dry_run_and_update=True
391
+ )
392
+ ```
393
+
394
+ For more information, see [Performing safe canary updates](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html).
395
+
305
396
  ### Artifacts
306
397
 
307
398
  You can pass an S3 bucket to store artifacts from canary runs. If you do not,
@@ -349,6 +440,24 @@ canary = synthetics.Canary(self, "MyCanary",
349
440
  artifact_s3_kms_key=key
350
441
  )
351
442
  ```
443
+
444
+ ### Tag replication
445
+
446
+ You can configure a canary to replicate its tags to the underlying Lambda function. This is useful when you want the same tags that are applied to the canary to also be applied to the Lambda function that the canary uses.
447
+
448
+ ```python
449
+ canary = synthetics.Canary(self, "MyCanary",
450
+ schedule=synthetics.Schedule.rate(Duration.minutes(5)),
451
+ test=synthetics.Test.custom(
452
+ code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
453
+ handler="index.handler"
454
+ ),
455
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
456
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
457
+ )
458
+ ```
459
+
460
+ When you specify `ResourceToReplicateTags.LAMBDA_FUNCTION` in the `resourcesToReplicateTags` property, CloudWatch Synthetics will keep the tags of the canary and the Lambda function synchronized. Any future changes you make to the canary's tags will also be applied to the function.
352
461
  '''
353
462
  from pkgutil import extend_path
354
463
  __path__ = extend_path(__path__, __name__)
@@ -419,6 +528,14 @@ from ..aws_s3 import (
419
528
  Location as _Location_0948fa7f,
420
529
  )
421
530
  from ..aws_s3_assets import AssetOptions as _AssetOptions_2aa69621
531
+ from ..interfaces.aws_kms import IKeyRef as _IKeyRef_d4fc6ef3
532
+ from ..interfaces.aws_s3 import IBucketRef as _IBucketRef_3debe44e
533
+ from ..interfaces.aws_synthetics import (
534
+ CanaryReference as _CanaryReference_fbbe85ce,
535
+ GroupReference as _GroupReference_37835a7e,
536
+ ICanaryRef as _ICanaryRef_cf407e49,
537
+ IGroupRef as _IGroupRef_4fc55162,
538
+ )
422
539
 
423
540
 
424
541
  @jsii.data_type(
@@ -533,6 +650,32 @@ class ArtifactsEncryptionMode(enum.Enum):
533
650
  '''Server-side encryption (SSE) with an AWS KMS customer managed key.'''
534
651
 
535
652
 
653
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_synthetics.BrowserType")
654
+ class BrowserType(enum.Enum):
655
+ '''Browser types supported by CloudWatch Synthetics Canary.
656
+
657
+ :exampleMetadata: infused
658
+
659
+ Example::
660
+
661
+ canary = synthetics.Canary(self, "MyCanary",
662
+ schedule=synthetics.Schedule.rate(Duration.minutes(5)),
663
+ test=synthetics.Test.custom(
664
+ code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
665
+ handler="index.handler"
666
+ ),
667
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_9_1,
668
+ browser_configs=[synthetics.BrowserType.CHROME, synthetics.BrowserType.FIREFOX
669
+ ]
670
+ )
671
+ '''
672
+
673
+ CHROME = "CHROME"
674
+ '''Google Chrome browser.'''
675
+ FIREFOX = "FIREFOX"
676
+ '''Mozilla Firefox browser.'''
677
+
678
+
536
679
  @jsii.implements(_IConnectable_10015a05)
537
680
  class Canary(
538
681
  _Resource_45bc6135,
@@ -545,17 +688,14 @@ class Canary(
545
688
 
546
689
  Example::
547
690
 
548
- import aws_cdk as cdk
549
-
550
-
551
691
  canary = synthetics.Canary(self, "MyCanary",
552
692
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
553
693
  test=synthetics.Test.custom(
554
694
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
555
695
  handler="index.handler"
556
696
  ),
557
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
558
- memory=cdk.Size.mebibytes(1024)
697
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
698
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
559
699
  )
560
700
  '''
561
701
 
@@ -571,12 +711,16 @@ class Canary(
571
711
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
572
712
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
573
713
  artifacts_bucket_location: typing.Optional[typing.Union[ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
714
+ browser_configs: typing.Optional[typing.Sequence[BrowserType]] = None,
574
715
  canary_name: typing.Optional[builtins.str] = None,
575
716
  cleanup: typing.Optional["Cleanup"] = None,
717
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
576
718
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
577
719
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
720
+ max_retries: typing.Optional[jsii.Number] = None,
578
721
  memory: typing.Optional[_Size_7b441c34] = None,
579
722
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
723
+ resources_to_replicate_tags: typing.Optional[typing.Sequence["ResourceToReplicateTags"]] = None,
580
724
  role: typing.Optional[_IRole_235f5d8e] = None,
581
725
  schedule: typing.Optional["Schedule"] = None,
582
726
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -597,12 +741,16 @@ class Canary(
597
741
  :param artifact_s3_kms_key: The KMS key used to encrypt canary artifacts. Default: - no kms key if ``artifactS3EncryptionMode`` is set to ``S3_MANAGED``. A key will be created if one is not provided and ``artifactS3EncryptionMode`` is set to ``KMS``.
598
742
  :param artifacts_bucket_lifecycle_rules: Lifecycle rules for the generated canary artifact bucket. Has no effect if a bucket is passed to ``artifactsBucketLocation``. If you pass a bucket to ``artifactsBucketLocation``, you can add lifecycle rules to the bucket itself. Default: - no rules applied to the generated bucket.
599
743
  :param artifacts_bucket_location: The s3 location that stores the data of the canary runs. Default: - A new s3 bucket will be created without a prefix.
744
+ :param browser_configs: Browser configurations for the canary. Specifies which browser(s) to use for running the canary tests. You can specify up to 2 browser configurations. Firefox is supported with Node.js Puppeteer and Playwright runtimes, but not with Python Selenium runtimes. Default: undefined - AWS CloudWatch default is using only Chrome browser
600
745
  :param canary_name: The name of the canary. Be sure to give it a descriptive name that distinguishes it from other canaries in your account. Do not include secrets or proprietary information in your canary name. The canary name makes up part of the canary ARN, which is included in outbound calls over the internet. Default: - A unique name will be generated from the construct ID
601
746
  :param cleanup: (deprecated) Specify the underlying resources to be cleaned up when the canary is deleted. Using ``Cleanup.LAMBDA`` will create a Custom Resource to achieve this. Default: Cleanup.NOTHING
747
+ :param dry_run_and_update: Specifies whether to perform a dry run before updating the canary. If set to true, CDK will execute a dry run to validate the changes before applying them to the canary. If the dry run succeeds, the canary will be updated with the changes. If the dry run fails, the CloudFormation deployment will fail with the dry run's failure reason. If set to false or omitted, the canary will be updated directly without first performing a dry run. Default: undefined - AWS CloudWatch default is false
602
748
  :param environment_variables: Key-value pairs that the Synthetics caches and makes available for your canary scripts. Use environment variables to apply configuration changes, such as test and production environment configurations, without changing your Canary script source code. Default: - No environment variables.
603
749
  :param failure_retention_period: How many days should failed runs be retained. Default: Duration.days(31)
750
+ :param max_retries: The amount of times the canary will automatically retry a failed run. This is only supported on the following runtimes or newer: ``Runtime.SYNTHETICS_NODEJS_PUPPETEER_10_0``, ``Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_2_0``, ``Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1``. Max retries can be set between 0 and 2. Canaries which time out after 10 minutes are automatically limited to one retry. Default: 0
604
751
  :param memory: The maximum amount of memory that the canary can use while running. This value must be a multiple of 64 Mib. The range is 960 MiB to 3008 MiB. Default: Size.mebibytes(1024)
605
752
  :param provisioned_resource_cleanup: Whether to also delete the Lambda functions and layers used by this canary when the canary is deleted. Default: undefined - the default behavior is to not delete the Lambda functions and layers
753
+ :param resources_to_replicate_tags: Specifies which resources should have their tags replicated to this canary. To have the tags that you apply to this canary also be applied to the Lambda function that the canary uses, specify this property with the value ResourceToReplicateTags.LAMBDA_FUNCTION. If you do this, CloudWatch Synthetics will keep the tags of the canary and the Lambda function synchronized. Any future changes you make to the canary's tags will also be applied to the function. Default: - No resources will have their tags replicated to this canary
606
754
  :param role: Canary execution role. This is the role that will be assumed by the canary upon execution. It controls the permissions that the canary will have. The role must be assumable by the AWS Lambda service principal. If not supplied, a role will be created with all the required permissions. If you provide a Role, you must add the required permissions. Default: - A unique role will be generated for this canary. You can add permissions to roles by calling 'addToRolePolicy'.
607
755
  :param schedule: Specify the schedule for how often the canary runs. For example, if you set ``schedule`` to ``rate(10 minutes)``, then the canary will run every 10 minutes. You can set the schedule with ``Schedule.rate(Duration)`` (recommended) or you can specify an expression using ``Schedule.expression()``. Default: 'rate(5 minutes)'
608
756
  :param security_groups: The list of security groups to associate with the canary's network interfaces. You must provide ``vpc`` when using this prop. Default: - If the canary is placed within a VPC and a security group is not specified a dedicated security group will be created for this canary.
@@ -625,12 +773,16 @@ class Canary(
625
773
  artifact_s3_kms_key=artifact_s3_kms_key,
626
774
  artifacts_bucket_lifecycle_rules=artifacts_bucket_lifecycle_rules,
627
775
  artifacts_bucket_location=artifacts_bucket_location,
776
+ browser_configs=browser_configs,
628
777
  canary_name=canary_name,
629
778
  cleanup=cleanup,
779
+ dry_run_and_update=dry_run_and_update,
630
780
  environment_variables=environment_variables,
631
781
  failure_retention_period=failure_retention_period,
782
+ max_retries=max_retries,
632
783
  memory=memory,
633
784
  provisioned_resource_cleanup=provisioned_resource_cleanup,
785
+ resources_to_replicate_tags=resources_to_replicate_tags,
634
786
  role=role,
635
787
  schedule=schedule,
636
788
  security_groups=security_groups,
@@ -651,6 +803,7 @@ class Canary(
651
803
  account: typing.Optional[builtins.str] = None,
652
804
  color: typing.Optional[builtins.str] = None,
653
805
  dimensions_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
806
+ id: typing.Optional[builtins.str] = None,
654
807
  label: typing.Optional[builtins.str] = None,
655
808
  period: typing.Optional[_Duration_4839e8c3] = None,
656
809
  region: typing.Optional[builtins.str] = None,
@@ -658,12 +811,14 @@ class Canary(
658
811
  stack_region: typing.Optional[builtins.str] = None,
659
812
  statistic: typing.Optional[builtins.str] = None,
660
813
  unit: typing.Optional[_Unit_61bc6f70] = None,
814
+ visible: typing.Optional[builtins.bool] = None,
661
815
  ) -> _Metric_e396a4dc:
662
816
  '''Measure the Duration of a single canary run, in seconds.
663
817
 
664
818
  :param account: Account which this metric comes from. Default: - Deployment account.
665
819
  :param color: The hex color code, prefixed with '#' (e.g. '#00ff00'), to use when this metric is rendered on a graph. The ``Color`` class has a set of standard colors that can be used here. Default: - Automatic color
666
820
  :param dimensions_map: Dimensions of the metric. Default: - No dimensions.
821
+ :param id: Unique identifier for this metric when used in dashboard widgets. The id can be used as a variable to represent this metric in math expressions. Valid characters are letters, numbers, and underscore. The first character must be a lowercase letter. Default: - No ID
667
822
  :param label: Label for this metric when added to a Graph in a Dashboard. You can use `dynamic labels <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html>`_ to show summary information about the entire displayed time series in the legend. For example, if you use:: [max: ${MAX}] MyMetric As the metric label, the maximum value in the visible range will be shown next to the time series name in the graph's legend. Default: - No label
668
823
  :param period: The period over which the specified statistic is applied. Default: Duration.minutes(5)
669
824
  :param region: Region which this metric comes from. Default: - Deployment region.
@@ -671,6 +826,7 @@ class Canary(
671
826
  :param stack_region: Region of the stack this metric is attached to. Default: - Deployment region.
672
827
  :param statistic: What function to use for aggregating. Use the ``aws_cloudwatch.Stats`` helper class to construct valid input strings. Can be one of the following: - "Minimum" | "min" - "Maximum" | "max" - "Average" | "avg" - "Sum" | "sum" - "SampleCount | "n" - "pNN.NN" - "tmNN.NN" | "tm(NN.NN%:NN.NN%)" - "iqm" - "wmNN.NN" | "wm(NN.NN%:NN.NN%)" - "tcNN.NN" | "tc(NN.NN%:NN.NN%)" - "tsNN.NN" | "ts(NN.NN%:NN.NN%)" Default: Average
673
828
  :param unit: Unit used to filter the metric stream. Only refer to datums emitted to the metric stream with the given unit and ignore all others. Only useful when datums are being emitted to the same metric stream under different units. The default is to use all matric datums in the stream, regardless of unit, which is recommended in nearly all cases. CloudWatch does not honor this property for graphs. Default: - All metric datums in the given metric stream
829
+ :param visible: Whether this metric should be visible in dashboard graphs. Setting this to false is useful when you want to hide raw metrics that are used in math expressions, and show only the expression results. Default: true
674
830
 
675
831
  :default: avg over 5 minutes
676
832
  '''
@@ -678,6 +834,7 @@ class Canary(
678
834
  account=account,
679
835
  color=color,
680
836
  dimensions_map=dimensions_map,
837
+ id=id,
681
838
  label=label,
682
839
  period=period,
683
840
  region=region,
@@ -685,6 +842,7 @@ class Canary(
685
842
  stack_region=stack_region,
686
843
  statistic=statistic,
687
844
  unit=unit,
845
+ visible=visible,
688
846
  )
689
847
 
690
848
  return typing.cast(_Metric_e396a4dc, jsii.invoke(self, "metricDuration", [options]))
@@ -696,6 +854,7 @@ class Canary(
696
854
  account: typing.Optional[builtins.str] = None,
697
855
  color: typing.Optional[builtins.str] = None,
698
856
  dimensions_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
857
+ id: typing.Optional[builtins.str] = None,
699
858
  label: typing.Optional[builtins.str] = None,
700
859
  period: typing.Optional[_Duration_4839e8c3] = None,
701
860
  region: typing.Optional[builtins.str] = None,
@@ -703,6 +862,7 @@ class Canary(
703
862
  stack_region: typing.Optional[builtins.str] = None,
704
863
  statistic: typing.Optional[builtins.str] = None,
705
864
  unit: typing.Optional[_Unit_61bc6f70] = None,
865
+ visible: typing.Optional[builtins.bool] = None,
706
866
  ) -> _Metric_e396a4dc:
707
867
  '''Measure the number of failed canary runs over a given time period.
708
868
 
@@ -711,6 +871,7 @@ class Canary(
711
871
  :param account: Account which this metric comes from. Default: - Deployment account.
712
872
  :param color: The hex color code, prefixed with '#' (e.g. '#00ff00'), to use when this metric is rendered on a graph. The ``Color`` class has a set of standard colors that can be used here. Default: - Automatic color
713
873
  :param dimensions_map: Dimensions of the metric. Default: - No dimensions.
874
+ :param id: Unique identifier for this metric when used in dashboard widgets. The id can be used as a variable to represent this metric in math expressions. Valid characters are letters, numbers, and underscore. The first character must be a lowercase letter. Default: - No ID
714
875
  :param label: Label for this metric when added to a Graph in a Dashboard. You can use `dynamic labels <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html>`_ to show summary information about the entire displayed time series in the legend. For example, if you use:: [max: ${MAX}] MyMetric As the metric label, the maximum value in the visible range will be shown next to the time series name in the graph's legend. Default: - No label
715
876
  :param period: The period over which the specified statistic is applied. Default: Duration.minutes(5)
716
877
  :param region: Region which this metric comes from. Default: - Deployment region.
@@ -718,11 +879,13 @@ class Canary(
718
879
  :param stack_region: Region of the stack this metric is attached to. Default: - Deployment region.
719
880
  :param statistic: What function to use for aggregating. Use the ``aws_cloudwatch.Stats`` helper class to construct valid input strings. Can be one of the following: - "Minimum" | "min" - "Maximum" | "max" - "Average" | "avg" - "Sum" | "sum" - "SampleCount | "n" - "pNN.NN" - "tmNN.NN" | "tm(NN.NN%:NN.NN%)" - "iqm" - "wmNN.NN" | "wm(NN.NN%:NN.NN%)" - "tcNN.NN" | "tc(NN.NN%:NN.NN%)" - "tsNN.NN" | "ts(NN.NN%:NN.NN%)" Default: Average
720
881
  :param unit: Unit used to filter the metric stream. Only refer to datums emitted to the metric stream with the given unit and ignore all others. Only useful when datums are being emitted to the same metric stream under different units. The default is to use all matric datums in the stream, regardless of unit, which is recommended in nearly all cases. CloudWatch does not honor this property for graphs. Default: - All metric datums in the given metric stream
882
+ :param visible: Whether this metric should be visible in dashboard graphs. Setting this to false is useful when you want to hide raw metrics that are used in math expressions, and show only the expression results. Default: true
721
883
  '''
722
884
  options = _MetricOptions_1788b62f(
723
885
  account=account,
724
886
  color=color,
725
887
  dimensions_map=dimensions_map,
888
+ id=id,
726
889
  label=label,
727
890
  period=period,
728
891
  region=region,
@@ -730,6 +893,7 @@ class Canary(
730
893
  stack_region=stack_region,
731
894
  statistic=statistic,
732
895
  unit=unit,
896
+ visible=visible,
733
897
  )
734
898
 
735
899
  return typing.cast(_Metric_e396a4dc, jsii.invoke(self, "metricFailed", [options]))
@@ -741,6 +905,7 @@ class Canary(
741
905
  account: typing.Optional[builtins.str] = None,
742
906
  color: typing.Optional[builtins.str] = None,
743
907
  dimensions_map: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
908
+ id: typing.Optional[builtins.str] = None,
744
909
  label: typing.Optional[builtins.str] = None,
745
910
  period: typing.Optional[_Duration_4839e8c3] = None,
746
911
  region: typing.Optional[builtins.str] = None,
@@ -748,12 +913,14 @@ class Canary(
748
913
  stack_region: typing.Optional[builtins.str] = None,
749
914
  statistic: typing.Optional[builtins.str] = None,
750
915
  unit: typing.Optional[_Unit_61bc6f70] = None,
916
+ visible: typing.Optional[builtins.bool] = None,
751
917
  ) -> _Metric_e396a4dc:
752
918
  '''Measure the percentage of successful canary runs.
753
919
 
754
920
  :param account: Account which this metric comes from. Default: - Deployment account.
755
921
  :param color: The hex color code, prefixed with '#' (e.g. '#00ff00'), to use when this metric is rendered on a graph. The ``Color`` class has a set of standard colors that can be used here. Default: - Automatic color
756
922
  :param dimensions_map: Dimensions of the metric. Default: - No dimensions.
923
+ :param id: Unique identifier for this metric when used in dashboard widgets. The id can be used as a variable to represent this metric in math expressions. Valid characters are letters, numbers, and underscore. The first character must be a lowercase letter. Default: - No ID
757
924
  :param label: Label for this metric when added to a Graph in a Dashboard. You can use `dynamic labels <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html>`_ to show summary information about the entire displayed time series in the legend. For example, if you use:: [max: ${MAX}] MyMetric As the metric label, the maximum value in the visible range will be shown next to the time series name in the graph's legend. Default: - No label
758
925
  :param period: The period over which the specified statistic is applied. Default: Duration.minutes(5)
759
926
  :param region: Region which this metric comes from. Default: - Deployment region.
@@ -761,6 +928,7 @@ class Canary(
761
928
  :param stack_region: Region of the stack this metric is attached to. Default: - Deployment region.
762
929
  :param statistic: What function to use for aggregating. Use the ``aws_cloudwatch.Stats`` helper class to construct valid input strings. Can be one of the following: - "Minimum" | "min" - "Maximum" | "max" - "Average" | "avg" - "Sum" | "sum" - "SampleCount | "n" - "pNN.NN" - "tmNN.NN" | "tm(NN.NN%:NN.NN%)" - "iqm" - "wmNN.NN" | "wm(NN.NN%:NN.NN%)" - "tcNN.NN" | "tc(NN.NN%:NN.NN%)" - "tsNN.NN" | "ts(NN.NN%:NN.NN%)" Default: Average
763
930
  :param unit: Unit used to filter the metric stream. Only refer to datums emitted to the metric stream with the given unit and ignore all others. Only useful when datums are being emitted to the same metric stream under different units. The default is to use all matric datums in the stream, regardless of unit, which is recommended in nearly all cases. CloudWatch does not honor this property for graphs. Default: - All metric datums in the given metric stream
931
+ :param visible: Whether this metric should be visible in dashboard graphs. Setting this to false is useful when you want to hide raw metrics that are used in math expressions, and show only the expression results. Default: true
764
932
 
765
933
  :default: avg over 5 minutes
766
934
  '''
@@ -768,6 +936,7 @@ class Canary(
768
936
  account=account,
769
937
  color=color,
770
938
  dimensions_map=dimensions_map,
939
+ id=id,
771
940
  label=label,
772
941
  period=period,
773
942
  region=region,
@@ -775,6 +944,7 @@ class Canary(
775
944
  stack_region=stack_region,
776
945
  statistic=statistic,
777
946
  unit=unit,
947
+ visible=visible,
778
948
  )
779
949
 
780
950
  return typing.cast(_Metric_e396a4dc, jsii.invoke(self, "metricSuccessPercent", [options]))
@@ -847,12 +1017,16 @@ class Canary(
847
1017
  "artifact_s3_kms_key": "artifactS3KmsKey",
848
1018
  "artifacts_bucket_lifecycle_rules": "artifactsBucketLifecycleRules",
849
1019
  "artifacts_bucket_location": "artifactsBucketLocation",
1020
+ "browser_configs": "browserConfigs",
850
1021
  "canary_name": "canaryName",
851
1022
  "cleanup": "cleanup",
1023
+ "dry_run_and_update": "dryRunAndUpdate",
852
1024
  "environment_variables": "environmentVariables",
853
1025
  "failure_retention_period": "failureRetentionPeriod",
1026
+ "max_retries": "maxRetries",
854
1027
  "memory": "memory",
855
1028
  "provisioned_resource_cleanup": "provisionedResourceCleanup",
1029
+ "resources_to_replicate_tags": "resourcesToReplicateTags",
856
1030
  "role": "role",
857
1031
  "schedule": "schedule",
858
1032
  "security_groups": "securityGroups",
@@ -875,12 +1049,16 @@ class CanaryProps:
875
1049
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
876
1050
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
877
1051
  artifacts_bucket_location: typing.Optional[typing.Union[ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
1052
+ browser_configs: typing.Optional[typing.Sequence[BrowserType]] = None,
878
1053
  canary_name: typing.Optional[builtins.str] = None,
879
1054
  cleanup: typing.Optional["Cleanup"] = None,
1055
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
880
1056
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
881
1057
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
1058
+ max_retries: typing.Optional[jsii.Number] = None,
882
1059
  memory: typing.Optional[_Size_7b441c34] = None,
883
1060
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
1061
+ resources_to_replicate_tags: typing.Optional[typing.Sequence["ResourceToReplicateTags"]] = None,
884
1062
  role: typing.Optional[_IRole_235f5d8e] = None,
885
1063
  schedule: typing.Optional["Schedule"] = None,
886
1064
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -900,12 +1078,16 @@ class CanaryProps:
900
1078
  :param artifact_s3_kms_key: The KMS key used to encrypt canary artifacts. Default: - no kms key if ``artifactS3EncryptionMode`` is set to ``S3_MANAGED``. A key will be created if one is not provided and ``artifactS3EncryptionMode`` is set to ``KMS``.
901
1079
  :param artifacts_bucket_lifecycle_rules: Lifecycle rules for the generated canary artifact bucket. Has no effect if a bucket is passed to ``artifactsBucketLocation``. If you pass a bucket to ``artifactsBucketLocation``, you can add lifecycle rules to the bucket itself. Default: - no rules applied to the generated bucket.
902
1080
  :param artifacts_bucket_location: The s3 location that stores the data of the canary runs. Default: - A new s3 bucket will be created without a prefix.
1081
+ :param browser_configs: Browser configurations for the canary. Specifies which browser(s) to use for running the canary tests. You can specify up to 2 browser configurations. Firefox is supported with Node.js Puppeteer and Playwright runtimes, but not with Python Selenium runtimes. Default: undefined - AWS CloudWatch default is using only Chrome browser
903
1082
  :param canary_name: The name of the canary. Be sure to give it a descriptive name that distinguishes it from other canaries in your account. Do not include secrets or proprietary information in your canary name. The canary name makes up part of the canary ARN, which is included in outbound calls over the internet. Default: - A unique name will be generated from the construct ID
904
1083
  :param cleanup: (deprecated) Specify the underlying resources to be cleaned up when the canary is deleted. Using ``Cleanup.LAMBDA`` will create a Custom Resource to achieve this. Default: Cleanup.NOTHING
1084
+ :param dry_run_and_update: Specifies whether to perform a dry run before updating the canary. If set to true, CDK will execute a dry run to validate the changes before applying them to the canary. If the dry run succeeds, the canary will be updated with the changes. If the dry run fails, the CloudFormation deployment will fail with the dry run's failure reason. If set to false or omitted, the canary will be updated directly without first performing a dry run. Default: undefined - AWS CloudWatch default is false
905
1085
  :param environment_variables: Key-value pairs that the Synthetics caches and makes available for your canary scripts. Use environment variables to apply configuration changes, such as test and production environment configurations, without changing your Canary script source code. Default: - No environment variables.
906
1086
  :param failure_retention_period: How many days should failed runs be retained. Default: Duration.days(31)
1087
+ :param max_retries: The amount of times the canary will automatically retry a failed run. This is only supported on the following runtimes or newer: ``Runtime.SYNTHETICS_NODEJS_PUPPETEER_10_0``, ``Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_2_0``, ``Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1``. Max retries can be set between 0 and 2. Canaries which time out after 10 minutes are automatically limited to one retry. Default: 0
907
1088
  :param memory: The maximum amount of memory that the canary can use while running. This value must be a multiple of 64 Mib. The range is 960 MiB to 3008 MiB. Default: Size.mebibytes(1024)
908
1089
  :param provisioned_resource_cleanup: Whether to also delete the Lambda functions and layers used by this canary when the canary is deleted. Default: undefined - the default behavior is to not delete the Lambda functions and layers
1090
+ :param resources_to_replicate_tags: Specifies which resources should have their tags replicated to this canary. To have the tags that you apply to this canary also be applied to the Lambda function that the canary uses, specify this property with the value ResourceToReplicateTags.LAMBDA_FUNCTION. If you do this, CloudWatch Synthetics will keep the tags of the canary and the Lambda function synchronized. Any future changes you make to the canary's tags will also be applied to the function. Default: - No resources will have their tags replicated to this canary
909
1091
  :param role: Canary execution role. This is the role that will be assumed by the canary upon execution. It controls the permissions that the canary will have. The role must be assumable by the AWS Lambda service principal. If not supplied, a role will be created with all the required permissions. If you provide a Role, you must add the required permissions. Default: - A unique role will be generated for this canary. You can add permissions to roles by calling 'addToRolePolicy'.
910
1092
  :param schedule: Specify the schedule for how often the canary runs. For example, if you set ``schedule`` to ``rate(10 minutes)``, then the canary will run every 10 minutes. You can set the schedule with ``Schedule.rate(Duration)`` (recommended) or you can specify an expression using ``Schedule.expression()``. Default: 'rate(5 minutes)'
911
1093
  :param security_groups: The list of security groups to associate with the canary's network interfaces. You must provide ``vpc`` when using this prop. Default: - If the canary is placed within a VPC and a security group is not specified a dedicated security group will be created for this canary.
@@ -920,17 +1102,14 @@ class CanaryProps:
920
1102
 
921
1103
  Example::
922
1104
 
923
- import aws_cdk as cdk
924
-
925
-
926
1105
  canary = synthetics.Canary(self, "MyCanary",
927
1106
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
928
1107
  test=synthetics.Test.custom(
929
1108
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
930
1109
  handler="index.handler"
931
1110
  ),
932
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
933
- memory=cdk.Size.mebibytes(1024)
1111
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
1112
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
934
1113
  )
935
1114
  '''
936
1115
  if isinstance(artifacts_bucket_location, dict):
@@ -946,12 +1125,16 @@ class CanaryProps:
946
1125
  check_type(argname="argument artifact_s3_kms_key", value=artifact_s3_kms_key, expected_type=type_hints["artifact_s3_kms_key"])
947
1126
  check_type(argname="argument artifacts_bucket_lifecycle_rules", value=artifacts_bucket_lifecycle_rules, expected_type=type_hints["artifacts_bucket_lifecycle_rules"])
948
1127
  check_type(argname="argument artifacts_bucket_location", value=artifacts_bucket_location, expected_type=type_hints["artifacts_bucket_location"])
1128
+ check_type(argname="argument browser_configs", value=browser_configs, expected_type=type_hints["browser_configs"])
949
1129
  check_type(argname="argument canary_name", value=canary_name, expected_type=type_hints["canary_name"])
950
1130
  check_type(argname="argument cleanup", value=cleanup, expected_type=type_hints["cleanup"])
1131
+ check_type(argname="argument dry_run_and_update", value=dry_run_and_update, expected_type=type_hints["dry_run_and_update"])
951
1132
  check_type(argname="argument environment_variables", value=environment_variables, expected_type=type_hints["environment_variables"])
952
1133
  check_type(argname="argument failure_retention_period", value=failure_retention_period, expected_type=type_hints["failure_retention_period"])
1134
+ check_type(argname="argument max_retries", value=max_retries, expected_type=type_hints["max_retries"])
953
1135
  check_type(argname="argument memory", value=memory, expected_type=type_hints["memory"])
954
1136
  check_type(argname="argument provisioned_resource_cleanup", value=provisioned_resource_cleanup, expected_type=type_hints["provisioned_resource_cleanup"])
1137
+ check_type(argname="argument resources_to_replicate_tags", value=resources_to_replicate_tags, expected_type=type_hints["resources_to_replicate_tags"])
955
1138
  check_type(argname="argument role", value=role, expected_type=type_hints["role"])
956
1139
  check_type(argname="argument schedule", value=schedule, expected_type=type_hints["schedule"])
957
1140
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
@@ -975,18 +1158,26 @@ class CanaryProps:
975
1158
  self._values["artifacts_bucket_lifecycle_rules"] = artifacts_bucket_lifecycle_rules
976
1159
  if artifacts_bucket_location is not None:
977
1160
  self._values["artifacts_bucket_location"] = artifacts_bucket_location
1161
+ if browser_configs is not None:
1162
+ self._values["browser_configs"] = browser_configs
978
1163
  if canary_name is not None:
979
1164
  self._values["canary_name"] = canary_name
980
1165
  if cleanup is not None:
981
1166
  self._values["cleanup"] = cleanup
1167
+ if dry_run_and_update is not None:
1168
+ self._values["dry_run_and_update"] = dry_run_and_update
982
1169
  if environment_variables is not None:
983
1170
  self._values["environment_variables"] = environment_variables
984
1171
  if failure_retention_period is not None:
985
1172
  self._values["failure_retention_period"] = failure_retention_period
1173
+ if max_retries is not None:
1174
+ self._values["max_retries"] = max_retries
986
1175
  if memory is not None:
987
1176
  self._values["memory"] = memory
988
1177
  if provisioned_resource_cleanup is not None:
989
1178
  self._values["provisioned_resource_cleanup"] = provisioned_resource_cleanup
1179
+ if resources_to_replicate_tags is not None:
1180
+ self._values["resources_to_replicate_tags"] = resources_to_replicate_tags
990
1181
  if role is not None:
991
1182
  self._values["role"] = role
992
1183
  if schedule is not None:
@@ -1090,6 +1281,23 @@ class CanaryProps:
1090
1281
  result = self._values.get("artifacts_bucket_location")
1091
1282
  return typing.cast(typing.Optional[ArtifactsBucketLocation], result)
1092
1283
 
1284
+ @builtins.property
1285
+ def browser_configs(self) -> typing.Optional[typing.List[BrowserType]]:
1286
+ '''Browser configurations for the canary.
1287
+
1288
+ Specifies which browser(s) to use for running the canary tests.
1289
+ You can specify up to 2 browser configurations.
1290
+
1291
+ Firefox is supported with Node.js Puppeteer and Playwright runtimes,
1292
+ but not with Python Selenium runtimes.
1293
+
1294
+ :default: undefined - AWS CloudWatch default is using only Chrome browser
1295
+
1296
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html
1297
+ '''
1298
+ result = self._values.get("browser_configs")
1299
+ return typing.cast(typing.Optional[typing.List[BrowserType]], result)
1300
+
1093
1301
  @builtins.property
1094
1302
  def canary_name(self) -> typing.Optional[builtins.str]:
1095
1303
  '''The name of the canary.
@@ -1122,6 +1330,23 @@ class CanaryProps:
1122
1330
  result = self._values.get("cleanup")
1123
1331
  return typing.cast(typing.Optional["Cleanup"], result)
1124
1332
 
1333
+ @builtins.property
1334
+ def dry_run_and_update(self) -> typing.Optional[builtins.bool]:
1335
+ '''Specifies whether to perform a dry run before updating the canary.
1336
+
1337
+ If set to true, CDK will execute a dry run to validate the changes before applying them to the canary.
1338
+ If the dry run succeeds, the canary will be updated with the changes.
1339
+ If the dry run fails, the CloudFormation deployment will fail with the dry run's failure reason.
1340
+
1341
+ If set to false or omitted, the canary will be updated directly without first performing a dry run.
1342
+
1343
+ :default: undefined - AWS CloudWatch default is false
1344
+
1345
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html
1346
+ '''
1347
+ result = self._values.get("dry_run_and_update")
1348
+ return typing.cast(typing.Optional[builtins.bool], result)
1349
+
1125
1350
  @builtins.property
1126
1351
  def environment_variables(
1127
1352
  self,
@@ -1146,6 +1371,20 @@ class CanaryProps:
1146
1371
  result = self._values.get("failure_retention_period")
1147
1372
  return typing.cast(typing.Optional[_Duration_4839e8c3], result)
1148
1373
 
1374
+ @builtins.property
1375
+ def max_retries(self) -> typing.Optional[jsii.Number]:
1376
+ '''The amount of times the canary will automatically retry a failed run.
1377
+
1378
+ This is only supported on the following runtimes or newer: ``Runtime.SYNTHETICS_NODEJS_PUPPETEER_10_0``, ``Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_2_0``, ``Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1``.
1379
+ Max retries can be set between 0 and 2. Canaries which time out after 10 minutes are automatically limited to one retry.
1380
+
1381
+ :default: 0
1382
+
1383
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_autoretry.html
1384
+ '''
1385
+ result = self._values.get("max_retries")
1386
+ return typing.cast(typing.Optional[jsii.Number], result)
1387
+
1149
1388
  @builtins.property
1150
1389
  def memory(self) -> typing.Optional[_Size_7b441c34]:
1151
1390
  '''The maximum amount of memory that the canary can use while running.
@@ -1167,6 +1406,23 @@ class CanaryProps:
1167
1406
  result = self._values.get("provisioned_resource_cleanup")
1168
1407
  return typing.cast(typing.Optional[builtins.bool], result)
1169
1408
 
1409
+ @builtins.property
1410
+ def resources_to_replicate_tags(
1411
+ self,
1412
+ ) -> typing.Optional[typing.List["ResourceToReplicateTags"]]:
1413
+ '''Specifies which resources should have their tags replicated to this canary.
1414
+
1415
+ To have the tags that you apply to this canary also be applied to the Lambda
1416
+ function that the canary uses, specify this property with the value
1417
+ ResourceToReplicateTags.LAMBDA_FUNCTION. If you do this, CloudWatch Synthetics will keep the tags of the canary and the
1418
+ Lambda function synchronized. Any future changes you make to the canary's tags
1419
+ will also be applied to the function.
1420
+
1421
+ :default: - No resources will have their tags replicated to this canary
1422
+ '''
1423
+ result = self._values.get("resources_to_replicate_tags")
1424
+ return typing.cast(typing.Optional[typing.List["ResourceToReplicateTags"]], result)
1425
+
1170
1426
  @builtins.property
1171
1427
  def role(self) -> typing.Optional[_IRole_235f5d8e]:
1172
1428
  '''Canary execution role.
@@ -1292,7 +1548,7 @@ class CanaryProps:
1292
1548
  )
1293
1549
 
1294
1550
 
1295
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
1551
+ @jsii.implements(_IInspectable_c2943556, _ICanaryRef_cf407e49, _ITaggable_36806126)
1296
1552
  class CfnCanary(
1297
1553
  _CfnResource_9df397a6,
1298
1554
  metaclass=jsii.JSIIMeta,
@@ -1321,9 +1577,14 @@ class CfnCanary(
1321
1577
  cfn_canary = synthetics.CfnCanary(self, "MyCfnCanary",
1322
1578
  artifact_s3_location="artifactS3Location",
1323
1579
  code=synthetics.CfnCanary.CodeProperty(
1324
- handler="handler",
1580
+ blueprint_types=["blueprintTypes"],
1581
+ dependencies=[synthetics.CfnCanary.DependencyProperty(
1582
+ reference="reference",
1325
1583
 
1326
- # the properties below are optional
1584
+ # the properties below are optional
1585
+ type="type"
1586
+ )],
1587
+ handler="handler",
1327
1588
  s3_bucket="s3Bucket",
1328
1589
  s3_key="s3Key",
1329
1590
  s3_object_version="s3ObjectVersion",
@@ -1350,6 +1611,9 @@ class CfnCanary(
1350
1611
  kms_key_arn="kmsKeyArn"
1351
1612
  )
1352
1613
  ),
1614
+ browser_configs=[synthetics.CfnCanary.BrowserConfigProperty(
1615
+ browser_type="browserType"
1616
+ )],
1353
1617
  delete_lambda_resources_on_canary_deletion=False,
1354
1618
  dry_run_and_update=False,
1355
1619
  failure_retention_period=123,
@@ -1360,6 +1624,7 @@ class CfnCanary(
1360
1624
  environment_variables={
1361
1625
  "environment_variables_key": "environmentVariables"
1362
1626
  },
1627
+ ephemeral_storage=123,
1363
1628
  memory_in_mb=123,
1364
1629
  timeout_in_seconds=123
1365
1630
  ),
@@ -1378,8 +1643,21 @@ class CfnCanary(
1378
1643
 
1379
1644
  # the properties below are optional
1380
1645
  ignore_coordinates=["ignoreCoordinates"]
1381
- )]
1646
+ )],
1647
+ browser_type="browserType"
1382
1648
  ),
1649
+ visual_references=[synthetics.CfnCanary.VisualReferenceProperty(
1650
+ base_canary_run_id="baseCanaryRunId",
1651
+
1652
+ # the properties below are optional
1653
+ base_screenshots=[synthetics.CfnCanary.BaseScreenshotProperty(
1654
+ screenshot_name="screenshotName",
1655
+
1656
+ # the properties below are optional
1657
+ ignore_coordinates=["ignoreCoordinates"]
1658
+ )],
1659
+ browser_type="browserType"
1660
+ )],
1383
1661
  vpc_config=synthetics.CfnCanary.VPCConfigProperty(
1384
1662
  security_group_ids=["securityGroupIds"],
1385
1663
  subnet_ids=["subnetIds"],
@@ -1403,6 +1681,7 @@ class CfnCanary(
1403
1681
  runtime_version: builtins.str,
1404
1682
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.ScheduleProperty", typing.Dict[builtins.str, typing.Any]]],
1405
1683
  artifact_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.ArtifactConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
1684
+ browser_configs: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.BrowserConfigProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
1406
1685
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
1407
1686
  dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
1408
1687
  failure_retention_period: typing.Optional[jsii.Number] = None,
@@ -1413,9 +1692,11 @@ class CfnCanary(
1413
1692
  success_retention_period: typing.Optional[jsii.Number] = None,
1414
1693
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
1415
1694
  visual_reference: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.VisualReferenceProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
1695
+ visual_references: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.VisualReferenceProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
1416
1696
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.VPCConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
1417
1697
  ) -> None:
1418
- '''
1698
+ '''Create a new ``AWS::Synthetics::Canary``.
1699
+
1419
1700
  :param scope: Scope in which this resource is defined.
1420
1701
  :param id: Construct identifier for this resource (unique in its scope).
1421
1702
  :param artifact_s3_location: The location in Amazon S3 where Synthetics stores artifacts from the runs of this canary. Artifacts include the log file, screenshots, and HAR files. Specify the full location path, including ``s3://`` at the beginning of the path.
@@ -1425,6 +1706,7 @@ class CfnCanary(
1425
1706
  :param runtime_version: Specifies the runtime version to use for the canary. For more information about runtime versions, see `Canary Runtime Versions <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html>`_ .
1426
1707
  :param schedule: A structure that contains information about how often the canary is to run, and when these runs are to stop.
1427
1708
  :param artifact_config: A structure that contains the configuration for canary artifacts, including the encryption-at-rest settings for artifacts that the canary uploads to Amazon S3.
1709
+ :param browser_configs: A structure that specifies the browser type to use for a canary run. CloudWatch Synthetics supports running canaries on both ``CHROME`` and ``FIREFOX`` browsers. .. epigraph:: If not specified, ``browserConfigs`` defaults to Chrome.
1428
1710
  :param delete_lambda_resources_on_canary_deletion: (deprecated) Deletes associated lambda resources created by Synthetics if set to True. Default is False
1429
1711
  :param dry_run_and_update: Specifies whether to perform a dry run before updating the canary. If set to ``true`` , CloudFormation will execute a dry run to validate the changes before applying them to the canary. If the dry run succeeds, the canary will be updated with the changes. If the dry run fails, the CloudFormation deployment will fail with the dry run’s failure reason. If set to ``false`` or omitted, the canary will be updated directly without first performing a dry run. The default value is ``false`` . For more information, see `Performing safe canary updates <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html>`_ .
1430
1712
  :param failure_retention_period: The number of days to retain data about failed runs of this canary. If you omit this field, the default of 31 days is used. The valid range is 1 to 455 days. This setting affects the range of information returned by `GetCanaryRuns <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_GetCanaryRuns.html>`_ , as well as the range of information displayed in the Synthetics console.
@@ -1434,7 +1716,8 @@ class CfnCanary(
1434
1716
  :param start_canary_after_creation: Specify TRUE to have the canary start making runs immediately after it is created. A canary that you create using CloudFormation can't be used to monitor the CloudFormation stack that creates the canary or to roll back that stack if there is a failure.
1435
1717
  :param success_retention_period: The number of days to retain data about successful runs of this canary. If you omit this field, the default of 31 days is used. The valid range is 1 to 455 days. This setting affects the range of information returned by `GetCanaryRuns <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_GetCanaryRuns.html>`_ , as well as the range of information displayed in the Synthetics console.
1436
1718
  :param tags: The list of key-value pairs that are associated with the canary.
1437
- :param visual_reference: If this canary performs visual monitoring by comparing screenshots, this structure contains the ID of the canary run to use as the baseline for screenshots, and the coordinates of any parts of the screen to ignore during the visual monitoring comparison.
1719
+ :param visual_reference:
1720
+ :param visual_references: A list of visual reference configurations for the canary, one for each browser type that the canary is configured to run on. Visual references are used for visual monitoring comparisons. ``syn-nodejs-puppeteer-11.0`` and above, and ``syn-nodejs-playwright-3.0`` and above, only supports ``visualReferences`` . ``visualReference`` field is not supported. Versions older than ``syn-nodejs-puppeteer-11.0`` supports both ``visualReference`` and ``visualReferences`` for backward compatibility. It is recommended to use ``visualReferences`` for consistency and future compatibility.
1438
1721
  :param vpc_config: If this canary is to test an endpoint in a VPC, this structure contains information about the subnet and security groups of the VPC endpoint. For more information, see `Running a Canary in a VPC <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_VPC.html>`_ .
1439
1722
  '''
1440
1723
  if __debug__:
@@ -1449,6 +1732,7 @@ class CfnCanary(
1449
1732
  runtime_version=runtime_version,
1450
1733
  schedule=schedule,
1451
1734
  artifact_config=artifact_config,
1735
+ browser_configs=browser_configs,
1452
1736
  delete_lambda_resources_on_canary_deletion=delete_lambda_resources_on_canary_deletion,
1453
1737
  dry_run_and_update=dry_run_and_update,
1454
1738
  failure_retention_period=failure_retention_period,
@@ -1459,11 +1743,33 @@ class CfnCanary(
1459
1743
  success_retention_period=success_retention_period,
1460
1744
  tags=tags,
1461
1745
  visual_reference=visual_reference,
1746
+ visual_references=visual_references,
1462
1747
  vpc_config=vpc_config,
1463
1748
  )
1464
1749
 
1465
1750
  jsii.create(self.__class__, self, [scope, id, props])
1466
1751
 
1752
+ @jsii.member(jsii_name="fromCanaryName")
1753
+ @builtins.classmethod
1754
+ def from_canary_name(
1755
+ cls,
1756
+ scope: _constructs_77d1e7e8.Construct,
1757
+ id: builtins.str,
1758
+ canary_name: builtins.str,
1759
+ ) -> _ICanaryRef_cf407e49:
1760
+ '''Creates a new ICanaryRef from a canaryName.
1761
+
1762
+ :param scope: -
1763
+ :param id: -
1764
+ :param canary_name: -
1765
+ '''
1766
+ if __debug__:
1767
+ type_hints = typing.get_type_hints(_typecheckingstub__a9ea9a4c62ed507734c1656b5b5b9ece24a5a15e32aa598350d8dcba80710c99)
1768
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
1769
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
1770
+ check_type(argname="argument canary_name", value=canary_name, expected_type=type_hints["canary_name"])
1771
+ return typing.cast(_ICanaryRef_cf407e49, jsii.sinvoke(cls, "fromCanaryName", [scope, id, canary_name]))
1772
+
1467
1773
  @jsii.member(jsii_name="inspect")
1468
1774
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
1469
1775
  '''Examines the CloudFormation resource and discloses attributes.
@@ -1523,6 +1829,12 @@ class CfnCanary(
1523
1829
  '''
1524
1830
  return typing.cast(builtins.str, jsii.get(self, "attrState"))
1525
1831
 
1832
+ @builtins.property
1833
+ @jsii.member(jsii_name="canaryRef")
1834
+ def canary_ref(self) -> _CanaryReference_fbbe85ce:
1835
+ '''A reference to a Canary resource.'''
1836
+ return typing.cast(_CanaryReference_fbbe85ce, jsii.get(self, "canaryRef"))
1837
+
1526
1838
  @builtins.property
1527
1839
  @jsii.member(jsii_name="cfnProperties")
1528
1840
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -1638,6 +1950,24 @@ class CfnCanary(
1638
1950
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1639
1951
  jsii.set(self, "artifactConfig", value) # pyright: ignore[reportArgumentType]
1640
1952
 
1953
+ @builtins.property
1954
+ @jsii.member(jsii_name="browserConfigs")
1955
+ def browser_configs(
1956
+ self,
1957
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.BrowserConfigProperty"]]]]:
1958
+ '''A structure that specifies the browser type to use for a canary run.'''
1959
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.BrowserConfigProperty"]]]], jsii.get(self, "browserConfigs"))
1960
+
1961
+ @browser_configs.setter
1962
+ def browser_configs(
1963
+ self,
1964
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.BrowserConfigProperty"]]]],
1965
+ ) -> None:
1966
+ if __debug__:
1967
+ type_hints = typing.get_type_hints(_typecheckingstub__91233a90f3d4d918352b4597b2dee50c3da02176501744c2dc696dbd8a735b68)
1968
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1969
+ jsii.set(self, "browserConfigs", value) # pyright: ignore[reportArgumentType]
1970
+
1641
1971
  @builtins.property
1642
1972
  @jsii.member(jsii_name="deleteLambdaResourcesOnCanaryDeletion")
1643
1973
  def delete_lambda_resources_on_canary_deletion(
@@ -1791,7 +2121,11 @@ class CfnCanary(
1791
2121
  def visual_reference(
1792
2122
  self,
1793
2123
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]]:
1794
- '''If this canary performs visual monitoring by comparing screenshots, this structure contains the ID of the canary run to use as the baseline for screenshots, and the coordinates of any parts of the screen to ignore during the visual monitoring comparison.'''
2124
+ '''
2125
+ :deprecated: this property has been deprecated
2126
+
2127
+ :stability: deprecated
2128
+ '''
1795
2129
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]], jsii.get(self, "visualReference"))
1796
2130
 
1797
2131
  @visual_reference.setter
@@ -1804,6 +2138,24 @@ class CfnCanary(
1804
2138
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1805
2139
  jsii.set(self, "visualReference", value) # pyright: ignore[reportArgumentType]
1806
2140
 
2141
+ @builtins.property
2142
+ @jsii.member(jsii_name="visualReferences")
2143
+ def visual_references(
2144
+ self,
2145
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]]]]:
2146
+ '''A list of visual reference configurations for the canary, one for each browser type that the canary is configured to run on.'''
2147
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]]]], jsii.get(self, "visualReferences"))
2148
+
2149
+ @visual_references.setter
2150
+ def visual_references(
2151
+ self,
2152
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]]]],
2153
+ ) -> None:
2154
+ if __debug__:
2155
+ type_hints = typing.get_type_hints(_typecheckingstub__004341f5a58c9e6e190c4bc518ea476aac62201a1708bb1650a22fbf74c64b52)
2156
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
2157
+ jsii.set(self, "visualReferences", value) # pyright: ignore[reportArgumentType]
2158
+
1807
2159
  @builtins.property
1808
2160
  @jsii.member(jsii_name="vpcConfig")
1809
2161
  def vpc_config(
@@ -1964,10 +2316,64 @@ class CfnCanary(
1964
2316
  k + "=" + repr(v) for k, v in self._values.items()
1965
2317
  )
1966
2318
 
2319
+ @jsii.data_type(
2320
+ jsii_type="aws-cdk-lib.aws_synthetics.CfnCanary.BrowserConfigProperty",
2321
+ jsii_struct_bases=[],
2322
+ name_mapping={"browser_type": "browserType"},
2323
+ )
2324
+ class BrowserConfigProperty:
2325
+ def __init__(self, *, browser_type: builtins.str) -> None:
2326
+ '''A structure that specifies the browser type to use for a canary run.
2327
+
2328
+ :param browser_type: The browser type associated with this browser configuration.
2329
+
2330
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-browserconfig.html
2331
+ :exampleMetadata: fixture=_generated
2332
+
2333
+ Example::
2334
+
2335
+ # The code below shows an example of how to instantiate this type.
2336
+ # The values are placeholders you should change.
2337
+ from aws_cdk import aws_synthetics as synthetics
2338
+
2339
+ browser_config_property = synthetics.CfnCanary.BrowserConfigProperty(
2340
+ browser_type="browserType"
2341
+ )
2342
+ '''
2343
+ if __debug__:
2344
+ type_hints = typing.get_type_hints(_typecheckingstub__c91e35c3c240434fee052d7f899893609a9c027813412eb6312483e200412435)
2345
+ check_type(argname="argument browser_type", value=browser_type, expected_type=type_hints["browser_type"])
2346
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2347
+ "browser_type": browser_type,
2348
+ }
2349
+
2350
+ @builtins.property
2351
+ def browser_type(self) -> builtins.str:
2352
+ '''The browser type associated with this browser configuration.
2353
+
2354
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-browserconfig.html#cfn-synthetics-canary-browserconfig-browsertype
2355
+ '''
2356
+ result = self._values.get("browser_type")
2357
+ assert result is not None, "Required property 'browser_type' is missing"
2358
+ return typing.cast(builtins.str, result)
2359
+
2360
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2361
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2362
+
2363
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2364
+ return not (rhs == self)
2365
+
2366
+ def __repr__(self) -> str:
2367
+ return "BrowserConfigProperty(%s)" % ", ".join(
2368
+ k + "=" + repr(v) for k, v in self._values.items()
2369
+ )
2370
+
1967
2371
  @jsii.data_type(
1968
2372
  jsii_type="aws-cdk-lib.aws_synthetics.CfnCanary.CodeProperty",
1969
2373
  jsii_struct_bases=[],
1970
2374
  name_mapping={
2375
+ "blueprint_types": "blueprintTypes",
2376
+ "dependencies": "dependencies",
1971
2377
  "handler": "handler",
1972
2378
  "s3_bucket": "s3Bucket",
1973
2379
  "s3_key": "s3Key",
@@ -1980,7 +2386,9 @@ class CfnCanary(
1980
2386
  def __init__(
1981
2387
  self,
1982
2388
  *,
1983
- handler: builtins.str,
2389
+ blueprint_types: typing.Optional[typing.Sequence[builtins.str]] = None,
2390
+ dependencies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.DependencyProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
2391
+ handler: typing.Optional[builtins.str] = None,
1984
2392
  s3_bucket: typing.Optional[builtins.str] = None,
1985
2393
  s3_key: typing.Optional[builtins.str] = None,
1986
2394
  s3_object_version: typing.Optional[builtins.str] = None,
@@ -1991,7 +2399,9 @@ class CfnCanary(
1991
2399
 
1992
2400
  This structure contains the Lambda handler with the location where the canary should start running the script. If the script is stored in an S3 bucket, the bucket name, key, and version are also included. If the script is passed into the canary directly, the script code is contained in the value of ``Script`` .
1993
2401
 
1994
- :param handler: The entry point to use for the source code when running the canary. For canaries that use the ``syn-python-selenium-1.0`` runtime or a ``syn-nodejs.puppeteer`` runtime earlier than ``syn-nodejs.puppeteer-3.4`` , the handler must be specified as ``*fileName* .handler`` . For ``syn-python-selenium-1.1`` , ``syn-nodejs.puppeteer-3.4`` , and later runtimes, the handler can be specified as ``*fileName* . *functionName*`` , or you can specify a folder where canary scripts reside as ``*folder* / *fileName* . *functionName*`` .
2402
+ :param blueprint_types: ``BlueprintTypes`` are a list of templates that enable simplified canary creation. You can create canaries for common monitoring scenarios by providing only a JSON configuration file instead of writing custom scripts. ``multi-checks`` is the only supported value. When you specify ``BlueprintTypes`` , the ``Handler`` field cannot be specified since the blueprint provides a pre-defined entry point.
2403
+ :param dependencies: List of Lambda layers to attach to the canary.
2404
+ :param handler: The entry point to use for the source code when running the canary. For canaries that use the ``syn-python-selenium-1.0`` runtime or a ``syn-nodejs.puppeteer`` runtime earlier than ``syn-nodejs.puppeteer-3.4`` , the handler must be specified as ``*fileName* .handler`` . For ``syn-python-selenium-1.1`` , ``syn-nodejs.puppeteer-3.4`` , and later runtimes, the handler can be specified as ``*fileName* . *functionName*`` , or you can specify a folder where canary scripts reside as ``*folder* / *fileName* . *functionName*`` . This field is required when you don't specify ``BlueprintTypes`` and is not allowed when you specify ``BlueprintTypes`` .
1995
2405
  :param s3_bucket: If your canary script is located in S3, specify the bucket name here. The bucket must already exist.
1996
2406
  :param s3_key: The Amazon S3 key of your script. For more information, see `Working with Amazon S3 Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html>`_ .
1997
2407
  :param s3_object_version: The Amazon S3 version ID of your script.
@@ -2008,9 +2418,14 @@ class CfnCanary(
2008
2418
  from aws_cdk import aws_synthetics as synthetics
2009
2419
 
2010
2420
  code_property = synthetics.CfnCanary.CodeProperty(
2011
- handler="handler",
2421
+ blueprint_types=["blueprintTypes"],
2422
+ dependencies=[synthetics.CfnCanary.DependencyProperty(
2423
+ reference="reference",
2012
2424
 
2013
- # the properties below are optional
2425
+ # the properties below are optional
2426
+ type="type"
2427
+ )],
2428
+ handler="handler",
2014
2429
  s3_bucket="s3Bucket",
2015
2430
  s3_key="s3Key",
2016
2431
  s3_object_version="s3ObjectVersion",
@@ -2020,15 +2435,21 @@ class CfnCanary(
2020
2435
  '''
2021
2436
  if __debug__:
2022
2437
  type_hints = typing.get_type_hints(_typecheckingstub__3d403372a613babc1ab10717d050ec9a7f4055961f3545f2d0600d89c7b3dcc3)
2438
+ check_type(argname="argument blueprint_types", value=blueprint_types, expected_type=type_hints["blueprint_types"])
2439
+ check_type(argname="argument dependencies", value=dependencies, expected_type=type_hints["dependencies"])
2023
2440
  check_type(argname="argument handler", value=handler, expected_type=type_hints["handler"])
2024
2441
  check_type(argname="argument s3_bucket", value=s3_bucket, expected_type=type_hints["s3_bucket"])
2025
2442
  check_type(argname="argument s3_key", value=s3_key, expected_type=type_hints["s3_key"])
2026
2443
  check_type(argname="argument s3_object_version", value=s3_object_version, expected_type=type_hints["s3_object_version"])
2027
2444
  check_type(argname="argument script", value=script, expected_type=type_hints["script"])
2028
2445
  check_type(argname="argument source_location_arn", value=source_location_arn, expected_type=type_hints["source_location_arn"])
2029
- self._values: typing.Dict[builtins.str, typing.Any] = {
2030
- "handler": handler,
2031
- }
2446
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
2447
+ if blueprint_types is not None:
2448
+ self._values["blueprint_types"] = blueprint_types
2449
+ if dependencies is not None:
2450
+ self._values["dependencies"] = dependencies
2451
+ if handler is not None:
2452
+ self._values["handler"] = handler
2032
2453
  if s3_bucket is not None:
2033
2454
  self._values["s3_bucket"] = s3_bucket
2034
2455
  if s3_key is not None:
@@ -2041,16 +2462,41 @@ class CfnCanary(
2041
2462
  self._values["source_location_arn"] = source_location_arn
2042
2463
 
2043
2464
  @builtins.property
2044
- def handler(self) -> builtins.str:
2465
+ def blueprint_types(self) -> typing.Optional[typing.List[builtins.str]]:
2466
+ '''``BlueprintTypes`` are a list of templates that enable simplified canary creation.
2467
+
2468
+ You can create canaries for common monitoring scenarios by providing only a JSON configuration file instead of writing custom scripts. ``multi-checks`` is the only supported value.
2469
+
2470
+ When you specify ``BlueprintTypes`` , the ``Handler`` field cannot be specified since the blueprint provides a pre-defined entry point.
2471
+
2472
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-blueprinttypes
2473
+ '''
2474
+ result = self._values.get("blueprint_types")
2475
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
2476
+
2477
+ @builtins.property
2478
+ def dependencies(
2479
+ self,
2480
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.DependencyProperty"]]]]:
2481
+ '''List of Lambda layers to attach to the canary.
2482
+
2483
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-dependencies
2484
+ '''
2485
+ result = self._values.get("dependencies")
2486
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.DependencyProperty"]]]], result)
2487
+
2488
+ @builtins.property
2489
+ def handler(self) -> typing.Optional[builtins.str]:
2045
2490
  '''The entry point to use for the source code when running the canary.
2046
2491
 
2047
2492
  For canaries that use the ``syn-python-selenium-1.0`` runtime or a ``syn-nodejs.puppeteer`` runtime earlier than ``syn-nodejs.puppeteer-3.4`` , the handler must be specified as ``*fileName* .handler`` . For ``syn-python-selenium-1.1`` , ``syn-nodejs.puppeteer-3.4`` , and later runtimes, the handler can be specified as ``*fileName* . *functionName*`` , or you can specify a folder where canary scripts reside as ``*folder* / *fileName* . *functionName*`` .
2048
2493
 
2494
+ This field is required when you don't specify ``BlueprintTypes`` and is not allowed when you specify ``BlueprintTypes`` .
2495
+
2049
2496
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-handler
2050
2497
  '''
2051
2498
  result = self._values.get("handler")
2052
- assert result is not None, "Required property 'handler' is missing"
2053
- return typing.cast(builtins.str, result)
2499
+ return typing.cast(typing.Optional[builtins.str], result)
2054
2500
 
2055
2501
  @builtins.property
2056
2502
  def s3_bucket(self) -> typing.Optional[builtins.str]:
@@ -2114,6 +2560,83 @@ class CfnCanary(
2114
2560
  k + "=" + repr(v) for k, v in self._values.items()
2115
2561
  )
2116
2562
 
2563
+ @jsii.data_type(
2564
+ jsii_type="aws-cdk-lib.aws_synthetics.CfnCanary.DependencyProperty",
2565
+ jsii_struct_bases=[],
2566
+ name_mapping={"reference": "reference", "type": "type"},
2567
+ )
2568
+ class DependencyProperty:
2569
+ def __init__(
2570
+ self,
2571
+ *,
2572
+ reference: builtins.str,
2573
+ type: typing.Optional[builtins.str] = None,
2574
+ ) -> None:
2575
+ '''A structure that contains information about a dependency for a canary.
2576
+
2577
+ :param reference: The dependency reference. For Lambda layers, this is the ARN of the Lambda layer. For more information about Lambda ARN format, see `Lambda <https://docs.aws.amazon.com/lambda/latest/api/API_Layer.html>`_ .
2578
+ :param type: The type of dependency. Valid value is ``LambdaLayer`` .
2579
+
2580
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-dependency.html
2581
+ :exampleMetadata: fixture=_generated
2582
+
2583
+ Example::
2584
+
2585
+ # The code below shows an example of how to instantiate this type.
2586
+ # The values are placeholders you should change.
2587
+ from aws_cdk import aws_synthetics as synthetics
2588
+
2589
+ dependency_property = synthetics.CfnCanary.DependencyProperty(
2590
+ reference="reference",
2591
+
2592
+ # the properties below are optional
2593
+ type="type"
2594
+ )
2595
+ '''
2596
+ if __debug__:
2597
+ type_hints = typing.get_type_hints(_typecheckingstub__02338e317b0b84f714774aabea98599cd96fe9cff23790733ad426e75f9984f4)
2598
+ check_type(argname="argument reference", value=reference, expected_type=type_hints["reference"])
2599
+ check_type(argname="argument type", value=type, expected_type=type_hints["type"])
2600
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2601
+ "reference": reference,
2602
+ }
2603
+ if type is not None:
2604
+ self._values["type"] = type
2605
+
2606
+ @builtins.property
2607
+ def reference(self) -> builtins.str:
2608
+ '''The dependency reference.
2609
+
2610
+ For Lambda layers, this is the ARN of the Lambda layer. For more information about Lambda ARN format, see `Lambda <https://docs.aws.amazon.com/lambda/latest/api/API_Layer.html>`_ .
2611
+
2612
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-dependency.html#cfn-synthetics-canary-dependency-reference
2613
+ '''
2614
+ result = self._values.get("reference")
2615
+ assert result is not None, "Required property 'reference' is missing"
2616
+ return typing.cast(builtins.str, result)
2617
+
2618
+ @builtins.property
2619
+ def type(self) -> typing.Optional[builtins.str]:
2620
+ '''The type of dependency.
2621
+
2622
+ Valid value is ``LambdaLayer`` .
2623
+
2624
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-dependency.html#cfn-synthetics-canary-dependency-type
2625
+ '''
2626
+ result = self._values.get("type")
2627
+ return typing.cast(typing.Optional[builtins.str], result)
2628
+
2629
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2630
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2631
+
2632
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2633
+ return not (rhs == self)
2634
+
2635
+ def __repr__(self) -> str:
2636
+ return "DependencyProperty(%s)" % ", ".join(
2637
+ k + "=" + repr(v) for k, v in self._values.items()
2638
+ )
2639
+
2117
2640
  @jsii.data_type(
2118
2641
  jsii_type="aws-cdk-lib.aws_synthetics.CfnCanary.RetryConfigProperty",
2119
2642
  jsii_struct_bases=[],
@@ -2174,6 +2697,7 @@ class CfnCanary(
2174
2697
  name_mapping={
2175
2698
  "active_tracing": "activeTracing",
2176
2699
  "environment_variables": "environmentVariables",
2700
+ "ephemeral_storage": "ephemeralStorage",
2177
2701
  "memory_in_mb": "memoryInMb",
2178
2702
  "timeout_in_seconds": "timeoutInSeconds",
2179
2703
  },
@@ -2184,6 +2708,7 @@ class CfnCanary(
2184
2708
  *,
2185
2709
  active_tracing: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
2186
2710
  environment_variables: typing.Optional[typing.Union[typing.Mapping[builtins.str, builtins.str], _IResolvable_da3f097b]] = None,
2711
+ ephemeral_storage: typing.Optional[jsii.Number] = None,
2187
2712
  memory_in_mb: typing.Optional[jsii.Number] = None,
2188
2713
  timeout_in_seconds: typing.Optional[jsii.Number] = None,
2189
2714
  ) -> None:
@@ -2193,6 +2718,7 @@ class CfnCanary(
2193
2718
 
2194
2719
  :param active_tracing: Specifies whether this canary is to use active AWS X-Ray tracing when it runs. Active tracing enables this canary run to be displayed in the ServiceLens and X-Ray service maps even if the canary does not hit an endpoint that has X-Ray tracing enabled. Using X-Ray tracing incurs charges. For more information, see `Canaries and X-Ray tracing <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_tracing.html>`_ . You can enable active tracing only for canaries that use version ``syn-nodejs-2.0`` or later for their canary runtime.
2195
2720
  :param environment_variables: Specifies the keys and values to use for any environment variables used in the canary script. Use the following format: { "key1" : "value1", "key2" : "value2", ...} Keys must start with a letter and be at least two characters. The total size of your environment variables cannot exceed 4 KB. You can't specify any Lambda reserved environment variables as the keys for your environment variables. For more information about reserved keys, see `Runtime environment variables <https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime>`_ .
2721
+ :param ephemeral_storage: Specifies the amount of ephemeral storage (in MB) to allocate for the canary run during execution. This temporary storage is used for storing canary run artifacts (which are uploaded to an Amazon S3 bucket at the end of the run), and any canary browser operations. This temporary storage is cleared after the run is completed. Default storage value is 1024 MB.
2196
2722
  :param memory_in_mb: The maximum amount of memory that the canary can use while running. This value must be a multiple of 64. The range is 960 to 3008.
2197
2723
  :param timeout_in_seconds: How long the canary is allowed to run before it must stop. You can't set this time to be longer than the frequency of the runs of this canary. If you omit this field, the frequency of the canary is used as this value, up to a maximum of 900 seconds.
2198
2724
 
@@ -2210,6 +2736,7 @@ class CfnCanary(
2210
2736
  environment_variables={
2211
2737
  "environment_variables_key": "environmentVariables"
2212
2738
  },
2739
+ ephemeral_storage=123,
2213
2740
  memory_in_mb=123,
2214
2741
  timeout_in_seconds=123
2215
2742
  )
@@ -2218,6 +2745,7 @@ class CfnCanary(
2218
2745
  type_hints = typing.get_type_hints(_typecheckingstub__fa148862e82948accbbe951e7afcee721aa7014754c81106d2648fe1c5cf28e2)
2219
2746
  check_type(argname="argument active_tracing", value=active_tracing, expected_type=type_hints["active_tracing"])
2220
2747
  check_type(argname="argument environment_variables", value=environment_variables, expected_type=type_hints["environment_variables"])
2748
+ check_type(argname="argument ephemeral_storage", value=ephemeral_storage, expected_type=type_hints["ephemeral_storage"])
2221
2749
  check_type(argname="argument memory_in_mb", value=memory_in_mb, expected_type=type_hints["memory_in_mb"])
2222
2750
  check_type(argname="argument timeout_in_seconds", value=timeout_in_seconds, expected_type=type_hints["timeout_in_seconds"])
2223
2751
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -2225,6 +2753,8 @@ class CfnCanary(
2225
2753
  self._values["active_tracing"] = active_tracing
2226
2754
  if environment_variables is not None:
2227
2755
  self._values["environment_variables"] = environment_variables
2756
+ if ephemeral_storage is not None:
2757
+ self._values["ephemeral_storage"] = ephemeral_storage
2228
2758
  if memory_in_mb is not None:
2229
2759
  self._values["memory_in_mb"] = memory_in_mb
2230
2760
  if timeout_in_seconds is not None:
@@ -2262,6 +2792,17 @@ class CfnCanary(
2262
2792
  result = self._values.get("environment_variables")
2263
2793
  return typing.cast(typing.Optional[typing.Union[typing.Mapping[builtins.str, builtins.str], _IResolvable_da3f097b]], result)
2264
2794
 
2795
+ @builtins.property
2796
+ def ephemeral_storage(self) -> typing.Optional[jsii.Number]:
2797
+ '''Specifies the amount of ephemeral storage (in MB) to allocate for the canary run during execution.
2798
+
2799
+ This temporary storage is used for storing canary run artifacts (which are uploaded to an Amazon S3 bucket at the end of the run), and any canary browser operations. This temporary storage is cleared after the run is completed. Default storage value is 1024 MB.
2800
+
2801
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-ephemeralstorage
2802
+ '''
2803
+ result = self._values.get("ephemeral_storage")
2804
+ return typing.cast(typing.Optional[jsii.Number], result)
2805
+
2265
2806
  @builtins.property
2266
2807
  def memory_in_mb(self) -> typing.Optional[jsii.Number]:
2267
2808
  '''The maximum amount of memory that the canary can use while running.
@@ -2599,6 +3140,7 @@ class CfnCanary(
2599
3140
  name_mapping={
2600
3141
  "base_canary_run_id": "baseCanaryRunId",
2601
3142
  "base_screenshots": "baseScreenshots",
3143
+ "browser_type": "browserType",
2602
3144
  },
2603
3145
  )
2604
3146
  class VisualReferenceProperty:
@@ -2607,6 +3149,7 @@ class CfnCanary(
2607
3149
  *,
2608
3150
  base_canary_run_id: builtins.str,
2609
3151
  base_screenshots: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.BaseScreenshotProperty", typing.Dict[builtins.str, typing.Any]]]]]] = None,
3152
+ browser_type: typing.Optional[builtins.str] = None,
2610
3153
  ) -> None:
2611
3154
  '''Defines the screenshots to use as the baseline for comparisons during visual monitoring comparisons during future runs of this canary.
2612
3155
 
@@ -2616,6 +3159,7 @@ class CfnCanary(
2616
3159
 
2617
3160
  :param base_canary_run_id: Specifies which canary run to use the screenshots from as the baseline for future visual monitoring with this canary. Valid values are ``nextrun`` to use the screenshots from the next run after this update is made, ``lastrun`` to use the screenshots from the most recent run before this update was made, or the value of ``Id`` in the `CanaryRun <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CanaryRun.html>`_ from any past run of this canary.
2618
3161
  :param base_screenshots: An array of screenshots that are used as the baseline for comparisons during visual monitoring.
3162
+ :param browser_type: The browser type associated with this visual reference configuration. Valid values are ``CHROME`` and ``FIREFOX`` .
2619
3163
 
2620
3164
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-visualreference.html
2621
3165
  :exampleMetadata: fixture=_generated
@@ -2635,18 +3179,22 @@ class CfnCanary(
2635
3179
 
2636
3180
  # the properties below are optional
2637
3181
  ignore_coordinates=["ignoreCoordinates"]
2638
- )]
3182
+ )],
3183
+ browser_type="browserType"
2639
3184
  )
2640
3185
  '''
2641
3186
  if __debug__:
2642
3187
  type_hints = typing.get_type_hints(_typecheckingstub__f52b6b7318141dc99f6bd36c21b91cda286b67d7dea805791a6132a2cd794526)
2643
3188
  check_type(argname="argument base_canary_run_id", value=base_canary_run_id, expected_type=type_hints["base_canary_run_id"])
2644
3189
  check_type(argname="argument base_screenshots", value=base_screenshots, expected_type=type_hints["base_screenshots"])
3190
+ check_type(argname="argument browser_type", value=browser_type, expected_type=type_hints["browser_type"])
2645
3191
  self._values: typing.Dict[builtins.str, typing.Any] = {
2646
3192
  "base_canary_run_id": base_canary_run_id,
2647
3193
  }
2648
3194
  if base_screenshots is not None:
2649
3195
  self._values["base_screenshots"] = base_screenshots
3196
+ if browser_type is not None:
3197
+ self._values["browser_type"] = browser_type
2650
3198
 
2651
3199
  @builtins.property
2652
3200
  def base_canary_run_id(self) -> builtins.str:
@@ -2671,6 +3219,17 @@ class CfnCanary(
2671
3219
  result = self._values.get("base_screenshots")
2672
3220
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.BaseScreenshotProperty"]]]], result)
2673
3221
 
3222
+ @builtins.property
3223
+ def browser_type(self) -> typing.Optional[builtins.str]:
3224
+ '''The browser type associated with this visual reference configuration.
3225
+
3226
+ Valid values are ``CHROME`` and ``FIREFOX`` .
3227
+
3228
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-visualreference.html#cfn-synthetics-canary-visualreference-browsertype
3229
+ '''
3230
+ result = self._values.get("browser_type")
3231
+ return typing.cast(typing.Optional[builtins.str], result)
3232
+
2674
3233
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
2675
3234
  return isinstance(rhs, self.__class__) and rhs._values == self._values
2676
3235
 
@@ -2694,6 +3253,7 @@ class CfnCanary(
2694
3253
  "runtime_version": "runtimeVersion",
2695
3254
  "schedule": "schedule",
2696
3255
  "artifact_config": "artifactConfig",
3256
+ "browser_configs": "browserConfigs",
2697
3257
  "delete_lambda_resources_on_canary_deletion": "deleteLambdaResourcesOnCanaryDeletion",
2698
3258
  "dry_run_and_update": "dryRunAndUpdate",
2699
3259
  "failure_retention_period": "failureRetentionPeriod",
@@ -2704,6 +3264,7 @@ class CfnCanary(
2704
3264
  "success_retention_period": "successRetentionPeriod",
2705
3265
  "tags": "tags",
2706
3266
  "visual_reference": "visualReference",
3267
+ "visual_references": "visualReferences",
2707
3268
  "vpc_config": "vpcConfig",
2708
3269
  },
2709
3270
  )
@@ -2718,6 +3279,7 @@ class CfnCanaryProps:
2718
3279
  runtime_version: builtins.str,
2719
3280
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ScheduleProperty, typing.Dict[builtins.str, typing.Any]]],
2720
3281
  artifact_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ArtifactConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
3282
+ browser_configs: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.BrowserConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
2721
3283
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
2722
3284
  dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
2723
3285
  failure_retention_period: typing.Optional[jsii.Number] = None,
@@ -2728,6 +3290,7 @@ class CfnCanaryProps:
2728
3290
  success_retention_period: typing.Optional[jsii.Number] = None,
2729
3291
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2730
3292
  visual_reference: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VisualReferenceProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
3293
+ visual_references: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VisualReferenceProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
2731
3294
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VPCConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2732
3295
  ) -> None:
2733
3296
  '''Properties for defining a ``CfnCanary``.
@@ -2739,6 +3302,7 @@ class CfnCanaryProps:
2739
3302
  :param runtime_version: Specifies the runtime version to use for the canary. For more information about runtime versions, see `Canary Runtime Versions <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html>`_ .
2740
3303
  :param schedule: A structure that contains information about how often the canary is to run, and when these runs are to stop.
2741
3304
  :param artifact_config: A structure that contains the configuration for canary artifacts, including the encryption-at-rest settings for artifacts that the canary uploads to Amazon S3.
3305
+ :param browser_configs: A structure that specifies the browser type to use for a canary run. CloudWatch Synthetics supports running canaries on both ``CHROME`` and ``FIREFOX`` browsers. .. epigraph:: If not specified, ``browserConfigs`` defaults to Chrome.
2742
3306
  :param delete_lambda_resources_on_canary_deletion: (deprecated) Deletes associated lambda resources created by Synthetics if set to True. Default is False
2743
3307
  :param dry_run_and_update: Specifies whether to perform a dry run before updating the canary. If set to ``true`` , CloudFormation will execute a dry run to validate the changes before applying them to the canary. If the dry run succeeds, the canary will be updated with the changes. If the dry run fails, the CloudFormation deployment will fail with the dry run’s failure reason. If set to ``false`` or omitted, the canary will be updated directly without first performing a dry run. The default value is ``false`` . For more information, see `Performing safe canary updates <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html>`_ .
2744
3308
  :param failure_retention_period: The number of days to retain data about failed runs of this canary. If you omit this field, the default of 31 days is used. The valid range is 1 to 455 days. This setting affects the range of information returned by `GetCanaryRuns <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_GetCanaryRuns.html>`_ , as well as the range of information displayed in the Synthetics console.
@@ -2748,7 +3312,8 @@ class CfnCanaryProps:
2748
3312
  :param start_canary_after_creation: Specify TRUE to have the canary start making runs immediately after it is created. A canary that you create using CloudFormation can't be used to monitor the CloudFormation stack that creates the canary or to roll back that stack if there is a failure.
2749
3313
  :param success_retention_period: The number of days to retain data about successful runs of this canary. If you omit this field, the default of 31 days is used. The valid range is 1 to 455 days. This setting affects the range of information returned by `GetCanaryRuns <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_GetCanaryRuns.html>`_ , as well as the range of information displayed in the Synthetics console.
2750
3314
  :param tags: The list of key-value pairs that are associated with the canary.
2751
- :param visual_reference: If this canary performs visual monitoring by comparing screenshots, this structure contains the ID of the canary run to use as the baseline for screenshots, and the coordinates of any parts of the screen to ignore during the visual monitoring comparison.
3315
+ :param visual_reference:
3316
+ :param visual_references: A list of visual reference configurations for the canary, one for each browser type that the canary is configured to run on. Visual references are used for visual monitoring comparisons. ``syn-nodejs-puppeteer-11.0`` and above, and ``syn-nodejs-playwright-3.0`` and above, only supports ``visualReferences`` . ``visualReference`` field is not supported. Versions older than ``syn-nodejs-puppeteer-11.0`` supports both ``visualReference`` and ``visualReferences`` for backward compatibility. It is recommended to use ``visualReferences`` for consistency and future compatibility.
2752
3317
  :param vpc_config: If this canary is to test an endpoint in a VPC, this structure contains information about the subnet and security groups of the VPC endpoint. For more information, see `Running a Canary in a VPC <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_VPC.html>`_ .
2753
3318
 
2754
3319
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html
@@ -2763,9 +3328,14 @@ class CfnCanaryProps:
2763
3328
  cfn_canary_props = synthetics.CfnCanaryProps(
2764
3329
  artifact_s3_location="artifactS3Location",
2765
3330
  code=synthetics.CfnCanary.CodeProperty(
2766
- handler="handler",
3331
+ blueprint_types=["blueprintTypes"],
3332
+ dependencies=[synthetics.CfnCanary.DependencyProperty(
3333
+ reference="reference",
2767
3334
 
2768
- # the properties below are optional
3335
+ # the properties below are optional
3336
+ type="type"
3337
+ )],
3338
+ handler="handler",
2769
3339
  s3_bucket="s3Bucket",
2770
3340
  s3_key="s3Key",
2771
3341
  s3_object_version="s3ObjectVersion",
@@ -2792,6 +3362,9 @@ class CfnCanaryProps:
2792
3362
  kms_key_arn="kmsKeyArn"
2793
3363
  )
2794
3364
  ),
3365
+ browser_configs=[synthetics.CfnCanary.BrowserConfigProperty(
3366
+ browser_type="browserType"
3367
+ )],
2795
3368
  delete_lambda_resources_on_canary_deletion=False,
2796
3369
  dry_run_and_update=False,
2797
3370
  failure_retention_period=123,
@@ -2802,6 +3375,7 @@ class CfnCanaryProps:
2802
3375
  environment_variables={
2803
3376
  "environment_variables_key": "environmentVariables"
2804
3377
  },
3378
+ ephemeral_storage=123,
2805
3379
  memory_in_mb=123,
2806
3380
  timeout_in_seconds=123
2807
3381
  ),
@@ -2820,8 +3394,21 @@ class CfnCanaryProps:
2820
3394
 
2821
3395
  # the properties below are optional
2822
3396
  ignore_coordinates=["ignoreCoordinates"]
2823
- )]
3397
+ )],
3398
+ browser_type="browserType"
2824
3399
  ),
3400
+ visual_references=[synthetics.CfnCanary.VisualReferenceProperty(
3401
+ base_canary_run_id="baseCanaryRunId",
3402
+
3403
+ # the properties below are optional
3404
+ base_screenshots=[synthetics.CfnCanary.BaseScreenshotProperty(
3405
+ screenshot_name="screenshotName",
3406
+
3407
+ # the properties below are optional
3408
+ ignore_coordinates=["ignoreCoordinates"]
3409
+ )],
3410
+ browser_type="browserType"
3411
+ )],
2825
3412
  vpc_config=synthetics.CfnCanary.VPCConfigProperty(
2826
3413
  security_group_ids=["securityGroupIds"],
2827
3414
  subnet_ids=["subnetIds"],
@@ -2841,6 +3428,7 @@ class CfnCanaryProps:
2841
3428
  check_type(argname="argument runtime_version", value=runtime_version, expected_type=type_hints["runtime_version"])
2842
3429
  check_type(argname="argument schedule", value=schedule, expected_type=type_hints["schedule"])
2843
3430
  check_type(argname="argument artifact_config", value=artifact_config, expected_type=type_hints["artifact_config"])
3431
+ check_type(argname="argument browser_configs", value=browser_configs, expected_type=type_hints["browser_configs"])
2844
3432
  check_type(argname="argument delete_lambda_resources_on_canary_deletion", value=delete_lambda_resources_on_canary_deletion, expected_type=type_hints["delete_lambda_resources_on_canary_deletion"])
2845
3433
  check_type(argname="argument dry_run_and_update", value=dry_run_and_update, expected_type=type_hints["dry_run_and_update"])
2846
3434
  check_type(argname="argument failure_retention_period", value=failure_retention_period, expected_type=type_hints["failure_retention_period"])
@@ -2851,6 +3439,7 @@ class CfnCanaryProps:
2851
3439
  check_type(argname="argument success_retention_period", value=success_retention_period, expected_type=type_hints["success_retention_period"])
2852
3440
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
2853
3441
  check_type(argname="argument visual_reference", value=visual_reference, expected_type=type_hints["visual_reference"])
3442
+ check_type(argname="argument visual_references", value=visual_references, expected_type=type_hints["visual_references"])
2854
3443
  check_type(argname="argument vpc_config", value=vpc_config, expected_type=type_hints["vpc_config"])
2855
3444
  self._values: typing.Dict[builtins.str, typing.Any] = {
2856
3445
  "artifact_s3_location": artifact_s3_location,
@@ -2862,6 +3451,8 @@ class CfnCanaryProps:
2862
3451
  }
2863
3452
  if artifact_config is not None:
2864
3453
  self._values["artifact_config"] = artifact_config
3454
+ if browser_configs is not None:
3455
+ self._values["browser_configs"] = browser_configs
2865
3456
  if delete_lambda_resources_on_canary_deletion is not None:
2866
3457
  self._values["delete_lambda_resources_on_canary_deletion"] = delete_lambda_resources_on_canary_deletion
2867
3458
  if dry_run_and_update is not None:
@@ -2882,6 +3473,8 @@ class CfnCanaryProps:
2882
3473
  self._values["tags"] = tags
2883
3474
  if visual_reference is not None:
2884
3475
  self._values["visual_reference"] = visual_reference
3476
+ if visual_references is not None:
3477
+ self._values["visual_references"] = visual_references
2885
3478
  if vpc_config is not None:
2886
3479
  self._values["vpc_config"] = vpc_config
2887
3480
 
@@ -2978,6 +3571,22 @@ class CfnCanaryProps:
2978
3571
  result = self._values.get("artifact_config")
2979
3572
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.ArtifactConfigProperty]], result)
2980
3573
 
3574
+ @builtins.property
3575
+ def browser_configs(
3576
+ self,
3577
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCanary.BrowserConfigProperty]]]]:
3578
+ '''A structure that specifies the browser type to use for a canary run.
3579
+
3580
+ CloudWatch Synthetics supports running canaries on both ``CHROME`` and ``FIREFOX`` browsers.
3581
+ .. epigraph::
3582
+
3583
+ If not specified, ``browserConfigs`` defaults to Chrome.
3584
+
3585
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-browserconfigs
3586
+ '''
3587
+ result = self._values.get("browser_configs")
3588
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCanary.BrowserConfigProperty]]]], result)
3589
+
2981
3590
  @builtins.property
2982
3591
  def delete_lambda_resources_on_canary_deletion(
2983
3592
  self,
@@ -3100,13 +3709,32 @@ class CfnCanaryProps:
3100
3709
  def visual_reference(
3101
3710
  self,
3102
3711
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]]:
3103
- '''If this canary performs visual monitoring by comparing screenshots, this structure contains the ID of the canary run to use as the baseline for screenshots, and the coordinates of any parts of the screen to ignore during the visual monitoring comparison.
3712
+ '''
3713
+ :deprecated: this property has been deprecated
3104
3714
 
3105
3715
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-visualreference
3716
+ :stability: deprecated
3106
3717
  '''
3107
3718
  result = self._values.get("visual_reference")
3108
3719
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]], result)
3109
3720
 
3721
+ @builtins.property
3722
+ def visual_references(
3723
+ self,
3724
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]]]]:
3725
+ '''A list of visual reference configurations for the canary, one for each browser type that the canary is configured to run on.
3726
+
3727
+ Visual references are used for visual monitoring comparisons.
3728
+
3729
+ ``syn-nodejs-puppeteer-11.0`` and above, and ``syn-nodejs-playwright-3.0`` and above, only supports ``visualReferences`` . ``visualReference`` field is not supported.
3730
+
3731
+ Versions older than ``syn-nodejs-puppeteer-11.0`` supports both ``visualReference`` and ``visualReferences`` for backward compatibility. It is recommended to use ``visualReferences`` for consistency and future compatibility.
3732
+
3733
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-visualreferences
3734
+ '''
3735
+ result = self._values.get("visual_references")
3736
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]]]], result)
3737
+
3110
3738
  @builtins.property
3111
3739
  def vpc_config(
3112
3740
  self,
@@ -3132,7 +3760,7 @@ class CfnCanaryProps:
3132
3760
  )
3133
3761
 
3134
3762
 
3135
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
3763
+ @jsii.implements(_IInspectable_c2943556, _IGroupRef_4fc55162, _ITaggable_36806126)
3136
3764
  class CfnGroup(
3137
3765
  _CfnResource_9df397a6,
3138
3766
  metaclass=jsii.JSIIMeta,
@@ -3177,7 +3805,8 @@ class CfnGroup(
3177
3805
  resource_arns: typing.Optional[typing.Sequence[builtins.str]] = None,
3178
3806
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3179
3807
  ) -> None:
3180
- '''
3808
+ '''Create a new ``AWS::Synthetics::Group``.
3809
+
3181
3810
  :param scope: Scope in which this resource is defined.
3182
3811
  :param id: Construct identifier for this resource (unique in its scope).
3183
3812
  :param name: A name for the group. It can include any Unicode characters. The names for all groups in your account, across all Regions, must be unique.
@@ -3236,6 +3865,12 @@ class CfnGroup(
3236
3865
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
3237
3866
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
3238
3867
 
3868
+ @builtins.property
3869
+ @jsii.member(jsii_name="groupRef")
3870
+ def group_ref(self) -> _GroupReference_37835a7e:
3871
+ '''A reference to a Group resource.'''
3872
+ return typing.cast(_GroupReference_37835a7e, jsii.get(self, "groupRef"))
3873
+
3239
3874
  @builtins.property
3240
3875
  @jsii.member(jsii_name="tags")
3241
3876
  def tags(self) -> _TagManager_0a598cb3:
@@ -3408,17 +4043,14 @@ class Code(
3408
4043
 
3409
4044
  Example::
3410
4045
 
3411
- import aws_cdk as cdk
3412
-
3413
-
3414
4046
  canary = synthetics.Canary(self, "MyCanary",
3415
4047
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
3416
4048
  test=synthetics.Test.custom(
3417
4049
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
3418
4050
  handler="index.handler"
3419
4051
  ),
3420
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
3421
- memory=cdk.Size.mebibytes(1024)
4052
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4053
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
3422
4054
  )
3423
4055
  '''
3424
4056
 
@@ -3434,7 +4066,7 @@ class Code(
3434
4066
  deploy_time: typing.Optional[builtins.bool] = None,
3435
4067
  display_name: typing.Optional[builtins.str] = None,
3436
4068
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
3437
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
4069
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
3438
4070
  asset_hash: typing.Optional[builtins.str] = None,
3439
4071
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
3440
4072
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3484,7 +4116,7 @@ class Code(
3484
4116
  @builtins.classmethod
3485
4117
  def from_bucket(
3486
4118
  cls,
3487
- bucket: _IBucket_42e086fd,
4119
+ bucket: _IBucketRef_3debe44e,
3488
4120
  key: builtins.str,
3489
4121
  object_version: typing.Optional[builtins.str] = None,
3490
4122
  ) -> "S3Code":
@@ -3784,17 +4416,14 @@ class CustomTestOptions:
3784
4416
 
3785
4417
  Example::
3786
4418
 
3787
- import aws_cdk as cdk
3788
-
3789
-
3790
4419
  canary = synthetics.Canary(self, "MyCanary",
3791
4420
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
3792
4421
  test=synthetics.Test.custom(
3793
4422
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
3794
4423
  handler="index.handler"
3795
4424
  ),
3796
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
3797
- memory=cdk.Size.mebibytes(1024)
4425
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4426
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
3798
4427
  )
3799
4428
  '''
3800
4429
  if __debug__:
@@ -3886,6 +4515,34 @@ class InlineCode(
3886
4515
  return typing.cast(CodeConfig, jsii.invoke(self, "bind", [scope, handler, _family, _runtime_name]))
3887
4516
 
3888
4517
 
4518
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_synthetics.ResourceToReplicateTags")
4519
+ class ResourceToReplicateTags(enum.Enum):
4520
+ '''Resources that tags applied to a canary should be replicated to.
4521
+
4522
+ :exampleMetadata: infused
4523
+
4524
+ Example::
4525
+
4526
+ canary = synthetics.Canary(self, "MyCanary",
4527
+ schedule=synthetics.Schedule.rate(Duration.minutes(5)),
4528
+ test=synthetics.Test.custom(
4529
+ code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
4530
+ handler="index.handler"
4531
+ ),
4532
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4533
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
4534
+ )
4535
+ '''
4536
+
4537
+ LAMBDA_FUNCTION = "LAMBDA_FUNCTION"
4538
+ '''Replicate canary tags to the Lambda function.
4539
+
4540
+ When specified, CloudWatch Synthetics will keep the tags of the canary
4541
+ and the Lambda function synchronized. Any future changes made to the
4542
+ canary's tags will also be applied to the function.
4543
+ '''
4544
+
4545
+
3889
4546
  class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Runtime"):
3890
4547
  '''Runtime options for a canary.
3891
4548
 
@@ -3893,17 +4550,14 @@ class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Run
3893
4550
 
3894
4551
  Example::
3895
4552
 
3896
- import aws_cdk as cdk
3897
-
3898
-
3899
4553
  canary = synthetics.Canary(self, "MyCanary",
3900
4554
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
3901
4555
  test=synthetics.Test.custom(
3902
4556
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
3903
4557
  handler="index.handler"
3904
4558
  ),
3905
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
3906
- memory=cdk.Size.mebibytes(1024)
4559
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4560
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
3907
4561
  )
3908
4562
  '''
3909
4563
 
@@ -3935,6 +4589,70 @@ class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Run
3935
4589
  '''
3936
4590
  return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_NODEJS_PLAYWRIGHT_1_0"))
3937
4591
 
4592
+ @jsii.python.classproperty
4593
+ @jsii.member(jsii_name="SYNTHETICS_NODEJS_PLAYWRIGHT_2_0")
4594
+ def SYNTHETICS_NODEJS_PLAYWRIGHT_2_0(cls) -> "Runtime":
4595
+ '''``syn-nodejs-playwright-2.0`` includes the following: - Lambda runtime Node.js 20.x - Playwright version 1.49.1 - Chromium version 131.0.6778.264.
4596
+
4597
+ New Features:
4598
+
4599
+ - The mismatch between total duration and sum of timings for a given request in HAR file is fixed.
4600
+ - Supports dry runs for the canary which allows for adhoc executions or performing a safe canary update.
4601
+
4602
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_nodejs_playwright.html#Synthetics_runtimeversion-syn-nodejs-playwright-2.0
4603
+ '''
4604
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_NODEJS_PLAYWRIGHT_2_0"))
4605
+
4606
+ @jsii.python.classproperty
4607
+ @jsii.member(jsii_name="SYNTHETICS_NODEJS_PLAYWRIGHT_3_0")
4608
+ def SYNTHETICS_NODEJS_PLAYWRIGHT_3_0(cls) -> "Runtime":
4609
+ '''``syn-nodejs-playwright-2.0`` includes the following: - Lambda runtime Node.js 20.x - Playwright version 1.53.0 - Chromium version 138.0.7204.168.
4610
+
4611
+ New Features:
4612
+
4613
+ - Multi-browser support – You can now run your nodejs puppeteer canaries in either Firefox or Chrome
4614
+ - Support for visual monitoring
4615
+
4616
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_nodejs_playwright.html#Synthetics_runtimeversion-syn-nodejs-playwright-3.0
4617
+ '''
4618
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_NODEJS_PLAYWRIGHT_3_0"))
4619
+
4620
+ @jsii.python.classproperty
4621
+ @jsii.member(jsii_name="SYNTHETICS_NODEJS_PUPPETEER_10_0")
4622
+ def SYNTHETICS_NODEJS_PUPPETEER_10_0(cls) -> "Runtime":
4623
+ '''``syn-nodejs-puppeteer-10.0`` includes the following: - Lambda runtime Node.js 20.x - Puppeteer-core version 24.2.0 - Chromium version 131.0.6778.264.
4624
+
4625
+ New Features:
4626
+
4627
+ - **Bug fixes**: The bug related to closing the browser that took excessively long is fixed.
4628
+ - **Dry run**: Supports dry runs for the canary which allows for adhoc executions or performing a safe canary update.
4629
+
4630
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_nodejs_puppeteer.html#CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-10.0
4631
+ '''
4632
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_NODEJS_PUPPETEER_10_0"))
4633
+
4634
+ @jsii.python.classproperty
4635
+ @jsii.member(jsii_name="SYNTHETICS_NODEJS_PUPPETEER_11_0")
4636
+ def SYNTHETICS_NODEJS_PUPPETEER_11_0(cls) -> "Runtime":
4637
+ '''``syn-nodejs-puppeteer-11.0`` includes the following: - Lambda runtime Node.js 20.x - Puppeteer-core version 24.15.0 - Chromium version 138.0.7204.168.
4638
+
4639
+ New Features:
4640
+
4641
+ - **Multi-browser support**: You can now run Node.js Puppeteer canaries in either Firefox or Chrome
4642
+ - **Simplified packaging**: Package scripts directly under root without using the Node.js/node_modules directory structure
4643
+ - **Screenshot integration**: Capture screenshots using native Puppeteer functions to visualize canary script stages. Synthetics automatically associates screenshots with canary steps and uploads them to Amazon S3
4644
+ - **Enhanced log querying**: Query and filter logs through the CloudWatch Insights console. Each log message includes a unique canaryRunId for easier searching
4645
+ - **Configuration file support**: Define and update Synthetics settings using a synthetics.json file. This separation of configuration from script logic improves maintenance and reusability
4646
+ - **Multiple tabs support**: Create canaries that open multiple browser tabs and access screenshots from each tab. Build multi-tab and multi-step user workflows in Synthetics
4647
+ - **Security fixes**
4648
+ - **Visual monitoring bug fixes**
4649
+ - **Added support for structured JSON logging with configurable log levels**: Logs are now emitted in JSON format to enable easier parsing and querying in CloudWatch. Log level is configurable (for example, DEBUG, INFO, TRACE) through environment variables allowing users to control verbosity based on their needs
4650
+ - **Support for ES syntax**
4651
+
4652
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_nodejs_puppeteer.html#CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-11.0
4653
+ '''
4654
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_NODEJS_PUPPETEER_11_0"))
4655
+
3938
4656
  @jsii.python.classproperty
3939
4657
  @jsii.member(jsii_name="SYNTHETICS_NODEJS_PUPPETEER_3_5")
3940
4658
  def SYNTHETICS_NODEJS_PUPPETEER_3_5(cls) -> "Runtime":
@@ -4345,6 +5063,24 @@ class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Run
4345
5063
  '''
4346
5064
  return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_PYTHON_SELENIUM_5_1"))
4347
5065
 
5066
+ @jsii.python.classproperty
5067
+ @jsii.member(jsii_name="SYNTHETICS_PYTHON_SELENIUM_6_0")
5068
+ def SYNTHETICS_PYTHON_SELENIUM_6_0(cls) -> "Runtime":
5069
+ '''``syn-python-selenium-6.0`` includes the following: - Lambda runtime Python 3.11 - Selenium version 4.21.0 - Chromium version 131.0.6778.264.
5070
+
5071
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_python_selenium.html#CloudWatch_Synthetics_runtimeversion-syn-python-selenium-6.0
5072
+ '''
5073
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_PYTHON_SELENIUM_6_0"))
5074
+
5075
+ @jsii.python.classproperty
5076
+ @jsii.member(jsii_name="SYNTHETICS_PYTHON_SELENIUM_7_0")
5077
+ def SYNTHETICS_PYTHON_SELENIUM_7_0(cls) -> "Runtime":
5078
+ '''``syn-python-selenium-7.0`` includes the following: - Lambda runtime Python 3.11 - Selenium version 4.32.0 - Chromium version 138.0.7204.168.
5079
+
5080
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_python_selenium.html#CloudWatch_Synthetics_runtimeversion-syn-python-selenium-7.0
5081
+ '''
5082
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_PYTHON_SELENIUM_7_0"))
5083
+
4348
5084
  @builtins.property
4349
5085
  @jsii.member(jsii_name="family")
4350
5086
  def family(self) -> "RuntimeFamily":
@@ -4383,17 +5119,17 @@ class S3Code(
4383
5119
 
4384
5120
  # The code below shows an example of how to instantiate this type.
4385
5121
  # The values are placeholders you should change.
4386
- from aws_cdk import aws_s3 as s3
4387
5122
  from aws_cdk import aws_synthetics as synthetics
5123
+ from aws_cdk.interfaces import aws_s3 as interfaces_aws_s3
4388
5124
 
4389
- # bucket: s3.Bucket
5125
+ # bucket_ref: interfaces_aws_s3.IBucketRef
4390
5126
 
4391
- s3_code = synthetics.S3Code(bucket, "key", "objectVersion")
5127
+ s3_code = synthetics.S3Code(bucket_ref, "key", "objectVersion")
4392
5128
  '''
4393
5129
 
4394
5130
  def __init__(
4395
5131
  self,
4396
- bucket: _IBucket_42e086fd,
5132
+ bucket: _IBucketRef_3debe44e,
4397
5133
  key: builtins.str,
4398
5134
  object_version: typing.Optional[builtins.str] = None,
4399
5135
  ) -> None:
@@ -4446,11 +5182,11 @@ class Schedule(
4446
5182
  canary = synthetics.Canary(self, "MyCanary",
4447
5183
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
4448
5184
  test=synthetics.Test.custom(
4449
- code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
4450
- handler="index.handler"
5185
+ handler="canary.handler",
5186
+ code=synthetics.Code.from_asset(path.join(__dirname, "canaries"))
4451
5187
  ),
4452
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
4453
- active_tracing=True
5188
+ runtime=synthetics.Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1,
5189
+ max_retries=2
4454
5190
  )
4455
5191
  '''
4456
5192
 
@@ -4529,17 +5265,14 @@ class Test(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Test")
4529
5265
 
4530
5266
  Example::
4531
5267
 
4532
- import aws_cdk as cdk
4533
-
4534
-
4535
5268
  canary = synthetics.Canary(self, "MyCanary",
4536
5269
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
4537
5270
  test=synthetics.Test.custom(
4538
5271
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
4539
5272
  handler="index.handler"
4540
5273
  ),
4541
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
4542
- memory=cdk.Size.mebibytes(1024)
5274
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
5275
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
4543
5276
  )
4544
5277
  '''
4545
5278
 
@@ -4585,12 +5318,12 @@ class AssetCode(
4585
5318
  # The values are placeholders you should change.
4586
5319
  import aws_cdk as cdk
4587
5320
  from aws_cdk import aws_iam as iam
4588
- from aws_cdk import aws_kms as kms
4589
5321
  from aws_cdk import aws_synthetics as synthetics
5322
+ from aws_cdk.interfaces import aws_kms as interfaces_aws_kms
4590
5323
 
4591
5324
  # docker_image: cdk.DockerImage
4592
5325
  # grantable: iam.IGrantable
4593
- # key: kms.Key
5326
+ # key_ref: interfaces_aws_kms.IKeyRef
4594
5327
  # local_bundling: cdk.ILocalBundling
4595
5328
 
4596
5329
  asset_code = synthetics.AssetCode("assetPath",
@@ -4628,7 +5361,7 @@ class AssetCode(
4628
5361
  follow_symlinks=cdk.SymlinkFollowMode.NEVER,
4629
5362
  ignore_mode=cdk.IgnoreMode.GLOB,
4630
5363
  readers=[grantable],
4631
- source_kMSKey=key
5364
+ source_kMSKey=key_ref
4632
5365
  )
4633
5366
  '''
4634
5367
 
@@ -4639,7 +5372,7 @@ class AssetCode(
4639
5372
  deploy_time: typing.Optional[builtins.bool] = None,
4640
5373
  display_name: typing.Optional[builtins.str] = None,
4641
5374
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
4642
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
5375
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
4643
5376
  asset_hash: typing.Optional[builtins.str] = None,
4644
5377
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
4645
5378
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4706,6 +5439,7 @@ __all__ = [
4706
5439
  "ArtifactsBucketLocation",
4707
5440
  "ArtifactsEncryptionMode",
4708
5441
  "AssetCode",
5442
+ "BrowserType",
4709
5443
  "Canary",
4710
5444
  "CanaryProps",
4711
5445
  "CfnCanary",
@@ -4718,6 +5452,7 @@ __all__ = [
4718
5452
  "CronOptions",
4719
5453
  "CustomTestOptions",
4720
5454
  "InlineCode",
5455
+ "ResourceToReplicateTags",
4721
5456
  "Runtime",
4722
5457
  "RuntimeFamily",
4723
5458
  "S3Code",
@@ -4746,12 +5481,16 @@ def _typecheckingstub__b3b6d76e5f93e31884e16cc00a9b4fc93e6782ff7db09c74aa1ef9346
4746
5481
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
4747
5482
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
4748
5483
  artifacts_bucket_location: typing.Optional[typing.Union[ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
5484
+ browser_configs: typing.Optional[typing.Sequence[BrowserType]] = None,
4749
5485
  canary_name: typing.Optional[builtins.str] = None,
4750
5486
  cleanup: typing.Optional[Cleanup] = None,
5487
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
4751
5488
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4752
5489
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
5490
+ max_retries: typing.Optional[jsii.Number] = None,
4753
5491
  memory: typing.Optional[_Size_7b441c34] = None,
4754
5492
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
5493
+ resources_to_replicate_tags: typing.Optional[typing.Sequence[ResourceToReplicateTags]] = None,
4755
5494
  role: typing.Optional[_IRole_235f5d8e] = None,
4756
5495
  schedule: typing.Optional[Schedule] = None,
4757
5496
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -4774,12 +5513,16 @@ def _typecheckingstub__44ec0b14d52b66927d4daebe6f97bb070f3629bb0eb86e21668ca7862
4774
5513
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
4775
5514
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
4776
5515
  artifacts_bucket_location: typing.Optional[typing.Union[ArtifactsBucketLocation, typing.Dict[builtins.str, typing.Any]]] = None,
5516
+ browser_configs: typing.Optional[typing.Sequence[BrowserType]] = None,
4777
5517
  canary_name: typing.Optional[builtins.str] = None,
4778
5518
  cleanup: typing.Optional[Cleanup] = None,
5519
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
4779
5520
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4780
5521
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
5522
+ max_retries: typing.Optional[jsii.Number] = None,
4781
5523
  memory: typing.Optional[_Size_7b441c34] = None,
4782
5524
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
5525
+ resources_to_replicate_tags: typing.Optional[typing.Sequence[ResourceToReplicateTags]] = None,
4783
5526
  role: typing.Optional[_IRole_235f5d8e] = None,
4784
5527
  schedule: typing.Optional[Schedule] = None,
4785
5528
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -4804,6 +5547,7 @@ def _typecheckingstub__b8fcb3f48eca9399b4d1d31a5ef709e22f9fa52ad1e174b75d8313ef2
4804
5547
  runtime_version: builtins.str,
4805
5548
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ScheduleProperty, typing.Dict[builtins.str, typing.Any]]],
4806
5549
  artifact_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ArtifactConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
5550
+ browser_configs: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.BrowserConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
4807
5551
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4808
5552
  dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4809
5553
  failure_retention_period: typing.Optional[jsii.Number] = None,
@@ -4814,11 +5558,20 @@ def _typecheckingstub__b8fcb3f48eca9399b4d1d31a5ef709e22f9fa52ad1e174b75d8313ef2
4814
5558
  success_retention_period: typing.Optional[jsii.Number] = None,
4815
5559
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
4816
5560
  visual_reference: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VisualReferenceProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
5561
+ visual_references: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VisualReferenceProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
4817
5562
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VPCConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4818
5563
  ) -> None:
4819
5564
  """Type checking stubs"""
4820
5565
  pass
4821
5566
 
5567
+ def _typecheckingstub__a9ea9a4c62ed507734c1656b5b5b9ece24a5a15e32aa598350d8dcba80710c99(
5568
+ scope: _constructs_77d1e7e8.Construct,
5569
+ id: builtins.str,
5570
+ canary_name: builtins.str,
5571
+ ) -> None:
5572
+ """Type checking stubs"""
5573
+ pass
5574
+
4822
5575
  def _typecheckingstub__bc166bab0fcf177897c1dbb233203e39458428064bc6ff7215b01b2b3ec6f3a2(
4823
5576
  inspector: _TreeInspector_488e0dd5,
4824
5577
  ) -> None:
@@ -4873,6 +5626,12 @@ def _typecheckingstub__5946ee35eff32e4581a6d2e3e0c69d62cdc3c17f079123211f7251bc1
4873
5626
  """Type checking stubs"""
4874
5627
  pass
4875
5628
 
5629
+ def _typecheckingstub__91233a90f3d4d918352b4597b2dee50c3da02176501744c2dc696dbd8a735b68(
5630
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCanary.BrowserConfigProperty]]]],
5631
+ ) -> None:
5632
+ """Type checking stubs"""
5633
+ pass
5634
+
4876
5635
  def _typecheckingstub__442577c2c36e4274dca25b3d866e1aeec3f4ffc18732e01050131a31f768f2b3(
4877
5636
  value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
4878
5637
  ) -> None:
@@ -4933,6 +5692,12 @@ def _typecheckingstub__21e93a70969fa03a3f0aa85f6b1615a26d9a0afef8a0cf27f0888fc59
4933
5692
  """Type checking stubs"""
4934
5693
  pass
4935
5694
 
5695
+ def _typecheckingstub__004341f5a58c9e6e190c4bc518ea476aac62201a1708bb1650a22fbf74c64b52(
5696
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]]]],
5697
+ ) -> None:
5698
+ """Type checking stubs"""
5699
+ pass
5700
+
4936
5701
  def _typecheckingstub__be63ed6816e3043aef63f6e7c0d0dfcc35f1249735acd4eff8530f8c2253b747(
4937
5702
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.VPCConfigProperty]],
4938
5703
  ) -> None:
@@ -4954,9 +5719,18 @@ def _typecheckingstub__8d401a2416919aef18322e23fb875fc37ad8f90f34f8f5708a245f22f
4954
5719
  """Type checking stubs"""
4955
5720
  pass
4956
5721
 
5722
+ def _typecheckingstub__c91e35c3c240434fee052d7f899893609a9c027813412eb6312483e200412435(
5723
+ *,
5724
+ browser_type: builtins.str,
5725
+ ) -> None:
5726
+ """Type checking stubs"""
5727
+ pass
5728
+
4957
5729
  def _typecheckingstub__3d403372a613babc1ab10717d050ec9a7f4055961f3545f2d0600d89c7b3dcc3(
4958
5730
  *,
4959
- handler: builtins.str,
5731
+ blueprint_types: typing.Optional[typing.Sequence[builtins.str]] = None,
5732
+ dependencies: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.DependencyProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
5733
+ handler: typing.Optional[builtins.str] = None,
4960
5734
  s3_bucket: typing.Optional[builtins.str] = None,
4961
5735
  s3_key: typing.Optional[builtins.str] = None,
4962
5736
  s3_object_version: typing.Optional[builtins.str] = None,
@@ -4966,6 +5740,14 @@ def _typecheckingstub__3d403372a613babc1ab10717d050ec9a7f4055961f3545f2d0600d89c
4966
5740
  """Type checking stubs"""
4967
5741
  pass
4968
5742
 
5743
+ def _typecheckingstub__02338e317b0b84f714774aabea98599cd96fe9cff23790733ad426e75f9984f4(
5744
+ *,
5745
+ reference: builtins.str,
5746
+ type: typing.Optional[builtins.str] = None,
5747
+ ) -> None:
5748
+ """Type checking stubs"""
5749
+ pass
5750
+
4969
5751
  def _typecheckingstub__e7a2c989ca2c701e49af0e8032c8c49bb52546c68c9e6359df8e7a9f2c4cf9a1(
4970
5752
  *,
4971
5753
  max_retries: jsii.Number,
@@ -4977,6 +5759,7 @@ def _typecheckingstub__fa148862e82948accbbe951e7afcee721aa7014754c81106d2648fe1c
4977
5759
  *,
4978
5760
  active_tracing: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4979
5761
  environment_variables: typing.Optional[typing.Union[typing.Mapping[builtins.str, builtins.str], _IResolvable_da3f097b]] = None,
5762
+ ephemeral_storage: typing.Optional[jsii.Number] = None,
4980
5763
  memory_in_mb: typing.Optional[jsii.Number] = None,
4981
5764
  timeout_in_seconds: typing.Optional[jsii.Number] = None,
4982
5765
  ) -> None:
@@ -5014,6 +5797,7 @@ def _typecheckingstub__f52b6b7318141dc99f6bd36c21b91cda286b67d7dea805791a6132a2c
5014
5797
  *,
5015
5798
  base_canary_run_id: builtins.str,
5016
5799
  base_screenshots: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.BaseScreenshotProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
5800
+ browser_type: typing.Optional[builtins.str] = None,
5017
5801
  ) -> None:
5018
5802
  """Type checking stubs"""
5019
5803
  pass
@@ -5027,6 +5811,7 @@ def _typecheckingstub__d869d56ce0d1d2e2add2f80bf39b28abbec2752c719e03194ee540bf1
5027
5811
  runtime_version: builtins.str,
5028
5812
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ScheduleProperty, typing.Dict[builtins.str, typing.Any]]],
5029
5813
  artifact_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ArtifactConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
5814
+ browser_configs: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.BrowserConfigProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
5030
5815
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5031
5816
  dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5032
5817
  failure_retention_period: typing.Optional[jsii.Number] = None,
@@ -5037,6 +5822,7 @@ def _typecheckingstub__d869d56ce0d1d2e2add2f80bf39b28abbec2752c719e03194ee540bf1
5037
5822
  success_retention_period: typing.Optional[jsii.Number] = None,
5038
5823
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
5039
5824
  visual_reference: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VisualReferenceProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
5825
+ visual_references: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Sequence[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VisualReferenceProperty, typing.Dict[builtins.str, typing.Any]]]]]] = None,
5040
5826
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VPCConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
5041
5827
  ) -> None:
5042
5828
  """Type checking stubs"""
@@ -5098,7 +5884,7 @@ def _typecheckingstub__02201c2190b076bbceced8708b435fab8189f7f505650002941cc7a50
5098
5884
  deploy_time: typing.Optional[builtins.bool] = None,
5099
5885
  display_name: typing.Optional[builtins.str] = None,
5100
5886
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
5101
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
5887
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
5102
5888
  asset_hash: typing.Optional[builtins.str] = None,
5103
5889
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
5104
5890
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -5110,7 +5896,7 @@ def _typecheckingstub__02201c2190b076bbceced8708b435fab8189f7f505650002941cc7a50
5110
5896
  pass
5111
5897
 
5112
5898
  def _typecheckingstub__449747bf42ca4f0c5864a72ad8bd3bcd8b8dedef173ae2e8a54e213a343068a6(
5113
- bucket: _IBucket_42e086fd,
5899
+ bucket: _IBucketRef_3debe44e,
5114
5900
  key: builtins.str,
5115
5901
  object_version: typing.Optional[builtins.str] = None,
5116
5902
  ) -> None:
@@ -5182,7 +5968,7 @@ def _typecheckingstub__ba23a2bd20fc9334e4b0fac6e1c104de0f53b4ec265cf53ef1a80ad25
5182
5968
  pass
5183
5969
 
5184
5970
  def _typecheckingstub__94d1b4f54d462b3f798f1b900a1b75b486a8dc3f4f14650931bf7631ce93a5bd(
5185
- bucket: _IBucket_42e086fd,
5971
+ bucket: _IBucketRef_3debe44e,
5186
5972
  key: builtins.str,
5187
5973
  object_version: typing.Optional[builtins.str] = None,
5188
5974
  ) -> None:
@@ -5216,7 +6002,7 @@ def _typecheckingstub__60a29a536d66536254f2ca409a65dc32f30e483b29091222d42f32106
5216
6002
  deploy_time: typing.Optional[builtins.bool] = None,
5217
6003
  display_name: typing.Optional[builtins.str] = None,
5218
6004
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
5219
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
6005
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
5220
6006
  asset_hash: typing.Optional[builtins.str] = None,
5221
6007
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
5222
6008
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,