private static async Task SetupAwsVpcNetworkConfigurationSecurityGroups()

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;
        }