Skip to content

Commit cebf417

Browse files
author
tejasgn
committed
Merge remote-tracking branch 'origin/main' into sync-for-steer-specs
2 parents 76c293a + 75f9f78 commit cebf417

File tree

24 files changed

+2599
-51
lines changed

24 files changed

+2599
-51
lines changed

.abapgit.xml

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,7 @@
77
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
88
<IGNORE>
99
<item>/sap-abap/README.md</item>
10-
<item>/sap-abap/services/bdr/README.md</item>
11-
<item>/sap-abap/services/bdz/README.md</item>
12-
<item>/sap-abap/services/cloudwatch/README.md</item>
13-
<item>/sap-abap/services/dyn/README.md</item>
14-
<item>/sap-abap/services/ec2/README.md</item>
15-
<item>/sap-abap/services/kinesis/README.md</item>
16-
<item>/sap-abap/services/lambda/README.md</item>
17-
<item>/sap-abap/services/s3/README.md</item>
18-
<item>/sap-abap/services/sagemaker/README.md</item>
19-
<item>/sap-abap/services/sns/README.md</item>
20-
<item>/sap-abap/services/sqs/README.md</item>
21-
<item>/sap-abap/services/textract/README.md</item>
22-
<item>/sap-abap/services/translate/README.md</item>
10+
<item>/sap-abap/services/*/README.md</item>
2311
</IGNORE>
2412
</DATA>
2513
</asx:values>

.doc_gen/metadata/cloudwatch-logs_metadata.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,14 @@ cloudwatch-logs_PutSubscriptionFilter:
288288
cloudwatch-logs: {PutSubscriptionFilter}
289289
cloudwatch-logs_GetQueryResults:
290290
languages:
291+
.NET:
292+
versions:
293+
- sdk_version: 4
294+
github: dotnetv4/CloudWatchLogs/LargeQuery
295+
excerpts:
296+
- description:
297+
snippet_tags:
298+
- CloudWatchLogs.dotnetv4.GetQueryResults
291299
JavaScript:
292300
versions:
293301
- sdk_version: 3
@@ -308,6 +316,14 @@ cloudwatch-logs_GetQueryResults:
308316
cloudwatch-logs: {GetQueryResults}
309317
cloudwatch-logs_StartQuery:
310318
languages:
319+
.NET:
320+
versions:
321+
- sdk_version: 4
322+
github: dotnetv4/CloudWatchLogs/LargeQuery
323+
excerpts:
324+
- description:
325+
snippet_tags:
326+
- CloudWatchLogs.dotnetv4.StartQuery
311327
JavaScript:
312328
versions:
313329
- sdk_version: 3
@@ -332,6 +348,14 @@ cloudwatch-logs_Scenario_BigQuery:
332348
synopsis: use &CWL; to query more than 10,000 records.
333349
category: Scenarios
334350
languages:
351+
.NET:
352+
versions:
353+
- sdk_version: 4
354+
github: dotnetv4/CloudWatchLogs/LargeQuery
355+
excerpts:
356+
- description: This is the main workflow that demonstrates the large query scenario.
357+
snippet_tags:
358+
- CloudWatchLogs.dotnetv4.LargeQueryWorkflow
335359
JavaScript:
336360
versions:
337361
- sdk_version: 3

.doc_gen/validation.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ allow_list:
215215
- "EnablePropagateAdditionalUserContextData"
216216
- "StopQueryWorkloadInsightsTopContributors"
217217
- "com/location/latest/APIReference/Welcome"
218+
- "LargeQuery/Actions/CloudWatchLogsWrapper"
218219
sample_files:
219220
- "README.md"
220221
- "chat_sfn_state_machine.json"

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,6 @@ kotlin/services/**/gradlew
3838
kotlin/services/**/gradlew.bat
3939
kotlin/services/**/.kotlin/
4040
/.local/
41+
.kiro/settings/
42+
.kiro/steering/
43+

.tools/readmes/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
"auto-scaling": "dotnetv4/AutoScaling",
130130
"cloudformation": "dotnetv4/CloudFormation",
131131
"cloudwatch": "dotnetv4/CloudWatch",
132+
"cloudwatch-logs": "dotnetv4/CloudWatchLogs",
132133
"cognito-identity-provider": "dotnetv4/Cognito",
133134
"ec2": "dotnetv4/EC2",
134135
"ecs": "dotnetv4/ECS",

