aws-cdk-lib 2.195.0__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 (572) hide show
  1. aws_cdk/__init__.py +1806 -417
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.195.0.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 +1245 -215
  12. aws_cdk/aws_apigatewayv2/__init__.py +3890 -476
  13. aws_cdk/aws_apigatewayv2_integrations/__init__.py +94 -16
  14. aws_cdk/aws_appconfig/__init__.py +618 -91
  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 +75 -10
  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 +136 -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 +350 -94
  24. aws_cdk/aws_apptest/__init__.py +71 -2
  25. aws_cdk/aws_aps/__init__.py +2188 -94
  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 +165 -60
  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 +370 -42
  35. aws_cdk/aws_backupgateway/__init__.py +13 -2
  36. aws_cdk/aws_batch/__init__.py +1462 -163
  37. aws_cdk/aws_bcmdataexports/__init__.py +21 -2
  38. aws_cdk/aws_bedrock/__init__.py +7867 -727
  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 +611 -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 +258 -32
  45. aws_cdk/aws_chatbot/__init__.py +76 -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 +362 -189
  50. aws_cdk/aws_cloudfront/__init__.py +2188 -674
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +114 -16
  52. aws_cdk/aws_cloudfront_origins/__init__.py +615 -74
  53. aws_cdk/aws_cloudtrail/__init__.py +311 -21
  54. aws_cdk/aws_cloudwatch/__init__.py +3093 -1038
  55. aws_cdk/aws_cloudwatch_actions/__init__.py +75 -1
  56. aws_cdk/aws_codeartifact/__init__.py +35 -6
  57. aws_cdk/aws_codebuild/__init__.py +1303 -135
  58. aws_cdk/aws_codecommit/__init__.py +29 -9
  59. aws_cdk/aws_codeconnections/__init__.py +13 -2
  60. aws_cdk/aws_codedeploy/__init__.py +130 -6
  61. aws_cdk/aws_codeguruprofiler/__init__.py +80 -2
  62. aws_cdk/aws_codegurureviewer/__init__.py +13 -2
  63. aws_cdk/aws_codepipeline/__init__.py +177 -71
  64. aws_cdk/aws_codepipeline_actions/__init__.py +753 -4
  65. aws_cdk/aws_codestar/__init__.py +13 -2
  66. aws_cdk/aws_codestarconnections/__init__.py +35 -6
  67. aws_cdk/aws_codestarnotifications/__init__.py +22 -2
  68. aws_cdk/aws_cognito/__init__.py +905 -92
  69. aws_cdk/aws_cognito_identitypool/__init__.py +23 -12
  70. aws_cdk/aws_comprehend/__init__.py +24 -4
  71. aws_cdk/aws_config/__init__.py +227 -30
  72. aws_cdk/aws_connect/__init__.py +2736 -191
  73. aws_cdk/aws_connectcampaigns/__init__.py +13 -2
  74. aws_cdk/aws_connectcampaignsv2/__init__.py +268 -6
  75. aws_cdk/aws_controltower/__init__.py +35 -6
  76. aws_cdk/aws_cur/__init__.py +100 -4
  77. aws_cdk/aws_customerprofiles/__init__.py +617 -27
  78. aws_cdk/aws_databrew/__init__.py +68 -12
  79. aws_cdk/aws_datapipeline/__init__.py +42 -2
  80. aws_cdk/aws_datasync/__init__.py +1514 -977
  81. aws_cdk/aws_datazone/__init__.py +7426 -1763
  82. aws_cdk/aws_dax/__init__.py +83 -6
  83. aws_cdk/aws_deadline/__init__.py +511 -36
  84. aws_cdk/aws_detective/__init__.py +35 -6
  85. aws_cdk/aws_devicefarm/__init__.py +68 -12
  86. aws_cdk/aws_devopsguru/__init__.py +37 -6
  87. aws_cdk/aws_directoryservice/__init__.py +53 -4
  88. aws_cdk/aws_dlm/__init__.py +13 -2
  89. aws_cdk/aws_dms/__init__.py +184 -27
  90. aws_cdk/aws_docdb/__init__.py +350 -49
  91. aws_cdk/aws_docdbelastic/__init__.py +13 -2
  92. aws_cdk/aws_dsql/__init__.py +386 -16
  93. aws_cdk/aws_dynamodb/__init__.py +1479 -170
  94. aws_cdk/aws_ec2/__init__.py +10465 -1335
  95. aws_cdk/aws_ecr/__init__.py +637 -43
  96. aws_cdk/aws_ecr_assets/__init__.py +10 -0
  97. aws_cdk/aws_ecs/__init__.py +6629 -490
  98. aws_cdk/aws_ecs_patterns/__init__.py +124 -12
  99. aws_cdk/aws_efs/__init__.py +276 -24
  100. aws_cdk/aws_eks/__init__.py +1132 -227
  101. aws_cdk/aws_elasticache/__init__.py +378 -25
  102. aws_cdk/aws_elasticbeanstalk/__init__.py +75 -8
  103. aws_cdk/aws_elasticloadbalancing/__init__.py +22 -2
  104. aws_cdk/aws_elasticloadbalancingv2/__init__.py +1796 -123
  105. aws_cdk/aws_elasticsearch/__init__.py +291 -9
  106. aws_cdk/aws_emr/__init__.py +219 -18
  107. aws_cdk/aws_emrcontainers/__init__.py +71 -2
  108. aws_cdk/aws_emrserverless/__init__.py +188 -3
  109. aws_cdk/aws_entityresolution/__init__.py +585 -58
  110. aws_cdk/aws_events/__init__.py +1007 -126
  111. aws_cdk/aws_events_targets/__init__.py +398 -65
  112. aws_cdk/aws_eventschemas/__init__.py +46 -8
  113. aws_cdk/aws_evidently/__init__.py +57 -10
  114. aws_cdk/aws_evs/__init__.py +2244 -0
  115. aws_cdk/aws_finspace/__init__.py +71 -2
  116. aws_cdk/aws_fis/__init__.py +26 -4
  117. aws_cdk/aws_fms/__init__.py +35 -6
  118. aws_cdk/aws_forecast/__init__.py +24 -4
  119. aws_cdk/aws_frauddetector/__init__.py +79 -14
  120. aws_cdk/aws_fsx/__init__.py +1349 -127
  121. aws_cdk/aws_gamelift/__init__.py +755 -94
  122. aws_cdk/aws_gameliftstreams/__init__.py +44 -22
  123. aws_cdk/aws_globalaccelerator/__init__.py +73 -14
  124. aws_cdk/aws_glue/__init__.py +1455 -378
  125. aws_cdk/aws_grafana/__init__.py +13 -2
  126. aws_cdk/aws_greengrass/__init__.py +654 -32
  127. aws_cdk/aws_greengrassv2/__init__.py +53 -4
  128. aws_cdk/aws_groundstation/__init__.py +122 -6
  129. aws_cdk/aws_guardduty/__init__.py +1613 -123
  130. aws_cdk/aws_healthimaging/__init__.py +71 -2
  131. aws_cdk/aws_healthlake/__init__.py +42 -2
  132. aws_cdk/aws_iam/__init__.py +921 -141
  133. aws_cdk/aws_identitystore/__init__.py +24 -4
  134. aws_cdk/aws_imagebuilder/__init__.py +1454 -199
  135. aws_cdk/aws_inspector/__init__.py +44 -6
  136. aws_cdk/aws_inspectorv2/__init__.py +2285 -243
  137. aws_cdk/aws_internetmonitor/__init__.py +71 -2
  138. aws_cdk/aws_invoicing/__init__.py +13 -2
  139. aws_cdk/aws_iot/__init__.py +1760 -64
  140. aws_cdk/aws_iotanalytics/__init__.py +162 -8
  141. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +106 -40
  142. aws_cdk/aws_iotevents/__init__.py +122 -6
  143. aws_cdk/aws_iotfleethub/__init__.py +71 -2
  144. aws_cdk/aws_iotfleetwise/__init__.py +195 -14
  145. aws_cdk/aws_iotsitewise/__init__.py +1837 -89
  146. aws_cdk/aws_iotthingsgraph/__init__.py +13 -2
  147. aws_cdk/aws_iottwinmaker/__init__.py +115 -10
  148. aws_cdk/aws_iotwireless/__init__.py +649 -22
  149. aws_cdk/aws_ivs/__init__.py +561 -57
  150. aws_cdk/aws_ivschat/__init__.py +24 -4
  151. aws_cdk/aws_kafkaconnect/__init__.py +35 -6
  152. aws_cdk/aws_kendra/__init__.py +120 -28
  153. aws_cdk/aws_kendraranking/__init__.py +13 -2
  154. aws_cdk/aws_kinesis/__init__.py +641 -23
  155. aws_cdk/aws_kinesisanalytics/__init__.py +467 -96
  156. aws_cdk/aws_kinesisanalyticsv2/__init__.py +207 -19
  157. aws_cdk/aws_kinesisfirehose/__init__.py +3087 -295
  158. aws_cdk/aws_kinesisvideo/__init__.py +24 -4
  159. aws_cdk/aws_kms/__init__.py +204 -45
  160. aws_cdk/aws_lakeformation/__init__.py +80 -15
  161. aws_cdk/aws_lambda/__init__.py +2236 -297
  162. aws_cdk/aws_lambda_event_sources/__init__.py +638 -1
  163. aws_cdk/aws_lambda_nodejs/__init__.py +63 -24
  164. aws_cdk/aws_launchwizard/__init__.py +13 -2
  165. aws_cdk/aws_lex/__init__.py +2162 -212
  166. aws_cdk/aws_licensemanager/__init__.py +24 -4
  167. aws_cdk/aws_lightsail/__init__.py +2958 -1322
  168. aws_cdk/aws_location/__init__.py +618 -14
  169. aws_cdk/aws_logs/__init__.py +6014 -923
  170. aws_cdk/aws_lookoutequipment/__init__.py +13 -2
  171. aws_cdk/aws_lookoutmetrics/__init__.py +38 -6
  172. aws_cdk/aws_lookoutvision/__init__.py +71 -2
  173. aws_cdk/aws_m2/__init__.py +94 -19
  174. aws_cdk/aws_macie/__init__.py +49 -11
  175. aws_cdk/aws_managedblockchain/__init__.py +180 -6
  176. aws_cdk/aws_mediaconnect/__init__.py +101 -18
  177. aws_cdk/aws_mediaconvert/__init__.py +35 -6
  178. aws_cdk/aws_medialive/__init__.py +1938 -532
  179. aws_cdk/aws_mediapackage/__init__.py +59 -12
  180. aws_cdk/aws_mediapackagev2/__init__.py +1616 -233
  181. aws_cdk/aws_mediastore/__init__.py +13 -2
  182. aws_cdk/aws_mediatailor/__init__.py +583 -12
  183. aws_cdk/aws_memorydb/__init__.py +271 -12
  184. aws_cdk/aws_mpa/__init__.py +1495 -0
  185. aws_cdk/aws_msk/__init__.py +108 -22
  186. aws_cdk/aws_mwaa/__init__.py +121 -9
  187. aws_cdk/aws_neptune/__init__.py +290 -78
  188. aws_cdk/aws_neptunegraph/__init__.py +24 -4
  189. aws_cdk/aws_networkfirewall/__init__.py +1184 -164
  190. aws_cdk/aws_networkmanager/__init__.py +349 -33
  191. aws_cdk/aws_nimblestudio/__init__.py +283 -408
  192. aws_cdk/aws_notifications/__init__.py +317 -12
  193. aws_cdk/aws_notificationscontacts/__init__.py +13 -2
  194. aws_cdk/aws_oam/__init__.py +24 -4
  195. aws_cdk/aws_observabilityadmin/__init__.py +2561 -0
  196. aws_cdk/aws_odb/__init__.py +5872 -0
  197. aws_cdk/aws_omics/__init__.py +2967 -162
  198. aws_cdk/aws_opensearchserverless/__init__.py +312 -37
  199. aws_cdk/aws_opensearchservice/__init__.py +501 -19
  200. aws_cdk/aws_opsworks/__init__.py +235 -139
  201. aws_cdk/aws_opsworkscm/__init__.py +16 -52
  202. aws_cdk/aws_organizations/__init__.py +70 -10
  203. aws_cdk/aws_osis/__init__.py +167 -2
  204. aws_cdk/aws_panorama/__init__.py +181 -9
  205. aws_cdk/aws_paymentcryptography/__init__.py +24 -4
  206. aws_cdk/aws_pcaconnectorad/__init__.py +59 -10
  207. aws_cdk/aws_pcaconnectorscep/__init__.py +24 -4
  208. aws_cdk/aws_pcs/__init__.py +516 -64
  209. aws_cdk/aws_personalize/__init__.py +46 -8
  210. aws_cdk/aws_pinpoint/__init__.py +329 -38
  211. aws_cdk/aws_pinpointemail/__init__.py +48 -8
  212. aws_cdk/aws_pipes/__init__.py +12 -2
  213. aws_cdk/aws_proton/__init__.py +37 -6
  214. aws_cdk/aws_qbusiness/__init__.py +635 -34
  215. aws_cdk/aws_qldb/__init__.py +24 -4
  216. aws_cdk/aws_quicksight/__init__.py +7900 -1160
  217. aws_cdk/aws_ram/__init__.py +24 -4
  218. aws_cdk/aws_rbin/__init__.py +12 -2
  219. aws_cdk/aws_rds/__init__.py +3721 -573
  220. aws_cdk/aws_redshift/__init__.py +143 -20
  221. aws_cdk/aws_redshiftserverless/__init__.py +699 -11
  222. aws_cdk/aws_refactorspaces/__init__.py +64 -14
  223. aws_cdk/aws_rekognition/__init__.py +93 -6
  224. aws_cdk/aws_resiliencehub/__init__.py +24 -4
  225. aws_cdk/aws_resourceexplorer2/__init__.py +35 -6
  226. aws_cdk/aws_resourcegroups/__init__.py +82 -4
  227. aws_cdk/aws_robomaker/__init__.py +72 -12
  228. aws_cdk/aws_rolesanywhere/__init__.py +194 -19
  229. aws_cdk/aws_route53/__init__.py +3965 -1436
  230. aws_cdk/aws_route53_targets/__init__.py +3 -0
  231. aws_cdk/aws_route53profiles/__init__.py +37 -6
  232. aws_cdk/aws_route53recoverycontrol/__init__.py +46 -8
  233. aws_cdk/aws_route53recoveryreadiness/__init__.py +104 -8
  234. aws_cdk/aws_route53resolver/__init__.py +189 -40
  235. aws_cdk/aws_rtbfabric/__init__.py +3498 -0
  236. aws_cdk/aws_rum/__init__.py +13 -2
  237. aws_cdk/aws_s3/__init__.py +1742 -221
  238. aws_cdk/aws_s3_assets/__init__.py +11 -11
  239. aws_cdk/aws_s3_deployment/__init__.py +153 -11
  240. aws_cdk/aws_s3_notifications/__init__.py +7 -7
  241. aws_cdk/aws_s3express/__init__.py +1053 -6
  242. aws_cdk/aws_s3objectlambda/__init__.py +68 -16
  243. aws_cdk/aws_s3outposts/__init__.py +46 -8
  244. aws_cdk/aws_s3tables/__init__.py +2000 -323
  245. aws_cdk/aws_s3vectors/__init__.py +1378 -0
  246. aws_cdk/aws_sagemaker/__init__.py +6848 -373
  247. aws_cdk/aws_sam/__init__.py +79 -14
  248. aws_cdk/aws_scheduler/__init__.py +249 -4
  249. aws_cdk/aws_sdb/__init__.py +12 -2
  250. aws_cdk/aws_secretsmanager/__init__.py +194 -14
  251. aws_cdk/aws_securityhub/__init__.py +3121 -176
  252. aws_cdk/aws_securitylake/__init__.py +46 -8
  253. aws_cdk/aws_servicecatalog/__init__.py +429 -246
  254. aws_cdk/aws_servicecatalogappregistry/__init__.py +164 -8
  255. aws_cdk/aws_servicediscovery/__init__.py +188 -47
  256. aws_cdk/aws_ses/__init__.py +2265 -369
  257. aws_cdk/aws_shield/__init__.py +46 -8
  258. aws_cdk/aws_signer/__init__.py +33 -4
  259. aws_cdk/aws_simspaceweaver/__init__.py +42 -2
  260. aws_cdk/aws_smsvoice/__init__.py +4716 -0
  261. aws_cdk/aws_sns/__init__.py +263 -29
  262. aws_cdk/aws_sns_subscriptions/__init__.py +265 -2
  263. aws_cdk/aws_sqs/__init__.py +223 -14
  264. aws_cdk/aws_ssm/__init__.py +413 -58
  265. aws_cdk/aws_ssmcontacts/__init__.py +98 -9
  266. aws_cdk/aws_ssmguiconnect/__init__.py +20 -9
  267. aws_cdk/aws_ssmincidents/__init__.py +24 -4
  268. aws_cdk/aws_ssmquicksetup/__init__.py +393 -8
  269. aws_cdk/aws_sso/__init__.py +70 -12
  270. aws_cdk/aws_stepfunctions/__init__.py +823 -94
  271. aws_cdk/aws_stepfunctions_tasks/__init__.py +2323 -150
  272. aws_cdk/aws_supportapp/__init__.py +39 -6
  273. aws_cdk/aws_synthetics/__init__.py +1088 -126
  274. aws_cdk/aws_systemsmanagersap/__init__.py +13 -2
  275. aws_cdk/aws_timestream/__init__.py +104 -8
  276. aws_cdk/aws_transfer/__init__.py +784 -87
  277. aws_cdk/aws_verifiedpermissions/__init__.py +306 -13
  278. aws_cdk/aws_voiceid/__init__.py +54 -5
  279. aws_cdk/aws_vpclattice/__init__.py +589 -231
  280. aws_cdk/aws_waf/__init__.py +79 -14
  281. aws_cdk/aws_wafregional/__init__.py +123 -22
  282. aws_cdk/aws_wafv2/__init__.py +1183 -64
  283. aws_cdk/aws_wisdom/__init__.py +1403 -90
  284. aws_cdk/aws_workspaces/__init__.py +134 -6
  285. aws_cdk/aws_workspacesinstances/__init__.py +3940 -0
  286. aws_cdk/aws_workspacesthinclient/__init__.py +79 -10
  287. aws_cdk/aws_workspacesweb/__init__.py +1057 -141
  288. aws_cdk/aws_xray/__init__.py +48 -8
  289. aws_cdk/cloud_assembly_schema/__init__.py +368 -48
  290. aws_cdk/custom_resources/__init__.py +58 -12
  291. aws_cdk/cx_api/__init__.py +125 -21
  292. aws_cdk/interfaces/__init__.py +739 -0
  293. aws_cdk/interfaces/alexa_ask/__init__.py +146 -0
  294. aws_cdk/interfaces/aws_accessanalyzer/__init__.py +146 -0
  295. aws_cdk/interfaces/aws_acmpca/__init__.py +501 -0
  296. aws_cdk/interfaces/aws_aiops/__init__.py +146 -0
  297. aws_cdk/interfaces/aws_amazonmq/__init__.py +386 -0
  298. aws_cdk/interfaces/aws_amplify/__init__.py +352 -0
  299. aws_cdk/interfaces/aws_amplifyuibuilder/__init__.py +454 -0
  300. aws_cdk/interfaces/aws_apigateway/__init__.py +2486 -0
  301. aws_cdk/interfaces/aws_apigatewayv2/__init__.py +1651 -0
  302. aws_cdk/interfaces/aws_appconfig/__init__.py +1020 -0
  303. aws_cdk/interfaces/aws_appflow/__init__.py +404 -0
  304. aws_cdk/interfaces/aws_appintegrations/__init__.py +396 -0
  305. aws_cdk/interfaces/aws_applicationautoscaling/__init__.py +307 -0
  306. aws_cdk/interfaces/aws_applicationinsights/__init__.py +148 -0
  307. aws_cdk/interfaces/aws_applicationsignals/__init__.py +358 -0
  308. aws_cdk/interfaces/aws_appmesh/__init__.py +888 -0
  309. aws_cdk/interfaces/aws_apprunner/__init__.py +564 -0
  310. aws_cdk/interfaces/aws_appstream/__init__.py +1482 -0
  311. aws_cdk/interfaces/aws_appsync/__init__.py +1326 -0
  312. aws_cdk/interfaces/aws_apptest/__init__.py +163 -0
  313. aws_cdk/interfaces/aws_aps/__init__.py +558 -0
  314. aws_cdk/interfaces/aws_arcregionswitch/__init__.py +146 -0
  315. aws_cdk/interfaces/aws_arczonalshift/__init__.py +273 -0
  316. aws_cdk/interfaces/aws_athena/__init__.py +575 -0
  317. aws_cdk/interfaces/aws_auditmanager/__init__.py +163 -0
  318. aws_cdk/interfaces/aws_autoscaling/__init__.py +705 -0
  319. aws_cdk/interfaces/aws_autoscalingplans/__init__.py +148 -0
  320. aws_cdk/interfaces/aws_b2bi/__init__.py +524 -0
  321. aws_cdk/interfaces/aws_backup/__init__.py +955 -0
  322. aws_cdk/interfaces/aws_backupgateway/__init__.py +146 -0
  323. aws_cdk/interfaces/aws_batch/__init__.py +681 -0
  324. aws_cdk/interfaces/aws_bcmdataexports/__init__.py +146 -0
  325. aws_cdk/interfaces/aws_bedrock/__init__.py +1942 -0
  326. aws_cdk/interfaces/aws_bedrockagentcore/__init__.py +934 -0
  327. aws_cdk/interfaces/aws_billing/__init__.py +146 -0
  328. aws_cdk/interfaces/aws_billingconductor/__init__.py +463 -0
  329. aws_cdk/interfaces/aws_budgets/__init__.py +261 -0
  330. aws_cdk/interfaces/aws_cassandra/__init__.py +381 -0
  331. aws_cdk/interfaces/aws_ce/__init__.py +352 -0
  332. aws_cdk/interfaces/aws_certificatemanager/__init__.py +251 -0
  333. aws_cdk/interfaces/aws_chatbot/__init__.py +366 -0
  334. aws_cdk/interfaces/aws_cleanrooms/__init__.py +1103 -0
  335. aws_cdk/interfaces/aws_cleanroomsml/__init__.py +148 -0
  336. aws_cdk/interfaces/aws_cloud9/__init__.py +166 -0
  337. aws_cdk/interfaces/aws_cloudformation/__init__.py +1919 -0
  338. aws_cdk/interfaces/aws_cloudfront/__init__.py +1998 -0
  339. aws_cdk/interfaces/aws_cloudtrail/__init__.py +570 -0
  340. aws_cdk/interfaces/aws_cloudwatch/__init__.py +733 -0
  341. aws_cdk/interfaces/aws_codeartifact/__init__.py +352 -0
  342. aws_cdk/interfaces/aws_codebuild/__init__.py +487 -0
  343. aws_cdk/interfaces/aws_codecommit/__init__.py +163 -0
  344. aws_cdk/interfaces/aws_codeconnections/__init__.py +146 -0
  345. aws_cdk/interfaces/aws_codedeploy/__init__.py +352 -0
  346. aws_cdk/interfaces/aws_codeguruprofiler/__init__.py +168 -0
  347. aws_cdk/interfaces/aws_codegurureviewer/__init__.py +148 -0
  348. aws_cdk/interfaces/aws_codepipeline/__init__.py +388 -0
  349. aws_cdk/interfaces/aws_codestar/__init__.py +146 -0
  350. aws_cdk/interfaces/aws_codestarconnections/__init__.py +370 -0
  351. aws_cdk/interfaces/aws_codestarnotifications/__init__.py +148 -0
  352. aws_cdk/interfaces/aws_cognito/__init__.py +1929 -0
  353. aws_cdk/interfaces/aws_comprehend/__init__.py +251 -0
  354. aws_cdk/interfaces/aws_config/__init__.py +1165 -0
  355. aws_cdk/interfaces/aws_connect/__init__.py +2949 -0
  356. aws_cdk/interfaces/aws_connectcampaigns/__init__.py +146 -0
  357. aws_cdk/interfaces/aws_connectcampaignsv2/__init__.py +146 -0
  358. aws_cdk/interfaces/aws_controltower/__init__.py +394 -0
  359. aws_cdk/interfaces/aws_cur/__init__.py +146 -0
  360. aws_cdk/interfaces/aws_customerprofiles/__init__.py +915 -0
  361. aws_cdk/interfaces/aws_databrew/__init__.py +661 -0
  362. aws_cdk/interfaces/aws_datapipeline/__init__.py +146 -0
  363. aws_cdk/interfaces/aws_datasync/__init__.py +1384 -0
  364. aws_cdk/interfaces/aws_datazone/__init__.py +2238 -0
  365. aws_cdk/interfaces/aws_dax/__init__.py +364 -0
  366. aws_cdk/interfaces/aws_deadline/__init__.py +1303 -0
  367. aws_cdk/interfaces/aws_detective/__init__.py +364 -0
  368. aws_cdk/interfaces/aws_devicefarm/__init__.py +663 -0
  369. aws_cdk/interfaces/aws_devopsguru/__init__.py +362 -0
  370. aws_cdk/interfaces/aws_directoryservice/__init__.py +251 -0
  371. aws_cdk/interfaces/aws_dlm/__init__.py +166 -0
  372. aws_cdk/interfaces/aws_dms/__init__.py +1176 -0
  373. aws_cdk/interfaces/aws_docdb/__init__.py +560 -0
  374. aws_cdk/interfaces/aws_docdbelastic/__init__.py +146 -0
  375. aws_cdk/interfaces/aws_dsql/__init__.py +146 -0
  376. aws_cdk/interfaces/aws_dynamodb/__init__.py +278 -0
  377. aws_cdk/interfaces/aws_ec2/__init__.py +11963 -0
  378. aws_cdk/interfaces/aws_ecr/__init__.py +814 -0
  379. aws_cdk/interfaces/aws_ecs/__init__.py +845 -0
  380. aws_cdk/interfaces/aws_efs/__init__.py +392 -0
  381. aws_cdk/interfaces/aws_eks/__init__.py +948 -0
  382. aws_cdk/interfaces/aws_elasticache/__init__.py +1108 -0
  383. aws_cdk/interfaces/aws_elasticbeanstalk/__init__.py +503 -0
  384. aws_cdk/interfaces/aws_elasticloadbalancing/__init__.py +148 -0
  385. aws_cdk/interfaces/aws_elasticloadbalancingv2/__init__.py +795 -0
  386. aws_cdk/interfaces/aws_elasticsearch/__init__.py +158 -0
  387. aws_cdk/interfaces/aws_emr/__init__.py +913 -0
  388. aws_cdk/interfaces/aws_emrcontainers/__init__.py +168 -0
  389. aws_cdk/interfaces/aws_emrserverless/__init__.py +166 -0
  390. aws_cdk/interfaces/aws_entityresolution/__init__.py +608 -0
  391. aws_cdk/interfaces/aws_events/__init__.py +872 -0
  392. aws_cdk/interfaces/aws_eventschemas/__init__.py +455 -0
  393. aws_cdk/interfaces/aws_evidently/__init__.py +558 -0
  394. aws_cdk/interfaces/aws_evs/__init__.py +166 -0
  395. aws_cdk/interfaces/aws_finspace/__init__.py +166 -0
  396. aws_cdk/interfaces/aws_fis/__init__.py +271 -0
  397. aws_cdk/interfaces/aws_fms/__init__.py +364 -0
  398. aws_cdk/interfaces/aws_forecast/__init__.py +249 -0
  399. aws_cdk/interfaces/aws_frauddetector/__init__.py +764 -0
  400. aws_cdk/interfaces/aws_fsx/__init__.py +663 -0
  401. aws_cdk/interfaces/aws_gamelift/__init__.py +1325 -0
  402. aws_cdk/interfaces/aws_gameliftstreams/__init__.py +249 -0
  403. aws_cdk/interfaces/aws_globalaccelerator/__init__.py +461 -0
  404. aws_cdk/interfaces/aws_glue/__init__.py +2377 -0
  405. aws_cdk/interfaces/aws_grafana/__init__.py +146 -0
  406. aws_cdk/interfaces/aws_greengrass/__init__.py +1871 -0
  407. aws_cdk/interfaces/aws_greengrassv2/__init__.py +251 -0
  408. aws_cdk/interfaces/aws_groundstation/__init__.py +396 -0
  409. aws_cdk/interfaces/aws_guardduty/__init__.py +1225 -0
  410. aws_cdk/interfaces/aws_healthimaging/__init__.py +163 -0
  411. aws_cdk/interfaces/aws_healthlake/__init__.py +146 -0
  412. aws_cdk/interfaces/aws_iam/__init__.py +1803 -0
  413. aws_cdk/interfaces/aws_identitystore/__init__.py +288 -0
  414. aws_cdk/interfaces/aws_imagebuilder/__init__.py +984 -0
  415. aws_cdk/interfaces/aws_inspector/__init__.py +354 -0
  416. aws_cdk/interfaces/aws_inspectorv2/__init__.py +467 -0
  417. aws_cdk/interfaces/aws_internetmonitor/__init__.py +163 -0
  418. aws_cdk/interfaces/aws_invoicing/__init__.py +146 -0
  419. aws_cdk/interfaces/aws_iot/__init__.py +3483 -0
  420. aws_cdk/interfaces/aws_iotanalytics/__init__.py +455 -0
  421. aws_cdk/interfaces/aws_iotcoredeviceadvisor/__init__.py +168 -0
  422. aws_cdk/interfaces/aws_iotevents/__init__.py +352 -0
  423. aws_cdk/interfaces/aws_iotfleethub/__init__.py +166 -0
  424. aws_cdk/interfaces/aws_iotfleetwise/__init__.py +892 -0
  425. aws_cdk/interfaces/aws_iotsitewise/__init__.py +1097 -0
  426. aws_cdk/interfaces/aws_iotthingsgraph/__init__.py +146 -0
  427. aws_cdk/interfaces/aws_iottwinmaker/__init__.py +711 -0
  428. aws_cdk/interfaces/aws_iotwireless/__init__.py +1401 -0
  429. aws_cdk/interfaces/aws_ivs/__init__.py +1075 -0
  430. aws_cdk/interfaces/aws_ivschat/__init__.py +251 -0
  431. aws_cdk/interfaces/aws_kafkaconnect/__init__.py +354 -0
  432. aws_cdk/interfaces/aws_kendra/__init__.py +428 -0
  433. aws_cdk/interfaces/aws_kendraranking/__init__.py +166 -0
  434. aws_cdk/interfaces/aws_kinesis/__init__.py +364 -0
  435. aws_cdk/interfaces/aws_kinesisanalytics/__init__.py +364 -0
  436. aws_cdk/interfaces/aws_kinesisanalyticsv2/__init__.py +479 -0
  437. aws_cdk/interfaces/aws_kinesisfirehose/__init__.py +168 -0
  438. aws_cdk/interfaces/aws_kinesisvideo/__init__.py +283 -0
  439. aws_cdk/interfaces/aws_kms/__init__.py +376 -0
  440. aws_cdk/interfaces/aws_lakeformation/__init__.py +860 -0
  441. aws_cdk/interfaces/aws_lambda/__init__.py +1141 -0
  442. aws_cdk/interfaces/aws_launchwizard/__init__.py +146 -0
  443. aws_cdk/interfaces/aws_lex/__init__.py +513 -0
  444. aws_cdk/interfaces/aws_licensemanager/__init__.py +249 -0
  445. aws_cdk/interfaces/aws_lightsail/__init__.py +1744 -0
  446. aws_cdk/interfaces/aws_location/__init__.py +879 -0
  447. aws_cdk/interfaces/aws_logs/__init__.py +1667 -0
  448. aws_cdk/interfaces/aws_lookoutequipment/__init__.py +168 -0
  449. aws_cdk/interfaces/aws_lookoutmetrics/__init__.py +251 -0
  450. aws_cdk/interfaces/aws_lookoutvision/__init__.py +163 -0
  451. aws_cdk/interfaces/aws_m2/__init__.py +352 -0
  452. aws_cdk/interfaces/aws_macie/__init__.py +512 -0
  453. aws_cdk/interfaces/aws_managedblockchain/__init__.py +381 -0
  454. aws_cdk/interfaces/aws_mediaconnect/__init__.py +1028 -0
  455. aws_cdk/interfaces/aws_mediaconvert/__init__.py +396 -0
  456. aws_cdk/interfaces/aws_medialive/__init__.py +1755 -0
  457. aws_cdk/interfaces/aws_mediapackage/__init__.py +644 -0
  458. aws_cdk/interfaces/aws_mediapackagev2/__init__.py +618 -0
  459. aws_cdk/interfaces/aws_mediastore/__init__.py +146 -0
  460. aws_cdk/interfaces/aws_mediatailor/__init__.py +788 -0
  461. aws_cdk/interfaces/aws_memorydb/__init__.py +685 -0
  462. aws_cdk/interfaces/aws_mpa/__init__.py +249 -0
  463. aws_cdk/interfaces/aws_msk/__init__.py +764 -0
  464. aws_cdk/interfaces/aws_mwaa/__init__.py +166 -0
  465. aws_cdk/interfaces/aws_neptune/__init__.py +663 -0
  466. aws_cdk/interfaces/aws_neptunegraph/__init__.py +265 -0
  467. aws_cdk/interfaces/aws_networkfirewall/__init__.py +669 -0
  468. aws_cdk/interfaces/aws_networkmanager/__init__.py +1832 -0
  469. aws_cdk/interfaces/aws_nimblestudio/__init__.py +388 -0
  470. aws_cdk/interfaces/aws_notifications/__init__.py +868 -0
  471. aws_cdk/interfaces/aws_notificationscontacts/__init__.py +148 -0
  472. aws_cdk/interfaces/aws_oam/__init__.py +249 -0
  473. aws_cdk/interfaces/aws_observabilityadmin/__init__.py +362 -0
  474. aws_cdk/interfaces/aws_odb/__init__.py +562 -0
  475. aws_cdk/interfaces/aws_omics/__init__.py +838 -0
  476. aws_cdk/interfaces/aws_opensearchserverless/__init__.py +859 -0
  477. aws_cdk/interfaces/aws_opensearchservice/__init__.py +283 -0
  478. aws_cdk/interfaces/aws_opsworks/__init__.py +772 -0
  479. aws_cdk/interfaces/aws_opsworkscm/__init__.py +146 -0
  480. aws_cdk/interfaces/aws_organizations/__init__.py +646 -0
  481. aws_cdk/interfaces/aws_osis/__init__.py +146 -0
  482. aws_cdk/interfaces/aws_panorama/__init__.py +420 -0
  483. aws_cdk/interfaces/aws_paymentcryptography/__init__.py +249 -0
  484. aws_cdk/interfaces/aws_pcaconnectorad/__init__.py +608 -0
  485. aws_cdk/interfaces/aws_pcaconnectorscep/__init__.py +249 -0
  486. aws_cdk/interfaces/aws_pcs/__init__.py +352 -0
  487. aws_cdk/interfaces/aws_personalize/__init__.py +455 -0
  488. aws_cdk/interfaces/aws_pinpoint/__init__.py +2125 -0
  489. aws_cdk/interfaces/aws_pinpointemail/__init__.py +467 -0
  490. aws_cdk/interfaces/aws_pipes/__init__.py +158 -0
  491. aws_cdk/interfaces/aws_proton/__init__.py +360 -0
  492. aws_cdk/interfaces/aws_qbusiness/__init__.py +1122 -0
  493. aws_cdk/interfaces/aws_qldb/__init__.py +283 -0
  494. aws_cdk/interfaces/aws_quicksight/__init__.py +1566 -0
  495. aws_cdk/interfaces/aws_ram/__init__.py +249 -0
  496. aws_cdk/interfaces/aws_rbin/__init__.py +146 -0
  497. aws_cdk/interfaces/aws_rds/__init__.py +1780 -0
  498. aws_cdk/interfaces/aws_redshift/__init__.py +1104 -0
  499. aws_cdk/interfaces/aws_redshiftserverless/__init__.py +356 -0
  500. aws_cdk/interfaces/aws_refactorspaces/__init__.py +605 -0
  501. aws_cdk/interfaces/aws_rekognition/__init__.py +406 -0
  502. aws_cdk/interfaces/aws_resiliencehub/__init__.py +251 -0
  503. aws_cdk/interfaces/aws_resourceexplorer2/__init__.py +354 -0
  504. aws_cdk/interfaces/aws_resourcegroups/__init__.py +261 -0
  505. aws_cdk/interfaces/aws_robomaker/__init__.py +673 -0
  506. aws_cdk/interfaces/aws_rolesanywhere/__init__.py +384 -0
  507. aws_cdk/interfaces/aws_route53/__init__.py +804 -0
  508. aws_cdk/interfaces/aws_route53profiles/__init__.py +368 -0
  509. aws_cdk/interfaces/aws_route53recoverycontrol/__init__.py +463 -0
  510. aws_cdk/interfaces/aws_route53recoveryreadiness/__init__.py +535 -0
  511. aws_cdk/interfaces/aws_route53resolver/__init__.py +1356 -0
  512. aws_cdk/interfaces/aws_rtbfabric/__init__.py +352 -0
  513. aws_cdk/interfaces/aws_rum/__init__.py +146 -0
  514. aws_cdk/interfaces/aws_s3/__init__.py +1171 -0
  515. aws_cdk/interfaces/aws_s3express/__init__.py +392 -0
  516. aws_cdk/interfaces/aws_s3objectlambda/__init__.py +271 -0
  517. aws_cdk/interfaces/aws_s3outposts/__init__.py +455 -0
  518. aws_cdk/interfaces/aws_s3tables/__init__.py +575 -0
  519. aws_cdk/interfaces/aws_s3vectors/__init__.py +354 -0
  520. aws_cdk/interfaces/aws_sagemaker/__init__.py +3797 -0
  521. aws_cdk/interfaces/aws_sam/__init__.py +603 -0
  522. aws_cdk/interfaces/aws_scheduler/__init__.py +286 -0
  523. aws_cdk/interfaces/aws_sdb/__init__.py +146 -0
  524. aws_cdk/interfaces/aws_secretsmanager/__init__.py +461 -0
  525. aws_cdk/interfaces/aws_securityhub/__init__.py +1499 -0
  526. aws_cdk/interfaces/aws_securitylake/__init__.py +474 -0
  527. aws_cdk/interfaces/aws_servicecatalog/__init__.py +1829 -0
  528. aws_cdk/interfaces/aws_servicecatalogappregistry/__init__.py +557 -0
  529. aws_cdk/interfaces/aws_servicediscovery/__init__.py +636 -0
  530. aws_cdk/interfaces/aws_ses/__init__.py +2018 -0
  531. aws_cdk/interfaces/aws_shield/__init__.py +455 -0
  532. aws_cdk/interfaces/aws_signer/__init__.py +266 -0
  533. aws_cdk/interfaces/aws_simspaceweaver/__init__.py +146 -0
  534. aws_cdk/interfaces/aws_smsvoice/__init__.py +892 -0
  535. aws_cdk/interfaces/aws_sns/__init__.py +455 -0
  536. aws_cdk/interfaces/aws_sqs/__init__.py +364 -0
  537. aws_cdk/interfaces/aws_ssm/__init__.py +982 -0
  538. aws_cdk/interfaces/aws_ssmcontacts/__init__.py +455 -0
  539. aws_cdk/interfaces/aws_ssmguiconnect/__init__.py +146 -0
  540. aws_cdk/interfaces/aws_ssmincidents/__init__.py +249 -0
  541. aws_cdk/interfaces/aws_ssmquicksetup/__init__.py +253 -0
  542. aws_cdk/interfaces/aws_sso/__init__.py +797 -0
  543. aws_cdk/interfaces/aws_stepfunctions/__init__.py +459 -0
  544. aws_cdk/interfaces/aws_supportapp/__init__.py +372 -0
  545. aws_cdk/interfaces/aws_synthetics/__init__.py +249 -0
  546. aws_cdk/interfaces/aws_systemsmanagersap/__init__.py +148 -0
  547. aws_cdk/interfaces/aws_timestream/__init__.py +526 -0
  548. aws_cdk/interfaces/aws_transfer/__init__.py +967 -0
  549. aws_cdk/interfaces/aws_verifiedpermissions/__init__.py +538 -0
  550. aws_cdk/interfaces/aws_voiceid/__init__.py +146 -0
  551. aws_cdk/interfaces/aws_vpclattice/__init__.py +1418 -0
  552. aws_cdk/interfaces/aws_waf/__init__.py +764 -0
  553. aws_cdk/interfaces/aws_wafregional/__init__.py +1182 -0
  554. aws_cdk/interfaces/aws_wafv2/__init__.py +870 -0
  555. aws_cdk/interfaces/aws_wisdom/__init__.py +1556 -0
  556. aws_cdk/interfaces/aws_workspaces/__init__.py +352 -0
  557. aws_cdk/interfaces/aws_workspacesinstances/__init__.py +390 -0
  558. aws_cdk/interfaces/aws_workspacesthinclient/__init__.py +168 -0
  559. aws_cdk/interfaces/aws_workspacesweb/__init__.py +1085 -0
  560. aws_cdk/interfaces/aws_xray/__init__.py +457 -0
  561. aws_cdk/lambda_layer_awscli/__init__.py +6 -0
  562. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +6 -0
  563. aws_cdk/pipelines/__init__.py +202 -52
  564. aws_cdk/region_info/__init__.py +3 -0
  565. aws_cdk/triggers/__init__.py +66 -18
  566. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/METADATA +418 -18
  567. aws_cdk_lib-2.224.0.dist-info/RECORD +584 -0
  568. aws_cdk_lib-2.195.0.dist-info/RECORD +0 -304
  569. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/LICENSE +0 -0
  570. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/NOTICE +0 -0
  571. {aws_cdk_lib-2.195.0.dist-info → aws_cdk_lib-2.224.0.dist-info}/WHEEL +0 -0
  572. {aws_cdk_lib-2.195.0.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,10 +944,17 @@ 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]))
