diff --git a/neutron/neutron/common/aws_utils.py b/neutron/neutron/common/aws_utils.py
index 05123b4..62cb2f2 100644
--- a/neutron/neutron/common/aws_utils.py
+++ b/neutron/neutron/common/aws_utils.py
@@ -271,10 +271,10 @@ class AwsUtils(object):
 
     @aws_exception
     def delete_vpc(self, vpc_id, dry_run=False):
-        self._get_ec2_client().delete_vpc(
-            DryRun=dry_run,
-            VpcId=vpc_id
-        )
+        sg_id_list = self.get_sec_group_by_vpc_id(vpc_id, dry_run)
+        for sg_id in sg_id_list:
+            self.delete_security_group_by_id(sg_id)
+        self._get_ec2_client().delete_vpc(DryRun=dry_run, VpcId=vpc_id)
 
     @aws_exception
     def create_tags_for_vpc(self, neutron_network_id, tags_list):
@@ -508,6 +508,19 @@ class AwsUtils(object):
                 error_code='Time Out')
         return secgrp
 
+    @aws_exception
+    def get_sec_group_by_vpc_id(self, vpc_id, dry_run=False):
+        filters = [{'Name': 'vpc-id',
+                    'Values': [vpc_id]}]
+        response = self._get_ec2_client().describe_security_groups(
+            DryRun=dry_run, Filters=filters)
+        sg_id_list = []
+        if 'SecurityGroups' in response:
+            for sg in response['SecurityGroups']:
+                if sg['GroupName'] != 'default':
+                    sg_id_list.append(sg['GroupId'])
+        return sg_id_list
+
     @aws_exception
     def get_sec_group_by_id(self, secgrp_id, vpc_id=None, dry_run=False):
         filters = [{'Name': 'tag-value',