#!/bin/bash set -euo pipefail CLUSTER_NAME=$1 REGION="us-east-1" echo "Starting EFS cleanup for cluster: $CLUSTER_NAME" # Find EFS ID by Name tag EFS_ID=$(aws efs describe-file-systems \ --region "$REGION" \ --query "FileSystems[?Tags[?Key=='Name' && Value=='$CLUSTER_NAME-efs']].FileSystemId" \ --output text) if [[ -z "$EFS_ID" ]]; then echo "❌ No EFS file system found with Name=$CLUSTER_NAME-efs" exit 0 fi echo "Found EFS: $EFS_ID" # Delete mount targets MOUNT_TARGET_IDS=$(aws efs describe-mount-targets \ --file-system-id "$EFS_ID" \ --region "$REGION" \ --query "MountTargets[].MountTargetId" \ --output text) for mt in $MOUNT_TARGET_IDS; do echo "Deleting mount target: $mt" aws efs delete-mount-target \ --mount-target-id "$mt" \ --region "$REGION" done # Wait for mount targets to be deleted echo "Waiting for mount targets to be deleted..." while true; do COUNT=$(aws efs describe-mount-targets \ --file-system-id "$EFS_ID" \ --region "$REGION" \ --query "length(MountTargets)" \ --output text) [[ "$COUNT" == "0" ]] && break sleep 10 done echo "All mount targets deleted" # Delete EFS file system echo "Deleting EFS file system: $EFS_ID" aws efs delete-file-system \ --file-system-id "$EFS_ID" \ --region "$REGION" # Find EFS security group SG_ID=$(aws ec2 describe-security-groups \ --region "$REGION" \ --filters \ Name=tag:Name,Values="efs-sg-$CLUSTER_NAME" \ --query "SecurityGroups[].GroupId" \ --output text) if [[ -n "$SG_ID" ]]; then echo "Deleting security group: $SG_ID" aws ec2 delete-security-group \ --group-id "$SG_ID" \ --region "$REGION" else echo "No EFS security group found" fi echo "✅ EFS cleanup completed successfully"