Skip to content

Commit a72c30a

Browse files
Amazon CloudWatch Application Signals now supports creating Service Level Objectives using a new calculation type. Users can now create SLOs which are configured with request-based SLIs to help meet their specific business requirements.
Updates to add recent notes to APIs and to replace example S3 bucket names globally. Amazon Connect Custom Vocabulary now supports Catalan (Spain), Danish (Denmark), Dutch (Netherlands), Finnish (Finland), Indonesian (Indonesia), Malay (Malaysia), Norwegian Bokmal (Norway), Polish (Poland), Swedish (Sweden), and Tagalog/Filipino (Philippines). Amazon SageMaker now supports idle shutdown of JupyterLab and CodeEditor applications on SageMaker Studio. Support for Flink 1.20 in Managed Service for Apache Flink Amazon GameLift provides additional events for tracking the fleet creation process.
1 parent f25f37d commit a72c30a

File tree

82 files changed

+2977
-237
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+2977
-237
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.11.398
1+
1.11.399

generated/src/aws-cpp-sdk-application-signals/include/aws/application-signals/ApplicationSignalsClient.h

Lines changed: 50 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,14 @@ namespace ApplicationSignals
9494

9595
/**
9696
* <p>Use this operation to retrieve one or more <i>service level objective (SLO)
97-
* budget reports</i>.</p> <p>An <i>error budget</i> is the amount of time in
98-
* unhealthy periods that your service can accumulate during an interval before
99-
* your overall SLO budget health is breached and the SLO is considered to be
100-
* unmet. For example, an SLO with a threshold of 99.95% and a monthly interval
101-
* translates to an error budget of 21.9 minutes of downtime in a 30-day month.</p>
102-
* <p>Budget reports include a health indicator, the attainment value, and
103-
* remaining budget.</p> <p>For more information about SLO error budgets, see <a
97+
* budget reports</i>.</p> <p>An <i>error budget</i> is the amount of time or
98+
* requests in an unhealthy state that your service can accumulate during an
99+
* interval before your overall SLO budget health is breached and the SLO is
100+
* considered to be unmet. For example, an SLO with a threshold of 99.95% and a
101+
* monthly interval translates to an error budget of 21.9 minutes of downtime in a
102+
* 30-day month.</p> <p>Budget reports include a health indicator, the attainment
103+
* value, and remaining budget.</p> <p>For more information about SLO error
104+
* budgets, see <a
104105
* href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html#CloudWatch-ServiceLevelObjectives-concepts">
105106
* SLO concepts</a>.</p><p><h3>See Also:</h3> <a
106107
* href="http://docs.aws.amazon.com/goto/WebAPI/application-signals-2024-04-15/BatchGetServiceLevelObjectiveBudgetReport">AWS
@@ -134,33 +135,51 @@ namespace ApplicationSignals
134135
* whether the application is performing at the level that you want.</p> <p>Create
135136
* an SLO to set a target for a service or operation’s availability or latency.
136137
* CloudWatch measures this target frequently you can find whether it has been
137-
* breached. </p> <p>When you create an SLO, you set an <i>attainment goal</i> for
138-
* it. An <i>attainment goal</i> is the ratio of good periods that meet the
139-
* threshold requirements to the total periods within the interval. For example, an
140-
* attainment goal of 99.9% means that within your interval, you are targeting
141-
* 99.9% of the periods to be in healthy state.</p> <p>After you have created an
142-
* SLO, you can retrieve error budget reports for it. An <i>error budget</i> is the
143-
* number of periods or amount of time that your service can accumulate during an
144-
* interval before your overall SLO budget health is breached and the SLO is
145-
* considered to be unmet. for example, an SLO with a threshold that 99.95% of
146-
* requests must be completed under 2000ms every month translates to an error
147-
* budget of 21.9 minutes of downtime per month.</p> <p>When you call this
148-
* operation, Application Signals creates the
149-
* <i>AWSServiceRoleForCloudWatchApplicationSignals</i> service-linked role, if it
150-
* doesn't already exist in your account. This service- linked role has the
138+
* breached. </p> <p>The target performance quality that is defined for an SLO is
139+
* the <i>attainment goal</i>.</p> <p>You can set SLO targets for your applications
140+
* that are discovered by Application Signals, using critical metrics such as
141+
* latency and availability. You can also set SLOs against any CloudWatch metric or
142+
* math expression that produces a time series.</p> <p>When you create an SLO, you
143+
* specify whether it is a <i>period-based SLO</i> or a <i>request-based SLO</i>.
144+
* Each type of SLO has a different way of evaluating your application's
145+
* performance against its attainment goal.</p> <ul> <li> <p>A <i>period-based
146+
* SLO</i> uses defined <i>periods</i> of time within a specified total time
147+
* interval. For each period of time, Application Signals determines whether the
148+
* application met its goal. The attainment rate is calculated as the <code>number
149+
* of good periods/number of total periods</code>.</p> <p>For example, for a
150+
* period-based SLO, meeting an attainment goal of 99.9% means that within your
151+
* interval, your application must meet its performance goal during at least 99.9%
152+
* of the time periods.</p> </li> <li> <p>A <i>request-based SLO</i> doesn't use
153+
* pre-defined periods of time. Instead, the SLO measures <code>number of good
154+
* requests/number of total requests</code> during the interval. At any time, you
155+
* can find the ratio of good requests to total requests for the interval up to the
156+
* time stamp that you specify, and measure that ratio against the goal set in your
157+
* SLO.</p> </li> </ul> <p>After you have created an SLO, you can retrieve error
158+
* budget reports for it. An <i>error budget</i> is the amount of time or amount of
159+
* requests that your application can be non-compliant with the SLO's goal, and
160+
* still have your application meet the goal.</p> <ul> <li> <p>For a period-based
161+
* SLO, the error budget starts at a number defined by the highest number of
162+
* periods that can fail to meet the threshold, while still meeting the overall
163+
* goal. The <i>remaining error budget</i> decreases with every failed period that
164+
* is recorded. The error budget within one interval can never increase.</p> <p>For
165+
* example, an SLO with a threshold that 99.95% of requests must be completed under
166+
* 2000ms every month translates to an error budget of 21.9 minutes of downtime per
167+
* month.</p> </li> <li> <p>For a request-based SLO, the remaining error budget is
168+
* dynamic and can increase or decrease, depending on the ratio of good requests to
169+
* total requests.</p> </li> </ul> <p>For more information about SLOs, see <a
170+
* href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html">
171+
* Service level objectives (SLOs)</a>. </p> <p>When you perform a
172+
* <code>CreateServiceLevelObjective</code> operation, Application Signals creates
173+
* the <i>AWSServiceRoleForCloudWatchApplicationSignals</i> service-linked role, if
174+
* it doesn't already exist in your account. This service- linked role has the
151175
* following permissions:</p> <ul> <li> <p> <code>xray:GetServiceGraph</code> </p>
152176
* </li> <li> <p> <code>logs:StartQuery</code> </p> </li> <li> <p>
153177
* <code>logs:GetQueryResults</code> </p> </li> <li> <p>
154178
* <code>cloudwatch:GetMetricData</code> </p> </li> <li> <p>
155179
* <code>cloudwatch:ListMetrics</code> </p> </li> <li> <p>
156180
* <code>tag:GetResources</code> </p> </li> <li> <p>
157-
* <code>autoscaling:DescribeAutoScalingGroups</code> </p> </li> </ul> <p>You can
158-
* easily set SLO targets for your applications that are discovered by Application
159-
* Signals, using critical metrics such as latency and availability. You can also
160-
* set SLOs against any CloudWatch metric or math expression that produces a time
161-
* series.</p> <p>For more information about SLOs, see <a
162-
* href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-ServiceLevelObjectives.html">
163-
* Service level objectives (SLOs)</a>. </p><p><h3>See Also:</h3> <a
181+
* <code>autoscaling:DescribeAutoScalingGroups</code> </p> </li> </ul><p><h3>See
182+
* Also:</h3> <a
164183
* href="http://docs.aws.amazon.com/goto/WebAPI/application-signals-2024-04-15/CreateServiceLevelObjective">AWS
165184
* API Reference</a></p>
166185
*/
@@ -526,8 +545,9 @@ namespace ApplicationSignals
526545

