aws-cdk-lib 2.157.0__py3-none-any.whl → 2.159.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 (294) hide show
  1. aws_cdk/__init__.py +52 -20
  2. aws_cdk/_jsii/__init__.py +17 -2
  3. aws_cdk/_jsii/{aws-cdk-lib@2.157.0.jsii.tgz → aws-cdk-lib@2.159.0.jsii.tgz} +0 -0
  4. aws_cdk/alexa_ask/__init__.py +16 -1
  5. aws_cdk/assertions/__init__.py +16 -1
  6. aws_cdk/aws_accessanalyzer/__init__.py +16 -1
  7. aws_cdk/aws_acmpca/__init__.py +16 -1
  8. aws_cdk/aws_amazonmq/__init__.py +16 -1
  9. aws_cdk/aws_amplify/__init__.py +38 -9
  10. aws_cdk/aws_amplifyuibuilder/__init__.py +16 -1
  11. aws_cdk/aws_apigateway/__init__.py +16 -1
  12. aws_cdk/aws_apigatewayv2/__init__.py +46 -1
  13. aws_cdk/aws_apigatewayv2_authorizers/__init__.py +16 -1
  14. aws_cdk/aws_apigatewayv2_integrations/__init__.py +16 -1
  15. aws_cdk/aws_appconfig/__init__.py +19 -4
  16. aws_cdk/aws_appflow/__init__.py +16 -1
  17. aws_cdk/aws_appintegrations/__init__.py +16 -1
  18. aws_cdk/aws_applicationautoscaling/__init__.py +16 -1
  19. aws_cdk/aws_applicationinsights/__init__.py +560 -5
  20. aws_cdk/aws_applicationsignals/__init__.py +186 -143
  21. aws_cdk/aws_appmesh/__init__.py +16 -1
  22. aws_cdk/aws_apprunner/__init__.py +16 -1
  23. aws_cdk/aws_appstream/__init__.py +16 -1
  24. aws_cdk/aws_appsync/__init__.py +16 -1
  25. aws_cdk/aws_apptest/__init__.py +16 -1
  26. aws_cdk/aws_aps/__init__.py +16 -1
  27. aws_cdk/aws_arczonalshift/__init__.py +16 -1
  28. aws_cdk/aws_athena/__init__.py +31 -16
  29. aws_cdk/aws_auditmanager/__init__.py +21 -6
  30. aws_cdk/aws_autoscaling/__init__.py +16 -1
  31. aws_cdk/aws_autoscaling_common/__init__.py +16 -1
  32. aws_cdk/aws_autoscaling_hooktargets/__init__.py +16 -1
  33. aws_cdk/aws_autoscalingplans/__init__.py +16 -1
  34. aws_cdk/aws_b2bi/__init__.py +16 -1
  35. aws_cdk/aws_backup/__init__.py +16 -1
  36. aws_cdk/aws_backupgateway/__init__.py +16 -1
  37. aws_cdk/aws_batch/__init__.py +16 -1
  38. aws_cdk/aws_bcmdataexports/__init__.py +16 -1
  39. aws_cdk/aws_bedrock/__init__.py +23 -8
  40. aws_cdk/aws_billingconductor/__init__.py +16 -1
  41. aws_cdk/aws_budgets/__init__.py +16 -1
  42. aws_cdk/aws_cassandra/__init__.py +16 -1
  43. aws_cdk/aws_ce/__init__.py +16 -1
  44. aws_cdk/aws_certificatemanager/__init__.py +16 -1
  45. aws_cdk/aws_chatbot/__init__.py +16 -1
  46. aws_cdk/aws_cleanrooms/__init__.py +16 -1
  47. aws_cdk/aws_cleanroomsml/__init__.py +16 -1
  48. aws_cdk/aws_cloud9/__init__.py +16 -1
  49. aws_cdk/aws_cloudformation/__init__.py +16 -1
  50. aws_cdk/aws_cloudfront/__init__.py +16 -1
  51. aws_cdk/aws_cloudfront/experimental/__init__.py +16 -1
  52. aws_cdk/aws_cloudfront_origins/__init__.py +16 -1
  53. aws_cdk/aws_cloudtrail/__init__.py +16 -1
  54. aws_cdk/aws_cloudwatch/__init__.py +16 -1
  55. aws_cdk/aws_cloudwatch_actions/__init__.py +16 -1
  56. aws_cdk/aws_codeartifact/__init__.py +16 -1
  57. aws_cdk/aws_codebuild/__init__.py +55 -19
  58. aws_cdk/aws_codecommit/__init__.py +16 -1
  59. aws_cdk/aws_codeconnections/__init__.py +17 -2
  60. aws_cdk/aws_codedeploy/__init__.py +16 -1
  61. aws_cdk/aws_codeguruprofiler/__init__.py +16 -1
  62. aws_cdk/aws_codegurureviewer/__init__.py +16 -1
  63. aws_cdk/aws_codepipeline/__init__.py +16 -1
  64. aws_cdk/aws_codepipeline_actions/__init__.py +16 -1
  65. aws_cdk/aws_codestar/__init__.py +16 -1
  66. aws_cdk/aws_codestarconnections/__init__.py +16 -1
  67. aws_cdk/aws_codestarnotifications/__init__.py +16 -1
  68. aws_cdk/aws_cognito/__init__.py +406 -204
  69. aws_cdk/aws_comprehend/__init__.py +16 -1
  70. aws_cdk/aws_config/__init__.py +16 -1
  71. aws_cdk/aws_connect/__init__.py +1695 -153
  72. aws_cdk/aws_connectcampaigns/__init__.py +16 -1
  73. aws_cdk/aws_controltower/__init__.py +16 -1
  74. aws_cdk/aws_cur/__init__.py +16 -1
  75. aws_cdk/aws_customerprofiles/__init__.py +16 -1
  76. aws_cdk/aws_databrew/__init__.py +16 -1
  77. aws_cdk/aws_datapipeline/__init__.py +16 -1
  78. aws_cdk/aws_datasync/__init__.py +16 -1
  79. aws_cdk/aws_datazone/__init__.py +681 -41
  80. aws_cdk/aws_dax/__init__.py +16 -1
  81. aws_cdk/aws_deadline/__init__.py +16 -1
  82. aws_cdk/aws_detective/__init__.py +16 -1
  83. aws_cdk/aws_devicefarm/__init__.py +16 -1
  84. aws_cdk/aws_devopsguru/__init__.py +16 -1
  85. aws_cdk/aws_directoryservice/__init__.py +16 -1
  86. aws_cdk/aws_dlm/__init__.py +16 -1
  87. aws_cdk/aws_dms/__init__.py +16 -1
  88. aws_cdk/aws_docdb/__init__.py +22 -2
  89. aws_cdk/aws_docdbelastic/__init__.py +16 -1
  90. aws_cdk/aws_dynamodb/__init__.py +21 -6
  91. aws_cdk/aws_ec2/__init__.py +137 -37
  92. aws_cdk/aws_ecr/__init__.py +30 -7
  93. aws_cdk/aws_ecr_assets/__init__.py +16 -1
  94. aws_cdk/aws_ecs/__init__.py +36 -21
  95. aws_cdk/aws_ecs_patterns/__init__.py +16 -1
  96. aws_cdk/aws_efs/__init__.py +16 -1
  97. aws_cdk/aws_eks/__init__.py +16 -1
  98. aws_cdk/aws_elasticache/__init__.py +16 -1
  99. aws_cdk/aws_elasticbeanstalk/__init__.py +16 -1
  100. aws_cdk/aws_elasticloadbalancing/__init__.py +16 -1
  101. aws_cdk/aws_elasticloadbalancingv2/__init__.py +183 -21
  102. aws_cdk/aws_elasticloadbalancingv2_actions/__init__.py +16 -1
  103. aws_cdk/aws_elasticloadbalancingv2_targets/__init__.py +16 -1
  104. aws_cdk/aws_elasticsearch/__init__.py +16 -1
  105. aws_cdk/aws_emr/__init__.py +24 -9
  106. aws_cdk/aws_emrcontainers/__init__.py +16 -1
  107. aws_cdk/aws_emrserverless/__init__.py +16 -1
  108. aws_cdk/aws_entityresolution/__init__.py +16 -1
  109. aws_cdk/aws_events/__init__.py +35 -18
  110. aws_cdk/aws_events_targets/__init__.py +181 -86
  111. aws_cdk/aws_eventschemas/__init__.py +16 -1
  112. aws_cdk/aws_evidently/__init__.py +16 -1
  113. aws_cdk/aws_finspace/__init__.py +16 -1
  114. aws_cdk/aws_fis/__init__.py +16 -1
  115. aws_cdk/aws_fms/__init__.py +75 -1
  116. aws_cdk/aws_forecast/__init__.py +16 -1
  117. aws_cdk/aws_frauddetector/__init__.py +16 -1
  118. aws_cdk/aws_fsx/__init__.py +19 -4
  119. aws_cdk/aws_gamelift/__init__.py +56 -53
  120. aws_cdk/aws_globalaccelerator/__init__.py +38 -30
  121. aws_cdk/aws_globalaccelerator_endpoints/__init__.py +16 -1
  122. aws_cdk/aws_glue/__init__.py +16 -1
  123. aws_cdk/aws_grafana/__init__.py +16 -1
  124. aws_cdk/aws_greengrass/__init__.py +16 -1
  125. aws_cdk/aws_greengrassv2/__init__.py +16 -1
  126. aws_cdk/aws_groundstation/__init__.py +16 -1
  127. aws_cdk/aws_guardduty/__init__.py +16 -1
  128. aws_cdk/aws_healthimaging/__init__.py +16 -1
  129. aws_cdk/aws_healthlake/__init__.py +16 -1
  130. aws_cdk/aws_iam/__init__.py +38 -21
  131. aws_cdk/aws_identitystore/__init__.py +16 -1
  132. aws_cdk/aws_imagebuilder/__init__.py +16 -1
  133. aws_cdk/aws_inspector/__init__.py +16 -1
  134. aws_cdk/aws_inspectorv2/__init__.py +16 -1
  135. aws_cdk/aws_internetmonitor/__init__.py +16 -1
  136. aws_cdk/aws_iot/__init__.py +16 -1
  137. aws_cdk/aws_iot1click/__init__.py +16 -1
  138. aws_cdk/aws_iotanalytics/__init__.py +16 -1
  139. aws_cdk/aws_iotcoredeviceadvisor/__init__.py +16 -1
  140. aws_cdk/aws_iotevents/__init__.py +16 -1
  141. aws_cdk/aws_iotfleethub/__init__.py +16 -1
  142. aws_cdk/aws_iotfleetwise/__init__.py +435 -1
  143. aws_cdk/aws_iotsitewise/__init__.py +106 -2
  144. aws_cdk/aws_iotthingsgraph/__init__.py +16 -1
  145. aws_cdk/aws_iottwinmaker/__init__.py +16 -1
  146. aws_cdk/aws_iotwireless/__init__.py +221 -1
  147. aws_cdk/aws_ivs/__init__.py +16 -1
  148. aws_cdk/aws_ivschat/__init__.py +16 -1
  149. aws_cdk/aws_kafkaconnect/__init__.py +16 -1
  150. aws_cdk/aws_kendra/__init__.py +16 -1
  151. aws_cdk/aws_kendraranking/__init__.py +16 -1
  152. aws_cdk/aws_kinesis/__init__.py +16 -1
  153. aws_cdk/aws_kinesisanalytics/__init__.py +16 -1
  154. aws_cdk/aws_kinesisanalyticsv2/__init__.py +16 -1
  155. aws_cdk/aws_kinesisfirehose/__init__.py +16 -1
  156. aws_cdk/aws_kinesisvideo/__init__.py +16 -1
  157. aws_cdk/aws_kms/__init__.py +16 -1
  158. aws_cdk/aws_lakeformation/__init__.py +16 -1
  159. aws_cdk/aws_lambda/__init__.py +145 -17
  160. aws_cdk/aws_lambda_destinations/__init__.py +16 -1
  161. aws_cdk/aws_lambda_event_sources/__init__.py +16 -1
  162. aws_cdk/aws_lambda_nodejs/__init__.py +16 -1
  163. aws_cdk/aws_launchwizard/__init__.py +16 -1
  164. aws_cdk/aws_lex/__init__.py +31 -2
  165. aws_cdk/aws_licensemanager/__init__.py +16 -1
  166. aws_cdk/aws_lightsail/__init__.py +16 -1
  167. aws_cdk/aws_location/__init__.py +16 -1
  168. aws_cdk/aws_logs/__init__.py +17 -2
  169. aws_cdk/aws_logs_destinations/__init__.py +16 -1
  170. aws_cdk/aws_lookoutequipment/__init__.py +16 -1
  171. aws_cdk/aws_lookoutmetrics/__init__.py +16 -1
  172. aws_cdk/aws_lookoutvision/__init__.py +16 -1
  173. aws_cdk/aws_m2/__init__.py +16 -1
  174. aws_cdk/aws_macie/__init__.py +16 -1
  175. aws_cdk/aws_managedblockchain/__init__.py +16 -1
  176. aws_cdk/aws_mediaconnect/__init__.py +127 -1
  177. aws_cdk/aws_mediaconvert/__init__.py +16 -1
  178. aws_cdk/aws_medialive/__init__.py +8004 -3263
  179. aws_cdk/aws_mediapackage/__init__.py +16 -1
  180. aws_cdk/aws_mediapackagev2/__init__.py +16 -1
  181. aws_cdk/aws_mediastore/__init__.py +16 -1
  182. aws_cdk/aws_mediatailor/__init__.py +16 -1
  183. aws_cdk/aws_memorydb/__init__.py +16 -1
  184. aws_cdk/aws_msk/__init__.py +303 -480
  185. aws_cdk/aws_mwaa/__init__.py +16 -1
  186. aws_cdk/aws_neptune/__init__.py +16 -1
  187. aws_cdk/aws_neptunegraph/__init__.py +16 -1
  188. aws_cdk/aws_networkfirewall/__init__.py +16 -1
  189. aws_cdk/aws_networkmanager/__init__.py +16 -1
  190. aws_cdk/aws_nimblestudio/__init__.py +16 -1
  191. aws_cdk/aws_oam/__init__.py +16 -1
  192. aws_cdk/aws_omics/__init__.py +16 -1
  193. aws_cdk/aws_opensearchserverless/__init__.py +16 -1
  194. aws_cdk/aws_opensearchservice/__init__.py +22 -1
  195. aws_cdk/aws_opsworks/__init__.py +16 -1
  196. aws_cdk/aws_opsworkscm/__init__.py +16 -1
  197. aws_cdk/aws_organizations/__init__.py +16 -1
  198. aws_cdk/aws_osis/__init__.py +16 -1
  199. aws_cdk/aws_panorama/__init__.py +16 -1
  200. aws_cdk/aws_paymentcryptography/__init__.py +16 -1
  201. aws_cdk/aws_pcaconnectorad/__init__.py +16 -1
  202. aws_cdk/aws_pcaconnectorscep/__init__.py +85 -31
  203. aws_cdk/aws_personalize/__init__.py +16 -1
  204. aws_cdk/aws_pinpoint/__init__.py +16 -1
  205. aws_cdk/aws_pinpointemail/__init__.py +16 -1
  206. aws_cdk/aws_pipes/__init__.py +65 -1
  207. aws_cdk/aws_proton/__init__.py +16 -1
  208. aws_cdk/aws_qbusiness/__init__.py +27 -15
  209. aws_cdk/aws_qldb/__init__.py +16 -1
  210. aws_cdk/aws_quicksight/__init__.py +654 -100
  211. aws_cdk/aws_ram/__init__.py +16 -1
  212. aws_cdk/aws_rds/__init__.py +78 -32
  213. aws_cdk/aws_redshift/__init__.py +16 -1
  214. aws_cdk/aws_redshiftserverless/__init__.py +16 -1
  215. aws_cdk/aws_refactorspaces/__init__.py +16 -1
  216. aws_cdk/aws_rekognition/__init__.py +16 -1
  217. aws_cdk/aws_resiliencehub/__init__.py +16 -1
  218. aws_cdk/aws_resourceexplorer2/__init__.py +16 -1
  219. aws_cdk/aws_resourcegroups/__init__.py +16 -1
  220. aws_cdk/aws_robomaker/__init__.py +16 -1
  221. aws_cdk/aws_rolesanywhere/__init__.py +16 -1
  222. aws_cdk/aws_route53/__init__.py +16 -1
  223. aws_cdk/aws_route53_patterns/__init__.py +16 -1
  224. aws_cdk/aws_route53_targets/__init__.py +16 -1
  225. aws_cdk/aws_route53profiles/__init__.py +16 -1
  226. aws_cdk/aws_route53recoverycontrol/__init__.py +16 -1
  227. aws_cdk/aws_route53recoveryreadiness/__init__.py +16 -1
  228. aws_cdk/aws_route53resolver/__init__.py +16 -1
  229. aws_cdk/aws_rum/__init__.py +16 -1
  230. aws_cdk/aws_s3/__init__.py +231 -34
  231. aws_cdk/aws_s3_assets/__init__.py +16 -1
  232. aws_cdk/aws_s3_deployment/__init__.py +16 -1
  233. aws_cdk/aws_s3_notifications/__init__.py +16 -1
  234. aws_cdk/aws_s3express/__init__.py +16 -1
  235. aws_cdk/aws_s3objectlambda/__init__.py +18 -3
  236. aws_cdk/aws_s3outposts/__init__.py +16 -1
  237. aws_cdk/aws_sagemaker/__init__.py +888 -59
  238. aws_cdk/aws_sam/__init__.py +16 -1
  239. aws_cdk/aws_scheduler/__init__.py +16 -1
  240. aws_cdk/aws_sdb/__init__.py +16 -1
  241. aws_cdk/aws_secretsmanager/__init__.py +38 -9
  242. aws_cdk/aws_securityhub/__init__.py +277 -20
  243. aws_cdk/aws_securitylake/__init__.py +343 -8
  244. aws_cdk/aws_servicecatalog/__init__.py +16 -1
  245. aws_cdk/aws_servicecatalogappregistry/__init__.py +16 -1
  246. aws_cdk/aws_servicediscovery/__init__.py +21 -6
  247. aws_cdk/aws_ses/__init__.py +16 -1
  248. aws_cdk/aws_ses_actions/__init__.py +16 -1
  249. aws_cdk/aws_shield/__init__.py +16 -1
  250. aws_cdk/aws_signer/__init__.py +16 -1
  251. aws_cdk/aws_simspaceweaver/__init__.py +16 -1
  252. aws_cdk/aws_sns/__init__.py +16 -9
  253. aws_cdk/aws_sns_subscriptions/__init__.py +16 -1
  254. aws_cdk/aws_sqs/__init__.py +16 -1
  255. aws_cdk/aws_ssm/__init__.py +36 -13
  256. aws_cdk/aws_ssmcontacts/__init__.py +16 -1
  257. aws_cdk/aws_ssmincidents/__init__.py +16 -1
  258. aws_cdk/aws_ssmquicksetup/__init__.py +16 -1
  259. aws_cdk/aws_sso/__init__.py +16 -1
  260. aws_cdk/aws_stepfunctions/__init__.py +16 -1
  261. aws_cdk/aws_stepfunctions_tasks/__init__.py +52 -1
  262. aws_cdk/aws_supportapp/__init__.py +16 -1
  263. aws_cdk/aws_synthetics/__init__.py +16 -1
  264. aws_cdk/aws_systemsmanagersap/__init__.py +16 -1
  265. aws_cdk/aws_timestream/__init__.py +16 -1
  266. aws_cdk/aws_transfer/__init__.py +16 -1
  267. aws_cdk/aws_verifiedpermissions/__init__.py +16 -1
  268. aws_cdk/aws_voiceid/__init__.py +16 -1
  269. aws_cdk/aws_vpclattice/__init__.py +16 -1
  270. aws_cdk/aws_waf/__init__.py +16 -1
  271. aws_cdk/aws_wafregional/__init__.py +16 -1
  272. aws_cdk/aws_wafv2/__init__.py +16 -1
  273. aws_cdk/aws_wisdom/__init__.py +16 -1
  274. aws_cdk/aws_workspaces/__init__.py +16 -1
  275. aws_cdk/aws_workspacesthinclient/__init__.py +16 -1
  276. aws_cdk/aws_workspacesweb/__init__.py +16 -1
  277. aws_cdk/aws_xray/__init__.py +16 -1
  278. aws_cdk/cloud_assembly_schema/__init__.py +16 -1
  279. aws_cdk/cloudformation_include/__init__.py +16 -1
  280. aws_cdk/custom_resources/__init__.py +16 -1
  281. aws_cdk/cx_api/__init__.py +35 -1
  282. aws_cdk/lambda_layer_awscli/__init__.py +16 -1
  283. aws_cdk/lambda_layer_kubectl/__init__.py +16 -1
  284. aws_cdk/lambda_layer_node_proxy_agent/__init__.py +16 -1
  285. aws_cdk/pipelines/__init__.py +16 -1
  286. aws_cdk/region_info/__init__.py +16 -1
  287. aws_cdk/triggers/__init__.py +16 -1
  288. {aws_cdk_lib-2.157.0.dist-info → aws_cdk_lib-2.159.0.dist-info}/METADATA +5 -5
  289. {aws_cdk_lib-2.157.0.dist-info → aws_cdk_lib-2.159.0.dist-info}/NOTICE +27 -8
  290. aws_cdk_lib-2.159.0.dist-info/RECORD +294 -0
  291. aws_cdk_lib-2.157.0.dist-info/RECORD +0 -294
  292. {aws_cdk_lib-2.157.0.dist-info → aws_cdk_lib-2.159.0.dist-info}/LICENSE +0 -0
  293. {aws_cdk_lib-2.157.0.dist-info → aws_cdk_lib-2.159.0.dist-info}/WHEEL +0 -0
  294. {aws_cdk_lib-2.157.0.dist-info → aws_cdk_lib-2.159.0.dist-info}/top_level.txt +0 -0
