79 lines
2.9 KiB
Python
79 lines
2.9 KiB
Python
|
import boto3
|
||
|
import json
|
||
|
|
||
|
def delete_security_group(ec2_client, security_group_id):
|
||
|
ec2_client.revoke_security_group_ingress(
|
||
|
GroupId=security_group_id,
|
||
|
IpPermissions=[
|
||
|
{
|
||
|
'IpProtocol': 'tcp',
|
||
|
'FromPort': 22,
|
||
|
'ToPort': 22,
|
||
|
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]
|
||
|
},
|
||
|
{
|
||
|
'IpProtocol': 'tcp',
|
||
|
'FromPort': 8080,
|
||
|
'ToPort': 8080,
|
||
|
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]
|
||
|
}
|
||
|
]
|
||
|
)
|
||
|
ec2_client.delete_security_group(GroupId=security_group_id)
|
||
|
print(f"Security group {security_group_id} deleted.")
|
||
|
|
||
|
def delete_key_pair(ec2_client, key_name):
|
||
|
ec2_client.delete_key_pair(KeyName=key_name)
|
||
|
print(f"Key pair {key_name} deleted.")
|
||
|
|
||
|
def delete_instances(ec2_client, instance_ids):
|
||
|
ec2_client.terminate_instances(InstanceIds=instance_ids)
|
||
|
print(f"EC2 instances {instance_ids} terminated.")
|
||
|
|
||
|
def delete_load_balancer(elbv2_client, load_balancer_arn):
|
||
|
elbv2_client.delete_load_balancer(LoadBalancerArn=load_balancer_arn)
|
||
|
print(f"Load Balancer {load_balancer_arn} deleted.")
|
||
|
|
||
|
def delete_target_group(elbv2_client, target_group_arn):
|
||
|
elbv2_client.delete_target_group(TargetGroupArn=target_group_arn)
|
||
|
print(f"Target Group {target_group_arn} deleted.")
|
||
|
|
||
|
def delete_internet_gateway(ec2_client, igw_id, vpc_id):
|
||
|
ec2_client.detach_internet_gateway(InternetGatewayId=igw_id, VpcId=vpc_id)
|
||
|
ec2_client.delete_internet_gateway(InternetGatewayId=igw_id)
|
||
|
print(f"Internet Gateway {igw_id} deleted.")
|
||
|
|
||
|
def delete_route_table(ec2_client, route_table_id):
|
||
|
ec2_client.delete_route_table(RouteTableId=route_table_id)
|
||
|
print(f"Route Table {route_table_id} deleted.")
|
||
|
|
||
|
def delete_vpc(ec2_client, vpc_id):
|
||
|
ec2_client.delete_vpc(VpcId=vpc_id)
|
||
|
print(f"VPC {vpc_id} deleted.")
|
||
|
|
||
|
def delete_subnet(ec2_client, subnet_id):
|
||
|
ec2_client.delete_subnet(SubnetId=subnet_id)
|
||
|
print(f"Subnet {subnet_id} deleted.")
|
||
|
|
||
|
def delete_resources(ec2_client, elbv2_client, resources):
|
||
|
delete_instances(ec2_client, resources["instance_ids"])
|
||
|
delete_load_balancer(elbv2_client, resources["load_balancer_arn"])
|
||
|
delete_target_group(elbv2_client, resources["target_group_arn"])
|
||
|
delete_security_group(ec2_client, resources["security_group_id"])
|
||
|
delete_key_pair(ec2_client, resources["key_name"])
|
||
|
delete_internet_gateway(ec2_client, resources["igw_id"], resources["vpc_id"])
|
||
|
delete_route_table(ec2_client, resources["route_table_id"])
|
||
|
delete_subnet(ec2_client, resources["subnet_id"])
|
||
|
delete_vpc(ec2_client, resources["vpc_id"])
|
||
|
|
||
|
def main():
|
||
|
with open("resources.json", "r") as file:
|
||
|
resources = json.load(file)
|
||
|
|
||
|
ec2_client = boto3.client("ec2")
|
||
|
elbv2_client = boto3.client("elbv2")
|
||
|
|
||
|
delete_resources(ec2_client, elbv2_client, resources)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|