781
951
 
952
+ @jsii.python.classproperty
953
+ @jsii.member(jsii_name="PROPERTY_INJECTION_ID")
954
+ def PROPERTY_INJECTION_ID(cls) -> builtins.str:
955
+ '''Uniquely identifies this class.'''
956
+ return typing.cast(builtins.str, jsii.sget(cls, "PROPERTY_INJECTION_ID"))
957
+
782
958
  @builtins.property
783
959
  @jsii.member(jsii_name="artifactsBucket")
784
960
  def artifacts_bucket(self) -> _IBucket_42e086fd:
@@ -841,12 +1017,16 @@ class Canary(
841
1017
  "artifact_s3_kms_key": "artifactS3KmsKey",
842
1018
  "artifacts_bucket_lifecycle_rules": "artifactsBucketLifecycleRules",
843
1019
  "artifacts_bucket_location": "artifactsBucketLocation",
1020
+ "browser_configs": "browserConfigs",
844
1021
  "canary_name": "canaryName",
845
1022
  "cleanup": "cleanup",
1023
+ "dry_run_and_update": "dryRunAndUpdate",
846
1024
  "environment_variables": "environmentVariables",
847
1025
  "failure_retention_period": "failureRetentionPeriod",
1026
+ "max_retries": "maxRetries",
848
1027
  "memory": "memory",
849
1028
  "provisioned_resource_cleanup": "provisionedResourceCleanup",
1029
+ "resources_to_replicate_tags": "resourcesToReplicateTags",
850
1030
  "role": "role",
851
1031
  "schedule": "schedule",
852
1032
  "security_groups": "securityGroups",
@@ -869,12 +1049,16 @@ class CanaryProps:
869
1049
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
870
1050
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
871
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,
872
1053
  canary_name: typing.Optional[builtins.str] = None,
873
1054
  cleanup: typing.Optional["Cleanup"] = None,
1055
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
874
1056
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
875
1057
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
1058
+ max_retries: typing.Optional[jsii.Number] = None,
876
1059
  memory: typing.Optional[_Size_7b441c34] = None,
877
1060
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
1061
+ resources_to_replicate_tags: typing.Optional[typing.Sequence["ResourceToReplicateTags"]] = None,
878
1062
  role: typing.Optional[_IRole_235f5d8e] = None,
879
1063
  schedule: typing.Optional["Schedule"] = None,
880
1064
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -894,12 +1078,16 @@ class CanaryProps:
894
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``.
895
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.
896
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
897
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
898
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
899
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.
900
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
901
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)
902
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
903
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'.
904
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)'
905
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.
@@ -914,17 +1102,14 @@ class CanaryProps:
914
1102
 
