-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcleanup.sh
More file actions
executable file
·119 lines (101 loc) · 4.87 KB
/
cleanup.sh
File metadata and controls
executable file
·119 lines (101 loc) · 4.87 KB
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
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
RESOURCE_FILE="$SCRIPT_DIR/resource-ids.env"
if [[ ! -f "$RESOURCE_FILE" ]]; then
echo "ERROR: resource-ids.env not found. Nothing to clean up." >&2
exit 1
fi
# shellcheck source=resource-ids.env
source "$RESOURCE_FILE"
# Use the region from deployment
export AWS_DEFAULT_REGION="${AWS_REGION:-us-west-2}"
echo "=== Amazon Chime SIP → Vapi Cleanup ==="
echo "This will delete all resources created by deploy.sh."
echo "The Voice Connector itself will NOT be deleted (only its origination/termination config)."
echo ""
read -rp "Continue? [y/N] " confirm
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
echo ""
# ── Step 1: Delete SIP Rule ─────────────────────────────────────────────────
if [[ -n "${SIP_RULE_ID:-}" ]]; then
echo "Deleting SIP Rule: $SIP_RULE_ID"
aws chime-sdk-voice delete-sip-rule --sip-rule-id "$SIP_RULE_ID" 2>/dev/null || true
else
echo "No SIP Rule to delete"
fi
# ── Step 2: Delete SIP Media Application ─────────────────────────────────────
if [[ -n "${SMA_ID:-}" ]]; then
echo "Deleting SMA: $SMA_ID"
aws chime-sdk-voice delete-sip-media-application \
--sip-media-application-id "$SMA_ID" 2>/dev/null || true
else
echo "No SMA to delete"
fi
# ── Step 3: Release Phone Number ─────────────────────────────────────────────
if [[ -n "${CHIME_PHONE:-}" ]]; then
echo "Releasing phone number: $CHIME_PHONE"
PHONE_ID=$(aws chime-sdk-voice list-phone-numbers \
--query "PhoneNumbers[?E164PhoneNumber=='${CHIME_PHONE}'].PhoneNumberId | [0]" \
--output text 2>/dev/null || true)
if [[ -n "$PHONE_ID" ]] && [[ "$PHONE_ID" != "None" ]]; then
aws chime-sdk-voice delete-phone-number --phone-number-id "$PHONE_ID" 2>/dev/null || true
else
echo " Phone number not found (may already be released)"
fi
else
echo "No phone number to release"
fi
# ── Step 4: Remove Voice Connector Origination/Termination ───────────────────
if [[ -n "${VOICE_CONNECTOR_ID:-}" ]]; then
echo "Removing Voice Connector origination config: $VOICE_CONNECTOR_ID"
aws chime-sdk-voice delete-voice-connector-origination \
--voice-connector-id "$VOICE_CONNECTOR_ID" 2>/dev/null || true
echo "Removing Voice Connector termination config: $VOICE_CONNECTOR_ID"
aws chime-sdk-voice delete-voice-connector-termination \
--voice-connector-id "$VOICE_CONNECTOR_ID" 2>/dev/null || true
else
echo "No Voice Connector config to remove"
fi
# ── Step 5: Delete Lambda Functions ──────────────────────────────────────────
if [[ -n "${FUNCTION_NAME:-}" ]]; then
echo "Deleting SMA Lambda: $FUNCTION_NAME"
aws lambda delete-function --function-name "$FUNCTION_NAME" 2>/dev/null || true
else
echo "No SMA Lambda to delete"
fi
if [[ -n "${CONNECT_FUNCTION_NAME:-}" ]]; then
echo "Deleting Connect Lambda: $CONNECT_FUNCTION_NAME"
aws lambda delete-function --function-name "$CONNECT_FUNCTION_NAME" 2>/dev/null || true
else
echo "No Connect Lambda to delete"
fi
# ── Step 6: Delete DynamoDB Table ────────────────────────────────────────────
if [[ -n "${DDB_TABLE:-}" ]]; then
echo "Deleting DynamoDB table: $DDB_TABLE"
aws dynamodb delete-table --table-name "$DDB_TABLE" 2>/dev/null || true
else
echo "No DynamoDB table to delete"
fi
# ── Step 7: Delete IAM Role and Policies ─────────────────────────────────────
if [[ -n "${ROLE_NAME:-}" ]]; then
echo "Detaching policies and deleting IAM role: $ROLE_NAME"
aws iam detach-role-policy \
--role-name "$ROLE_NAME" \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole 2>/dev/null || true
# Detach and delete the DynamoDB policy
if [[ -n "${DDB_POLICY_NAME:-}" ]] && [[ -n "${AWS_ACCOUNT_ID:-}" ]]; then
DDB_POLICY_ARN="arn:aws:iam::${AWS_ACCOUNT_ID}:policy/${DDB_POLICY_NAME}"
aws iam detach-role-policy \
--role-name "$ROLE_NAME" \
--policy-arn "$DDB_POLICY_ARN" 2>/dev/null || true
aws iam delete-policy --policy-arn "$DDB_POLICY_ARN" 2>/dev/null || true
fi
aws iam delete-role --role-name "$ROLE_NAME" 2>/dev/null || true
else
echo "No IAM role to delete"
fi
# ── Cleanup resource file ───────────────────────────────────────────────────
rm -f "$RESOURCE_FILE"
echo ""
echo "Cleanup complete. resource-ids.env removed."