527546
/**
528547
* <p>Updates an existing service level objective (SLO). If you omit parameters,
529-
* the previous values of those parameters are retained. </p><p><h3>See Also:</h3>
530-
* <a
548+
* the previous values of those parameters are retained. </p> <p>You cannot change
549+
* from a period-based SLO to a request-based SLO, or change from a request-based
550+
* SLO to a period-based SLO.</p><p><h3>See Also:</h3> <a
531551
* href="http://docs.aws.amazon.com/goto/WebAPI/application-signals-2024-04-15/UpdateServiceLevelObjective">AWS
532552
* API Reference</a></p>
533553
*/

generated/src/aws-cpp-sdk-application-signals/include/aws/application-signals/model/CreateServiceLevelObjectiveRequest.h

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <aws/application-signals/ApplicationSignalsRequest.h>
99
#include <aws/core/utils/memory/stl/AWSString.h>
1010
#include <aws/application-signals/model/ServiceLevelIndicatorConfig.h>
11+
#include <aws/application-signals/model/RequestBasedServiceLevelIndicatorConfig.h>
1112
#include <aws/application-signals/model/Goal.h>
1213
#include <aws/core/utils/memory/stl/AWSVector.h>
1314
#include <aws/application-signals/model/Tag.h>
@@ -66,8 +67,10 @@ namespace Model
6667

