Skip to content

Commit c905920

Browse files
committed
feat: update .NET SDK to V4
1 parent 216b233 commit c905920

File tree

40 files changed

+203
-195
lines changed

40 files changed

+203
-195
lines changed

src/AWS.Deploy.CLI/AWS.Deploy.CLI.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
</PropertyGroup>
2727

2828
<ItemGroup>
29-
<PackageReference Include="AWSSDK.IdentityManagement" Version="3.7.301.3" />
30-
<PackageReference Include="AWSSDK.CloudFormation" Version="3.7.307.3" />
31-
<PackageReference Include="AWSSDK.SecurityToken" Version="3.7.300.78" />
32-
<PackageReference Include="AWSSDK.SSO" Version="3.7.300.77" />
33-
<PackageReference Include="AWSSDK.SSOOIDC" Version="3.7.301.72" />
29+
<PackageReference Include="AWSSDK.IdentityManagement" Version="4.0.0.1" />
30+
<PackageReference Include="AWSSDK.CloudFormation" Version="4.0.0.1" />
31+
<PackageReference Include="AWSSDK.SecurityToken" Version="4.0.0.1" />
32+
<PackageReference Include="AWSSDK.SSO" Version="4.0.0.1" />
33+
<PackageReference Include="AWSSDK.SSOOIDC" Version="4.0.0.1" />
3434
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.5.0" />
3535
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.5.0" />
3636
<PackageReference Include="Spectre.Console" Version="0.50.0" />

src/AWS.Deploy.CLI/AWSCredentialsFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
using Amazon.Runtime;
5+
using Amazon.Runtime.Credentials;
56

67
namespace AWS.Deploy.CLI
78
{
@@ -11,7 +12,7 @@ public class AWSCredentialsFactory : IAWSCredentialsFactory
1112
/// <inheritdoc />
1213
public AWSCredentials Create()
1314
{
14-
return FallbackCredentialsFactory.GetCredentials();
15+
return DefaultAWSCredentialsIdentityResolver.GetCredentials();
1516
}
1617
}
1718
}

src/AWS.Deploy.CLI/CloudFormation/StackEventMonitor.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
using System;
5-
using System.Collections.Generic;
64
using System.Globalization;
7-
using System.Linq;
8-
using System.Threading.Tasks;
95
using Amazon.CloudFormation;
106
using Amazon.CloudFormation.Model;
117
using AWS.Deploy.CLI.Extensions;
@@ -126,7 +122,7 @@ private async Task ReadNewEventsAsync()
126122
{
127123
var row = new[]
128124
{
129-
(stackEvent.Timestamp.ToString(CultureInfo.InvariantCulture), TIMESTAMP_WIDTH),
125+
(stackEvent.Timestamp != null ? stackEvent.Timestamp.Value.ToString(CultureInfo.InvariantCulture): string.Empty, TIMESTAMP_WIDTH),
130126
(stackEvent.ResourceStatus.ToString(), RESOURCE_STATUS_WIDTH),
131127
(stackEvent.ResourceType.Truncate(RESOURCE_TYPE_WIDTH, true), RESOURCE_TYPE_WIDTH),
132128
(stackEvent.LogicalResourceId, LOGICAL_RESOURCE_WIDTH),

src/AWS.Deploy.CLI/Commands/DeleteDeploymentCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ private async Task WaitForStackDelete(string stackName)
223223
StackName = stackName
224224
});
225225

226-
stack = response.Stacks.Count == 0 ? null : response.Stacks[0];
226+
stack = response.Stacks == null || response.Stacks.Count == 0 ? null : response.Stacks[0];
227227
shouldRetry = false;
228228
}
229229
catch (AmazonCloudFormationException exception) when (exception.ErrorCode.Equals("ValidationError") && exception.Message.Equals($"Stack with id {stackName} does not exist"))

src/AWS.Deploy.CLI/Commands/TypeHints/DynamoDBTableCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public DynamoDBTableCommand(IAWSResourceQueryer awsResourceQueryer, IConsoleUtil
2828

2929
private async Task<List<string>> GetData()
3030
{
31-
return await _awsResourceQueryer.ListOfDyanmoDBTables();
31+
return await _awsResourceQueryer.ListOfDyanmoDBTables() ?? new List<string>();
3232
}
3333

3434
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)

