Skip to content

Commit 913ee3a

Browse files
Amazon CloudWatch Application Signals now supports creating Service Level Objectives with burn rates. Users can now create or update SLOs with burn rate configurations to meet their specific business requirements.
1 parent 84aa59e commit 913ee3a

13 files changed

+426
-4
lines changed

generator/ServiceModels/application-signals/application-signals-2024-04-15.api.json

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,25 @@
311311
"type":"integer",
312312
"box":true
313313
},
314+
"BurnRateConfiguration":{
315+
"type":"structure",
316+
"required":["LookBackWindowMinutes"],
317+
"members":{
318+
"LookBackWindowMinutes":{"shape":"BurnRateLookBackWindowMinutes"}
319+
}
320+
},
321+
"BurnRateConfigurations":{
322+
"type":"list",
323+
"member":{"shape":"BurnRateConfiguration"},
324+
"max":10,
325+
"min":0
326+
},
327+
"BurnRateLookBackWindowMinutes":{
328+
"type":"integer",
329+
"box":true,
330+
"max":10080,
331+
"min":1
332+
},
314333
"CalendarInterval":{
315334
"type":"structure",
316335
"required":[
@@ -350,7 +369,8 @@
350369
"SliConfig":{"shape":"ServiceLevelIndicatorConfig"},
351370
"RequestBasedSliConfig":{"shape":"RequestBasedServiceLevelIndicatorConfig"},
352371
"Goal":{"shape":"Goal"},
353-
"Tags":{"shape":"TagList"}
372+
"Tags":{"shape":"TagList"},
373+
"BurnRateConfigurations":{"shape":"BurnRateConfigurations"}
354374
}
355375
},
356376
"CreateServiceLevelObjectiveOutput":{
@@ -1091,7 +1111,8 @@
10911111
"Sli":{"shape":"ServiceLevelIndicator"},
10921112
"RequestBasedSli":{"shape":"RequestBasedServiceLevelIndicator"},
10931113
"EvaluationType":{"shape":"EvaluationType"},
1094-
"Goal":{"shape":"Goal"}
1114+
"Goal":{"shape":"Goal"},
1115+
"BurnRateConfigurations":{"shape":"BurnRateConfigurations"}
10951116
}
10961117
},
10971118
"ServiceLevelObjectiveArn":{
@@ -1384,7 +1405,8 @@
13841405
"Description":{"shape":"ServiceLevelObjectiveDescription"},
13851406
"SliConfig":{"shape":"ServiceLevelIndicatorConfig"},
13861407
"RequestBasedSliConfig":{"shape":"RequestBasedServiceLevelIndicatorConfig"},
1387-
"Goal":{"shape":"Goal"}
1408+
"Goal":{"shape":"Goal"},
1409+
"BurnRateConfigurations":{"shape":"BurnRateConfigurations"}
13881410
}
13891411
},
13901412
"UpdateServiceLevelObjectiveOutput":{

generator/ServiceModels/application-signals/application-signals-2024-04-15.docs.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,26 @@
105105
"ServiceLevelObjectiveBudgetReport$BudgetSecondsRemaining": "<p>The budget amount remaining before the SLO status becomes <code>BREACHING</code>, at the time specified in the <code>Timestemp</code> parameter of the request. If this value is negative, then the SLO is already in <code>BREACHING</code> status.</p> <p> This field is included only if the SLO is a period-based SLO.</p>"
106106
}
107107
},
108+
"BurnRateConfiguration": {
109+
"base": "<p>This object defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO. A burn rate of exactly 1 indicates that the SLO goal will be met exactly.</p> <p>For example, if you specify 60 as the number of minutes in the look-back window, the burn rate is calculated as the following:</p> <p> <i>burn rate = error rate over the look-back window / (1 - attainment goal percentage)</i> </p> <p>For more information about burn rates, see <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html#CloudWatch-ServiceLevelObjectives-burn\">Calculate burn rates</a>.</p>",
110+
"refs": {
111+
"BurnRateConfigurations$member": null
112+
}
113+
},
114+
"BurnRateConfigurations": {
115+
"base": null,
116+
"refs": {
117+
"CreateServiceLevelObjectiveInput$BurnRateConfigurations": "<p>Use this array to create <i>burn rates</i> for this SLO. Each burn rate is a metric that indicates how fast the service is consuming the error budget, relative to the attainment goal of the SLO.</p>",
118+
"ServiceLevelObjective$BurnRateConfigurations": "<p>Each object in this array defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO.</p>",
119+
"UpdateServiceLevelObjectiveInput$BurnRateConfigurations": "<p>Use this array to create <i>burn rates</i> for this SLO. Each burn rate is a metric that indicates how fast the service is consuming the error budget, relative to the attainment goal of the SLO.</p>"
120+
}
121+
},
122+
"BurnRateLookBackWindowMinutes": {
123+
"base": null,
124+
"refs": {
125+
"BurnRateConfiguration$LookBackWindowMinutes": "<p>The number of minutes to use as the look-back window.</p>"
126+
}
127+
},
108128
"CalendarInterval": {
109129
"base": "<p>If the interval for this service level objective is a calendar interval, this structure contains the interval specifications.</p>",
110130
"refs": {

generator/ServiceModels/application-signals/application-signals-2024-04-15.normal.json

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,29 @@
342342
"type":"integer",
343343
"box":true
344344
},
345+
"BurnRateConfiguration":{
346+
"type":"structure",
347+
"required":["LookBackWindowMinutes"],
348+
"members":{
349+
"LookBackWindowMinutes":{
350+
"shape":"BurnRateLookBackWindowMinutes",
351+
"documentation":"<p>The number of minutes to use as the look-back window.</p>"
352+
}
353+
},
354+
"documentation":"<p>This object defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO. A burn rate of exactly 1 indicates that the SLO goal will be met exactly.</p> <p>For example, if you specify 60 as the number of minutes in the look-back window, the burn rate is calculated as the following:</p> <p> <i>burn rate = error rate over the look-back window / (1 - attainment goal percentage)</i> </p> <p>For more information about burn rates, see <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html#CloudWatch-ServiceLevelObjectives-burn\">Calculate burn rates</a>.</p>"
355+
},
356+
"BurnRateConfigurations":{
357+
"type":"list",
358+
"member":{"shape":"BurnRateConfiguration"},
359+
"max":10,
360+
"min":0
361+
},
362+
"BurnRateLookBackWindowMinutes":{
363+
"type":"integer",
364+
"box":true,
365+
"max":10080,
366+
"min":1
367+
},
345368
"CalendarInterval":{
346369
"type":"structure",
347370
"required":[
@@ -410,6 +433,10 @@
410433
"Tags":{
411434
"shape":"TagList",
412435
"documentation":"<p>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 <code>cloudwatch:TagResource</code> permission.</p> <p>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.</p>"
436+
},
437+
"BurnRateConfigurations":{
438+
"shape":"BurnRateConfigurations",
439+
"documentation":"<p>Use this array to create <i>burn rates</i> for this SLO. Each burn rate is a metric that indicates how fast the service is consuming the error budget, relative to the attainment goal of the SLO.</p>"
413440
}
414441
}
415442
},
@@ -1535,7 +1562,11 @@
15351562
"shape":"EvaluationType",
15361563
"documentation":"<p>Displays whether this is a period-based SLO or a request-based SLO.</p>"
15371564
},
1538-
"Goal":{"shape":"Goal"}
1565+
"Goal":{"shape":"Goal"},
1566+
"BurnRateConfigurations":{
1567+
"shape":"BurnRateConfigurations",
1568+
"documentation":"<p>Each object in this array defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO.</p>"
1569+
}
15391570
},
15401571
"documentation":"<p>A structure containing information about one service level objective (SLO) that has been created in Application Signals. Creating SLOs can help you ensure your services are performing to the level that you expect. SLOs help you set and track a specific target level for the reliability and availability of your applications and services. Each SLO uses a service level indicator (SLI), which is a key performance metric, to calculate how much underperformance can be tolerated before the goal that you set for the SLO is not achieved.</p>"
15411572
},
@@ -1940,6 +1971,10 @@
19401971
"Goal":{
19411972
"shape":"Goal",
19421973
"documentation":"<p>A structure that contains the attributes that determine the goal of the SLO. This includes the time period for evaluation and the attainment threshold.</p>"
1974+
},
1975+
"BurnRateConfigurations":{
1976+
"shape":"BurnRateConfigurations",
1977+
"documentation":"<p>Use this array to create <i>burn rates</i> for this SLO. Each burn rate is a metric that indicates how fast the service is consuming the error budget, relative to the attainment goal of the SLO.</p>"
19431978
}
19441979
}
19451980
},