6768
///@{
6869
/**
69-
* <p>A structure that contains information about what service and what performance
70-
* metric that this SLO will monitor.</p>
70+
* <p>If this SLO is a period-based SLO, this structure defines the information
71+
* about what performance metric this SLO will monitor.</p> <p>You can't specify
72+
* both <code>RequestBasedSliConfig</code> and <code>SliConfig</code> in the same
73+
* operation.</p>
7174
*/
7275
inline const ServiceLevelIndicatorConfig& GetSliConfig() const{ return m_sliConfig; }
7376
inline bool SliConfigHasBeenSet() const { return m_sliConfigHasBeenSet; }
@@ -79,8 +82,23 @@ namespace Model
7982

8083
///@{
8184
/**
82-
* <p>A structure that contains the attributes that determine the goal of the SLO.
83-
* This includes the time period for evaluation and the attainment threshold.</p>
85+
* <p>If this SLO is a request-based SLO, this structure defines the information
86+
* about what performance metric this SLO will monitor.</p> <p>You can't specify
87+
* both <code>RequestBasedSliConfig</code> and <code>SliConfig</code> in the same
88+
* operation.</p>
89+
*/
90+
inline const RequestBasedServiceLevelIndicatorConfig& GetRequestBasedSliConfig() const{ return m_requestBasedSliConfig; }
91+
inline bool RequestBasedSliConfigHasBeenSet() const { return m_requestBasedSliConfigHasBeenSet; }
92+
inline void SetRequestBasedSliConfig(const RequestBasedServiceLevelIndicatorConfig& value) { m_requestBasedSliConfigHasBeenSet = true; m_requestBasedSliConfig = value; }
93+
inline void SetRequestBasedSliConfig(RequestBasedServiceLevelIndicatorConfig&& value) { m_requestBasedSliConfigHasBeenSet = true; m_requestBasedSliConfig = std::move(value); }
94+
inline CreateServiceLevelObjectiveRequest& WithRequestBasedSliConfig(const RequestBasedServiceLevelIndicatorConfig& value) { SetRequestBasedSliConfig(value); return *this;}
95+
inline CreateServiceLevelObjectiveRequest& WithRequestBasedSliConfig(RequestBasedServiceLevelIndicatorConfig&& value) { SetRequestBasedSliConfig(std::move(value)); return *this;}
96+
///@}
97+
98+
///@{
99+
/**
100+
* <p>This structure contains the attributes that determine the goal of the
101+
* SLO.</p>
84102
*/
85103
inline const Goal& GetGoal() const{ return m_goal; }
86104
inline bool GoalHasBeenSet() const { return m_goalHasBeenSet; }
@@ -119,6 +137,9 @@ namespace Model
119137
ServiceLevelIndicatorConfig m_sliConfig;
120138
bool m_sliConfigHasBeenSet = false;
121139

140+
RequestBasedServiceLevelIndicatorConfig m_requestBasedSliConfig;
141+
bool m_requestBasedSliConfigHasBeenSet = false;
142+
122143
Goal m_goal;
123144
bool m_goalHasBeenSet = false;
124145

