Skip to content

Commit 64ae473

Browse files
This release adds support for TAMS server integration with MediaConvert inputs.
July 2025 doc-only updates for Systems Manager. Updated error handling for RegisterOrganizationAdminAccount API to properly translate TooManyExceptions to HTTP 429 status code. This enhancement improves error handling consistency and provides clearer feedback when request limits are exceeded. CloudWatchLogs launches GetLogObject API with streaming support for efficient log data retrieval. Logs added support for new AccountPolicy type METRIC_EXTRACTION_POLICY. For more information, see CloudWatch Logs API documentation Added IP Visibility support for managed dedicated pools. Enhanced GetDedicatedIp and GetDedicatedIps APIs to return managed IP addresses. Add AWS Outposts API to surface customer billing information
1 parent 854c2d7 commit 64ae473

File tree

60 files changed

+3403
-926
lines changed

Some content is hidden

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

60 files changed

+3403
-926
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.11.607
1+
1.11.608

generated/src/aws-cpp-sdk-logs/include/aws/logs/CloudWatchLogsClient.h

Lines changed: 98 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,6 +1827,43 @@ namespace CloudWatchLogs
18271827
return SubmitAsync(&CloudWatchLogsClient::GetLogGroupFields, request, handler, context);
18281828
}
18291829

