forked from aws-samples/private5g-cloud-deployment
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcleanup
executable file
·133 lines (93 loc) · 4.69 KB
/
cleanup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash
BUCKET_NAME="cdk-hnb659fds-assets-975050082972-us-east-1"
KEY_NAME="private5g-east-1"
REGION="us-east-1"
# Set your hosted zone IDs
AMF_ZONE_ID=$(aws route53 list-hosted-zones-by-name --region us-east-1 | grep -B 1 amf | grep Id | cut -d '/' -f 3 | sed 's/"//g;s/,//g')
UPF_ZONE_ID=$(aws route53 list-hosted-zones-by-name --region us-east-1 | grep -B 1 upf | grep Id | cut -d '/' -f 3 | sed 's/"//g;s/,//g')
OPEN5GS_REPO_NAME=$(aws ssm get-parameters --names "EcrRepositoryUri" | jq -r '.Parameters[0].Value' | cut -d/ -f2)
OPEN5GS_WEB_REPO_NAME=$(aws ssm get-parameters --names "EcrWebRepositoryUri" | jq -r '.Parameters[0].Value' | cut -d/ -f2)
delete_cloudformation_stack() {
local stack_name=$1
echo "Deleting CloudFormation stack: $stack_name"
aws cloudformation delete-stack --stack-name $stack_name
if ! aws cloudformation wait stack-delete-complete --stack-name $stack_name; then
echo "failed to delete stack: $stack_name"
exit 1
fi
}
# Function to delete resource record sets
delete_resource_record_sets() {
local zone_id=$1
local zone_name=$2
# Fetch current resource record sets
echo "Fetching resource record sets for zone: $zone_name ($zone_id)"
aws route53 list-resource-record-sets --hosted-zone-id $zone_id --region $REGION >${zone_name}_records.json
# Generate deletion JSON file
echo "Generating deletion JSON for zone: $zone_name ($zone_id)"
jq '.ResourceRecordSets | map({Action: "DELETE", ResourceRecordSet: .}) | {Changes: .}' ${zone_name}_records.json >${zone_name}_delete.json
# Execute the deletion
echo "Deleting resource record sets for zone: $zone_name ($zone_id)"
aws route53 change-resource-record-sets --hosted-zone-id $zone_id --region $REGION --change-batch file://${zone_name}_delete.json
echo "Deletion record sets complete."
}
delete_resource_bucket() {
local bucket_name=$1
# List all object versions
versions=$(aws s3api list-object-versions --bucket $bucket_name --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')
# Delete all object versions
echo $versions | jq -c '.Objects[]' | while read -r item; do
key=$(echo $item | jq -r '.Key')
versionId=$(echo $item | jq -r '.VersionId')
aws s3api delete-object --bucket $bucket_name --key $key --version-id $versionId &>/dev/null
done
# List all delete markers
delete_markers=$(aws s3api list-object-versions --bucket $bucket_name --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')
# Delete all delete markers
echo $delete_markers | jq -c '.Objects[]' | while read -r item; do
key=$(echo $item | jq -r '.Key')
versionId=$(echo $item | jq -r '.VersionId')
aws s3api delete-object --bucket $bucket_name --key $key --version-id $versionId &>/dev/null
done
# Step 1: List current lifecycle rules
echo "Listing current lifecycle rules for bucket: $bucket_name"
aws s3api get-bucket-lifecycle-configuration --bucket $bucket_name
# Step 2: Delete all lifecycle rules
echo "Deleting all lifecycle rules for bucket: $bucket_name"
aws s3api delete-bucket-lifecycle --bucket $bucket_name
# Step 1: Remove all objects from the bucket
echo "Deleting all objects from bucket: $bucket_name"
aws s3 rm s3://$bucket_name --recursive
# Step 2: Delete the bucket
echo "Deleting the bucket: $bucket_name"
aws s3 rb s3://$bucket_name --force
echo "Bucket deletion complete."
}
main() {
echo "Deleting resource record sets for UPF and AMF zones"
delete_resource_record_sets $UPF_ZONE_ID "upf"
delete_resource_record_sets $AMF_ZONE_ID "amf"
echo "Deleting all versions from bucket: $BUCKET_NAME"
delete_resource_bucket $BUCKET_NAME
# delete key pais
echo "Deleting key pairs: $KEY_NAME"
aws ec2 delete-key-pair --key-name $KEY_NAME
echo "Key pairs deletion complete."
echo "Deleting ECR repositories: $OPEN5GS_REPO_NAME and $OPEN5GS_WEB_REPO_NAME"
aws ecr delete-repository --repository-name $OPEN5GS_REPO_NAME --region us-east-1 --force
aws ecr delete-repository --repository-name $OPEN5GS_WEB_REPO_NAME --region us-east-1 --force
echo "ECR repositories deletion complete."
echo "Deleting CloudFormation stacks"
delete_cloudformation_stack "vpn-route-cdk-stack"
delete_cloudformation_stack "tgw-vpn-cdk-stack"
delete_cloudformation_stack "customer-vpc-cdk-stack"
delete_cloudformation_stack "pipeline-cdk-stack" &
delete_cloudformation_stack "ecr-cdk-stack" &
delete_cloudformation_stack "no-multus-nodegroup-stack"
delete_cloudformation_stack "eks-infra-stack"
delete_cloudformation_stack "eks-vpc-cdk-stack"
delete_cloudformation_stack "CDKToolkit"
echo "CloudFormation stacks deletion complete."
rm -rf ./cdk-app/cf/eks-infra-cf.yaml ./cdk-app/cdk.out ./cdk-app/cdk.context.json
}
main "$@"