generated/src/aws-cpp-sdk-application-signals/include/aws/application-signals/model/DurationUnit.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ namespace Model
1616
enum class DurationUnit
1717
{
1818
NOT_SET,
19+
MINUTE,
20+
HOUR,
1921
DAY,
2022
MONTH
2123
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0.
4+
*/
5+
6+
#pragma once
7+
#include <aws/application-signals/ApplicationSignals_EXPORTS.h>
8+
#include <aws/core/utils/memory/stl/AWSString.h>
9+
10+
namespace Aws
11+
{
12+
namespace ApplicationSignals
13+
{
14+
namespace Model
15+
{
16+
enum class EvaluationType
17+
{
18+
NOT_SET,
19+
PeriodBased,
20+
RequestBased
21+
};
22+
23+
namespace EvaluationTypeMapper
24+
{
25+
AWS_APPLICATIONSIGNALS_API EvaluationType GetEvaluationTypeForName(const Aws::String& name);
26+
27+
AWS_APPLICATIONSIGNALS_API Aws::String GetNameForEvaluationType(EvaluationType value);
28+
} // namespace EvaluationTypeMapper
29+
} // namespace Model
30+
} // namespace ApplicationSignals
31+
} // namespace Aws

generated/src/aws-cpp-sdk-application-signals/include/aws/application-signals/model/Goal.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,14 @@ namespace Model
5555

5656
///@{
5757
/**
58-
* <p>The threshold that determines if the goal is being met. An <i>attainment
59-
* goal</i> is the ratio of good periods that meet the threshold requirements to
60-
* the total periods within the interval. For example, an attainment goal of 99.9%
61-
* means that within your interval, you are targeting 99.9% of the periods to be in
62-
* healthy state.</p> <p>If you omit this parameter, 99 is used to represent 99% as
63-
* the attainment goal.</p>
58+
* <p>The threshold that determines if the goal is being met.</p> <p>If this is a
59+
* period-based SLO, the attainment goal is the percentage of good periods that
60+
* meet the threshold requirements to the total periods within the interval. For
61+
* example, an attainment goal of 99.9% means that within your interval, you are
62+
* targeting 99.9% of the periods to be in healthy state.</p> <p>If this is a
63+
* request-based SLO, the attainment goal is the percentage of requests that must
64+
* be successful to meet the attainment goal.</p> <p>If you omit this parameter, 99
65+
* is used to represent 99% as the attainment goal.</p>
6466
*/
6567
inline double GetAttainmentGoal() const{ return m_attainmentGoal; }
6668
inline bool AttainmentGoalHasBeenSet() const { return m_attainmentGoalHasBeenSet; }

generated/src/aws-cpp-sdk-application-signals/include/aws/application-signals/model/MetricDataQuery.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ namespace Model
171171
///@{
172172
/**
173173
* <p>The ID of the account where this metric is located. If you are performing
174-
* this operatiion in a monitoring account, use this to specify which source
175-
* account to retrieve this metric from.</p>
174+
* this operation in a monitoring account, use this to specify which source account
175+
* to retrieve this metric from.</p>
176176
*/
177177
inline const Aws::String& GetAccountId() const{ return m_accountId; }
178178
inline bool AccountIdHasBeenSet() const { return m_accountIdHasBeenSet; }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/**
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0.
4+
*/
5+
6+
#pragma once
7+
#include <aws/application-signals/ApplicationSignals_EXPORTS.h>
8+
#include <aws/core/utils/memory/stl/AWSVector.h>
9+
#include <aws/application-signals/model/MetricDataQuery.h>
10+
#include <utility>
11+
12+
namespace Aws
13+
{
14+
namespace Utils
15+
{
16+
namespace Json
17+
{
18+
class JsonValue;
19+
class JsonView;
20+
} // namespace Json
21+
} // namespace Utils
22+
namespace ApplicationSignals
23+
{
24+
namespace Model
25+
{
26+
27+
/**
28+
* <p>This structure defines the metric that is used as the "good request" or "bad
29+
* request" value for a request-based SLO. This value observed for the metric
30+
* defined in <code>TotalRequestCountMetric</code> is divided by the number found
31+
* for <code>MonitoredRequestCountMetric</code> to determine the percentage of
32+
* successful requests that this SLO tracks.</p><p><h3>See Also:</h3> <a
33+
* href="http://docs.aws.amazon.com/goto/WebAPI/application-signals-2024-04-15/MonitoredRequestCountMetricDataQueries">AWS
34+
* API Reference</a></p>
35+
*/
36+
class MonitoredRequestCountMetricDataQueries
37+
{
38+
public:
39+
AWS_APPLICATIONSIGNALS_API MonitoredRequestCountMetricDataQueries();
40+
AWS_APPLICATIONSIGNALS_API MonitoredRequestCountMetricDataQueries(Aws::Utils::Json::JsonView jsonValue);
41+
AWS_APPLICATIONSIGNALS_API MonitoredRequestCountMetricDataQueries& operator=(Aws::Utils::Json::JsonView jsonValue);
42+
AWS_APPLICATIONSIGNALS_API Aws::Utils::Json::JsonValue Jsonize() const;
43+
44+
45+
///@{
46+
/**
47+
* <p>If you want to count "good requests" to determine the percentage of
48+
* successful requests for this request-based SLO, specify the metric to use as
49+
* "good requests" in this structure.</p>
50+
*/
51+
inline const Aws::Vector<MetricDataQuery>& GetGoodCountMetric() const{ return m_goodCountMetric; }
52+
inline bool GoodCountMetricHasBeenSet() const { return m_goodCountMetricHasBeenSet; }
53+
inline void SetGoodCountMetric(const Aws::Vector<MetricDataQuery>& value) { m_goodCountMetricHasBeenSet = true; m_goodCountMetric = value; }
54+
inline void SetGoodCountMetric(Aws::Vector<MetricDataQuery>&& value) { m_goodCountMetricHasBeenSet = true; m_goodCountMetric = std::move(value); }
55+
inline MonitoredRequestCountMetricDataQueries& WithGoodCountMetric(const Aws::Vector<MetricDataQuery>& value) { SetGoodCountMetric(value); return *this;}
56+
inline MonitoredRequestCountMetricDataQueries& WithGoodCountMetric(Aws::Vector<MetricDataQuery>&& value) { SetGoodCountMetric(std::move(value)); return *this;}
57+
inline MonitoredRequestCountMetricDataQueries& AddGoodCountMetric(const MetricDataQuery& value) { m_goodCountMetricHasBeenSet = true; m_goodCountMetric.push_back(value); return *this; }
58+
inline MonitoredRequestCountMetricDataQueries& AddGoodCountMetric(MetricDataQuery&& value) { m_goodCountMetricHasBeenSet = true; m_goodCountMetric.push_back(std::move(value)); return *this; }
59+
///@}
60+
61+
///@{
62+
/**
63+
* <p>If you want to count "bad requests" to determine the percentage of successful
64+
* requests for this request-based SLO, specify the metric to use as "bad requests"
65+
* in this structure.</p>
66+
*/
67+
inline const Aws::Vector<MetricDataQuery>& GetBadCountMetric() const{ return m_badCountMetric; }
68+
inline bool BadCountMetricHasBeenSet() const { return m_badCountMetricHasBeenSet; }
69+
inline void SetBadCountMetric(const Aws::Vector<MetricDataQuery>& value) { m_badCountMetricHasBeenSet = true; m_badCountMetric = value; }
70+
inline void SetBadCountMetric(Aws::Vector<MetricDataQuery>&& value) { m_badCountMetricHasBeenSet = true; m_badCountMetric = std::move(value); }
71+
inline MonitoredRequestCountMetricDataQueries& WithBadCountMetric(const Aws::Vector<MetricDataQuery>& value) { SetBadCountMetric(value); return *this;}
72+
inline MonitoredRequestCountMetricDataQueries& WithBadCountMetric(Aws::Vector<MetricDataQuery>&& value) { SetBadCountMetric(std::move(value)); return *this;}
73+
inline MonitoredRequestCountMetricDataQueries& AddBadCountMetric(const MetricDataQuery& value) { m_badCountMetricHasBeenSet = true; m_badCountMetric.push_back(value); return *this; }
74+
inline MonitoredRequestCountMetricDataQueries& AddBadCountMetric(MetricDataQuery&& value) { m_badCountMetricHasBeenSet = true; m_badCountMetric.push_back(std::move(value)); return *this; }
75+
///@}
76+
private:
77+
78+
Aws::Vector<MetricDataQuery> m_goodCountMetric;
79+
bool m_goodCountMetricHasBeenSet = false;
80+
81+
Aws::Vector<MetricDataQuery> m_badCountMetric;
82+
bool m_badCountMetricHasBeenSet = false;
83+
};
84+
85+
} // namespace Model
86+
} // namespace ApplicationSignals
87+
} // namespace Aws

0 commit comments

Comments
 (0)