sdk/code-analysis/ServiceAnalysis/ApplicationSignals/Generated/PropertyValueRules.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@
7171
<property>Amazon.ApplicationSignals.Model.UpdateServiceLevelObjectiveRequest.Id</property>
7272
<pattern>[0-9A-Za-z][-._0-9A-Za-z ]{0,126}[0-9A-Za-z]$|^arn:aws:application-signals:[^:]*:[^:]*:slo/[0-9A-Za-z][-._0-9A-Za-z ]{0,126}[0-9A-Za-z]</pattern>
7373
</property-value-rule>
74+
<property-value-rule>
75+
<property>Amazon.ApplicationSignals.Model.BurnRateConfiguration.LookBackWindowMinutes</property>
76+
<min>1</min>
77+
<max>10080</max>
78+
</property-value-rule>
7479
<property-value-rule>
7580
<property>Amazon.ApplicationSignals.Model.CalendarInterval.Duration</property>
7681
<min>1</min>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
/*
17+
* Do not modify this file. This file is generated from the application-signals-2024-04-15.normal.json service model.
18+
*/
19+
using System;
20+
using System.Collections.Generic;
21+
using System.Xml.Serialization;
22+
using System.Text;
23+
using System.IO;
24+
using System.Net;
25+
26+
using Amazon.Runtime;
27+
using Amazon.Runtime.Internal;
28+
29+
#pragma warning disable CS0612,CS0618,CS1570
30+
namespace Amazon.ApplicationSignals.Model
31+
{
32+
/// <summary>
33+
/// This object defines the length of the look-back window used to calculate one burn
34+
/// rate metric for this SLO. The burn rate measures how fast the service is consuming
35+
/// the error budget, relative to the attainment goal of the SLO. A burn rate of exactly
36+
/// 1 indicates that the SLO goal will be met exactly.
37+
///
38+
///
39+
/// <para>
40+
/// For example, if you specify 60 as the number of minutes in the look-back window, the
41+
/// burn rate is calculated as the following:
42+
/// </para>
43+
///
44+
/// <para>
45+
/// <i>burn rate = error rate over the look-back window / (1 - attainment goal percentage)</i>
46+
///
47+
/// </para>
48+
///
49+
/// <para>
50+
/// For more information about burn rates, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html#CloudWatch-ServiceLevelObjectives-burn">Calculate
51+
/// burn rates</a>.
52+
/// </para>
53+
/// </summary>
54+
public partial class BurnRateConfiguration
55+
{
56+
private int? _lookBackWindowMinutes;
57+
58+
/// <summary>
59+
/// Gets and sets the property LookBackWindowMinutes.
60+
/// <para>
61+
/// The number of minutes to use as the look-back window.
62+
/// </para>
63+
/// </summary>
64+
[AWSProperty(Required=true, Min=1, Max=10080)]
65+
public int LookBackWindowMinutes
66+
{
67+
get { return this._lookBackWindowMinutes.GetValueOrDefault(); }
68+
set { this._lookBackWindowMinutes = value; }
69+
}
70+
71+
// Check to see if LookBackWindowMinutes property is set
72+
internal bool IsSetLookBackWindowMinutes()
73+
{
74+
return this._lookBackWindowMinutes.HasValue;
75+
}
76+
77+
}
78+
}