915
1103
  Example::
916
1104
 
917
- import aws_cdk as cdk
918
-
919
-
920
1105
  canary = synthetics.Canary(self, "MyCanary",
921
1106
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
922
1107
  test=synthetics.Test.custom(
923
1108
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
924
1109
  handler="index.handler"
925
1110
  ),
926
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
927
- memory=cdk.Size.mebibytes(1024)
1111
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
1112
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
928
1113
  )
929
1114
  '''
930
1115
  if isinstance(artifacts_bucket_location, dict):
@@ -940,12 +1125,16 @@ class CanaryProps:
940
1125
  check_type(argname="argument artifact_s3_kms_key", value=artifact_s3_kms_key, expected_type=type_hints["artifact_s3_kms_key"])
941
1126
  check_type(argname="argument artifacts_bucket_lifecycle_rules", value=artifacts_bucket_lifecycle_rules, expected_type=type_hints["artifacts_bucket_lifecycle_rules"])
942
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"])
943
1129
  check_type(argname="argument canary_name", value=canary_name, expected_type=type_hints["canary_name"])
944
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"])
945
1132
  check_type(argname="argument environment_variables", value=environment_variables, expected_type=type_hints["environment_variables"])
946
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"])
947
1135
  check_type(argname="argument memory", value=memory, expected_type=type_hints["memory"])
948
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"])
949
1138
  check_type(argname="argument role", value=role, expected_type=type_hints["role"])
950
1139
  check_type(argname="argument schedule", value=schedule, expected_type=type_hints["schedule"])
951
1140
  check_type(argname="argument security_groups", value=security_groups, expected_type=type_hints["security_groups"])
@@ -969,18 +1158,26 @@ class CanaryProps:
969
1158
  self._values["artifacts_bucket_lifecycle_rules"] = artifacts_bucket_lifecycle_rules
970
1159
  if artifacts_bucket_location is not None:
971
1160
  self._values["artifacts_bucket_location"] = artifacts_bucket_location
1161
+ if browser_configs is not None:
1162
+ self._values["browser_configs"] = browser_configs
972
1163
  if canary_name is not None:
973
1164
  self._values["canary_name"] = canary_name
974
1165
  if cleanup is not None:
975
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
976
1169
  if environment_variables is not None:
977
1170
  self._values["environment_variables"] = environment_variables
978
1171
  if failure_retention_period is not None:
979
1172
  self._values["failure_retention_period"] = failure_retention_period
1173
+ if max_retries is not None:
1174
+ self._values["max_retries"] = max_retries
980
1175
  if memory is not None:
981
1176
  self._values["memory"] = memory
982
1177
  if provisioned_resource_cleanup is not None:
983
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
984
1181
  if role is not None:
985
1182
  self._values["role"] = role
986
1183
  if schedule is not None:
@@ -1084,6 +1281,23 @@ class CanaryProps:
1084
1281
  result = self._values.get("artifacts_bucket_location")
1085
1282
  return typing.cast(typing.Optional[ArtifactsBucketLocation], result)
1086
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
+
1087
1301
  @builtins.property
1088
1302
  def canary_name(self) -> typing.Optional[builtins.str]:
1089
1303
  '''The name of the canary.