src/AWS.Deploy.CLI/Commands/TypeHints/ECRRepositoryCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public async Task<TypeHintResourceTable> GetResources(Recommendation recommendat
6868

6969
private async Task<List<Repository>> GetData()
7070
{
71-
return await _awsResourceQueryer.GetECRRepositories();
71+
return await _awsResourceQueryer.GetECRRepositories() ?? new List<Repository>();
7272
}
7373
}
7474
}

src/AWS.Deploy.CLI/Commands/TypeHints/ElasticBeanstalkVpcCommand.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public ElasticBeanstalkVpcCommand(IAWSResourceQueryer awsResourceQueryer, IConso
3838

3939
private async Task<List<Vpc>> GetData()
4040
{
41-
return await _awsResourceQueryer.GetListOfVpcs();
41+
return await _awsResourceQueryer.GetListOfVpcs() ?? new List<Vpc>();
4242
}
4343

4444
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)
@@ -94,7 +94,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
9494
defaultSelector: vpc =>
9595
!string.IsNullOrEmpty(currentVpcTypeHintResponse?.VpcId)
9696
? vpc.VpcId == currentVpcTypeHintResponse.VpcId
97-
: vpc.IsDefault)
97+
: vpc.IsDefault ?? false)
9898
{
9999
CanBeEmpty = false,
100100
CreateNew = true
@@ -117,7 +117,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
117117
};
118118

119119
// Retrieve available Subnets based on the selected VPC
120-
var availableSubnets = (await _awsResourceQueryer.DescribeSubnets(vpc.SelectedOption.VpcId)).OrderBy(x => x.SubnetId).ToList();
120+
var availableSubnets = (await _awsResourceQueryer.DescribeSubnets(vpc.SelectedOption.VpcId) ?? new List<Subnet>()).OrderBy(x => x.SubnetId).ToList();
121121

122122
// If there are no subnets, don't use a VPC
123123
if (!availableSubnets.Any())
@@ -145,7 +145,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
145145
var subnets = _consoleUtilities.AskUserForList<Subnet>(userInputConfigurationSubnets, availableSubnets, subnetsOptionSetting, recommendation);
146146

147147
// Retrieve available security groups based on the selected VPC
148-
var availableSecurityGroups = (await _awsResourceQueryer.DescribeSecurityGroups(vpc.SelectedOption.VpcId)).OrderBy(x => x.VpcId).ToList();
148+
var availableSecurityGroups = (await _awsResourceQueryer.DescribeSecurityGroups(vpc.SelectedOption.VpcId) ?? new List<SecurityGroup>()).OrderBy(x => x.VpcId).ToList();
149149
if (!availableSecurityGroups.Any())
150150
return new ElasticBeanstalkVpcTypeHintResponse
151151
{

src/AWS.Deploy.CLI/Commands/TypeHints/ExistingApplicationLoadBalancerCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public ExistingApplicationLoadBalancerCommand(IAWSResourceQueryer awsResourceQue
3232

3333
private async Task<List<LoadBalancer>> GetData()
3434
{
35-
return await _awsResourceQueryer.ListOfLoadBalancers(LoadBalancerTypeEnum.Application);
35+
return await _awsResourceQueryer.ListOfLoadBalancers(LoadBalancerTypeEnum.Application) ?? new List<LoadBalancer>();
3636
}
3737

3838
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)

src/AWS.Deploy.CLI/Commands/TypeHints/ExistingSecurityGroupsCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private async Task<List<SecurityGroup>> GetData(Recommendation recommendation, O
3333
var vpcIdOptionSetting = _optionSettingHandler.GetOptionSetting(recommendation, optionSetting.ParentSettingId);
3434
vpcId = _optionSettingHandler.GetOptionSettingValue<string>(recommendation, vpcIdOptionSetting);
3535
}
36-
return await _awsResourceQueryer.DescribeSecurityGroups(vpcId);
36+
return await _awsResourceQueryer.DescribeSecurityGroups(vpcId) ?? new List<SecurityGroup>();
3737
}
3838

3939
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)

src/AWS.Deploy.CLI/Commands/TypeHints/ExistingSubnetsCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private async Task<List<Subnet>> GetData(Recommendation recommendation, OptionSe
3333
var vpcIdOptionSetting = _optionSettingHandler.GetOptionSetting(recommendation, optionSetting.ParentSettingId);
3434
vpcId = _optionSettingHandler.GetOptionSettingValue<string>(recommendation, vpcIdOptionSetting);
3535
}
36-
return await _awsResourceQueryer.DescribeSubnets(vpcId);
36+
return await _awsResourceQueryer.DescribeSubnets(vpcId) ?? new List<Subnet>();
3737
}
3838

