返回 CodeWhale
teardown.sh
1 #!/usr/bin/env bash
2 # EXPERIMENTAL — tears down the CodeWhale Lightsail smoke lab and verifies
3 # nothing billable is left behind (instance, key pair, static IPs, disks,
4 # snapshots). Safe to re-run; prints what it finds before deleting.
5 set -euo pipefail
6
7 INSTANCE_NAME="${INSTANCE_NAME:-codewhale-smoke}"
8 KEY_PAIR_NAME="${KEY_PAIR_NAME:-${INSTANCE_NAME}-key}"
9 REGION="${AWS_REGION:-$(aws configure get region || true)}"
10 [[ -n "${REGION}" ]] || { echo "Set AWS_REGION" >&2; exit 1; }
11
12 echo "== Current Lightsail resources in ${REGION} =="
13 aws lightsail get-instances --region "$REGION" \
14 --query 'instances[].[name,state.name,bundleId]' --output table || true
15
16 if aws lightsail get-instance --region "$REGION" --instance-name "$INSTANCE_NAME" >/dev/null 2>&1; then
17 read -r -p "Delete instance '${INSTANCE_NAME}'? Type 'yes': " CONFIRM
18 [[ "$CONFIRM" == "yes" ]] || { echo "Aborted."; exit 1; }
19 aws lightsail delete-instance --region "$REGION" --instance-name "$INSTANCE_NAME" >/dev/null
20 echo "deleted instance ${INSTANCE_NAME}"
21 else
22 echo "instance ${INSTANCE_NAME} not found (already deleted?)"
23 fi
24
25 if aws lightsail get-key-pair --region "$REGION" --key-pair-name "$KEY_PAIR_NAME" >/dev/null 2>&1; then
26 aws lightsail delete-key-pair --region "$REGION" --key-pair-name "$KEY_PAIR_NAME" >/dev/null
27 echo "deleted key pair ${KEY_PAIR_NAME}"
28 fi
29
30 echo "== Leftover billable resources check =="
31 echo "-- static IPs (billed when unattached):"
32 aws lightsail get-static-ips --region "$REGION" --query 'staticIps[].[name,isAttached]' --output table
33 echo "-- extra disks:"
34 aws lightsail get-disks --region "$REGION" --query 'disks[].[name,state]' --output table
35 echo "-- instance snapshots:"
36 aws lightsail get-instance-snapshots --region "$REGION" --query 'instanceSnapshots[].[name,state]' --output table
37 echo "-- remaining instances:"
38 aws lightsail get-instances --region "$REGION" --query 'instances[].[name,state.name]' --output table
39 echo
40 echo "If all tables above are empty, Lightsail billing for this lab is fully stopped."
41
41 lines BASH