Amit Arora 8725335b19 docs: comprehensive documentation update and cleanup
- Remove unused root .env and .env.example files (not referenced by any code)
- Update configuration.md with comprehensive config file documentation
- Add configuration overview table with setup instructions and auto-generation info
- Consolidate specialized-agents.md content into system-components.md
- Update system-components.md with complete AgentCore architecture
- Add detailed sections for AgentCore Runtime, Gateway, and Memory primitives
- Remove cli-reference.md (excessive documentation for limited use)
- Update README.md to reference configuration guide in setup section
- Clean up documentation links and organization

The documentation now provides a clear, consolidated view of the system
architecture and configuration with proper cross-references and setup guidance.
2025-08-05 14:42:33 +00:00

369 lines
11 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Cleanup Script for SRE Agent
# Deletes AgentCore Gateway, Gateway Targets, and Agent Runtime
set -e
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
# Default values - can be overridden with environment variables or arguments
DEFAULT_GATEWAY_NAME="sre-agent-gateway"
DEFAULT_RUNTIME_NAME="sre-agent"
DEFAULT_REGION="us-east-1"
# Parse command line arguments
GATEWAY_NAME="${GATEWAY_NAME:-$DEFAULT_GATEWAY_NAME}"
RUNTIME_NAME="${RUNTIME_NAME:-$DEFAULT_RUNTIME_NAME}"
REGION="${REGION:-$DEFAULT_REGION}"
FORCE_DELETE=false
# Function to read gateway name from config.yaml
read_gateway_name_from_config() {
local config_file="$PROJECT_ROOT/gateway/config.yaml"
if [ -f "$config_file" ]; then
# Extract gateway_name from YAML, handling quoted and unquoted values
local gateway_name=$(grep "^gateway_name:" "$config_file" | cut -d':' -f2- | sed 's/^[ \t]*//' | sed 's/^"\([^"]*\)".*/\1/' | sed 's/[ \t]*#.*//')
if [ -n "$gateway_name" ]; then
echo "$gateway_name"
return 0
fi
fi
# Return empty string if not found
echo ""
return 1
}
# Function to show usage
show_usage() {
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " --gateway-name NAME Gateway name to delete (default: auto-detect from gateway/config.yaml)"
echo " --runtime-name NAME Runtime name to delete (default: $DEFAULT_RUNTIME_NAME)"
echo " --region REGION AWS region (default: $DEFAULT_REGION)"
echo " --force Skip confirmation prompts"
echo " --help, -h Show this help message"
echo ""
echo "Environment Variables:"
echo " GATEWAY_NAME Override default gateway name"
echo " RUNTIME_NAME Override default runtime name"
echo " REGION Override default AWS region"
echo ""
echo "Description:"
echo " This script performs complete cleanup of SRE Agent AWS resources:"
echo " 1. Stops backend servers"
echo " 2. Deletes all gateway targets"
echo " 3. Deletes the AgentCore Gateway"
echo " 4. Deletes memory resources"
echo " 5. Deletes the AgentCore Runtime"
echo " 6. Removes generated files"
echo ""
echo "Examples:"
echo " $0 # Use defaults"
echo " $0 --gateway-name my-gateway --force # Custom gateway, no prompts"
echo " GATEWAY_NAME=test-gw $0 # Using environment variable"
}
# Function to confirm deletion
confirm_deletion() {
if [ "$FORCE_DELETE" = true ]; then
return 0
fi
echo "⚠️ WARNING: This will permanently delete the following AWS resources:"
echo " - Gateway: $GATEWAY_NAME"
echo " - Runtime: $RUNTIME_NAME"
echo " - Memory resources (if they exist)"
echo " - Region: $REGION"
echo ""
echo " This action cannot be undone!"
echo ""
read -p "Are you sure you want to continue? (type 'yes' to confirm): " confirmation
if [ "$confirmation" != "yes" ]; then
echo "❌ Cleanup cancelled by user"
exit 1
fi
}
# Function to stop backend servers
stop_backend_servers() {
echo "🛑 Stopping backend servers..."
if [ -f "$PROJECT_ROOT/backend/scripts/stop_demo_backend.sh" ]; then
cd "$PROJECT_ROOT"
bash backend/scripts/stop_demo_backend.sh || echo "⚠️ Backend stop script failed or servers not running"
else
echo "⚠️ Backend stop script not found, continuing..."
fi
}
# Function to delete gateway and targets
delete_gateway() {
echo "🗑️ Deleting AgentCore Gateway and targets..."
# Use the gateway deletion functionality from main.py
cd "$PROJECT_ROOT/gateway"
# Check if gateway exists and delete it
python3 -c "
import sys
import boto3
from botocore.exceptions import ClientError
import logging
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
# Import the deletion functions from main.py
sys.path.append('.')
from main import _check_gateway_exists, _delete_gateway
try:
client = boto3.client('bedrock-agentcore-control', region_name='$REGION')
# Check if gateway exists
gateway_id = _check_gateway_exists(client, '$GATEWAY_NAME')
if gateway_id:
print(f'🗑️ Deleting gateway: $GATEWAY_NAME (ID: {gateway_id})')
_delete_gateway(client, gateway_id)
print('✅ Gateway and all targets deleted successfully')
else:
print(' Gateway \"$GATEWAY_NAME\" not found, skipping deletion')
except ClientError as e:
print(f'❌ Failed to delete gateway: {e}')
sys.exit(1)
except Exception as e:
print(f'❌ Unexpected error deleting gateway: {e}')
sys.exit(1)
"
}
# Function to delete agent runtime
delete_agent_runtime() {
echo "🗑️ Deleting AgentCore Runtime..."
# Use the runtime deletion functionality from deploy_agent_runtime.py
cd "$PROJECT_ROOT/deployment"
python3 -c "
import sys
import boto3
from botocore.exceptions import ClientError
import logging
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
# Import the deletion functions from deploy_agent_runtime.py
sys.path.append('.')
from deploy_agent_runtime import _get_agent_runtime_id_by_name, _delete_agent_runtime
try:
client = boto3.client('bedrock-agentcore-control', region_name='$REGION')
# Get runtime ID by name
runtime_id = _get_agent_runtime_id_by_name(client, '$RUNTIME_NAME')
if runtime_id:
print(f'🗑️ Deleting runtime: $RUNTIME_NAME (ID: {runtime_id})')
success = _delete_agent_runtime(client, runtime_id)
if success:
print('✅ Agent runtime deleted successfully')
else:
print('❌ Failed to delete agent runtime')
sys.exit(1)
else:
print(' Runtime \"$RUNTIME_NAME\" not found, skipping deletion')
except ClientError as e:
print(f'❌ Failed to delete runtime: {e}')
sys.exit(1)
except Exception as e:
print(f'❌ Unexpected error deleting runtime: {e}')
sys.exit(1)
"
}
# Function to delete memory resources
delete_memory() {
echo "🗑️ Deleting Memory Resources..."
cd "$PROJECT_ROOT"
# Check if .memory_id file exists
if [ ! -f ".memory_id" ]; then
echo " No .memory_id file found, skipping memory deletion"
return 0
fi
MEMORY_ID=$(cat .memory_id | tr -d '\n\r' | xargs)
if [ -z "$MEMORY_ID" ]; then
echo "⚠️ Memory ID file is empty, skipping memory deletion"
return 0
fi
echo "🗑️ Deleting memory resource: $MEMORY_ID"
# Use the memory deletion functionality from manage_memories.py
python3 -c "
import sys
import logging
from pathlib import Path
# Add project root to path
project_root = Path('.')
sys.path.insert(0, str(project_root))
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
try:
from bedrock_agentcore.memory import MemoryClient
memory_id = '$MEMORY_ID'
print(f'🗑️ Deleting memory resource: {memory_id}')
memory_client = MemoryClient(region_name='$REGION')
result = memory_client.delete_memory_and_wait(
memory_id=memory_id, max_wait=300, poll_interval=10
)
print('✅ Memory resource deleted successfully')
except ImportError as e:
print(f'⚠️ Could not import memory client: {e}')
print(' Memory deletion skipped - ensure dependencies are installed')
except Exception as e:
print(f'❌ Failed to delete memory resource: {e}')
# Don't exit with error as this shouldn't stop the cleanup process
print('⚠️ Continuing with cleanup despite memory deletion failure')
"
}
# Function to clean up generated files
cleanup_local_files() {
echo "🧹 Cleaning up generated files..."
cd "$PROJECT_ROOT"
# Remove gateway files
if [ -f "gateway/.gateway_uri" ]; then
rm -f gateway/.gateway_uri
echo "✅ Removed gateway/.gateway_uri"
fi
if [ -f "gateway/.access_token" ]; then
rm -f gateway/.access_token
echo "✅ Removed gateway/.access_token"
fi
# Remove agent runtime files
if [ -f "deployment/.agent_arn" ]; then
rm -f deployment/.agent_arn
echo "✅ Removed deployment/.agent_arn"
fi
# Remove memory ID file
if [ -f ".memory_id" ]; then
rm -f .memory_id
echo "✅ Removed .memory_id"
fi
}
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
--gateway-name)
GATEWAY_NAME="$2"
shift 2
;;
--runtime-name)
RUNTIME_NAME="$2"
shift 2
;;
--region)
REGION="$2"
shift 2
;;
--force)
FORCE_DELETE=true
shift
;;
--help|-h)
show_usage
exit 0
;;
*)
echo "❌ Unknown argument: $1"
echo "Use --help for usage information"
exit 1
;;
esac
done
# Try to auto-detect gateway name from config if not explicitly set
if [ "$GATEWAY_NAME" = "$DEFAULT_GATEWAY_NAME" ]; then
CONFIG_GATEWAY_NAME=$(read_gateway_name_from_config)
if [ -n "$CONFIG_GATEWAY_NAME" ]; then
GATEWAY_NAME="$CONFIG_GATEWAY_NAME"
fi
fi
# Main execution
echo "🧹 SRE Agent Cleanup Script"
echo "=========================="
echo ""
echo "Configuration:"
echo " Gateway Name: $GATEWAY_NAME"
if [ -n "$CONFIG_GATEWAY_NAME" ] && [ "$GATEWAY_NAME" = "$CONFIG_GATEWAY_NAME" ]; then
echo " (auto-detected from gateway/config.yaml)"
fi
echo " Runtime Name: $RUNTIME_NAME"
echo " Region: $REGION"
echo ""
# Confirm deletion unless --force is used
confirm_deletion
echo "🚀 Starting cleanup process..."
echo ""
# Step 1: Stop backend servers
stop_backend_servers
echo ""
# Step 2: Delete gateway and targets
delete_gateway
echo ""
# Step 3: Delete memory resources
delete_memory
echo ""
# Step 4: Delete agent runtime
delete_agent_runtime
echo ""
# Step 5: Clean up generated files
cleanup_local_files
echo ""
echo "✅ Cleanup completed successfully!"
echo ""
echo "📋 Summary of actions performed:"
echo " ✅ Stopped backend servers"
echo " ✅ Deleted AgentCore Gateway and all targets"
echo " ✅ Deleted memory resources"
echo " ✅ Deleted AgentCore Runtime"
echo " ✅ Removed generated files"
echo ""
echo "🎯 All SRE Agent AWS resources have been removed."