.tools/readmes/requirements_freeze.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ shellingham==1.5.4
2828
typer==0.15.1
2929
types-PyYAML==6.0.12.12
3030
typing_extensions==4.12.2
31-
urllib3==2.5.0
31+
urllib3==2.6.0
3232
yamale==4.0.4

dotnetv3/CloudWatchLogs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@ in the `dotnetv3` folder.
9999

100100
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
101101

102-
SPDX-License-Identifier: Apache-2.0
102+
SPDX-License-Identifier: Apache-2.0
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Library</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="AWSSDK.CloudFormation" Version="3.7.*" />
12+
<PackageReference Include="AWSSDK.CloudWatchLogs" Version="3.7.*" />
13+
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.7.*" />
14+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.*" />
15+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.*" />
16+
</ItemGroup>
17+
18+
</Project>
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
// snippet-start:[CloudWatchLogs.dotnetv4.CloudWatchLogsWrapper]
5+
using Amazon.CloudWatchLogs;
6+
using Amazon.CloudWatchLogs.Model;
7+
using Microsoft.Extensions.Logging;
8+
9+
namespace CloudWatchLogsActions;
10+
11+
/// <summary>
12+
/// Wrapper class for Amazon CloudWatch Logs operations.
13+
/// </summary>
14+
public class CloudWatchLogsWrapper
15+
{
16+
private readonly IAmazonCloudWatchLogs _amazonCloudWatchLogs;
17+
private readonly ILogger<CloudWatchLogsWrapper> _logger;
18+
19+
/// <summary>
20+
/// Constructor for the CloudWatchLogsWrapper class.
21+
/// </summary>
22+
/// <param name="amazonCloudWatchLogs">The injected CloudWatch Logs client.</param>
23+
/// <param name="logger">The injected logger.</param>
24+
public CloudWatchLogsWrapper(IAmazonCloudWatchLogs amazonCloudWatchLogs, ILogger<CloudWatchLogsWrapper> logger)
25+
{
26+
_amazonCloudWatchLogs = amazonCloudWatchLogs;
27+
_logger = logger;
28+
}
29+
30+
// snippet-start:[CloudWatchLogs.dotnetv4.StartQuery]
31+
/// <summary>
32+
/// Starts a CloudWatch Logs Insights query.
33+
/// </summary>
34+
/// <param name="logGroupName">The name of the log group to query.</param>
35+
/// <param name="queryString">The CloudWatch Logs Insights query string.</param>
36+
/// <param name="startTime">The start time for the query (seconds since epoch).</param>
37+
/// <param name="endTime">The end time for the query (seconds since epoch).</param>
38+
/// <param name="limit">The maximum number of results to return.</param>
39+
/// <returns>The query ID if successful, null otherwise.</returns>
40+
public async Task<string?> StartQueryAsync(
41+
string logGroupName,
42+
string queryString,
43+
long startTime,
44+
long endTime,
45+
int limit = 10000)
46+
{
47+
try
48+
{
49+
var request = new StartQueryRequest
50+
{
51+
LogGroupName = logGroupName,
52+
QueryString = queryString,
53+
StartTime = startTime,
54+
EndTime = endTime,
55+
Limit = limit
56+
};
57+
58+
var response = await _amazonCloudWatchLogs.StartQueryAsync(request);
59+
return response.QueryId;
60+
}
61+
catch (InvalidParameterException ex)
62+
{
63+
_logger.LogError($"Invalid parameter for query: {ex.Message}");
64+
return null;
65+
}
66+
catch (ResourceNotFoundException ex)
67+
{
68+
_logger.LogError($"Log group not found: {ex.Message}");
69+
return null;
70+
}
71+
catch (Exception ex)
72+
{
73+
_logger.LogError($"An error occurred while starting query: {ex.Message}");
74+
return null;
75+
}
76+
}
77+
// snippet-end:[CloudWatchLogs.dotnetv4.StartQuery]
78+
79+
// snippet-start:[CloudWatchLogs.dotnetv4.GetQueryResults]
80+
/// <summary>
81+
/// Gets the results of a CloudWatch Logs Insights query.
82+
/// </summary>
83+
/// <param name="queryId">The ID of the query.</param>
84+
/// <returns>The query results response.</returns>
85+
public async Task<GetQueryResultsResponse?> GetQueryResultsAsync(string queryId)
86+
{
87+
try
88+
{
89+
var request = new GetQueryResultsRequest
90+
{
91+
QueryId = queryId
92+
};
93+
94+
var response = await _amazonCloudWatchLogs.GetQueryResultsAsync(request);
95+
return response;
96+
}
97+
catch (ResourceNotFoundException ex)
98+
{
99+
_logger.LogError($"Query not found: {ex.Message}");
100+
return null;
101+
}
102+
catch (Exception ex)
103+
{
104+
_logger.LogError($"An error occurred while getting query results: {ex.Message}");
105+
return null;
106+
}
107+
}
108+
// snippet-end:[CloudWatchLogs.dotnetv4.GetQueryResults]
109+
110+
// snippet-start:[CloudWatchLogs.dotnetv4.PutLogEvents]
111+
/// <summary>
112+
/// Puts log events to a CloudWatch Logs log stream.
113+
/// </summary>
114+
/// <param name="logGroupName">The name of the log group.</param>
115+
/// <param name="logStreamName">The name of the log stream.</param>
116+
/// <param name="logEvents">The list of log events to put.</param>
117+
/// <returns>True if successful, false otherwise.</returns>
118+
public async Task<bool> PutLogEventsAsync(
119+
string logGroupName,
120+
string logStreamName,
121+
List<InputLogEvent> logEvents)
122+
{
123+
try
124+
{
125+
var request = new PutLogEventsRequest
126+
{
127+
LogGroupName = logGroupName,
128+
LogStreamName = logStreamName,
129+
LogEvents = logEvents
130+
};
131+
132+
await _amazonCloudWatchLogs.PutLogEventsAsync(request);
133+
return true;
134+
}
135+
catch (ResourceNotFoundException ex)
136+
{
137+
_logger.LogError($"Log group or stream not found: {ex.Message}");
138+
return false;
139+
}
140+
catch (Exception ex)
141+
{
142+
_logger.LogError($"An error occurred while putting log events: {ex.Message}");
143+
return false;
144+
}
145+
}
146+
// snippet-end:[CloudWatchLogs.dotnetv4.PutLogEvents]
147+
}
148+
// snippet-end:[CloudWatchLogs.dotnetv4.CloudWatchLogsWrapper]
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.0.31903.59
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CloudWatchLogsActions", "Actions\CloudWatchLogsActions.csproj", "{A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D}"
7+
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CloudWatchLogsScenario", "Scenarios\CloudWatchLogsScenario.csproj", "{B2C3D4E5-F6A7-5B6C-9D0E-1F2A3B4C5D6E}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CloudWatchLogsTests", "Tests\CloudWatchLogsTests.csproj", "{C3D4E5F6-A7B8-6C7D-0E1F-2A3B4C5D6E7F}"
11+
EndProject
12+
Global
13+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
14+
Debug|Any CPU = Debug|Any CPU
15+
Release|Any CPU = Release|Any CPU
16+
EndGlobalSection
17+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
18+
{A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19+
{A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
20+
{A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
21+
{A1B2C3D4-E5F6-4A5B-8C9D-0E1F2A3B4C5D}.Release|Any CPU.Build.0 = Release|Any CPU
22+
{B2C3D4E5-F6A7-5B6C-9D0E-1F2A3B4C5D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23+
{B2C3D4E5-F6A7-5B6C-9D0E-1F2A3B4C5D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
24+
{B2C3D4E5-F6A7-5B6C-9D0E-1F2A3B4C5D6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
25+
{B2C3D4E5-F6A7-5B6C-9D0E-1F2A3B4C5D6E}.Release|Any CPU.Build.0 = Release|Any CPU
26+
{C3D4E5F6-A7B8-6C7D-0E1F-2A3B4C5D6E7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{C3D4E5F6-A7B8-6C7D-0E1F-2A3B4C5D6E7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{C3D4E5F6-A7B8-6C7D-0E1F-2A3B4C5D6E7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{C3D4E5F6-A7B8-6C7D-0E1F-2A3B4C5D6E7F}.Release|Any CPU.Build.0 = Release|Any CPU
30+
EndGlobalSection
31+
EndGlobal

0 commit comments

Comments
 (0)