sdk/src/Services/ApplicationSignals/Generated/Model/CreateServiceLevelObjectiveRequest.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,35 @@ namespace Amazon.ApplicationSignals.Model
147147
/// </summary>
148148
public partial class CreateServiceLevelObjectiveRequest : AmazonApplicationSignalsRequest
149149
{
150+
private List<BurnRateConfiguration> _burnRateConfigurations = AWSConfigs.InitializeCollections ? new List<BurnRateConfiguration>() : null;
150151
private string _description;
151152
private Goal _goal;
152153
private string _name;
153154
private RequestBasedServiceLevelIndicatorConfig _requestBasedSliConfig;
154155
private ServiceLevelIndicatorConfig _sliConfig;
155156
private List<Tag> _tags = AWSConfigs.InitializeCollections ? new List<Tag>() : null;
156157

158+
/// <summary>
159+
/// Gets and sets the property BurnRateConfigurations.
160+
/// <para>
161+
/// Use this array to create <i>burn rates</i> for this SLO. Each burn rate is a metric
162+
/// that indicates how fast the service is consuming the error budget, relative to the
163+
/// attainment goal of the SLO.
164+
/// </para>
165+
/// </summary>
166+
[AWSProperty(Min=0, Max=10)]
167+
public List<BurnRateConfiguration> BurnRateConfigurations
168+
{
169+
get { return this._burnRateConfigurations; }
170+
set { this._burnRateConfigurations = value; }
171+
}
172+
173+
// Check to see if BurnRateConfigurations property is set
174+
internal bool IsSetBurnRateConfigurations()
175+
{
176+
return this._burnRateConfigurations != null && (this._burnRateConfigurations.Count > 0 || !AWSConfigs.InitializeCollections);
177+
}
178+
157179
/// <summary>
158180
/// Gets and sets the property Description.
159181
/// <para>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
/*
17+
* Do not modify this file. This file is generated from the application-signals-2024-04-15.normal.json service model.
18+
*/
19+
using System;
20+
using System.Collections.Generic;
21+
using System.Globalization;
22+
using System.IO;
23+
using System.Text;
24+
using System.Xml.Serialization;
25+
26+
using Amazon.ApplicationSignals.Model;
27+
using Amazon.Runtime;
28+
using Amazon.Runtime.Internal;
29+
using Amazon.Runtime.Internal.Transform;
30+
using Amazon.Runtime.Internal.Util;
31+
using ThirdParty.Json.LitJson;
32+
33+
#pragma warning disable CS0612,CS0618
34+
namespace Amazon.ApplicationSignals.Model.Internal.MarshallTransformations
35+
{
36+
/// <summary>
37+
/// BurnRateConfiguration Marshaller
38+
/// </summary>
39+
public class BurnRateConfigurationMarshaller : IRequestMarshaller<BurnRateConfiguration, JsonMarshallerContext>
40+
{
41+
/// <summary>
42+
/// Unmarshaller the response from the service to the response class.
43+
/// </summary>
44+
/// <param name="requestObject"></param>
45+
/// <param name="context"></param>
46+
/// <returns></returns>
47+
public void Marshall(BurnRateConfiguration requestObject, JsonMarshallerContext context)
48+
{
49+
if(requestObject == null)
50+
return;
51+
if(requestObject.IsSetLookBackWindowMinutes())
52+
{
53+
context.Writer.WritePropertyName("LookBackWindowMinutes");
54+
context.Writer.Write(requestObject.LookBackWindowMinutes);
55+
}
56+
57+
}
58+
59+
/// <summary>
60+
/// Singleton Marshaller.
61+
/// </summary>
62+
public readonly static BurnRateConfigurationMarshaller Instance = new BurnRateConfigurationMarshaller();
63+
64+
}
65+
}

0 commit comments

Comments
 (0)