1830+
/**
1831+
* <p>Retrieves a large logging object (LLO) and streams it back. This API is used
1832+
* to fetch the content of large portions of log events that have been ingested
1833+
* through the PutOpenTelemetryLogs API. When log events contain fields that would
1834+
* cause the total event size to exceed 1MB, CloudWatch Logs automatically
1835+
* processes up to 10 fields, starting with the largest fields. Each field is
1836+
* truncated as needed to keep the total event size as close to 1MB as possible.
1837+
* The excess portions are stored as Large Log Objects (LLOs) and these fields are
1838+
* processed separately and LLO reference system fields (in the format
1839+
* <code>@ptr.$[path.to.field]</code>) are added. The path in the reference field
1840+
* reflects the original JSON structure where the large field was located. For
1841+
* example, this could be <code>@ptr.$['input']['message']</code>,
1842+
* <code>@ptr.$['AAA']['BBB']['CCC']['DDD']</code>, <code>@ptr.$['AAA']</code>, or
1843+
* any other path matching your log structure.</p><p><h3>See Also:</h3> <a
1844+
* href="http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/GetLogObject">AWS
1845+
* API Reference</a></p>
1846+
*/
1847+
virtual Model::GetLogObjectOutcome GetLogObject(Model::GetLogObjectRequest& request) const;
1848+
1849+
/**
1850+
* A Callable wrapper for GetLogObject that returns a future to the operation so that it can be executed in parallel to other requests.
1851+
*/
1852+
template<typename GetLogObjectRequestT = Model::GetLogObjectRequest>
1853+
Model::GetLogObjectOutcomeCallable GetLogObjectCallable(GetLogObjectRequestT& request) const
1854+
{
1855+
return SubmitCallable(&CloudWatchLogsClient::GetLogObject, request);
1856+
}
1857+
1858+
/**
1859+
* An Async wrapper for GetLogObject that queues the request into a thread executor and triggers associated callback when operation has finished.
1860+
*/
1861+
template<typename GetLogObjectRequestT = Model::GetLogObjectRequest>
1862+
void GetLogObjectAsync(GetLogObjectRequestT& request, const GetLogObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const
1863+
{
1864+
return SubmitAsync(&CloudWatchLogsClient::GetLogObject, request, handler, context);
1865+
}
1866+
18301867
/**
18311868
* <p>Retrieves all of the fields and values of a single log event. All fields are
18321869
* retrieved, even if the original query that produced the
@@ -2105,17 +2142,20 @@ namespace CloudWatchLogs
21052142

21062143
/**
21072144
* <p>Creates an account-level data protection policy, subscription filter policy,
2108-
* or field index policy that applies to all log groups or a subset of log groups
2109-
* in the account.</p> <p>To use this operation, you must be signed on with the
2110-
* correct permissions depending on the type of policy that you are creating.</p>
2111-
* <ul> <li> <p>To create a data protection policy, you must have the
2112-
* <code>logs:PutDataProtectionPolicy</code> and <code>logs:PutAccountPolicy</code>
2113-
* permissions.</p> </li> <li> <p>To create a subscription filter policy, you must
2114-
* have the <code>logs:PutSubscriptionFilter</code> and
2115-
* <code>logs:PutAccountPolicy</code> permissions.</p> </li> <li> <p>To create a
2116-
* transformer policy, you must have the <code>logs:PutTransformer</code> and
2117-
* <code>logs:PutAccountPolicy</code> permissions.</p> </li> <li> <p>To create a
2118-
* field index policy, you must have the <code>logs:PutIndexPolicy</code> and
2145+
* field index policy, transformer policy, or metric extraction policy that applies
2146+
* to all log groups or a subset of log groups in the account.</p> <p>To use this
2147+
* operation, you must be signed on with the correct permissions depending on the
2148+
* type of policy that you are creating.</p> <ul> <li> <p>To create a data
2149+
* protection policy, you must have the <code>logs:PutDataProtectionPolicy</code>
2150+
* and <code>logs:PutAccountPolicy</code> permissions.</p> </li> <li> <p>To create
2151+
* a subscription filter policy, you must have the
2152+
* <code>logs:PutSubscriptionFilter</code> and <code>logs:PutAccountPolicy</code>
2153+
* permissions.</p> </li> <li> <p>To create a transformer policy, you must have the
2154+
* <code>logs:PutTransformer</code> and <code>logs:PutAccountPolicy</code>
2155+
* permissions.</p> </li> <li> <p>To create a field index policy, you must have the
2156+
* <code>logs:PutIndexPolicy</code> and <code>logs:PutAccountPolicy</code>
2157+
* permissions.</p> </li> <li> <p>To create a metric extraction policy, you must
2158+
* have the <code>logs:PutMetricExtractionPolicy</code> and
21192159
* <code>logs:PutAccountPolicy</code> permissions.</p> </li> </ul> <p> <b>Data
21202160
* protection policy</b> </p> <p>A data protection policy can help safeguard
21212161
* sensitive data that's ingested by your log groups by auditing and masking the
@@ -2245,8 +2285,53 @@ namespace CloudWatchLogs
22452285
* instead of <code>PutAccountPolicy</code>. If you do so, that log group will use
22462286
* only that log-group level policy, and will ignore the account-level policy that
22472287
* you create with <a
2248-
* href="https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutAccountPolicy.html">PutAccountPolicy</a>.</p><p><h3>See
2249-
* Also:</h3> <a
2288+
* href="https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutAccountPolicy.html">PutAccountPolicy</a>.</p>
2289+
* <p> <b>Metric extraction policy</b> </p> <p>A metric extraction policy controls
2290+
* whether CloudWatch Metrics can be created through the Embedded Metrics Format
2291+
* (EMF) for log groups in your account. By default, EMF metric creation is enabled
2292+
* for all log groups. You can use metric extraction policies to disable EMF metric
2293+
* creation for your entire account or specific log groups.</p> <p>When a policy
2294+
* disables EMF metric creation for a log group, log events in the EMF format are
2295+
* still ingested, but no CloudWatch Metrics are created from them.</p>
2296+
* <p>Creating a policy disables metrics for AWS features that use EMF to create
2297+
* metrics, such as CloudWatch Container Insights and CloudWatch Application
2298+
* Signals. To prevent turning off those features by accident, we recommend that
2299+
* you exclude the underlying log-groups through a selection-criteria such as
2300+
* <code>LogGroupNamePrefix NOT IN ["/aws/containerinsights",
2301+
* "/aws/ecs/containerinsights", "/aws/application-signals/data"]</code>.</p>
2302+
* <p>Each account can have either one account-level metric extraction
2303+
* policy that applies to all log groups, or up to 5 policies that are each scoped
2304+
* to a subset of log groups with the <code>selectionCriteria</code> parameter. The
2305+
* selection criteria supports filtering by <code>LogGroupName</code> and
2306+
* <code>LogGroupNamePrefix</code> using the operators <code>IN</code> and
2307+
* <code>NOT IN</code>. You can specify up to 50 values in each <code>IN</code> or
2308+
* <code>NOT IN</code> list.</p> <p>The selection criteria can be specified in
2309+
* these formats:</p> <p> <code>LogGroupName IN ["log-group-1",
2310+
* "log-group-2"]</code> </p> <p> <code>LogGroupNamePrefix NOT IN ["/aws/prefix1",
2311+
* "/aws/prefix2"]</code> </p> <p>If you have multiple account-level metric
2312+
* extraction policies with selection criteria, no two of them can have overlapping
2313+
* criteria. For example, if you have one policy with selection criteria
2314+
* <code>LogGroupNamePrefix IN ["my-log"]</code>, you can't have another metric
2315+
* extraction policy with selection criteria <code>LogGroupNamePrefix IN
2316+
* ["/my-log-prod"]</code> or <code>LogGroupNamePrefix IN ["/my-logging"]</code>,
2317+
* as the set of log groups matching these prefixes would be a subset of the log
2318+
* groups matching the first policy's prefix, creating an overlap.</p> <p>When
2319+
* using <code>NOT IN</code>, only one policy with this operator is allowed per
2320+
* account.</p> <p>When combining policies with <code>IN</code> and <code>NOT
2321+
* IN</code> operators, the overlap check ensures that policies don't have
2322+
* conflicting effects. Two policies with <code>IN</code> and <code>NOT IN</code>
2323+
* operators do not overlap if and only if every value in the <code>IN
2324+
* </code>policy is completely contained within some value in the <code>NOT
2325+
* IN</code> policy. For example:</p> <ul> <li> <p>If you have a <code>NOT
2326+
* IN</code> policy for prefix <code>"/aws/lambda"</code>, you can create an
2327+
* <code>IN</code> policy for the exact log group name
2328+
* <code>"/aws/lambda/function1"</code> because the set of log groups matching
2329+
* <code>"/aws/lambda/function1"</code> is a subset of the log groups matching
2330+
* <code>"/aws/lambda"</code>.</p> </li> <li> <p>If you have a <code>NOT IN</code>
2331+
* policy for prefix <code>"/aws/lambda"</code>, you cannot create an
2332+
* <code>IN</code> policy for prefix <code>"/aws"</code> because the set of log
2333+
* groups matching <code>"/aws"</code> is not a subset of the log groups matching
2334+
* <code>"/aws/lambda"</code>.</p> </li> </ul><p><h3>See Also:</h3> <a
22502335
* href="http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/PutAccountPolicy">AWS
22512336
* API Reference</a></p>
22522337
*/

generated/src/aws-cpp-sdk-logs/include/aws/logs/CloudWatchLogsServiceClientModel.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ namespace Aws
189189
class GetLogAnomalyDetectorRequest;
190190
class GetLogEventsRequest;
191191
class GetLogGroupFieldsRequest;
192+
class GetLogObjectRequest;
192193
class GetLogRecordRequest;
193194
class GetQueryResultsRequest;
194195
class GetTransformerRequest;
@@ -279,6 +280,7 @@ namespace Aws
279280
typedef Aws::Utils::Outcome<GetLogAnomalyDetectorResult, CloudWatchLogsError> GetLogAnomalyDetectorOutcome;
280281
typedef Aws::Utils::Outcome<GetLogEventsResult, CloudWatchLogsError> GetLogEventsOutcome;
281282
typedef Aws::Utils::Outcome<GetLogGroupFieldsResult, CloudWatchLogsError> GetLogGroupFieldsOutcome;
283+
typedef Aws::Utils::Outcome<Aws::NoResult, CloudWatchLogsError> GetLogObjectOutcome;
282284
typedef Aws::Utils::Outcome<GetLogRecordResult, CloudWatchLogsError> GetLogRecordOutcome;
283285
typedef Aws::Utils::Outcome<GetQueryResultsResult, CloudWatchLogsError> GetQueryResultsOutcome;
284286
typedef Aws::Utils::Outcome<GetTransformerResult, CloudWatchLogsError> GetTransformerOutcome;
@@ -369,6 +371,7 @@ namespace Aws
369371
typedef std::future<GetLogAnomalyDetectorOutcome> GetLogAnomalyDetectorOutcomeCallable;
370372
typedef std::future<GetLogEventsOutcome> GetLogEventsOutcomeCallable;
371373
typedef std::future<GetLogGroupFieldsOutcome> GetLogGroupFieldsOutcomeCallable;
374+
typedef std::future<GetLogObjectOutcome> GetLogObjectOutcomeCallable;
372375
typedef std::future<GetLogRecordOutcome> GetLogRecordOutcomeCallable;
373376
typedef std::future<GetQueryResultsOutcome> GetQueryResultsOutcomeCallable;
374377
typedef std::future<GetTransformerOutcome> GetTransformerOutcomeCallable;
@@ -462,6 +465,7 @@ namespace Aws
462465
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetLogAnomalyDetectorRequest&, const Model::GetLogAnomalyDetectorOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetLogAnomalyDetectorResponseReceivedHandler;
463466
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetLogEventsRequest&, const Model::GetLogEventsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetLogEventsResponseReceivedHandler;
464467
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetLogGroupFieldsRequest&, const Model::GetLogGroupFieldsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetLogGroupFieldsResponseReceivedHandler;
468+
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetLogObjectRequest&, const Model::GetLogObjectOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetLogObjectResponseReceivedHandler;
465469
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetLogRecordRequest&, const Model::GetLogRecordOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetLogRecordResponseReceivedHandler;
466470
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetQueryResultsRequest&, const Model::GetQueryResultsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetQueryResultsResponseReceivedHandler;
467471
typedef std::function<void(const CloudWatchLogsClient*, const Model::GetTransformerRequest&, const Model::GetTransformerOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetTransformerResponseReceivedHandler;
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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/logs/CloudWatchLogs_EXPORTS.h>
8+
#include <aws/core/utils/Array.h>
9+
#include <utility>
10+
11+
namespace Aws
12+
{
13+
namespace Utils
14+
{
15+
namespace Json
16+
{
17+
class JsonValue;
18+
class JsonView;
19+
} // namespace Json
20+
} // namespace Utils
21+
namespace CloudWatchLogs
22+
{
23+
namespace Model
24+
{
25+
26+
/**
27+
* <p>A structure containing the extracted fields from a log event. These fields
28+
* are extracted based on the log format and can be used for structured querying
29+
* and analysis.</p><p><h3>See Also:</h3> <a
30+
* href="http://docs.aws.amazon.com/goto/WebAPI/logs-2014-03-28/FieldsData">AWS API
31+
* Reference</a></p>
32+
*/
33+
class FieldsData
34+
{
35+
public:
36+
AWS_CLOUDWATCHLOGS_API FieldsData() = default;
37+
AWS_CLOUDWATCHLOGS_API FieldsData(Aws::Utils::Json::JsonView jsonValue);
38+
AWS_CLOUDWATCHLOGS_API FieldsData& operator=(Aws::Utils::Json::JsonView jsonValue);
39+
AWS_CLOUDWATCHLOGS_API Aws::Utils::Json::JsonValue Jsonize() const;
40+
41+
42+
///@{
43+
/**
44+
* <p>The actual log data content returned in the streaming response. This contains
45+
* the fields and values of the log event in a structured format that can be parsed
46+
* and processed by the client.</p>
47+
*/
48+
inline const Aws::Utils::ByteBuffer& GetData() const { return m_data; }
49+
inline bool DataHasBeenSet() const { return m_dataHasBeenSet; }
50+
template<typename DataT = Aws::Utils::ByteBuffer>
51+
void SetData(DataT&& value) { m_dataHasBeenSet = true; m_data = std::forward<DataT>(value); }
52+
template<typename DataT = Aws::Utils::ByteBuffer>
53+
FieldsData& WithData(DataT&& value) { SetData(std::forward<DataT>(value)); return *this;}
54+
///@}
55+
private:
56+
57+
Aws::Utils::ByteBuffer m_data{};
58+
bool m_dataHasBeenSet = false;
59+
};
60+
61+
} // namespace Model
62+
} // namespace CloudWatchLogs
63+
} // namespace Aws
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
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/core/utils/HashingUtils.h>
8+
#include <aws/core/utils/event/EventStreamHandler.h>
9+
#include <aws/core/client/AWSError.h>
10+
#include <aws/logs/CloudWatchLogs_EXPORTS.h>
11+
#include <aws/logs/CloudWatchLogsErrors.h>
12+
13+
#include <aws/logs/model/GetLogObjectInitialResponse.h>
14+
#include <aws/logs/model/FieldsData.h>
15+
16+
namespace Aws
17+
{
18+
namespace CloudWatchLogs
19+
{
20+
namespace Model
21+
{
22+
enum class GetLogObjectEventType
23+
{
24+
INITIAL_RESPONSE,
25+
FIELDS,
26+
UNKNOWN
27+
};
28+
29+
class GetLogObjectHandler : public Aws::Utils::Event::EventStreamHandler
30+
{
31+
typedef std::function<void(const GetLogObjectInitialResponse&)> GetLogObjectInitialResponseCallback;
32+
typedef std::function<void(const GetLogObjectInitialResponse&, const Utils::Event::InitialResponseType)> GetLogObjectInitialResponseCallbackEx;
33+
typedef std::function<void(const FieldsData&)> FieldsDataCallback;
34+
typedef std::function<void(const Aws::Client::AWSError<CloudWatchLogsErrors>& error)> ErrorCallback;
35+
36+
public:
37+
AWS_CLOUDWATCHLOGS_API GetLogObjectHandler();
38+
AWS_CLOUDWATCHLOGS_API GetLogObjectHandler& operator=(const GetLogObjectHandler&) = default;
39+
AWS_CLOUDWATCHLOGS_API GetLogObjectHandler(const GetLogObjectHandler&) = default;
40+
41+
AWS_CLOUDWATCHLOGS_API virtual void OnEvent() override;
42+
43+
///@{
44+
/**
45+
* Sets an initial response callback. This callback gets called on the initial GetLogObject Operation response.
46+
* This can be either "initial-response" decoded event frame or decoded HTTP headers received on connection.
47+
* This callback may get called more than once (i.e. on connection headers received and then on the initial-response event received).
48+
* @param callback
49+
*/
50+
inline void SetInitialResponseCallbackEx(const GetLogObjectInitialResponseCallbackEx& callback) { m_onInitialResponse = callback; }
51+
/**
52+
* Sets an initial response callback (a legacy one that does not distinguish whether response originates from headers or from the event).
53+
*/
54+
inline void SetInitialResponseCallback(const GetLogObjectInitialResponseCallback& noArgCallback)
55+
{
56+
m_onInitialResponse = [noArgCallback](const GetLogObjectInitialResponse& rs, const Utils::Event::InitialResponseType) { return noArgCallback(rs); };
57+
}
58+
///@}
59+
inline void SetFieldsDataCallback(const FieldsDataCallback& callback) { m_onFieldsData = callback; }
60+
inline void SetOnErrorCallback(const ErrorCallback& callback) { m_onError = callback; }
61+
62+
inline GetLogObjectInitialResponseCallbackEx& GetInitialResponseCallbackEx() { return m_onInitialResponse; }
63+
64+
private:
65+
AWS_CLOUDWATCHLOGS_API void HandleEventInMessage();
66+
AWS_CLOUDWATCHLOGS_API void HandleErrorInMessage();
67+
AWS_CLOUDWATCHLOGS_API void MarshallError(const Aws::String& errorCode, const Aws::String& errorMessage);
68+
69+
GetLogObjectInitialResponseCallbackEx m_onInitialResponse;
70+
FieldsDataCallback m_onFieldsData;
71+
ErrorCallback m_onError;
72+
};
73+
74+
namespace GetLogObjectEventMapper
75+
{
76+
AWS_CLOUDWATCHLOGS_API GetLogObjectEventType GetGetLogObjectEventTypeForName(const Aws::String& name);
77+
78+
AWS_CLOUDWATCHLOGS_API Aws::String GetNameForGetLogObjectEventType(GetLogObjectEventType value);
79+
} // namespace GetLogObjectEventMapper
80+
} // namespace Model
81+
} // namespace CloudWatchLogs
82+
} // namespace Aws
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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/logs/CloudWatchLogs_EXPORTS.h>
8+
#include <aws/core/http/HttpTypes.h>
9+
10+
namespace Aws
11+
{
12+
namespace Utils
13+
{
14+
namespace Json
15+
{
16+
class JsonValue;
17+
class JsonView;
18+
} // namespace Json
19+
} // namespace Utils
20+
namespace CloudWatchLogs
21+
{
22+
namespace Model
23+
{
24+
25+
class GetLogObjectInitialResponse
26+
{
27+
public:
28+
AWS_CLOUDWATCHLOGS_API GetLogObjectInitialResponse() = default;
29+
AWS_CLOUDWATCHLOGS_API GetLogObjectInitialResponse(Aws::Utils::Json::JsonView jsonValue);
30+
AWS_CLOUDWATCHLOGS_API GetLogObjectInitialResponse& operator=(Aws::Utils::Json::JsonView jsonValue);
31+
AWS_CLOUDWATCHLOGS_API GetLogObjectInitialResponse(const Http::HeaderValueCollection& responseHeaders);
32+
AWS_CLOUDWATCHLOGS_API Aws::Utils::Json::JsonValue Jsonize() const;
33+
34+
};
35+
36+
} // namespace Model
37+
} // namespace CloudWatchLogs
38+
} // namespace Aws

0 commit comments

Comments
 (0)