Skip to main content
Glama
aws-samples

CFM Tips - Cost Optimization MCP Server

by aws-samples
s3_optimization.py3.79 kB
""" S3 Cost Optimization Playbook - Consolidated Module This module has been consolidated and cleaned up. The main S3 optimization functionality has been moved to the new architecture: - core/s3_optimization_orchestrator.py (main orchestrator) - core/s3_analysis_engine.py (analysis engine) - core/analyzers/ (individual analyzer implementations) This file now contains only essential imports and references for backward compatibility. All new development should use the S3OptimizationOrchestrator from playbooks.s3.s3_optimization_orchestrator. """ import logging from typing import Dict, Any, Optional logger = logging.getLogger(__name__) # Import the new orchestrator for any legacy compatibility needs try: from .s3_optimization_orchestrator import S3OptimizationOrchestrator # Provide a compatibility alias for any remaining legacy code S3Optimization = S3OptimizationOrchestrator logger.info("S3 optimization functionality available via S3OptimizationOrchestrator") except ImportError as e: logger.error(f"Failed to import S3OptimizationOrchestrator: {e}") # Fallback class for error handling class S3Optimization: """ Fallback S3Optimization class when the new orchestrator is not available. This class provides basic error handling and guidance to use the new architecture. """ def __init__(self, region: Optional[str] = None, timeout_seconds: int = 45): """ Initialize fallback S3 optimization. Args: region: AWS region (optional) timeout_seconds: Maximum execution time per analysis (default: 45) """ self.region = region self.timeout_seconds = timeout_seconds logger.warning("Using fallback S3Optimization class. Please use S3OptimizationOrchestrator instead.") def __getattr__(self, name: str) -> Any: """ Handle any method calls by providing guidance to use the new architecture. Args: name: Method name being called Returns: Error response with guidance """ logger.error(f"Method '{name}' called on fallback S3Optimization class") return lambda *args, **kwargs: { "status": "error", "message": f"S3Optimization.{name}() is deprecated. Use S3OptimizationOrchestrator instead.", "guidance": { "new_class": "S3OptimizationOrchestrator", "import_path": "from playbooks.s3.s3_optimization_orchestrator import S3OptimizationOrchestrator", "migration_note": "The new orchestrator provides all S3 optimization functionality with improved performance and session integration." }, "data": {} } # Utility functions for backward compatibility def get_s3_optimization_instance(region: Optional[str] = None, timeout_seconds: int = 45) -> S3Optimization: """ Get an S3 optimization instance (preferably the new orchestrator). Args: region: AWS region (optional) timeout_seconds: Maximum execution time per analysis (default: 45) Returns: S3Optimization instance (either orchestrator or fallback) """ try: return S3OptimizationOrchestrator(region=region) except Exception as e: logger.warning(f"Could not create S3OptimizationOrchestrator, using fallback: {e}") return S3Optimization(region=region, timeout_seconds=timeout_seconds) # Export the main class for backward compatibility __all__ = ['S3Optimization', 'get_s3_optimization_instance']

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aws-samples/sample-cfm-tips-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server