@@ -48,7 +48,22 @@ import jsii
48
48
  import publication
49
49
  import typing_extensions
50
50
 
51
- from typeguard import check_type
51
+ import typeguard
52
+ from importlib.metadata import version as _metadata_package_version
53
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
54
+
55
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
56
+ if TYPEGUARD_MAJOR_VERSION <= 2:
57
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
58
+ else:
59
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
60
+ pass
61
+ else:
62
+ if TYPEGUARD_MAJOR_VERSION == 3:
63
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
64
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
65
+ else:
66
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
52
67
 
53
68
  from .._jsii import *
54
69
 
@@ -76,9 +91,23 @@ class CfnServiceLevelObjective(
76
91
 
77
92
  Create an SLO to set a target for a service or operation’s availability or latency. CloudWatch measures this target frequently you can find whether it has been breached.
78
93
 
79
- When you create an SLO, you set an *attainment goal* for it. An *attainment goal* is the ratio of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state.
94
+ The target performance quality that is defined for an SLO is the *attainment goal* . An attainment goal is the percentage of time or requests that the SLI is expected to meet the threshold over each time interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state.
80
95
 
81
- After you have created an SLO, you can retrieve error budget reports for it. An *error budget* is the number of periods or amount of time that your service can accumulate during an interval before your overall SLO budget health is breached and the SLO is considered to be unmet. for example, an SLO with a threshold that 99.95% of requests must be completed under 2000ms every month translates to an error budget of 21.9 minutes of downtime per month.
96
+ When you create an SLO, you specify whether it is a *period-based SLO* or a *request-based SLO* . Each type of SLO has a different way of evaluating your application's performance against its attainment goal.
97
+
98
+ - A *period-based SLO* uses defined *periods* of time within a specified total time interval. For each period of time, Application Signals determines whether the application met its goal. The attainment rate is calculated as the ``number of good periods/number of total periods`` .
99
+
100
+ For example, for a period-based SLO, meeting an attainment goal of 99.9% means that within your interval, your application must meet its performance goal during at least 99.9% of the time periods.
101
+
102
+ - A *request-based SLO* doesn't use pre-defined periods of time. Instead, the SLO measures ``number of good requests/number of total requests`` during the interval. At any time, you can find the ratio of good requests to total requests for the interval up to the time stamp that you specify, and measure that ratio against the goal set in your SLO.
103
+
104
+ After you have created an SLO, you can retrieve error budget reports for it. An *error budget* is the amount of time or amount of requests that your application can be non-compliant with the SLO's goal, and still have your application meet the goal.
105
+
106
+ - For a period-based SLO, the error budget starts at a number defined by the highest number of periods that can fail to meet the threshold, while still meeting the overall goal. The *remaining error budget* decreases with every failed period that is recorded. The error budget within one interval can never increase.
107
+
108
+ For example, an SLO with a threshold that 99.95% of requests must be completed under 2000ms every month translates to an error budget of 21.9 minutes of downtime per month.
109
+
110
+ - For a request-based SLO, the remaining error budget is dynamic and can increase or decrease, depending on the ratio of good requests to total requests.
82
111
 
83
112
  When you call this operation, Application Signals creates the *AWSServiceRoleForCloudWatchApplicationSignals* service-linked role, if it doesn't already exist in your account. This service- linked role has the following permissions:
84
113
 
@@ -92,6 +121,8 @@ class CfnServiceLevelObjective(
92
121
 
93
122
  You can easily set SLO targets for your applications that are discovered by Application Signals, using critical metrics such as latency and availability. You can also set SLOs against any CloudWatch metric or math expression that produces a time series.
94
123
 
124
+ You cannot change from a period-based SLO to a request-based SLO, or change from a request-based SLO to a period-based SLO.
125
+
95
126
  For more information about SLOs, see `Service level objectives (SLOs) <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html>`_ .
96
127
 
97
128
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationsignals-servicelevelobjective.html
@@ -106,42 +137,6 @@ class CfnServiceLevelObjective(
106
137
 
107
138
  cfn_service_level_objective = applicationsignals.CfnServiceLevelObjective(self, "MyCfnServiceLevelObjective",
108
139
  name="name",
109
- sli=applicationsignals.CfnServiceLevelObjective.SliProperty(
110
- comparison_operator="comparisonOperator",
111
- metric_threshold=123,
112
- sli_metric=applicationsignals.CfnServiceLevelObjective.SliMetricProperty(
113
- key_attributes={
114
- "key_attributes_key": "keyAttributes"
115
- },
116
- metric_data_queries=[applicationsignals.CfnServiceLevelObjective.MetricDataQueryProperty(
117
- id="id",
118
-
119
- # the properties below are optional
120
- account_id="accountId",
121
- expression="expression",
122
- metric_stat=applicationsignals.CfnServiceLevelObjective.MetricStatProperty(
123
- metric=applicationsignals.CfnServiceLevelObjective.MetricProperty(
124
- dimensions=[applicationsignals.CfnServiceLevelObjective.DimensionProperty(
125
- name="name",
126
- value="value"
127
- )],
128
- metric_name="metricName",
129
- namespace="namespace"
130
- ),
131
- period=123,
132
- stat="stat",
133
-
134
- # the properties below are optional
135
- unit="unit"
136
- ),
137
- return_data=False
138
- )],
139
- metric_type="metricType",
140
- operation_name="operationName",
141
- period_seconds=123,
142
- statistic="statistic"
143
- )
144
- ),
145
140
 
146
141
  # the properties below are optional
147
142
  description="description",
@@ -244,6 +239,42 @@ class CfnServiceLevelObjective(
244
239
  comparison_operator="comparisonOperator",
245
240
  metric_threshold=123
246
241
  ),
242
+ sli=applicationsignals.CfnServiceLevelObjective.SliProperty(
243
+ comparison_operator="comparisonOperator",
244
+ metric_threshold=123,
245
+ sli_metric=applicationsignals.CfnServiceLevelObjective.SliMetricProperty(
246
+ key_attributes={
247
+ "key_attributes_key": "keyAttributes"
248
+ },
249
+ metric_data_queries=[applicationsignals.CfnServiceLevelObjective.MetricDataQueryProperty(
250
+ id="id",
251
+
252
+ # the properties below are optional
253
+ account_id="accountId",
254
+ expression="expression",
255
+ metric_stat=applicationsignals.CfnServiceLevelObjective.MetricStatProperty(
256
+ metric=applicationsignals.CfnServiceLevelObjective.MetricProperty(
257
+ dimensions=[applicationsignals.CfnServiceLevelObjective.DimensionProperty(
258
+ name="name",
259
+ value="value"
260
+ )],
261
+ metric_name="metricName",
262
+ namespace="namespace"
263
+ ),
264
+ period=123,
265
+ stat="stat",
266
+
267
+ # the properties below are optional
268
+ unit="unit"
269
+ ),
270
+ return_data=False
271
+ )],
272
+ metric_type="metricType",
273
+ operation_name="operationName",
274
+ period_seconds=123,
275
+ statistic="statistic"
276
+ )
277
+ ),
247
278
  tags=[CfnTag(
248
279
  key="key",
249
280
  value="value"
@@ -257,20 +288,20 @@ class CfnServiceLevelObjective(
257
288
  id: builtins.str,
258
289
  *,
259
290
  name: builtins.str,
260
- sli: typing.Union[_IResolvable_da3f097b, typing.Union["CfnServiceLevelObjective.SliProperty", typing.Dict[builtins.str, typing.Any]]],
261
291
  description: typing.Optional[builtins.str] = None,
262
292
  goal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnServiceLevelObjective.GoalProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
263
293
  request_based_sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnServiceLevelObjective.RequestBasedSliProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
294
+ sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union["CfnServiceLevelObjective.SliProperty", typing.Dict[builtins.str, typing.Any]]]] = None,
264
295
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
265
296
  ) -> None:
266
297
  '''
267
298
  :param scope: Scope in which this resource is defined.
268
299
  :param id: Construct identifier for this resource (unique in its scope).
269
300
  :param name: A name for this SLO.
270
- :param sli: A structure containing information about the performance metric that this SLO monitors.
271
301
  :param description: An optional description for this SLO. Default: - "No description"
272
302
  :param goal: This structure contains the attributes that determine the goal of an SLO. This includes the time period for evaluation and the attainment threshold.
273
- :param request_based_sli: This structure contains information about the performance metric that a request-based SLO monitors.
303
+ :param request_based_sli: A structure containing information about the performance metric that this SLO monitors, if this is a request-based SLO.
304
+ :param sli: A structure containing information about the performance metric that this SLO monitors, if this is a period-based SLO.
274
305
  :param tags: A list of key-value pairs to associate with the SLO. You can associate as many as 50 tags with an SLO. To be able to associate tags with the SLO when you create the SLO, you must have the cloudwatch:TagResource permission. Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
275
306
  '''
276
307
  if __debug__:
@@ -279,10 +310,10 @@ class CfnServiceLevelObjective(
279
310
  check_type(argname="argument id", value=id, expected_type=type_hints["id"])
280
311
  props = CfnServiceLevelObjectiveProps(
281
312
  name=name,
282
- sli=sli,
283
313
  description=description,
284
314
  goal=goal,
285
315
  request_based_sli=request_based_sli,
316
+ sli=sli,
286
317
  tags=tags,
287
318
  )
288
319
 
@@ -378,24 +409,6 @@ class CfnServiceLevelObjective(
378
409
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
379
410
  jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]
380
411
 
381
- @builtins.property
382
- @jsii.member(jsii_name="sli")
383
- def sli(
384
- self,
385
- ) -> typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.SliProperty"]:
386
- '''A structure containing information about the performance metric that this SLO monitors.'''
387
- return typing.cast(typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.SliProperty"], jsii.get(self, "sli"))
388
-
389
- @sli.setter
390
- def sli(
391
- self,
392
- value: typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.SliProperty"],
393
- ) -> None:
394
- if __debug__:
395
- type_hints = typing.get_type_hints(_typecheckingstub__938ccf6991aba4b5875a4ca09dfcdb00a5c7e9a92bba0e785ddfbebb228037c3)
396
- check_type(argname="argument value", value=value, expected_type=type_hints["value"])
397
- jsii.set(self, "sli", value) # pyright: ignore[reportArgumentType]
398
-
399
412
  @builtins.property
400
413
  @jsii.member(jsii_name="description")
401
414
  def description(self) -> typing.Optional[builtins.str]:
@@ -432,7 +445,7 @@ class CfnServiceLevelObjective(
432
445
  def request_based_sli(
433
446
  self,
434
447
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.RequestBasedSliProperty"]]:
435
- '''This structure contains information about the performance metric that a request-based SLO monitors.'''
448
+ '''A structure containing information about the performance metric that this SLO monitors, if this is a request-based SLO.'''
436
449
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.RequestBasedSliProperty"]], jsii.get(self, "requestBasedSli"))
437
450
 
438
451
  @request_based_sli.setter
@@ -445,6 +458,24 @@ class CfnServiceLevelObjective(
445
458
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
446
459
  jsii.set(self, "requestBasedSli", value) # pyright: ignore[reportArgumentType]
447
460
 
461
+ @builtins.property
462
+ @jsii.member(jsii_name="sli")
463
+ def sli(
464
+ self,
465
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.SliProperty"]]:
466
+ '''A structure containing information about the performance metric that this SLO monitors, if this is a period-based SLO.'''
467
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.SliProperty"]], jsii.get(self, "sli"))
468
+
469
+ @sli.setter
470
+ def sli(
471
+ self,
472
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.SliProperty"]],
473
+ ) -> None:
474
+ if __debug__:
475
+ type_hints = typing.get_type_hints(_typecheckingstub__938ccf6991aba4b5875a4ca09dfcdb00a5c7e9a92bba0e785ddfbebb228037c3)
476
+ check_type(argname="argument value", value=value, expected_type=type_hints["value"])
477
+ jsii.set(self, "sli", value) # pyright: ignore[reportArgumentType]
478
+
448
479
  @builtins.property
449
480
  @jsii.member(jsii_name="tags")
450
481
  def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
@@ -651,7 +682,7 @@ class CfnServiceLevelObjective(
651
682
 
652
683
  This includes the time period for evaluation and the attainment threshold.
653
684
 
654
- :param attainment_goal: The threshold that determines if the goal is being met. An *attainment goal* is the ratio of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state. If you omit this parameter, 99 is used to represent 99% as the attainment goal.
685
+ :param attainment_goal: The threshold that determines if the goal is being met. If this is a period-based SLO, the attainment goal is the percentage of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state. If this is a request-based SLO, the attainment goal is the percentage of requests that must be successful to meet the attainment goal. If you omit this parameter, 99 is used to represent 99% as the attainment goal.
655
686
  :param interval: The time period used to evaluate the SLO. It can be either a calendar interval or rolling interval. If you omit this parameter, a rolling interval of 7 days is used.
656
687
  :param warning_threshold: The percentage of remaining budget over total budget that you want to get warnings for. If you omit this parameter, the default of 50.0 is used.
657
688
 
@@ -697,7 +728,9 @@ class CfnServiceLevelObjective(
697
728
  def attainment_goal(self) -> typing.Optional[jsii.Number]:
698
729
  '''The threshold that determines if the goal is being met.
699
730
 
700
- An *attainment goal* is the ratio of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state.
731
+ If this is a period-based SLO, the attainment goal is the percentage of good periods that meet the threshold requirements to the total periods within the interval. For example, an attainment goal of 99.9% means that within your interval, you are targeting 99.9% of the periods to be in healthy state.
732
+
733
+ If this is a request-based SLO, the attainment goal is the percentage of requests that must be successful to meet the attainment goal.
701
734
 
702
735
  If you omit this parameter, 99 is used to represent 99% as the attainment goal.
703
736
 
@@ -1227,8 +1260,8 @@ class CfnServiceLevelObjective(
1227
1260
 
1228
1261
  This value observed for the metric defined in ``TotalRequestCountMetric`` is divided by the number found for ``MonitoredRequestCountMetric`` to determine the percentage of successful requests that this SLO tracks.
1229
1262
 
1230
- :param bad_count_metric: If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.
1231
- :param good_count_metric: If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.
1263
+ :param bad_count_metric: If you want to count "bad requests" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as "bad requests" in this structure.
1264
+ :param good_count_metric: If you want to count "good requests" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as "good requests" in this structure.
1232
1265
 
1233
1266
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-monitoredrequestcountmetric.html
1234
1267
  :exampleMetadata: fixture=_generated
@@ -1302,7 +1335,7 @@ class CfnServiceLevelObjective(
1302
1335
  def bad_count_metric(
1303
1336
  self,
1304
1337
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.MetricDataQueryProperty"]]]]:
1305
- '''If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.
1338
+ '''If you want to count "bad requests" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as "bad requests" in this structure.
1306
1339
 
1307
1340
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-monitoredrequestcountmetric.html#cfn-applicationsignals-servicelevelobjective-monitoredrequestcountmetric-badcountmetric
1308
1341
  '''
@@ -1313,7 +1346,7 @@ class CfnServiceLevelObjective(
1313
1346
  def good_count_metric(
1314
1347
  self,
1315
1348
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.MetricDataQueryProperty"]]]]:
1316
- '''If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.
1349
+ '''If you want to count "good requests" to determine the percentage of successful requests for this request-based SLO, specify the metric to use as "good requests" in this structure.
1317
1350
 
1318
1351
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-monitoredrequestcountmetric.html#cfn-applicationsignals-servicelevelobjective-monitoredrequestcountmetric-goodcountmetric
1319
1352
  '''
@@ -1354,11 +1387,11 @@ class CfnServiceLevelObjective(
1354
1387
  ) -> None:
1355
1388
  '''This structure contains the information about the metric that is used for a request-based SLO.
1356
1389
 
1357
- :param key_attributes: This is a string-to-string map that contains information about the type of object that this SLO is related to.
1358
- :param metric_type: If the SLO monitors either the LATENCY or AVAILABILITY metric that Application Signals collects, this field displays which of those metrics is used.
1359
- :param monitored_request_count_metric: This structure defines the metric that is used as the "good request" or "bad request" value for a request-based SLO. This value observed for the metric defined in ``TotalRequestCountMetric`` is divided by the number found for ``MonitoredRequestCountMetric`` to determine the percentage of successful requests that this SLO tracks.
1390
+ :param key_attributes: This is a string-to-string map that contains information about the type of object that this SLO is related to. It can include the following fields. - ``Type`` designates the type of object that this SLO is related to. - ``ResourceType`` specifies the type of the resource. This field is used only when the value of the ``Type`` field is ``Resource`` or ``AWS::Resource`` . - ``Name`` specifies the name of the object. This is used only if the value of the ``Type`` field is ``Service`` , ``RemoteService`` , or ``AWS::Service`` . - ``Identifier`` identifies the resource objects of this resource. This is used only if the value of the ``Type`` field is ``Resource`` or ``AWS::Resource`` . - ``Environment`` specifies the location where this object is hosted, or what it belongs to.
1391
+ :param metric_type: If the SLO monitors either the ``LATENCY`` or ``AVAILABILITY`` metric that Application Signals collects, this field displays which of those metrics is used.
1392
+ :param monitored_request_count_metric: Use this structure to define the metric that you want to use as the "good request" or "bad request" value for a request-based SLO. This value observed for the metric defined in ``TotalRequestCountMetric`` will be divided by the number found for ``MonitoredRequestCountMetric`` to determine the percentage of successful requests that this SLO tracks.
1360
1393
  :param operation_name: If the SLO monitors a specific operation of the service, this field displays that operation name.
1361
- :param total_request_count_metric: If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.
1394
+ :param total_request_count_metric: This structure defines the metric that is used as the "total requests" number for a request-based SLO. The number observed for this metric is divided by the number of "good requests" or "bad requests" that is observed for the metric defined in ``MonitoredRequestCountMetric`` .
1362
1395
 
1363
1396
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedslimetric.html
1364
1397
  :exampleMetadata: fixture=_generated
@@ -1473,6 +1506,14 @@ class CfnServiceLevelObjective(
1473
1506
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Mapping[builtins.str, builtins.str]]]:
1474
1507
  '''This is a string-to-string map that contains information about the type of object that this SLO is related to.
1475
1508
 
1509
+ It can include the following fields.
1510
+
1511
+ - ``Type`` designates the type of object that this SLO is related to.
1512
+ - ``ResourceType`` specifies the type of the resource. This field is used only when the value of the ``Type`` field is ``Resource`` or ``AWS::Resource`` .
1513
+ - ``Name`` specifies the name of the object. This is used only if the value of the ``Type`` field is ``Service`` , ``RemoteService`` , or ``AWS::Service`` .
1514
+ - ``Identifier`` identifies the resource objects of this resource. This is used only if the value of the ``Type`` field is ``Resource`` or ``AWS::Resource`` .
1515
+ - ``Environment`` specifies the location where this object is hosted, or what it belongs to.
1516
+
1476
1517
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedslimetric.html#cfn-applicationsignals-servicelevelobjective-requestbasedslimetric-keyattributes
1477
1518
  '''
1478
1519
  result = self._values.get("key_attributes")
@@ -1480,7 +1521,7 @@ class CfnServiceLevelObjective(
1480
1521
 
1481
1522
  @builtins.property
1482
1523
  def metric_type(self) -> typing.Optional[builtins.str]:
1483
- '''If the SLO monitors either the LATENCY or AVAILABILITY metric that Application Signals collects, this field displays which of those metrics is used.
1524
+ '''If the SLO monitors either the ``LATENCY`` or ``AVAILABILITY`` metric that Application Signals collects, this field displays which of those metrics is used.
1484
1525
 
1485
1526
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedslimetric.html#cfn-applicationsignals-servicelevelobjective-requestbasedslimetric-metrictype
1486
1527
  '''
@@ -1491,9 +1532,9 @@ class CfnServiceLevelObjective(
1491
1532
  def monitored_request_count_metric(
1492
1533
  self,
1493
1534
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.MonitoredRequestCountMetricProperty"]]:
1494
- '''This structure defines the metric that is used as the "good request" or "bad request" value for a request-based SLO.
1535
+ '''Use this structure to define the metric that you want to use as the "good request" or "bad request" value for a request-based SLO.
1495
1536
 
1496
- This value observed for the metric defined in ``TotalRequestCountMetric`` is divided by the number found for ``MonitoredRequestCountMetric`` to determine the percentage of successful requests that this SLO tracks.
1537
+ This value observed for the metric defined in ``TotalRequestCountMetric`` will be divided by the number found for ``MonitoredRequestCountMetric`` to determine the percentage of successful requests that this SLO tracks.
1497
1538
 
1498
1539
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedslimetric.html#cfn-applicationsignals-servicelevelobjective-requestbasedslimetric-monitoredrequestcountmetric
1499
1540
  '''
@@ -1513,7 +1554,9 @@ class CfnServiceLevelObjective(
1513
1554
  def total_request_count_metric(
1514
1555
  self,
1515
1556
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, typing.List[typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.MetricDataQueryProperty"]]]]:
1516
- '''If this SLO monitors a CloudWatch metric or the result of a CloudWatch metric math expression, this structure includes the information about that metric or expression.
1557
+ '''This structure defines the metric that is used as the "total requests" number for a request-based SLO.
1558
+
1559
+ The number observed for this metric is divided by the number of "good requests" or "bad requests" that is observed for the metric defined in ``MonitoredRequestCountMetric`` .
1517
1560
 
1518
1561
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedslimetric.html#cfn-applicationsignals-servicelevelobjective-requestbasedslimetric-totalrequestcountmetric
1519
1562
  '''
@@ -1550,9 +1593,9 @@ class CfnServiceLevelObjective(
1550
1593
  ) -> None:
1551
1594
  '''This structure contains information about the performance metric that a request-based SLO monitors.
1552
1595
 
1553
- :param request_based_sli_metric: This structure contains the information about the metric that is used for a request-based SLO.
1596
+ :param request_based_sli_metric: A structure that contains information about the metric that the SLO monitors.
1554
1597
  :param comparison_operator: The arithmetic operation used when comparing the specified metric to the threshold.
1555
- :param metric_threshold: The value that the SLI metric is compared to.
1598
+ :param metric_threshold: This value is the threshold that the observed metric values of the SLI metric are compared to.
1556
1599
 
1557
1600
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedsli.html
1558
1601
  :exampleMetadata: fixture=_generated
@@ -1665,7 +1708,7 @@ class CfnServiceLevelObjective(
1665
1708
  def request_based_sli_metric(
1666
1709
  self,
1667
1710
  ) -> typing.Union[_IResolvable_da3f097b, "CfnServiceLevelObjective.RequestBasedSliMetricProperty"]:
1668
- '''This structure contains the information about the metric that is used for a request-based SLO.
1711
+ '''A structure that contains information about the metric that the SLO monitors.
1669
1712
 
1670
1713
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedsli.html#cfn-applicationsignals-servicelevelobjective-requestbasedsli-requestbasedslimetric
1671
1714
  '''
@@ -1684,7 +1727,7 @@ class CfnServiceLevelObjective(
1684
1727
 
1685
1728
  @builtins.property
1686
1729
  def metric_threshold(self) -> typing.Optional[jsii.Number]:
1687
- '''The value that the SLI metric is compared to.
1730
+ '''This value is the threshold that the observed metric values of the SLI metric are compared to.
1688
1731
 
1689
1732
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationsignals-servicelevelobjective-requestbasedsli.html#cfn-applicationsignals-servicelevelobjective-requestbasedsli-metricthreshold
1690
1733
  '''
@@ -2083,10 +2126,10 @@ class CfnServiceLevelObjective(
2083
2126
  jsii_struct_bases=[],
2084
2127
  name_mapping={
2085
2128
  "name": "name",
2086
- "sli": "sli",
2087
2129
  "description": "description",
2088
2130
  "goal": "goal",
2089
2131
  "request_based_sli": "requestBasedSli",
2132
+ "sli": "sli",
2090
2133
  "tags": "tags",
2091
2134
  },
2092
2135
  )
@@ -2095,19 +2138,19 @@ class CfnServiceLevelObjectiveProps:
2095
2138
  self,
2096
2139
  *,
2097
2140
  name: builtins.str,
2098
- sli: typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.SliProperty, typing.Dict[builtins.str, typing.Any]]],
2099
2141
  description: typing.Optional[builtins.str] = None,
2100
2142
  goal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.GoalProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2101
2143
  request_based_sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.RequestBasedSliProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2144
+ sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.SliProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2102
2145
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2103
2146
  ) -> None:
2104
2147
  '''Properties for defining a ``CfnServiceLevelObjective``.
2105
2148
 
2106
2149
  :param name: A name for this SLO.
2107
- :param sli: A structure containing information about the performance metric that this SLO monitors.
2108
2150
  :param description: An optional description for this SLO. Default: - "No description"
2109
2151
  :param goal: This structure contains the attributes that determine the goal of an SLO. This includes the time period for evaluation and the attainment threshold.
2110
- :param request_based_sli: This structure contains information about the performance metric that a request-based SLO monitors.
2152
+ :param request_based_sli: A structure containing information about the performance metric that this SLO monitors, if this is a request-based SLO.
2153
+ :param sli: A structure containing information about the performance metric that this SLO monitors, if this is a period-based SLO.
2111
2154
  :param tags: A list of key-value pairs to associate with the SLO. You can associate as many as 50 tags with an SLO. To be able to associate tags with the SLO when you create the SLO, you must have the cloudwatch:TagResource permission. Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
2112
2155
 
2113
2156
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationsignals-servicelevelobjective.html
@@ -2121,42 +2164,6 @@ class CfnServiceLevelObjectiveProps:
2121
2164
 
2122
2165
  cfn_service_level_objective_props = applicationsignals.CfnServiceLevelObjectiveProps(
2123
2166
  name="name",
2124
- sli=applicationsignals.CfnServiceLevelObjective.SliProperty(
2125
- comparison_operator="comparisonOperator",
2126
- metric_threshold=123,
2127
- sli_metric=applicationsignals.CfnServiceLevelObjective.SliMetricProperty(
2128
- key_attributes={
2129
- "key_attributes_key": "keyAttributes"
2130
- },
2131
- metric_data_queries=[applicationsignals.CfnServiceLevelObjective.MetricDataQueryProperty(
2132
- id="id",
2133
-
2134
- # the properties below are optional
2135
- account_id="accountId",
2136
- expression="expression",
2137
- metric_stat=applicationsignals.CfnServiceLevelObjective.MetricStatProperty(
2138
- metric=applicationsignals.CfnServiceLevelObjective.MetricProperty(
2139
- dimensions=[applicationsignals.CfnServiceLevelObjective.DimensionProperty(
2140
- name="name",
2141
- value="value"
2142
- )],
2143
- metric_name="metricName",
2144
- namespace="namespace"
2145
- ),
2146
- period=123,
2147
- stat="stat",
2148
-
2149
- # the properties below are optional
2150
- unit="unit"
2151
- ),
2152
- return_data=False
2153
- )],
2154
- metric_type="metricType",
2155
- operation_name="operationName",
2156
- period_seconds=123,
2157
- statistic="statistic"
2158
- )
2159
- ),
2160
2167
 
2161
2168
  # the properties below are optional
2162
2169
  description="description",
@@ -2259,6 +2266,42 @@ class CfnServiceLevelObjectiveProps:
2259
2266
  comparison_operator="comparisonOperator",
2260
2267
  metric_threshold=123
2261
2268
  ),
2269
+ sli=applicationsignals.CfnServiceLevelObjective.SliProperty(
2270
+ comparison_operator="comparisonOperator",
2271
+ metric_threshold=123,
2272
+ sli_metric=applicationsignals.CfnServiceLevelObjective.SliMetricProperty(
2273
+ key_attributes={
2274
+ "key_attributes_key": "keyAttributes"
2275
+ },
2276
+ metric_data_queries=[applicationsignals.CfnServiceLevelObjective.MetricDataQueryProperty(
2277
+ id="id",
2278
+
2279
+ # the properties below are optional
2280
+ account_id="accountId",
2281
+ expression="expression",
2282
+ metric_stat=applicationsignals.CfnServiceLevelObjective.MetricStatProperty(
2283
+ metric=applicationsignals.CfnServiceLevelObjective.MetricProperty(
2284
+ dimensions=[applicationsignals.CfnServiceLevelObjective.DimensionProperty(
2285
+ name="name",
2286
+ value="value"
2287
+ )],
2288
+ metric_name="metricName",
2289
+ namespace="namespace"
2290
+ ),
2291
+ period=123,
2292
+ stat="stat",
2293
+
2294
+ # the properties below are optional
2295
+ unit="unit"
2296
+ ),
2297
+ return_data=False
2298
+ )],
2299
+ metric_type="metricType",
2300
+ operation_name="operationName",
2301
+ period_seconds=123,
2302
+ statistic="statistic"
2303
+ )
2304
+ ),
2262
2305
  tags=[CfnTag(
2263
2306
  key="key",
2264
2307
  value="value"
@@ -2268,14 +2311,13 @@ class CfnServiceLevelObjectiveProps:
2268
2311
  if __debug__:
2269
2312
  type_hints = typing.get_type_hints(_typecheckingstub__8a302456885343cc9ce5e0497feed773de1ef0f44e2934f97458bfdc5a810dee)
2270
2313
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
2271
- check_type(argname="argument sli", value=sli, expected_type=type_hints["sli"])
2272
2314
  check_type(argname="argument description", value=description, expected_type=type_hints["description"])
2273
2315
  check_type(argname="argument goal", value=goal, expected_type=type_hints["goal"])
2274
2316
  check_type(argname="argument request_based_sli", value=request_based_sli, expected_type=type_hints["request_based_sli"])
2317
+ check_type(argname="argument sli", value=sli, expected_type=type_hints["sli"])
2275
2318
  check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
2276
2319
  self._values: typing.Dict[builtins.str, typing.Any] = {
2277
2320
  "name": name,
2278
- "sli": sli,
2279
2321
  }
2280
2322
  if description is not None:
2281
2323
  self._values["description"] = description
@@ -2283,6 +2325,8 @@ class CfnServiceLevelObjectiveProps:
2283
2325
  self._values["goal"] = goal
2284
2326
  if request_based_sli is not None:
2285
2327
  self._values["request_based_sli"] = request_based_sli
2328
+ if sli is not None:
2329
+ self._values["sli"] = sli
2286
2330
  if tags is not None:
2287
2331
  self._values["tags"] = tags
2288
2332
 
@@ -2296,18 +2340,6 @@ class CfnServiceLevelObjectiveProps:
2296
2340
  assert result is not None, "Required property 'name' is missing"
2297
2341
  return typing.cast(builtins.str, result)
2298
2342
 
2299
- @builtins.property
2300
- def sli(
2301
- self,
2302
- ) -> typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.SliProperty]:
2303
- '''A structure containing information about the performance metric that this SLO monitors.
2304
-
2305
- :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationsignals-servicelevelobjective.html#cfn-applicationsignals-servicelevelobjective-sli
2306
- '''
2307
- result = self._values.get("sli")
2308
- assert result is not None, "Required property 'sli' is missing"
2309
- return typing.cast(typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.SliProperty], result)
2310
-
2311
2343
  @builtins.property
2312
2344
  def description(self) -> typing.Optional[builtins.str]:
2313
2345
  '''An optional description for this SLO.
@@ -2336,13 +2368,24 @@ class CfnServiceLevelObjectiveProps:
2336
2368
  def request_based_sli(
2337
2369
  self,
2338
2370
  ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.RequestBasedSliProperty]]:
2339
- '''This structure contains information about the performance metric that a request-based SLO monitors.
2371
+ '''A structure containing information about the performance metric that this SLO monitors, if this is a request-based SLO.
2340
2372
 
2341
2373
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationsignals-servicelevelobjective.html#cfn-applicationsignals-servicelevelobjective-requestbasedsli
2342
2374
  '''
2343
2375
  result = self._values.get("request_based_sli")
2344
2376
  return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.RequestBasedSliProperty]], result)
2345
2377
 
2378
+ @builtins.property
2379
+ def sli(
2380
+ self,
2381
+ ) -> typing.Optional[typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.SliProperty]]:
2382
+ '''A structure containing information about the performance metric that this SLO monitors, if this is a period-based SLO.
2383
+
2384
+ :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationsignals-servicelevelobjective.html#cfn-applicationsignals-servicelevelobjective-sli
2385
+ '''
2386
+ result = self._values.get("sli")
2387
+ return typing.cast(typing.Optional[typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.SliProperty]], result)
2388
+
2346
2389
  @builtins.property
2347
2390
  def tags(self) -> typing.Optional[typing.List[_CfnTag_f6864754]]:
2348
2391
  '''A list of key-value pairs to associate with the SLO.
@@ -2380,10 +2423,10 @@ def _typecheckingstub__8476d024be5b448cfb8f9ae2f80fa7f2083296f712cdb7cd12e69365d
2380
2423
  id: builtins.str,
2381
2424
  *,
2382
2425
  name: builtins.str,
2383
- sli: typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.SliProperty, typing.Dict[builtins.str, typing.Any]]],
2384
2426
  description: typing.Optional[builtins.str] = None,
2385
2427
  goal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.GoalProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2386
2428
  request_based_sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.RequestBasedSliProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2429
+ sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.SliProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2387
2430
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2388
2431
  ) -> None:
2389
2432
  """Type checking stubs"""
@@ -2407,12 +2450,6 @@ def _typecheckingstub__e7d1b42972f3b8a4430dca27e7ecab3fce56490ad1edcfabdc346becf
2407
2450
  """Type checking stubs"""
2408
2451
  pass
2409
2452
 
2410
- def _typecheckingstub__938ccf6991aba4b5875a4ca09dfcdb00a5c7e9a92bba0e785ddfbebb228037c3(
2411
- value: typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.SliProperty],
2412
- ) -> None:
2413
- """Type checking stubs"""
2414
- pass
2415
-
2416
2453
  def _typecheckingstub__c6761a51565a6d9d6b93723803df5fa7735ec11aa5f14c9cc222e4e60eb54506(
2417
2454
  value: typing.Optional[builtins.str],
2418
2455
  ) -> None:
@@ -2431,6 +2468,12 @@ def _typecheckingstub__85c3a53f1420ec52267d0c5ef83b407de2a88d1eff567b79facf44748
2431
2468
  """Type checking stubs"""
2432
2469
  pass
2433
2470
 
2471
+ def _typecheckingstub__938ccf6991aba4b5875a4ca09dfcdb00a5c7e9a92bba0e785ddfbebb228037c3(
2472
+ value: typing.Optional[typing.Union[_IResolvable_da3f097b, CfnServiceLevelObjective.SliProperty]],
2473
+ ) -> None:
2474
+ """Type checking stubs"""
2475
+ pass
2476
+
2434
2477
  def _typecheckingstub__45578973503123093d3b0c8f845e2df0c9ad023b7df510f3a7b7ee7abcccd506(
2435
2478
  value: typing.Optional[typing.List[_CfnTag_f6864754]],
2436
2479
  ) -> None:
@@ -2561,10 +2604,10 @@ def _typecheckingstub__fcb2d383c03844ff1706f4720c7bf04c5a00252d1e49f3ecb2c00c22b
2561
2604
  def _typecheckingstub__8a302456885343cc9ce5e0497feed773de1ef0f44e2934f97458bfdc5a810dee(
2562
2605
  *,
2563
2606
  name: builtins.str,
2564
- sli: typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.SliProperty, typing.Dict[builtins.str, typing.Any]]],
2565
2607
  description: typing.Optional[builtins.str] = None,
2566
2608
  goal: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.GoalProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2567
2609
  request_based_sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.RequestBasedSliProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2610
+ sli: typing.Optional[typing.Union[_IResolvable_da3f097b, typing.Union[CfnServiceLevelObjective.SliProperty, typing.Dict[builtins.str, typing.Any]]]] = None,
2568
2611
  tags: typing.Optional[typing.Sequence[typing.Union[_CfnTag_f6864754, typing.Dict[builtins.str, typing.Any]]]] = None,
2569
2612
  ) -> None:
2570
2613
  """Type checking stubs"""