@@ -1116,6 +1330,23 @@ class CanaryProps:
1116
1330
  result = self._values.get("cleanup")
1117
1331
  return typing.cast(typing.Optional["Cleanup"], result)
1118
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
+
1119
1350
  @builtins.property
1120
1351
  def environment_variables(
1121
1352
  self,
@@ -1140,6 +1371,20 @@ class CanaryProps:
1140
1371
  result = self._values.get("failure_retention_period")
1141
1372
  return typing.cast(typing.Optional[_Duration_4839e8c3], result)
1142
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
+
1143
1388
  @builtins.property
1144
1389
  def memory(self) -> typing.Optional[_Size_7b441c34]:
1145
1390
  '''The maximum amount of memory that the canary can use while running.
@@ -1161,6 +1406,23 @@ class CanaryProps:
1161
1406
  result = self._values.get("provisioned_resource_cleanup")
1162
1407
  return typing.cast(typing.Optional[builtins.bool], result)
1163
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
+
1164
1426
  @builtins.property
1165
1427
  def role(self) -> typing.Optional[_IRole_235f5d8e]:
1166
1428
  '''Canary execution role.
@@ -1286,7 +1548,7 @@ class CanaryProps:
1286
1548
  )
1287
1549
 
1288
1550
 
1289
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
1551
+ @jsii.implements(_IInspectable_c2943556, _ICanaryRef_cf407e49, _ITaggable_36806126)
1290
1552
  class CfnCanary(
1291
1553
  _CfnResource_9df397a6,
1292
1554
  metaclass=jsii.JSIIMeta,
@@ -1315,9 +1577,14 @@ class CfnCanary(
1315
1577
  cfn_canary = synthetics.CfnCanary(self, "MyCfnCanary",
1316
1578
  artifact_s3_location="artifactS3Location",
1317
1579
  code=synthetics.CfnCanary.CodeProperty(
1318
- handler="handler",
1580
+ blueprint_types=["blueprintTypes"],
1581
+ dependencies=[synthetics.CfnCanary.DependencyProperty(
1582
+ reference="reference",
1319
1583
 
1320
- # the properties below are optional
1584
+ # the properties below are optional
1585
+ type="type"
1586
+ )],
1587
+ handler="handler",
1321
1588
  s3_bucket="s3Bucket",
1322
1589
  s3_key="s3Key",
1323
1590
  s3_object_version="s3ObjectVersion",
@@ -1331,7 +1598,10 @@ class CfnCanary(
1331
1598
  expression="expression",
1332
1599
 
1333
1600
  # the properties below are optional
1334
- duration_in_seconds="durationInSeconds"
1601
+ duration_in_seconds="durationInSeconds",
1602
+ retry_config=synthetics.CfnCanary.RetryConfigProperty(
1603
+ max_retries=123
1604
+ )
1335
1605
  ),
1336
1606
 
1337
1607
  # the properties below are optional
@@ -1341,7 +1611,11 @@ class CfnCanary(
1341
1611
  kms_key_arn="kmsKeyArn"
1342
1612
  )
1343
1613
  ),
1614
+ browser_configs=[synthetics.CfnCanary.BrowserConfigProperty(
1615
+ browser_type="browserType"
1616
+ )],
1344
1617
  delete_lambda_resources_on_canary_deletion=False,
1618
+ dry_run_and_update=False,
1345
1619
  failure_retention_period=123,
1346
1620
  provisioned_resource_cleanup="provisionedResourceCleanup",
1347
1621
  resources_to_replicate_tags=["resourcesToReplicateTags"],
@@ -1350,6 +1624,7 @@ class CfnCanary(
1350
1624
  environment_variables={
1351
1625
  "environment_variables_key": "environmentVariables"
1352
1626
  },
1627
+ ephemeral_storage=123,
1353
1628
  memory_in_mb=123,
1354
1629
  timeout_in_seconds=123
1355
1630
  ),
@@ -1368,8 +1643,21 @@ class CfnCanary(
1368
1643
 
1369
1644
  # the properties below are optional
1370
1645
  ignore_coordinates=["ignoreCoordinates"]
1371
- )]
1646
+ )],
1647
+ browser_type="browserType"
1372
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
+ )],
1373
1661
  vpc_config=synthetics.CfnCanary.VPCConfigProperty(
1374
1662
  security_group_ids=["securityGroupIds"],
1375
1663
  subnet_ids=["subnetIds"],
@@ -1393,7 +1681,9 @@ class CfnCanary(
1393
1681
  runtime_version: builtins.str,
1394
1682
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.ScheduleProperty", typing.Dict[builtins.str, typing.Any]]],
1395
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,
1396
1685
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
1686
+ dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
1397
1687
  failure_retention_period: typing.Optional[jsii.Number] = None,
1398
1688
  provisioned_resource_cleanup: typing.Optional[builtins.str] = None,
1399
1689
  resources_to_replicate_tags: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -1402,9 +1692,11 @@ class CfnCanary(
1402
1692
  success_retention_period: typing.Optional[jsii.Number] = None,
1403
1693
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
1404
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,
1405
1696
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.VPCConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
1406
1697
  ) -> None:
1407
- '''
1698
+ '''Create a new ``AWS::Synthetics::Canary``.
1699
+
1408
1700
  :param scope: Scope in which this resource is defined.
1409
1701
  :param id: Construct identifier for this resource (unique in its scope).
1410
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.
@@ -1414,7 +1706,9 @@ class CfnCanary(
1414
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>`_ .
1415
1707
  :param schedule: A structure that contains information about how often the canary is to run, and when these runs are to stop.
1416
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.
1417
1710
  :param delete_lambda_resources_on_canary_deletion: (deprecated) Deletes associated lambda resources created by Synthetics if set to True. Default is False
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>`_ .
1418
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.
1419
1713
  :param provisioned_resource_cleanup: Specifies whether to also delete the Lambda functions and layers used by this canary when the canary is deleted. If it is ``AUTOMATIC`` , the Lambda functions and layers will be deleted when the canary is deleted. If the value of this parameter is ``OFF`` , then the value of the ``DeleteLambda`` parameter of the `DeleteCanary <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_DeleteCanary.html>`_ operation determines whether the Lambda functions and layers will be deleted.
1420
1714
  :param resources_to_replicate_tags: 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 ``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.
@@ -1422,7 +1716,8 @@ class CfnCanary(
1422
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.
1423
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.
1424
1718
  :param tags: The list of key-value pairs that are associated with the canary.
1425
- :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.
1426
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>`_ .
1427
1722
  '''
1428
1723
  if __debug__:
@@ -1437,7 +1732,9 @@ class CfnCanary(
1437
1732
  runtime_version=runtime_version,
1438
1733
  schedule=schedule,
1439
1734
  artifact_config=artifact_config,
1735
+ browser_configs=browser_configs,
1440
1736
  delete_lambda_resources_on_canary_deletion=delete_lambda_resources_on_canary_deletion,
1737
+ dry_run_and_update=dry_run_and_update,
1441
1738
  failure_retention_period=failure_retention_period,
1442
1739
  provisioned_resource_cleanup=provisioned_resource_cleanup,
1443
1740
  resources_to_replicate_tags=resources_to_replicate_tags,
@@ -1446,11 +1743,33 @@ class CfnCanary(
1446
1743
  success_retention_period=success_retention_period,
1447
1744
  tags=tags,
1448
1745
  visual_reference=visual_reference,
1746
+ visual_references=visual_references,
1449
1747
  vpc_config=vpc_config,
1450
1748
  )
1451
1749
 
1452
1750
  jsii.create(self.__class__, self, [scope, id, props])
1453
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
+
1454
1773
  @jsii.member(jsii_name="inspect")
1455
1774
  def inspect(self, inspector: _TreeInspector_488e0dd5) -> None:
1456
1775
  '''Examines the CloudFormation resource and discloses attributes.
@@ -1510,6 +1829,12 @@ class CfnCanary(
1510
1829
  '''
1511
1830
  return typing.cast(builtins.str, jsii.get(self, "attrState"))
1512
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
+
1513
1838
  @builtins.property
1514
1839
  @jsii.member(jsii_name="cfnProperties")
1515
1840
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
@@ -1625,6 +1950,24 @@ class CfnCanary(
1625
1950
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1626
1951
  jsii.set(self, "artifactConfig", value) # pyright: ignore[reportArgumentType]
1627
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
+
1628
1971
  @builtins.property
1629
1972
  @jsii.member(jsii_name="deleteLambdaResourcesOnCanaryDeletion")
1630
1973
  def delete_lambda_resources_on_canary_deletion(
@@ -1648,6 +1991,24 @@ class CfnCanary(
1648
1991
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1649
1992
  jsii.set(self, "deleteLambdaResourcesOnCanaryDeletion", value) # pyright: ignore[reportArgumentType]
1650
1993
 
1994
+ @builtins.property
1995
+ @jsii.member(jsii_name="dryRunAndUpdate")
1996
+ def dry_run_and_update(
1997
+ self,
1998
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
1999
+ '''Specifies whether to perform a dry run before updating the canary.'''
2000
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], jsii.get(self, "dryRunAndUpdate"))
2001
+
2002
+ @dry_run_and_update.setter
2003
+ def dry_run_and_update(
2004
+ self,
2005
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
2006
+ ) -> None:
2007
+ if __debug__:
2008
+ type_hints = typing.get_type_hints(_typecheckingstub__59860e5fb72da4da1108545c9e0b8f706d34cf83eb363fda05f04cbb14baf1fe)
2009
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
2010
+ jsii.set(self, "dryRunAndUpdate", value) # pyright: ignore[reportArgumentType]
2011
+
1651
2012
  @builtins.property
1652
2013
  @jsii.member(jsii_name="failureRetentionPeriod")
1653
2014
  def failure_retention_period(self) -> typing.Optional[jsii.Number]:
@@ -1760,7 +2121,11 @@ class CfnCanary(
1760
2121
  def visual_reference(
1761
2122
  self,
1762
2123
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]]:
1763
- '''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
+ '''
1764
2129
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCanary.VisualReferenceProperty"]], jsii.get(self, "visualReference"))
1765
2130
 
1766
2131
  @visual_reference.setter
@@ -1773,6 +2138,24 @@ class CfnCanary(
1773
2138
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
1774
2139
  jsii.set(self, "visualReference", value) # pyright: ignore[reportArgumentType]
1775
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
+
1776
2159
  @builtins.property
1777
2160
  @jsii.member(jsii_name="vpcConfig")
1778
2161
  def vpc_config(
@@ -1933,10 +2316,64 @@ class CfnCanary(
1933
2316
  k + "=" + repr(v) for k, v in self._values.items()
1934
2317
  )
1935
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
+
1936
2371
  @jsii.data_type(
1937
2372
  jsii_type="aws-cdk-lib.aws_synthetics.CfnCanary.CodeProperty",
1938
2373
  jsii_struct_bases=[],
1939
2374
  name_mapping={
2375
+ "blueprint_types": "blueprintTypes",
2376
+ "dependencies": "dependencies",
1940
2377
  "handler": "handler",
1941
2378
  "s3_bucket": "s3Bucket",
1942
2379
  "s3_key": "s3Key",
@@ -1949,7 +2386,9 @@ class CfnCanary(
1949
2386
  def __init__(
1950
2387
  self,
1951
2388
  *,
1952
- 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,
1953
2392
  s3_bucket: typing.Optional[builtins.str] = None,
1954
2393
  s3_key: typing.Optional[builtins.str] = None,
1955
2394
  s3_object_version: typing.Optional[builtins.str] = None,
@@ -1960,10 +2399,12 @@ class CfnCanary(
1960
2399
 
1961
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`` .
1962
2401
 
1963
- :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`` .
1964
2405
  :param s3_bucket: If your canary script is located in S3, specify the bucket name here. The bucket must already exist.
1965
- :param s3_key: The S3 key of your script. For more information, see `Working with Amazon S3 Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html>`_ .
1966
- :param s3_object_version: The S3 version ID of your script.
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>`_ .
2407
+ :param s3_object_version: The Amazon S3 version ID of your script.
1967
2408
  :param script: If you input your canary script directly into the canary instead of referring to an S3 location, the value of this parameter is the script in plain text. It can be up to 5 MB.
1968
2409
  :param source_location_arn: The ARN of the Lambda layer where Synthetics stores the canary script code.
1969
2410
 
@@ -1977,9 +2418,14 @@ class CfnCanary(
1977
2418
  from aws_cdk import aws_synthetics as synthetics
1978
2419
 
1979
2420
  code_property = synthetics.CfnCanary.CodeProperty(
1980
- handler="handler",
2421
+ blueprint_types=["blueprintTypes"],
2422
+ dependencies=[synthetics.CfnCanary.DependencyProperty(
2423
+ reference="reference",
1981
2424
 
1982
- # the properties below are optional
2425
+ # the properties below are optional
2426
+ type="type"
2427
+ )],
2428
+ handler="handler",
1983
2429
  s3_bucket="s3Bucket",
1984
2430
  s3_key="s3Key",
1985
2431
  s3_object_version="s3ObjectVersion",
@@ -1989,88 +2435,250 @@ class CfnCanary(
1989
2435
  '''
1990
2436
  if __debug__:
1991
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"])
1992
2440
  check_type(argname="argument handler", value=handler, expected_type=type_hints["handler"])
1993
2441
  check_type(argname="argument s3_bucket", value=s3_bucket, expected_type=type_hints["s3_bucket"])
1994
2442
  check_type(argname="argument s3_key", value=s3_key, expected_type=type_hints["s3_key"])
1995
2443
  check_type(argname="argument s3_object_version", value=s3_object_version, expected_type=type_hints["s3_object_version"])
1996
2444
  check_type(argname="argument script", value=script, expected_type=type_hints["script"])
1997
2445
  check_type(argname="argument source_location_arn", value=source_location_arn, expected_type=type_hints["source_location_arn"])
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
2453
+ if s3_bucket is not None:
2454
+ self._values["s3_bucket"] = s3_bucket
2455
+ if s3_key is not None:
2456
+ self._values["s3_key"] = s3_key
2457
+ if s3_object_version is not None:
2458
+ self._values["s3_object_version"] = s3_object_version
2459
+ if script is not None:
2460
+ self._values["script"] = script
2461
+ if source_location_arn is not None:
2462
+ self._values["source_location_arn"] = source_location_arn
2463
+
2464
+ @builtins.property
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]:
2490
+ '''The entry point to use for the source code when running the canary.
2491
+
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*`` .
2493
+
2494
+ This field is required when you don't specify ``BlueprintTypes`` and is not allowed when you specify ``BlueprintTypes`` .
2495
+
2496
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-handler
2497
+ '''
2498
+ result = self._values.get("handler")
2499
+ return typing.cast(typing.Optional[builtins.str], result)
2500
+
2501
+ @builtins.property
2502
+ def s3_bucket(self) -> typing.Optional[builtins.str]:
2503
+ '''If your canary script is located in S3, specify the bucket name here.
2504
+
2505
+ The bucket must already exist.
2506
+
2507
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-s3bucket
2508
+ '''
2509
+ result = self._values.get("s3_bucket")
2510
+ return typing.cast(typing.Optional[builtins.str], result)
2511
+
2512
+ @builtins.property
2513
+ def s3_key(self) -> typing.Optional[builtins.str]:
2514
+ '''The Amazon S3 key of your script.
2515
+
2516
+ For more information, see `Working with Amazon S3 Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html>`_ .
2517
+
2518
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-s3key
2519
+ '''
2520
+ result = self._values.get("s3_key")
2521
+ return typing.cast(typing.Optional[builtins.str], result)
2522
+
2523
+ @builtins.property
2524
+ def s3_object_version(self) -> typing.Optional[builtins.str]:
2525
+ '''The Amazon S3 version ID of your script.
2526
+
2527
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-s3objectversion
2528
+ '''
2529
+ result = self._values.get("s3_object_version")
2530
+ return typing.cast(typing.Optional[builtins.str], result)
2531
+
2532
+ @builtins.property
2533
+ def script(self) -> typing.Optional[builtins.str]:
2534
+ '''If you input your canary script directly into the canary instead of referring to an S3 location, the value of this parameter is the script in plain text.
2535
+
2536
+ It can be up to 5 MB.
2537
+
2538
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-script
2539
+ '''
2540
+ result = self._values.get("script")
2541
+ return typing.cast(typing.Optional[builtins.str], result)
2542
+
2543
+ @builtins.property
2544
+ def source_location_arn(self) -> typing.Optional[builtins.str]:
2545
+ '''The ARN of the Lambda layer where Synthetics stores the canary script code.
2546
+
2547
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-sourcelocationarn
2548
+ '''
2549
+ result = self._values.get("source_location_arn")
2550
+ return typing.cast(typing.Optional[builtins.str], result)
2551
+
2552
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2553
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2554
+
2555
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2556
+ return not (rhs == self)
2557
+
2558
+ def __repr__(self) -> str:
2559
+ return "CodeProperty(%s)" % ", ".join(
2560
+ k + "=" + repr(v) for k, v in self._values.items()
2561
+ )
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"])
1998
2600
  self._values: typing.Dict[builtins.str, typing.Any] = {
1999
- "handler": handler,
2601
+ "reference": reference,
2000
2602
  }
2001
- if s3_bucket is not None:
2002
- self._values["s3_bucket"] = s3_bucket
2003
- if s3_key is not None:
2004
- self._values["s3_key"] = s3_key
2005
- if s3_object_version is not None:
2006
- self._values["s3_object_version"] = s3_object_version
2007
- if script is not None:
2008
- self._values["script"] = script
2009
- if source_location_arn is not None:
2010
- self._values["source_location_arn"] = source_location_arn
2603
+ if type is not None:
2604
+ self._values["type"] = type
2011
2605
 
2012
2606
  @builtins.property
2013
- def handler(self) -> builtins.str:
2014
- '''The entry point to use for the source code when running the canary.
2607
+ def reference(self) -> builtins.str:
2608
+ '''The dependency reference.
2015
2609
 
2016
- 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*`` .
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>`_ .
2017
2611
 
2018
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-handler
2612
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-dependency.html#cfn-synthetics-canary-dependency-reference
2019
2613
  '''
2020
- result = self._values.get("handler")
2021
- assert result is not None, "Required property 'handler' is missing"
2614
+ result = self._values.get("reference")
2615
+ assert result is not None, "Required property 'reference' is missing"
2022
2616
  return typing.cast(builtins.str, result)
2023
2617
 
2024
2618
  @builtins.property
2025
- def s3_bucket(self) -> typing.Optional[builtins.str]:
2026
- '''If your canary script is located in S3, specify the bucket name here.
2619
+ def type(self) -> typing.Optional[builtins.str]:
2620
+ '''The type of dependency.
2027
2621
 
2028
- The bucket must already exist.
2622
+ Valid value is ``LambdaLayer`` .
2029
2623
 
2030
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-s3bucket
2624
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-dependency.html#cfn-synthetics-canary-dependency-type
2031
2625
  '''
2032
- result = self._values.get("s3_bucket")
2626
+ result = self._values.get("type")
2033
2627
  return typing.cast(typing.Optional[builtins.str], result)
2034
2628
 
2035
- @builtins.property
2036
- def s3_key(self) -> typing.Optional[builtins.str]:
2037
- '''The S3 key of your script.
2629
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
2630
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
2038
2631
 
2039
- For more information, see `Working with Amazon S3 Objects <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html>`_ .
2632
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
2633
+ return not (rhs == self)
2040
2634
 
2041
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-s3key
2042
- '''
2043
- result = self._values.get("s3_key")
2044
- return typing.cast(typing.Optional[builtins.str], result)
2635
+ def __repr__(self) -> str:
2636
+ return "DependencyProperty(%s)" % ", ".join(
2637
+ k + "=" + repr(v) for k, v in self._values.items()
2638
+ )
2045
2639
 
2046
- @builtins.property
2047
- def s3_object_version(self) -> typing.Optional[builtins.str]:
2048
- '''The S3 version ID of your script.
2640
+ @jsii.data_type(
2641
+ jsii_type="aws-cdk-lib.aws_synthetics.CfnCanary.RetryConfigProperty",
2642
+ jsii_struct_bases=[],
2643
+ name_mapping={"max_retries": "maxRetries"},
2644
+ )
2645
+ class RetryConfigProperty:
2646
+ def __init__(self, *, max_retries: jsii.Number) -> None:
2647
+ '''The canary's retry configuration information.
2049
2648
 
2050
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-s3objectversion
2051
- '''
2052
- result = self._values.get("s3_object_version")
2053
- return typing.cast(typing.Optional[builtins.str], result)
2649
+ :param max_retries: The maximum number of retries. The value must be less than or equal to two.
2054
2650
 
2055
- @builtins.property
2056
- def script(self) -> typing.Optional[builtins.str]:
2057
- '''If you input your canary script directly into the canary instead of referring to an S3 location, the value of this parameter is the script in plain text.
2651
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-retryconfig.html
2652
+ :exampleMetadata: fixture=_generated
2058
2653
 
2059
- It can be up to 5 MB.
2654
+ Example::
2060
2655
 
2061
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-script
2656
+ # The code below shows an example of how to instantiate this type.
2657
+ # The values are placeholders you should change.
2658
+ from aws_cdk import aws_synthetics as synthetics
2659
+
2660
+ retry_config_property = synthetics.CfnCanary.RetryConfigProperty(
2661
+ max_retries=123
2662
+ )
2062
2663
  '''
2063
- result = self._values.get("script")
2064
- return typing.cast(typing.Optional[builtins.str], result)
2664
+ if __debug__:
2665
+ type_hints = typing.get_type_hints(_typecheckingstub__e7a2c989ca2c701e49af0e8032c8c49bb52546c68c9e6359df8e7a9f2c4cf9a1)
2666
+ check_type(argname="argument max_retries", value=max_retries, expected_type=type_hints["max_retries"])
2667
+ self._values: typing.Dict[builtins.str, typing.Any] = {
2668
+ "max_retries": max_retries,
2669
+ }
2065
2670
 
2066
2671
  @builtins.property
2067
- def source_location_arn(self) -> typing.Optional[builtins.str]:
2068
- '''The ARN of the Lambda layer where Synthetics stores the canary script code.
2672
+ def max_retries(self) -> jsii.Number:
2673
+ '''The maximum number of retries.
2069
2674
 
2070
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-code.html#cfn-synthetics-canary-code-sourcelocationarn
2675
+ The value must be less than or equal to two.
2676
+
2677
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-retryconfig.html#cfn-synthetics-canary-retryconfig-maxretries
2071
2678
  '''
2072
- result = self._values.get("source_location_arn")
2073
- return typing.cast(typing.Optional[builtins.str], result)
2679
+ result = self._values.get("max_retries")
2680
+ assert result is not None, "Required property 'max_retries' is missing"
2681
+ return typing.cast(jsii.Number, result)
2074
2682
 
2075
2683
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
2076
2684
  return isinstance(rhs, self.__class__) and rhs._values == self._values
@@ -2079,7 +2687,7 @@ class CfnCanary(
2079
2687
  return not (rhs == self)
2080
2688
 
2081
2689
  def __repr__(self) -> str:
2082
- return "CodeProperty(%s)" % ", ".join(
2690
+ return "RetryConfigProperty(%s)" % ", ".join(
2083
2691
  k + "=" + repr(v) for k, v in self._values.items()
2084
2692
  )
2085
2693
 
@@ -2089,6 +2697,7 @@ class CfnCanary(
2089
2697
  name_mapping={
2090
2698
  "active_tracing": "activeTracing",
2091
2699
  "environment_variables": "environmentVariables",
2700
+ "ephemeral_storage": "ephemeralStorage",
2092
2701
  "memory_in_mb": "memoryInMb",
2093
2702
  "timeout_in_seconds": "timeoutInSeconds",
2094
2703
  },
@@ -2099,6 +2708,7 @@ class CfnCanary(
2099
2708
  *,
2100
2709
  active_tracing: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
2101
2710
  environment_variables: typing.Optional[typing.Union[typing.Mapping[builtins.str, builtins.str], _IResolvable_da3f097b]] = None,
2711
+ ephemeral_storage: typing.Optional[jsii.Number] = None,
2102
2712
  memory_in_mb: typing.Optional[jsii.Number] = None,
2103
2713
  timeout_in_seconds: typing.Optional[jsii.Number] = None,
2104
2714
  ) -> None:
@@ -2108,6 +2718,7 @@ class CfnCanary(
2108
2718
 
2109
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.
2110
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.
2111
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.
2112
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.
2113
2724
 
@@ -2125,6 +2736,7 @@ class CfnCanary(
2125
2736
  environment_variables={
2126
2737
  "environment_variables_key": "environmentVariables"
2127
2738
  },
2739
+ ephemeral_storage=123,
2128
2740
  memory_in_mb=123,
2129
2741
  timeout_in_seconds=123
2130
2742
  )
@@ -2133,6 +2745,7 @@ class CfnCanary(
2133
2745
  type_hints = typing.get_type_hints(_typecheckingstub__fa148862e82948accbbe951e7afcee721aa7014754c81106d2648fe1c5cf28e2)
2134
2746
  check_type(argname="argument active_tracing", value=active_tracing, expected_type=type_hints["active_tracing"])
2135
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"])
2136
2749
  check_type(argname="argument memory_in_mb", value=memory_in_mb, expected_type=type_hints["memory_in_mb"])
2137
2750
  check_type(argname="argument timeout_in_seconds", value=timeout_in_seconds, expected_type=type_hints["timeout_in_seconds"])
2138
2751
  self._values: typing.Dict[builtins.str, typing.Any] = {}
@@ -2140,6 +2753,8 @@ class CfnCanary(
2140
2753
  self._values["active_tracing"] = active_tracing
2141
2754
  if environment_variables is not None:
2142
2755
  self._values["environment_variables"] = environment_variables
2756
+ if ephemeral_storage is not None:
2757
+ self._values["ephemeral_storage"] = ephemeral_storage
2143
2758
  if memory_in_mb is not None:
2144
2759
  self._values["memory_in_mb"] = memory_in_mb
2145
2760
  if timeout_in_seconds is not None:
@@ -2177,6 +2792,17 @@ class CfnCanary(
2177
2792
  result = self._values.get("environment_variables")
2178
2793
  return typing.cast(typing.Optional[typing.Union[typing.Mapping[builtins.str, builtins.str], _IResolvable_da3f097b]], result)
2179
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
+
2180
2806
  @builtins.property
2181
2807
  def memory_in_mb(self) -> typing.Optional[jsii.Number]:
2182
2808
  '''The maximum amount of memory that the canary can use while running.
@@ -2294,6 +2920,7 @@ class CfnCanary(
2294
2920
  name_mapping={
2295
2921
  "expression": "expression",
2296
2922
  "duration_in_seconds": "durationInSeconds",
2923
+ "retry_config": "retryConfig",
2297
2924
  },
2298
2925
  )
2299
2926
  class ScheduleProperty:
@@ -2302,11 +2929,13 @@ class CfnCanary(
2302
2929
  *,
2303
2930
  expression: builtins.str,
2304
2931
  duration_in_seconds: typing.Optional[builtins.str] = None,
2932
+ retry_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnCanary.RetryConfigProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
2305
2933
  ) -> None:
2306
2934
  '''This structure specifies how often a canary is to make runs and the date and time when it should stop making runs.
2307
2935
 
2308
2936
  :param expression: A ``rate`` expression or a ``cron`` expression that defines how often the canary is to run. For a rate expression, The syntax is ``rate( *number unit* )`` . *unit* can be ``minute`` , ``minutes`` , or ``hour`` . For example, ``rate(1 minute)`` runs the canary once a minute, ``rate(10 minutes)`` runs it once every 10 minutes, and ``rate(1 hour)`` runs it once every hour. You can specify a frequency between ``rate(1 minute)`` and ``rate(1 hour)`` . Specifying ``rate(0 minute)`` or ``rate(0 hour)`` is a special value that causes the canary to run only once when it is started. Use ``cron( *expression* )`` to specify a cron expression. You can't schedule a canary to wait for more than a year before running. For information about the syntax for cron expressions, see `Scheduling canary runs using cron <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_cron.html>`_ .
2309
2937
  :param duration_in_seconds: How long, in seconds, for the canary to continue making regular runs according to the schedule in the ``Expression`` value. If you specify 0, the canary continues making runs until you stop it. If you omit this field, the default of 0 is used.
2938
+ :param retry_config: The canary's retry configuration information.
2310
2939
 
2311
2940
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-schedule.html
2312
2941
  :exampleMetadata: fixture=_generated
@@ -2321,18 +2950,24 @@ class CfnCanary(
2321
2950
  expression="expression",
2322
2951
 
2323
2952
  # the properties below are optional
2324
- duration_in_seconds="durationInSeconds"
2953
+ duration_in_seconds="durationInSeconds",
2954
+ retry_config=synthetics.CfnCanary.RetryConfigProperty(
2955
+ max_retries=123
2956
+ )
2325
2957
  )
2326
2958
  '''
2327
2959
  if __debug__:
2328
2960
  type_hints = typing.get_type_hints(_typecheckingstub__e4999288d0e0c5de04c56a3436208778026602dfdca27710aee93f9f4e034c29)
2329
2961
  check_type(argname="argument expression", value=expression, expected_type=type_hints["expression"])
2330
2962
  check_type(argname="argument duration_in_seconds", value=duration_in_seconds, expected_type=type_hints["duration_in_seconds"])
2963
+ check_type(argname="argument retry_config", value=retry_config, expected_type=type_hints["retry_config"])
2331
2964
  self._values: typing.Dict[builtins.str, typing.Any] = {
2332
2965
  "expression": expression,
2333
2966
  }
2334
2967
  if duration_in_seconds is not None:
2335
2968
  self._values["duration_in_seconds"] = duration_in_seconds
2969
+ if retry_config is not None:
2970
+ self._values["retry_config"] = retry_config
2336
2971
 
2337
2972
  @builtins.property
2338
2973
  def expression(self) -> builtins.str:
@@ -2363,6 +2998,17 @@ class CfnCanary(
2363
2998
  result = self._values.get("duration_in_seconds")
2364
2999
  return typing.cast(typing.Optional[builtins.str], result)
2365
3000
 
3001
+ @builtins.property
3002
+ def retry_config(
3003
+ self,
3004
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCanary.RetryConfigProperty"]]:
3005
+ '''The canary's retry configuration information.
3006
+
3007
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-schedule.html#cfn-synthetics-canary-schedule-retryconfig
3008
+ '''
3009
+ result = self._values.get("retry_config")
3010
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnCanary.RetryConfigProperty"]], result)
3011
+
2366
3012
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
2367
3013
  return isinstance(rhs, self.__class__) and rhs._values == self._values
2368
3014
 
@@ -2399,7 +3045,7 @@ class CfnCanary(
2399
3045
 
2400
3046
  :param security_group_ids: The IDs of the security groups for this canary.
2401
3047
  :param subnet_ids: The IDs of the subnets where this canary is to run.
2402
- :param ipv6_allowed_for_dual_stack: Allow outbound IPv6 traffic on VPC canaries that are connected to dual-stack subnets if set to true.
3048
+ :param ipv6_allowed_for_dual_stack: Set this to ``true`` to allow outbound IPv6 traffic on VPC canaries that are connected to dual-stack subnets. The default is ``false`` .
2403
3049
  :param vpc_id: The ID of the VPC where this canary is to run.
2404
3050
 
2405
3051
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-vpcconfig.html
@@ -2459,7 +3105,9 @@ class CfnCanary(
2459
3105
  def ipv6_allowed_for_dual_stack(
2460
3106
  self,
2461
3107
  ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
2462
- '''Allow outbound IPv6 traffic on VPC canaries that are connected to dual-stack subnets if set to true.
3108
+ '''Set this to ``true`` to allow outbound IPv6 traffic on VPC canaries that are connected to dual-stack subnets.
3109
+
3110
+ The default is ``false`` .
2463
3111
 
2464
3112
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-vpcconfig.html#cfn-synthetics-canary-vpcconfig-ipv6allowedfordualstack
2465
3113
  '''
@@ -2492,6 +3140,7 @@ class CfnCanary(
2492
3140
  name_mapping={
2493
3141
  "base_canary_run_id": "baseCanaryRunId",
2494
3142
  "base_screenshots": "baseScreenshots",
3143
+ "browser_type": "browserType",
2495
3144
  },
2496
3145
  )
2497
3146
  class VisualReferenceProperty:
@@ -2500,6 +3149,7 @@ class CfnCanary(
2500
3149
  *,
2501
3150
  base_canary_run_id: builtins.str,
2502
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,
2503
3153
  ) -> None:
2504
3154
  '''Defines the screenshots to use as the baseline for comparisons during visual monitoring comparisons during future runs of this canary.
2505
3155
 
@@ -2509,6 +3159,7 @@ class CfnCanary(
2509
3159
 
2510
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.
2511
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`` .
2512
3163
 
2513
3164
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-visualreference.html
2514
3165
  :exampleMetadata: fixture=_generated
@@ -2528,18 +3179,22 @@ class CfnCanary(
2528
3179
 
2529
3180
  # the properties below are optional
2530
3181
  ignore_coordinates=["ignoreCoordinates"]
2531
- )]
3182
+ )],
3183
+ browser_type="browserType"
2532
3184
  )
2533
3185
  '''
2534
3186
  if __debug__:
2535
3187
  type_hints = typing.get_type_hints(_typecheckingstub__f52b6b7318141dc99f6bd36c21b91cda286b67d7dea805791a6132a2cd794526)
2536
3188
  check_type(argname="argument base_canary_run_id", value=base_canary_run_id, expected_type=type_hints["base_canary_run_id"])
2537
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"])
2538
3191
  self._values: typing.Dict[builtins.str, typing.Any] = {
2539
3192
  "base_canary_run_id": base_canary_run_id,
2540
3193
  }
2541
3194
  if base_screenshots is not None:
2542
3195
  self._values["base_screenshots"] = base_screenshots
3196
+ if browser_type is not None:
3197
+ self._values["browser_type"] = browser_type
2543
3198
 
2544
3199
  @builtins.property
2545
3200
  def base_canary_run_id(self) -> builtins.str:
@@ -2564,6 +3219,17 @@ class CfnCanary(
2564
3219
  result = self._values.get("base_screenshots")
2565
3220
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnCanary.BaseScreenshotProperty"]]]], result)
2566
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
+
2567
3233
  def __eq__(self, rhs: typing.Any) -> builtins.bool:
2568
3234
  return isinstance(rhs, self.__class__) and rhs._values == self._values
2569
3235
 
@@ -2587,7 +3253,9 @@ class CfnCanary(
2587
3253
  "runtime_version": "runtimeVersion",
2588
3254
  "schedule": "schedule",
2589
3255
  "artifact_config": "artifactConfig",
3256
+ "browser_configs": "browserConfigs",
2590
3257
  "delete_lambda_resources_on_canary_deletion": "deleteLambdaResourcesOnCanaryDeletion",
3258
+ "dry_run_and_update": "dryRunAndUpdate",
2591
3259
  "failure_retention_period": "failureRetentionPeriod",
2592
3260
  "provisioned_resource_cleanup": "provisionedResourceCleanup",
2593
3261
  "resources_to_replicate_tags": "resourcesToReplicateTags",
@@ -2596,6 +3264,7 @@ class CfnCanary(
2596
3264
  "success_retention_period": "successRetentionPeriod",
2597
3265
  "tags": "tags",
2598
3266
  "visual_reference": "visualReference",
3267
+ "visual_references": "visualReferences",
2599
3268
  "vpc_config": "vpcConfig",
2600
3269
  },
2601
3270
  )
@@ -2610,7 +3279,9 @@ class CfnCanaryProps:
2610
3279
  runtime_version: builtins.str,
2611
3280
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ScheduleProperty, typing.Dict[builtins.str, typing.Any]]],
2612
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,
2613
3283
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
3284
+ dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
2614
3285
  failure_retention_period: typing.Optional[jsii.Number] = None,
2615
3286
  provisioned_resource_cleanup: typing.Optional[builtins.str] = None,
2616
3287
  resources_to_replicate_tags: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -2619,6 +3290,7 @@ class CfnCanaryProps:
2619
3290
  success_retention_period: typing.Optional[jsii.Number] = None,
2620
3291
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2621
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,
2622
3294
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VPCConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2623
3295
  ) -> None:
2624
3296
  '''Properties for defining a ``CfnCanary``.
@@ -2630,7 +3302,9 @@ class CfnCanaryProps:
2630
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>`_ .
2631
3303
  :param schedule: A structure that contains information about how often the canary is to run, and when these runs are to stop.
2632
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.
2633
3306
  :param delete_lambda_resources_on_canary_deletion: (deprecated) Deletes associated lambda resources created by Synthetics if set to True. Default is False
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>`_ .
2634
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.
2635
3309
  :param provisioned_resource_cleanup: Specifies whether to also delete the Lambda functions and layers used by this canary when the canary is deleted. If it is ``AUTOMATIC`` , the Lambda functions and layers will be deleted when the canary is deleted. If the value of this parameter is ``OFF`` , then the value of the ``DeleteLambda`` parameter of the `DeleteCanary <https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_DeleteCanary.html>`_ operation determines whether the Lambda functions and layers will be deleted.
2636
3310
  :param resources_to_replicate_tags: 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 ``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.
@@ -2638,7 +3312,8 @@ class CfnCanaryProps:
2638
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.
2639
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.
2640
3314
  :param tags: The list of key-value pairs that are associated with the canary.
2641
- :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.
2642
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>`_ .
2643
3318
 
2644
3319
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html
@@ -2653,9 +3328,14 @@ class CfnCanaryProps:
2653
3328
  cfn_canary_props = synthetics.CfnCanaryProps(
2654
3329
  artifact_s3_location="artifactS3Location",
2655
3330
  code=synthetics.CfnCanary.CodeProperty(
2656
- handler="handler",
3331
+ blueprint_types=["blueprintTypes"],
3332
+ dependencies=[synthetics.CfnCanary.DependencyProperty(
3333
+ reference="reference",
2657
3334
 
2658
- # the properties below are optional
3335
+ # the properties below are optional
3336
+ type="type"
3337
+ )],
3338
+ handler="handler",
2659
3339
  s3_bucket="s3Bucket",
2660
3340
  s3_key="s3Key",
2661
3341
  s3_object_version="s3ObjectVersion",
@@ -2669,7 +3349,10 @@ class CfnCanaryProps:
2669
3349
  expression="expression",
2670
3350
 
2671
3351
  # the properties below are optional
2672
- duration_in_seconds="durationInSeconds"
3352
+ duration_in_seconds="durationInSeconds",
3353
+ retry_config=synthetics.CfnCanary.RetryConfigProperty(
3354
+ max_retries=123
3355
+ )
2673
3356
  ),
2674
3357
 
2675
3358
  # the properties below are optional
@@ -2679,7 +3362,11 @@ class CfnCanaryProps:
2679
3362
  kms_key_arn="kmsKeyArn"
2680
3363
  )
2681
3364
  ),
3365
+ browser_configs=[synthetics.CfnCanary.BrowserConfigProperty(
3366
+ browser_type="browserType"
3367
+ )],
2682
3368
  delete_lambda_resources_on_canary_deletion=False,
3369
+ dry_run_and_update=False,
2683
3370
  failure_retention_period=123,
2684
3371
  provisioned_resource_cleanup="provisionedResourceCleanup",
2685
3372
  resources_to_replicate_tags=["resourcesToReplicateTags"],
@@ -2688,6 +3375,7 @@ class CfnCanaryProps:
2688
3375
  environment_variables={
2689
3376
  "environment_variables_key": "environmentVariables"
2690
3377
  },
3378
+ ephemeral_storage=123,
2691
3379
  memory_in_mb=123,
2692
3380
  timeout_in_seconds=123
2693
3381
  ),
@@ -2706,8 +3394,21 @@ class CfnCanaryProps:
2706
3394
 
2707
3395
  # the properties below are optional
2708
3396
  ignore_coordinates=["ignoreCoordinates"]
2709
- )]
3397
+ )],
3398
+ browser_type="browserType"
2710
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
+ )],
2711
3412
  vpc_config=synthetics.CfnCanary.VPCConfigProperty(
2712
3413
  security_group_ids=["securityGroupIds"],
2713
3414
  subnet_ids=["subnetIds"],
@@ -2727,7 +3428,9 @@ class CfnCanaryProps:
2727
3428
  check_type(argname="argument runtime_version", value=runtime_version, expected_type=type_hints["runtime_version"])
2728
3429
  check_type(argname="argument schedule", value=schedule, expected_type=type_hints["schedule"])
2729
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"])
2730
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"])
3433
+ check_type(argname="argument dry_run_and_update", value=dry_run_and_update, expected_type=type_hints["dry_run_and_update"])
2731
3434
  check_type(argname="argument failure_retention_period", value=failure_retention_period, expected_type=type_hints["failure_retention_period"])
2732
3435
  check_type(argname="argument provisioned_resource_cleanup", value=provisioned_resource_cleanup, expected_type=type_hints["provisioned_resource_cleanup"])
2733
3436
  check_type(argname="argument resources_to_replicate_tags", value=resources_to_replicate_tags, expected_type=type_hints["resources_to_replicate_tags"])
@@ -2736,6 +3439,7 @@ class CfnCanaryProps:
2736
3439
  check_type(argname="argument success_retention_period", value=success_retention_period, expected_type=type_hints["success_retention_period"])
2737
3440
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
2738
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"])
2739
3443
  check_type(argname="argument vpc_config", value=vpc_config, expected_type=type_hints["vpc_config"])
2740
3444
  self._values: typing.Dict[builtins.str, typing.Any] = {
2741
3445
  "artifact_s3_location": artifact_s3_location,
@@ -2747,8 +3451,12 @@ class CfnCanaryProps:
2747
3451
  }
2748
3452
  if artifact_config is not None:
2749
3453
  self._values["artifact_config"] = artifact_config
3454
+ if browser_configs is not None:
3455
+ self._values["browser_configs"] = browser_configs
2750
3456
  if delete_lambda_resources_on_canary_deletion is not None:
2751
3457
  self._values["delete_lambda_resources_on_canary_deletion"] = delete_lambda_resources_on_canary_deletion
3458
+ if dry_run_and_update is not None:
3459
+ self._values["dry_run_and_update"] = dry_run_and_update
2752
3460
  if failure_retention_period is not None:
2753
3461
  self._values["failure_retention_period"] = failure_retention_period
2754
3462
  if provisioned_resource_cleanup is not None:
@@ -2765,6 +3473,8 @@ class CfnCanaryProps:
2765
3473
  self._values["tags"] = tags
2766
3474
  if visual_reference is not None:
2767
3475
  self._values["visual_reference"] = visual_reference
3476
+ if visual_references is not None:
3477
+ self._values["visual_references"] = visual_references
2768
3478
  if vpc_config is not None:
2769
3479
  self._values["vpc_config"] = vpc_config
2770
3480
 
@@ -2861,6 +3571,22 @@ class CfnCanaryProps:
2861
3571
  result = self._values.get("artifact_config")
2862
3572
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.ArtifactConfigProperty]], result)
2863
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
+
2864
3590
  @builtins.property
2865
3591
  def delete_lambda_resources_on_canary_deletion(
2866
3592
  self,
@@ -2877,6 +3603,23 @@ class CfnCanaryProps:
2877
3603
  result = self._values.get("delete_lambda_resources_on_canary_deletion")
2878
3604
  return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
2879
3605
 
3606
+ @builtins.property
3607
+ def dry_run_and_update(
3608
+ self,
3609
+ ) -> typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]]:
3610
+ '''Specifies whether to perform a dry run before updating the canary.
3611
+
3612
+ 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.
3613
+
3614
+ If set to ``false`` or omitted, the canary will be updated directly without first performing a dry run. The default value is ``false`` .
3615
+
3616
+ For more information, see `Performing safe canary updates <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html>`_ .
3617
+
3618
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-dryrunandupdate
3619
+ '''
3620
+ result = self._values.get("dry_run_and_update")
3621
+ return typing.cast(typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]], result)
3622
+
2880
3623
  @builtins.property
2881
3624
  def failure_retention_period(self) -> typing.Optional[jsii.Number]:
2882
3625
  '''The number of days to retain data about failed runs of this canary.
@@ -2966,13 +3709,32 @@ class CfnCanaryProps:
2966
3709
  def visual_reference(
2967
3710
  self,
2968
3711
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]]:
2969
- '''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
2970
3714
 
2971
3715
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-visualreference
3716
+ :stability: deprecated
2972
3717
  '''
2973
3718
  result = self._values.get("visual_reference")
2974
3719
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.VisualReferenceProperty]], result)
2975
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
+
2976
3738
  @builtins.property
2977
3739
  def vpc_config(
2978
3740
  self,
@@ -2998,7 +3760,7 @@ class CfnCanaryProps:
2998
3760
  )
2999
3761
 
3000
3762
 
3001
- @jsii.implements(_IInspectable_c2943556, _ITaggable_36806126)
3763
+ @jsii.implements(_IInspectable_c2943556, _IGroupRef_4fc55162, _ITaggable_36806126)
3002
3764
  class CfnGroup(
3003
3765
  _CfnResource_9df397a6,
3004
3766
  metaclass=jsii.JSIIMeta,
@@ -3043,7 +3805,8 @@ class CfnGroup(
3043
3805
  resource_arns: typing.Optional[typing.Sequence[builtins.str]] = None,
3044
3806
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
3045
3807
  ) -> None:
3046
- '''
3808
+ '''Create a new ``AWS::Synthetics::Group``.
3809
+
3047
3810
  :param scope: Scope in which this resource is defined.
3048
3811
  :param id: Construct identifier for this resource (unique in its scope).
3049
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.
@@ -3102,6 +3865,12 @@ class CfnGroup(
3102
3865
  def _cfn_properties(self) -> typing.Mapping[builtins.str, typing.Any]:
3103
3866
  return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.get(self, "cfnProperties"))
3104
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
+
3105
3874
  @builtins.property
3106
3875
  @jsii.member(jsii_name="tags")
3107
3876
  def tags(self) -> _TagManager_0a598cb3:
@@ -3274,17 +4043,14 @@ class Code(
3274
4043
 
3275
4044
  Example::
3276
4045
 
3277
- import aws_cdk as cdk
3278
-
3279
-
3280
4046
  canary = synthetics.Canary(self, "MyCanary",
3281
4047
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
3282
4048
  test=synthetics.Test.custom(
3283
4049
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
3284
4050
  handler="index.handler"
3285
4051
  ),
3286
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
3287
- memory=cdk.Size.mebibytes(1024)
4052
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4053
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
3288
4054
  )
3289
4055
  '''
3290
4056
 
@@ -3300,7 +4066,7 @@ class Code(
3300
4066
  deploy_time: typing.Optional[builtins.bool] = None,
3301
4067
  display_name: typing.Optional[builtins.str] = None,
3302
4068
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
3303
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
4069
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
3304
4070
  asset_hash: typing.Optional[builtins.str] = None,
3305
4071
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
3306
4072
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -3350,7 +4116,7 @@ class Code(
3350
4116
  @builtins.classmethod
3351
4117
  def from_bucket(
3352
4118
  cls,
3353
- bucket: _IBucket_42e086fd,
4119
+ bucket: _IBucketRef_3debe44e,
3354
4120
  key: builtins.str,
3355
4121
  object_version: typing.Optional[builtins.str] = None,
3356
4122
  ) -> "S3Code":
@@ -3650,17 +4416,14 @@ class CustomTestOptions:
3650
4416
 
3651
4417
  Example::
3652
4418
 
3653
- import aws_cdk as cdk
3654
-
3655
-
3656
4419
  canary = synthetics.Canary(self, "MyCanary",
3657
4420
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
3658
4421
  test=synthetics.Test.custom(
3659
4422
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
3660
4423
  handler="index.handler"
3661
4424
  ),
3662
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
3663
- memory=cdk.Size.mebibytes(1024)
4425
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4426
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
3664
4427
  )
3665
4428
  '''
3666
4429
  if __debug__:
@@ -3752,6 +4515,34 @@ class InlineCode(
3752
4515
  return typing.cast(CodeConfig, jsii.invoke(self, "bind", [scope, handler, _family, _runtime_name]))
3753
4516
 
3754
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
+
3755
4546
  class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Runtime"):
3756
4547
  '''Runtime options for a canary.
3757
4548
 
@@ -3759,17 +4550,14 @@ class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Run
3759
4550
 
3760
4551
  Example::
3761
4552
 
3762
- import aws_cdk as cdk
3763
-
3764
-
3765
4553
  canary = synthetics.Canary(self, "MyCanary",
3766
4554
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
3767
4555
  test=synthetics.Test.custom(
3768
4556
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
3769
4557
  handler="index.handler"
3770
4558
  ),
3771
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
3772
- memory=cdk.Size.mebibytes(1024)
4559
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
4560
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
3773
4561
  )
3774
4562
  '''
3775
4563
 
@@ -3801,6 +4589,70 @@ class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Run
3801
4589
  '''
3802
4590
  return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_NODEJS_PLAYWRIGHT_1_0"))
3803
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
+
3804
4656
  @jsii.python.classproperty
3805
4657
  @jsii.member(jsii_name="SYNTHETICS_NODEJS_PUPPETEER_3_5")
3806
4658
  def SYNTHETICS_NODEJS_PUPPETEER_3_5(cls) -> "Runtime":
@@ -4185,6 +5037,50 @@ class Runtime(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Run
4185
5037
  '''
4186
5038
  return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_PYTHON_SELENIUM_4_1"))
4187
5039
 
5040
+ @jsii.python.classproperty
5041
+ @jsii.member(jsii_name="SYNTHETICS_PYTHON_SELENIUM_5_0")
5042
+ def SYNTHETICS_PYTHON_SELENIUM_5_0(cls) -> "Runtime":
5043
+ '''``syn-python-selenium-5.0`` includes the following: - Lambda runtime Python 3.9 - Selenium version 4.21.0 - Chromium version 131.0.6778.264.
5044
+
5045
+ New Features:
5046
+
5047
+ - Automatic retry if the browser fails to launch.
5048
+
5049
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_python_selenium.html#CloudWatch_Synthetics_runtimeversion-syn-python-selenium-5.0
5050
+ '''
5051
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_PYTHON_SELENIUM_5_0"))
5052
+
5053
+ @jsii.python.classproperty
5054
+ @jsii.member(jsii_name="SYNTHETICS_PYTHON_SELENIUM_5_1")
5055
+ def SYNTHETICS_PYTHON_SELENIUM_5_1(cls) -> "Runtime":
5056
+ '''``syn-python-selenium-5.1`` includes the following: - Lambda runtime Python 3.9 - Selenium version 4.21.0 - Chromium version 131.0.6778.264.
5057
+
5058
+ New Features:
5059
+
5060
+ - Minor updates on metric emission.
5061
+
5062
+ :see: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_python_selenium.html#CloudWatch_Synthetics_runtimeversion-syn-python-selenium-5.1
5063
+ '''
5064
+ return typing.cast("Runtime", jsii.sget(cls, "SYNTHETICS_PYTHON_SELENIUM_5_1"))
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
+
4188
5084
  @builtins.property
4189
5085
  @jsii.member(jsii_name="family")
4190
5086
  def family(self) -> "RuntimeFamily":
@@ -4223,17 +5119,17 @@ class S3Code(
4223
5119
 
4224
5120
  # The code below shows an example of how to instantiate this type.
4225
5121
  # The values are placeholders you should change.
4226
- from aws_cdk import aws_s3 as s3
4227
5122
  from aws_cdk import aws_synthetics as synthetics
5123
+ from aws_cdk.interfaces import aws_s3 as interfaces_aws_s3
4228
5124
 
4229
- # bucket: s3.Bucket
5125
+ # bucket_ref: interfaces_aws_s3.IBucketRef
4230
5126
 
4231
- s3_code = synthetics.S3Code(bucket, "key", "objectVersion")
5127
+ s3_code = synthetics.S3Code(bucket_ref, "key", "objectVersion")
4232
5128
  '''
4233
5129
 
4234
5130
  def __init__(
4235
5131
  self,
4236
- bucket: _IBucket_42e086fd,
5132
+ bucket: _IBucketRef_3debe44e,
4237
5133
  key: builtins.str,
4238
5134
  object_version: typing.Optional[builtins.str] = None,
4239
5135
  ) -> None:
@@ -4286,11 +5182,11 @@ class Schedule(
4286
5182
  canary = synthetics.Canary(self, "MyCanary",
4287
5183
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
4288
5184
  test=synthetics.Test.custom(
4289
- code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
4290
- handler="index.handler"
5185
+ handler="canary.handler",
5186
+ code=synthetics.Code.from_asset(path.join(__dirname, "canaries"))
4291
5187
  ),
4292
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
4293
- active_tracing=True
5188
+ runtime=synthetics.Runtime.SYNTHETICS_PYTHON_SELENIUM_5_1,
5189
+ max_retries=2
4294
5190
  )
4295
5191
  '''
4296
5192
 
@@ -4369,17 +5265,14 @@ class Test(metaclass=jsii.JSIIMeta, jsii_type="aws-cdk-lib.aws_synthetics.Test")
4369
5265
 
4370
5266
  Example::
4371
5267
 
4372
- import aws_cdk as cdk
4373
-
4374
-
4375
5268
  canary = synthetics.Canary(self, "MyCanary",
4376
5269
  schedule=synthetics.Schedule.rate(Duration.minutes(5)),
4377
5270
  test=synthetics.Test.custom(
4378
5271
  code=synthetics.Code.from_asset(path.join(__dirname, "canary")),
4379
5272
  handler="index.handler"
4380
5273
  ),
4381
- runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_6_2,
4382
- memory=cdk.Size.mebibytes(1024)
5274
+ runtime=synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_7_0,
5275
+ resources_to_replicate_tags=[synthetics.ResourceToReplicateTags.LAMBDA_FUNCTION]
4383
5276
  )
4384
5277
  '''
4385
5278
 
@@ -4425,12 +5318,12 @@ class AssetCode(
4425
5318
  # The values are placeholders you should change.
4426
5319
  import aws_cdk as cdk
4427
5320
  from aws_cdk import aws_iam as iam
4428
- from aws_cdk import aws_kms as kms
4429
5321
  from aws_cdk import aws_synthetics as synthetics
5322
+ from aws_cdk.interfaces import aws_kms as interfaces_aws_kms
4430
5323
 
4431
5324
  # docker_image: cdk.DockerImage
4432
5325
  # grantable: iam.IGrantable
4433
- # key: kms.Key
5326
+ # key_ref: interfaces_aws_kms.IKeyRef
4434
5327
  # local_bundling: cdk.ILocalBundling
4435
5328
 
4436
5329
  asset_code = synthetics.AssetCode("assetPath",
@@ -4468,7 +5361,7 @@ class AssetCode(
4468
5361
  follow_symlinks=cdk.SymlinkFollowMode.NEVER,
4469
5362
  ignore_mode=cdk.IgnoreMode.GLOB,
4470
5363
  readers=[grantable],
4471
- source_kMSKey=key
5364
+ source_kMSKey=key_ref
4472
5365
  )
4473
5366
  '''
4474
5367
 
@@ -4479,7 +5372,7 @@ class AssetCode(
4479
5372
  deploy_time: typing.Optional[builtins.bool] = None,
4480
5373
  display_name: typing.Optional[builtins.str] = None,
4481
5374
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
4482
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
5375
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
4483
5376
  asset_hash: typing.Optional[builtins.str] = None,
4484
5377
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
4485
5378
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4546,6 +5439,7 @@ __all__ = [
4546
5439
  "ArtifactsBucketLocation",
4547
5440
  "ArtifactsEncryptionMode",
4548
5441
  "AssetCode",
5442
+ "BrowserType",
4549
5443
  "Canary",
4550
5444
  "CanaryProps",
4551
5445
  "CfnCanary",
@@ -4558,6 +5452,7 @@ __all__ = [
4558
5452
  "CronOptions",
4559
5453
  "CustomTestOptions",
4560
5454
  "InlineCode",
5455
+ "ResourceToReplicateTags",
4561
5456
  "Runtime",
4562
5457
  "RuntimeFamily",
4563
5458
  "S3Code",
@@ -4586,12 +5481,16 @@ def _typecheckingstub__b3b6d76e5f93e31884e16cc00a9b4fc93e6782ff7db09c74aa1ef9346
4586
5481
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
4587
5482
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
4588
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,
4589
5485
  canary_name: typing.Optional[builtins.str] = None,
4590
5486
  cleanup: typing.Optional[Cleanup] = None,
5487
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
4591
5488
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4592
5489
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
5490
+ max_retries: typing.Optional[jsii.Number] = None,
4593
5491
  memory: typing.Optional[_Size_7b441c34] = None,
4594
5492
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
5493
+ resources_to_replicate_tags: typing.Optional[typing.Sequence[ResourceToReplicateTags]] = None,
4595
5494
  role: typing.Optional[_IRole_235f5d8e] = None,
4596
5495
  schedule: typing.Optional[Schedule] = None,
4597
5496
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -4614,12 +5513,16 @@ def _typecheckingstub__44ec0b14d52b66927d4daebe6f97bb070f3629bb0eb86e21668ca7862
4614
5513
  artifact_s3_kms_key: typing.Optional[_IKey_5f11635f] = None,
4615
5514
  artifacts_bucket_lifecycle_rules: typing.Optional[typing.Sequence[typing.Union[_LifecycleRule_bb74e6ff, typing.Dict[builtins.str, typing.Any]]]] = None,
4616
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,
4617
5517
  canary_name: typing.Optional[builtins.str] = None,
4618
5518
  cleanup: typing.Optional[Cleanup] = None,
5519
+ dry_run_and_update: typing.Optional[builtins.bool] = None,
4619
5520
  environment_variables: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
4620
5521
  failure_retention_period: typing.Optional[_Duration_4839e8c3] = None,
5522
+ max_retries: typing.Optional[jsii.Number] = None,
4621
5523
  memory: typing.Optional[_Size_7b441c34] = None,
4622
5524
  provisioned_resource_cleanup: typing.Optional[builtins.bool] = None,
5525
+ resources_to_replicate_tags: typing.Optional[typing.Sequence[ResourceToReplicateTags]] = None,
4623
5526
  role: typing.Optional[_IRole_235f5d8e] = None,
4624
5527
  schedule: typing.Optional[Schedule] = None,
4625
5528
  security_groups: typing.Optional[typing.Sequence[_ISecurityGroup_acf8a799]] = None,
@@ -4644,7 +5547,9 @@ def _typecheckingstub__b8fcb3f48eca9399b4d1d31a5ef709e22f9fa52ad1e174b75d8313ef2
4644
5547
  runtime_version: builtins.str,
4645
5548
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ScheduleProperty, typing.Dict[builtins.str, typing.Any]]],
4646
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,
4647
5551
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5552
+ dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4648
5553
  failure_retention_period: typing.Optional[jsii.Number] = None,
4649
5554
  provisioned_resource_cleanup: typing.Optional[builtins.str] = None,
4650
5555
  resources_to_replicate_tags: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -4653,11 +5558,20 @@ def _typecheckingstub__b8fcb3f48eca9399b4d1d31a5ef709e22f9fa52ad1e174b75d8313ef2
4653
5558
  success_retention_period: typing.Optional[jsii.Number] = None,
4654
5559
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
4655
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,
4656
5562
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VPCConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4657
5563
  ) -> None:
4658
5564
  """Type checking stubs"""
4659
5565
  pass
4660
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
+
4661
5575
  def _typecheckingstub__bc166bab0fcf177897c1dbb233203e39458428064bc6ff7215b01b2b3ec6f3a2(
4662
5576
  inspector: _TreeInspector_488e0dd5,
4663
5577
  ) -> None:
@@ -4712,12 +5626,24 @@ def _typecheckingstub__5946ee35eff32e4581a6d2e3e0c69d62cdc3c17f079123211f7251bc1
4712
5626
  """Type checking stubs"""
4713
5627
  pass
4714
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
+
4715
5635
  def _typecheckingstub__442577c2c36e4274dca25b3d866e1aeec3f4ffc18732e01050131a31f768f2b3(
4716
5636
  value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
4717
5637
  ) -> None:
4718
5638
  """Type checking stubs"""
4719
5639
  pass
4720
5640
 
5641
+ def _typecheckingstub__59860e5fb72da4da1108545c9e0b8f706d34cf83eb363fda05f04cbb14baf1fe(
5642
+ value: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]],
5643
+ ) -> None:
5644
+ """Type checking stubs"""
5645
+ pass
5646
+
4721
5647
  def _typecheckingstub__02a7e43f45419c4cb8e909f309f8848d4ced91d17b01d14e5ea0b8cec28aab1b(
4722
5648
  value: typing.Optional[jsii.Number],
4723
5649
  ) -> None:
@@ -4766,6 +5692,12 @@ def _typecheckingstub__21e93a70969fa03a3f0aa85f6b1615a26d9a0afef8a0cf27f0888fc59
4766
5692
  """Type checking stubs"""
4767
5693
  pass
4768
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
+
4769
5701
  def _typecheckingstub__be63ed6816e3043aef63f6e7c0d0dfcc35f1249735acd4eff8530f8c2253b747(
4770
5702
  value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnCanary.VPCConfigProperty]],
4771
5703
  ) -> None:
@@ -4787,9 +5719,18 @@ def _typecheckingstub__8d401a2416919aef18322e23fb875fc37ad8f90f34f8f5708a245f22f
4787
5719
  """Type checking stubs"""
4788
5720
  pass
4789
5721
 
5722
+ def _typecheckingstub__c91e35c3c240434fee052d7f899893609a9c027813412eb6312483e200412435(
5723
+ *,
5724
+ browser_type: builtins.str,
5725
+ ) -> None:
5726
+ """Type checking stubs"""
5727
+ pass
5728
+
4790
5729
  def _typecheckingstub__3d403372a613babc1ab10717d050ec9a7f4055961f3545f2d0600d89c7b3dcc3(
4791
5730
  *,
4792
- 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,
4793
5734
  s3_bucket: typing.Optional[builtins.str] = None,
4794
5735
  s3_key: typing.Optional[builtins.str] = None,
4795
5736
  s3_object_version: typing.Optional[builtins.str] = None,
@@ -4799,10 +5740,26 @@ def _typecheckingstub__3d403372a613babc1ab10717d050ec9a7f4055961f3545f2d0600d89c
4799
5740
  """Type checking stubs"""
4800
5741
  pass
4801
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
+
5751
+ def _typecheckingstub__e7a2c989ca2c701e49af0e8032c8c49bb52546c68c9e6359df8e7a9f2c4cf9a1(
5752
+ *,
5753
+ max_retries: jsii.Number,
5754
+ ) -> None:
5755
+ """Type checking stubs"""
5756
+ pass
5757
+
4802
5758
  def _typecheckingstub__fa148862e82948accbbe951e7afcee721aa7014754c81106d2648fe1c5cf28e2(
4803
5759
  *,
4804
5760
  active_tracing: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4805
5761
  environment_variables: typing.Optional[typing.Union[typing.Mapping[builtins.str, builtins.str], _IResolvable_da3f097b]] = None,
5762
+ ephemeral_storage: typing.Optional[jsii.Number] = None,
4806
5763
  memory_in_mb: typing.Optional[jsii.Number] = None,
4807
5764
  timeout_in_seconds: typing.Optional[jsii.Number] = None,
4808
5765
  ) -> None:
@@ -4821,6 +5778,7 @@ def _typecheckingstub__e4999288d0e0c5de04c56a3436208778026602dfdca27710aee93f9f4
4821
5778
  *,
4822
5779
  expression: builtins.str,
4823
5780
  duration_in_seconds: typing.Optional[builtins.str] = None,
5781
+ retry_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.RetryConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4824
5782
  ) -> None:
4825
5783
  """Type checking stubs"""
4826
5784
  pass
@@ -4839,6 +5797,7 @@ def _typecheckingstub__f52b6b7318141dc99f6bd36c21b91cda286b67d7dea805791a6132a2c
4839
5797
  *,
4840
5798
  base_canary_run_id: builtins.str,
4841
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,
4842
5801
  ) -> None:
4843
5802
  """Type checking stubs"""
4844
5803
  pass
@@ -4852,7 +5811,9 @@ def _typecheckingstub__d869d56ce0d1d2e2add2f80bf39b28abbec2752c719e03194ee540bf1
4852
5811
  runtime_version: builtins.str,
4853
5812
  schedule: typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.ScheduleProperty, typing.Dict[builtins.str, typing.Any]]],
4854
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,
4855
5815
  delete_lambda_resources_on_canary_deletion: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
5816
+ dry_run_and_update: typing.Optional[typing.Union[builtins.bool, _IResolvable_da3f097b]] = None,
4856
5817
  failure_retention_period: typing.Optional[jsii.Number] = None,
4857
5818
  provisioned_resource_cleanup: typing.Optional[builtins.str] = None,
4858
5819
  resources_to_replicate_tags: typing.Optional[typing.Sequence[builtins.str]] = None,
@@ -4861,6 +5822,7 @@ def _typecheckingstub__d869d56ce0d1d2e2add2f80bf39b28abbec2752c719e03194ee540bf1
4861
5822
  success_retention_period: typing.Optional[jsii.Number] = None,
4862
5823
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
4863
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,
4864
5826
  vpc_config: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnCanary.VPCConfigProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
4865
5827
  ) -> None:
4866
5828
  """Type checking stubs"""
@@ -4922,7 +5884,7 @@ def _typecheckingstub__02201c2190b076bbceced8708b435fab8189f7f505650002941cc7a50
4922
5884
  deploy_time: typing.Optional[builtins.bool] = None,
4923
5885
  display_name: typing.Optional[builtins.str] = None,
4924
5886
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
4925
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
5887
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
4926
5888
  asset_hash: typing.Optional[builtins.str] = None,
4927
5889
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
4928
5890
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,
@@ -4934,7 +5896,7 @@ def _typecheckingstub__02201c2190b076bbceced8708b435fab8189f7f505650002941cc7a50
4934
5896
  pass
4935
5897
 
4936
5898
  def _typecheckingstub__449747bf42ca4f0c5864a72ad8bd3bcd8b8dedef173ae2e8a54e213a343068a6(
4937
- bucket: _IBucket_42e086fd,
5899
+ bucket: _IBucketRef_3debe44e,
4938
5900
  key: builtins.str,
4939
5901
  object_version: typing.Optional[builtins.str] = None,
4940
5902
  ) -> None:
@@ -5006,7 +5968,7 @@ def _typecheckingstub__ba23a2bd20fc9334e4b0fac6e1c104de0f53b4ec265cf53ef1a80ad25
5006
5968
  pass
5007
5969
 
5008
5970
  def _typecheckingstub__94d1b4f54d462b3f798f1b900a1b75b486a8dc3f4f14650931bf7631ce93a5bd(
5009
- bucket: _IBucket_42e086fd,
5971
+ bucket: _IBucketRef_3debe44e,
5010
5972
  key: builtins.str,
5011
5973
  object_version: typing.Optional[builtins.str] = None,
5012
5974
  ) -> None:
@@ -5040,7 +6002,7 @@ def _typecheckingstub__60a29a536d66536254f2ca409a65dc32f30e483b29091222d42f32106
5040
6002
  deploy_time: typing.Optional[builtins.bool] = None,
5041
6003
  display_name: typing.Optional[builtins.str] = None,
5042
6004
  readers: typing.Optional[typing.Sequence[_IGrantable_71c4f5de]] = None,
5043
- source_kms_key: typing.Optional[_IKey_5f11635f] = None,
6005
+ source_kms_key: typing.Optional[_IKeyRef_d4fc6ef3] = None,
5044
6006
  asset_hash: typing.Optional[builtins.str] = None,
5045
6007
  asset_hash_type: typing.Optional[_AssetHashType_05b67f2d] = None,
5046
6008
  bundling: typing.Optional[typing.Union[_BundlingOptions_588cc936, typing.Dict[builtins.str, typing.Any]]] = None,