3939
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)

src/AWS.Deploy.CLI/Commands/TypeHints/ExistingVpcCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public ExistingVpcCommand(IAWSResourceQueryer awsResourceQueryer, IConsoleUtilit
3232

3333
private async Task<List<Vpc>> GetData()
3434
{
35-
return await _awsResourceQueryer.GetListOfVpcs();
35+
return await _awsResourceQueryer.GetListOfVpcs() ?? new List<Vpc>();
3636
}
3737

3838
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)
@@ -57,7 +57,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
5757
defaultSelector: vpc =>
5858
!string.IsNullOrEmpty(currentVpcValue)
5959
? vpc.VpcId == currentVpcValue
60-
: vpc.IsDefault)
60+
: vpc.IsDefault ?? false)
6161
{
6262
CanBeEmpty = true,
6363
EmptyOption = true,

src/AWS.Deploy.CLI/Commands/TypeHints/InstanceTypeCommand.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,11 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
9797

9898
var cpuCores = instanceTypes
9999
.Where(x => x.FreeTierEligible.Equals(freeTierEligible))
100+
.Where(x => x.ProcessorInfo.SupportedArchitectures is not null)
100101
.Where(x => x.ProcessorInfo.SupportedArchitectures.Contains(architecture))
101-
.Select(x => x.VCpuInfo.DefaultCores).Distinct().OrderBy(x => x).ToList();
102+
.Select(x => x.VCpuInfo.DefaultCores)
103+
.Where(x => x.HasValue)
104+
.Select(x => x!.Value).Distinct().OrderBy(x => x).ToList();
102105

103106
if (cpuCores.Count == 0)
104107
return _consoleUtilities.AskUserForValue("Select EC2 Instance Type:", instanceTypeDefaultValue ?? string.Empty, true);
@@ -107,9 +110,12 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
107110

108111
var memory = instanceTypes
109112
.Where(x => x.FreeTierEligible.Equals(freeTierEligible))
113+
.Where(x => x.ProcessorInfo.SupportedArchitectures is not null)
110114
.Where(x => x.ProcessorInfo.SupportedArchitectures.Contains(architecture))
111115
.Where(x => x.VCpuInfo.DefaultCores.Equals(cpuCoreCount))
112-
.Select(x => x.MemoryInfo.SizeInMiB).Distinct().OrderBy(x => x).ToList();
116+
.Select(x => x.MemoryInfo.SizeInMiB)
117+
.Where(x => x.HasValue)
118+
.Select(x => x!.Value).Distinct().OrderBy(x => x).ToList();
113119

114120
if (memory.Count == 0)
115121
return _consoleUtilities.AskUserForValue("Select EC2 Instance Type:", instanceTypeDefaultValue ?? string.Empty, true);
@@ -118,6 +124,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
118124

119125
var availableInstanceTypes = instanceTypes
120126
.Where(x => x.FreeTierEligible.Equals(freeTierEligible))
127+
.Where(x => x.ProcessorInfo.SupportedArchitectures is not null)
121128
.Where(x => x.ProcessorInfo.SupportedArchitectures.Contains(architecture))
122129
.Where(x => x.VCpuInfo.DefaultCores.Equals(cpuCoreCount))
123130
.Where(x => x.MemoryInfo.SizeInMiB.Equals(long.Parse(memoryCount)))

src/AWS.Deploy.CLI/Commands/TypeHints/SNSTopicArnsCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public SNSTopicArnsCommand(IAWSResourceQueryer awsResourceQueryer, IConsoleUtili
2828

2929
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)
3030
{
31-
var topicArns = await _awsResourceQueryer.ListOfSNSTopicArns();
31+
var topicArns = await _awsResourceQueryer.ListOfSNSTopicArns() ?? new List<string>();
3232

3333
var resourceTable = new TypeHintResourceTable
3434
{

src/AWS.Deploy.CLI/Commands/TypeHints/SQSQueueUrlCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public SQSQueueUrlCommand(IAWSResourceQueryer awsResourceQueryer, IConsoleUtilit
2828

2929
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)
3030
{
31-
var queueUrls = await _awsResourceQueryer.ListOfSQSQueuesUrls();
31+
var queueUrls = await _awsResourceQueryer.ListOfSQSQueuesUrls() ?? new List<string>();
3232

3333
var resourceTable = new TypeHintResourceTable
3434
{

src/AWS.Deploy.CLI/Commands/TypeHints/VPCConnectorCommand.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
7676
_toolInteractiveService.WriteLine();
7777
if (createNewVPCConnector)
7878
{
79-
var availableVpcs = await _awsResourceQueryer.GetListOfVpcs();
79+
var availableVpcs = await _awsResourceQueryer.GetListOfVpcs() ?? new List<Vpc>();
8080
if (!availableVpcs.Any())
8181
{
8282
_toolInteractiveService.WriteLine("Your account does not contain a VPC, so we will create one for you and assign its Subnets and Security Groups to the VPC Connector.");
@@ -108,7 +108,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
108108
var userInputConfigurationVPCs = new UserInputConfiguration<Vpc>(
109109
idSelector: vpc => vpc.VpcId,
110110
displaySelector: vpc => vpc.VpcId,
111-
defaultSelector: vpc => !string.IsNullOrEmpty(currentVpcValue) ? vpc.VpcId.Equals(currentVpcValue) : vpc.IsDefault)
111+
defaultSelector: vpc => !string.IsNullOrEmpty(currentVpcValue) ? vpc.VpcId.Equals(currentVpcValue) : vpc.IsDefault ?? false)
112112
{
113113
CanBeEmpty = false,
114114
CreateNew = false
@@ -121,7 +121,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
121121
UseVPCConnector = false
122122
};
123123

124-
var availableSubnets = (await _awsResourceQueryer.DescribeSubnets(vpc.SelectedOption.VpcId)).OrderBy(x => x.SubnetId).ToList();
124+
var availableSubnets = (await _awsResourceQueryer.DescribeSubnets(vpc.SelectedOption.VpcId) ?? new List<Subnet>()).OrderBy(x => x.SubnetId).ToList();
125125
var userInputConfigurationSubnets = new UserInputConfiguration<Subnet>(
126126
idSelector: subnet => subnet.SubnetId,
127127
displaySelector: subnet => $"{subnet.SubnetId.PadRight(24)} | {subnet.VpcId.PadRight(21)} | {subnet.AvailabilityZone}",
@@ -135,7 +135,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
135135
_toolInteractiveService.WriteLine(subnetsOptionSetting.Description);
136136
var subnets = _consoleUtilities.AskUserForList<Subnet>(userInputConfigurationSubnets, availableSubnets, subnetsOptionSetting, recommendation);
137137

138-
var availableSecurityGroups = (await _awsResourceQueryer.DescribeSecurityGroups(vpc.SelectedOption.VpcId)).OrderBy(x => x.VpcId).ToList();
138+
var availableSecurityGroups = (await _awsResourceQueryer.DescribeSecurityGroups(vpc.SelectedOption.VpcId) ?? new List<SecurityGroup>()).OrderBy(x => x.VpcId).ToList();
139139
var groupNamePadding = 0;
140140
availableSecurityGroups.ForEach(x =>
141141
{

src/AWS.Deploy.CLI/Commands/TypeHints/VpcCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public VpcCommand(IAWSResourceQueryer awsResourceQueryer, IConsoleUtilities cons
3636

3737
private async Task<List<Vpc>> GetData()
3838
{
39-
return await _awsResourceQueryer.GetListOfVpcs();
39+
return await _awsResourceQueryer.GetListOfVpcs() ?? new List<Vpc>();
4040
}
4141

4242
public async Task<TypeHintResourceTable> GetResources(Recommendation recommendation, OptionSettingItem optionSetting)
@@ -68,7 +68,7 @@ public async Task<object> Execute(Recommendation recommendation, OptionSettingIt
6868
defaultSelector: vpc =>
6969
!string.IsNullOrEmpty(currentVpcTypeHintResponse?.VpcId)
7070
? vpc.VpcId == currentVpcTypeHintResponse.VpcId
71-
: vpc.IsDefault);
71+
: vpc.IsDefault ?? false);
7272

7373
var userResponse = _consoleUtilities.AskUserToChooseOrCreateNew(
7474
vpcs,

src/AWS.Deploy.CLI/Extensions/TypeHintUtilities.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static string GetDisplayableVpc(this Vpc vpc)
1717
: $" ({name}) ";
1818

1919
var isDefaultPart =
20-
vpc.IsDefault
20+
vpc.IsDefault ?? false
2121
? " *** Account Default VPC ***"
2222
: "";
2323

src/AWS.Deploy.Common/AWS.Deploy.Common.csproj

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,25 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="AWSSDK.CloudControlApi" Version="3.7.300.77" />
14-
<PackageReference Include="AWSSDK.CloudWatchEvents" Version="3.7.300.77" />
15-
<PackageReference Include="AWSSDK.EC2" Version="3.7.323.1" />
16-
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.7.300" />
17-
<PackageReference Include="AWSSDK.SecurityToken" Version="3.7.300.78" />
18-
<PackageReference Include="AWSSDK.AppRunner" Version="3.7.301.49" />
19-
<PackageReference Include="AWSSDK.CloudFormation" Version="3.7.307.3" />
20-
<PackageReference Include="AWSSDK.CloudFront" Version="3.7.302.3" />
21-
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.302.18" />
22-
<PackageReference Include="AWSSDK.ECR" Version="3.7.301.72" />
23-
<PackageReference Include="AWSSDK.ECS" Version="3.7.305.39" />
24-
<PackageReference Include="AWSSDK.IdentityManagement" Version="3.7.301.3" />
25-
<PackageReference Include="AWSSDK.S3" Version="3.7.307.18" />
26-
<PackageReference Include="AWSSDK.SimpleSystemsManagement" Version="3.7.303.26" />
27-
<PackageReference Include="AWSSDK.SimpleNotificationService" Version="3.7.301.25" />
28-
<PackageReference Include="AWSSDK.SQS" Version="3.7.300.77" />
13+
<PackageReference Include="AWSSDK.CloudControlApi" Version="4.0.0.1" />
14+
<PackageReference Include="AWSSDK.CloudWatchEvents" Version="4.0.0.1" />
15+
<PackageReference Include="AWSSDK.EC2" Version="4.0.2" />
16+
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="4.0.0" />
17+
<PackageReference Include="AWSSDK.SecurityToken" Version="4.0.0.1" />
18+
<PackageReference Include="AWSSDK.AppRunner" Version="4.0.0.1" />
19+
<PackageReference Include="AWSSDK.CloudFormation" Version="4.0.0.1" />
20+
<PackageReference Include="AWSSDK.CloudFront" Version="4.0.0.1" />
21+
<PackageReference Include="AWSSDK.DynamoDBv2" Version="4.0.0.2" />
22+
<PackageReference Include="AWSSDK.ECR" Version="4.0.1" />
23+
<PackageReference Include="AWSSDK.ECS" Version="4.0.0.2" />
24+
<PackageReference Include="AWSSDK.IdentityManagement" Version="4.0.0.1" />
25+
<PackageReference Include="AWSSDK.S3" Version="4.0.0.1" />
26+
<PackageReference Include="AWSSDK.SimpleSystemsManagement" Version="4.0.1.1" />
27+
<PackageReference Include="AWSSDK.SimpleNotificationService" Version="4.0.0.1" />
28+
<PackageReference Include="AWSSDK.SQS" Version="4.0.0.1" />
2929
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
30-
<PackageReference Include="AWSSDK.ElasticBeanstalk" Version="3.7.300.77" />
31-
<PackageReference Include="AWSSDK.ElasticLoadBalancingV2" Version="3.7.302.33" />
30+
<PackageReference Include="AWSSDK.ElasticBeanstalk" Version="4.0.0.1" />
31+
<PackageReference Include="AWSSDK.ElasticLoadBalancingV2" Version="4.0.0.1" />
3232
</ItemGroup>
3333

3434
<ItemGroup>

src/AWS.Deploy.Common/DefaultAWSClientFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void ConfigureAWSOptions(Action<AWSOptions> awsOptionsAction)
1717
_awsOptionsAction = awsOptionsAction;
1818
}
1919

20-
public T GetAWSClient<T>(string? awsRegion = null) where T : IAmazonService
20+
public T GetAWSClient<T>(string? awsRegion = null) where T : class, IAmazonService
2121
{
2222
var awsOptions = new AWSOptions();
2323

src/AWS.Deploy.Common/IAWSClientFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace AWS.Deploy.Common
99
{
1010
public interface IAWSClientFactory
1111
{
12-
T GetAWSClient<T>(string? awsRegion = null) where T : IAmazonService;
12+
T GetAWSClient<T>(string? awsRegion = null) where T : class, IAmazonService;
1313
void ConfigureAWSOptions(Action<AWSOptions> awsOptionsAction);
1414
}
1515
}

0 commit comments

Comments
 (0)