in src/Amazon.ECS.Tools/ECSUtilities.cs [825:889]
private static async Task<string[]> SetupAwsVpcNetworkConfigurationSecurityGroups(ECSBaseDeployCommand command,
string defaultVpcId, bool noExistingSecurityGroups)
{
var securityGroups = command.GetStringValuesOrDefault(command.ClusterProperties.SecurityGroupIds, ECSDefinedCommandOptions.ARGUMENT_LAUNCH_SECURITYGROUPS, false);
if ((securityGroups == null || securityGroups.Length==0) && noExistingSecurityGroups)
{
command.Logger?.WriteLine("No security group specified, looking for default VPC and security group");
if (defaultVpcId == null)
{
try
{
var describeVpcResponse = await command.EC2Client.DescribeVpcsAsync();
var defaultVpc = describeVpcResponse.Vpcs.FirstOrDefault(x => x.IsDefault);
if (defaultVpc != null)
{
command.Logger?.WriteLine("Default VPC: " + defaultVpc.VpcId);
defaultVpcId = defaultVpc.VpcId;
}
else
{
command.Logger?.WriteLine("Unable to determine default VPC");
}
}
catch (Exception e)
{
command.Logger?.WriteLine("Warning: Unable to determine default VPC: " + e.Message);
}
}
if (defaultVpcId != null)
{
try
{
var describeSecurityGroupResponse = await command.EC2Client.DescribeSecurityGroupsAsync(new DescribeSecurityGroupsRequest
{
Filters = new List<Filter> { new Filter { Name = "vpc-id", Values = new List<string> { defaultVpcId } } }
});
var defaultSecurityGroup = describeSecurityGroupResponse.SecurityGroups.FirstOrDefault(x => string.Equals(x.GroupName, "default", StringComparison.OrdinalIgnoreCase));
if (defaultSecurityGroup != null)
{
securityGroups = new string[] { defaultSecurityGroup.GroupId };
command.Logger?.WriteLine("Using default security group " + defaultSecurityGroup.GroupId);
}
else
{
command.Logger?.WriteLine("Unable to determine default security group for VPC");
}
}
catch (Exception e)
{
command.Logger?.WriteLine("Warning: Unable to determine default security group for VPC: " + e.Message);
}
}
if (securityGroups == null)
{
securityGroups = command.GetStringValuesOrDefault(command.ClusterProperties.SecurityGroupIds, ECSDefinedCommandOptions.ARGUMENT_LAUNCH_SECURITYGROUPS, true);
}
}
return securityGroups;
}