diff --git a/pr_agent/config_loader.py b/pr_agent/config_loader.py index 2b0ad880..a4fbb130 100644 --- a/pr_agent/config_loader.py +++ b/pr_agent/config_loader.py @@ -95,7 +95,6 @@ def apply_secrets_manager_config(): if not secret_provider: return - # Execute only when AWS Secrets Manager specific method is available if (hasattr(secret_provider, 'get_all_secrets') and get_settings().get("CONFIG.SECRET_PROVIDER") == 'aws_secrets_manager'): try: @@ -106,7 +105,6 @@ def apply_secrets_manager_config(): except Exception as e: get_logger().error(f"Failed to apply AWS Secrets Manager config: {e}") except Exception as e: - # Fail silently when secret provider is not configured try: from pr_agent.log import get_logger get_logger().debug(f"Secret provider not configured: {e}") @@ -118,12 +116,10 @@ def apply_secrets_manager_config(): def apply_secrets_to_config(secrets: dict): """ Apply secret dictionary to configuration - Configuration override with same pattern as Google Cloud Storage """ try: from pr_agent.log import get_logger except: - # Do nothing if logging is not available def get_logger(): class DummyLogger: def debug(self, msg): pass @@ -134,7 +130,6 @@ def apply_secrets_to_config(secrets: dict): parts = key.split('.') if len(parts) == 2: section, setting = parts - # Convert case to match Dynaconf pattern section_upper = section.upper() setting_upper = setting.upper() diff --git a/pr_agent/secret_providers/aws_secrets_manager_provider.py b/pr_agent/secret_providers/aws_secrets_manager_provider.py index 82248458..7368f95b 100644 --- a/pr_agent/secret_providers/aws_secrets_manager_provider.py +++ b/pr_agent/secret_providers/aws_secrets_manager_provider.py @@ -10,8 +10,6 @@ from pr_agent.secret_providers.secret_provider import SecretProvider class AWSSecretsManagerProvider(SecretProvider): def __init__(self): try: - # AWS credentials are automatically retrieved from environment variables or IAM roles - # Region configuration is flexible like Google Cloud Storage pattern region_name = get_settings().get("aws_secrets_manager.region_name") or \ get_settings().get("aws.AWS_REGION_NAME") if region_name: @@ -19,7 +17,6 @@ class AWSSecretsManagerProvider(SecretProvider): else: self.client = boto3.client('secretsmanager') - # Require secret_arn similar to Google Cloud Storage pattern self.secret_arn = get_settings().aws_secrets_manager.secret_arn except Exception as e: @@ -29,7 +26,6 @@ class AWSSecretsManagerProvider(SecretProvider): def get_secret(self, secret_name: str) -> str: """ Retrieve individual secret by name (for webhook tokens) - Same error handling pattern as Google Cloud Storage """ try: response = self.client.get_secret_value(SecretId=secret_name) @@ -41,7 +37,6 @@ class AWSSecretsManagerProvider(SecretProvider): def get_all_secrets(self) -> dict: """ Retrieve all secrets for configuration override - AWS Secrets Manager specific method (not available in Google Cloud Storage) """ try: response = self.client.get_secret_value(SecretId=self.secret_arn) @@ -51,11 +46,7 @@ class AWSSecretsManagerProvider(SecretProvider): return {} def store_secret(self, secret_name: str, secret_value: str): - """ - Same error handling pattern as Google Cloud Storage - """ try: - # Update existing secret self.client.update_secret( SecretId=secret_name, SecretString=secret_value diff --git a/pr_agent/servers/serverless.py b/pr_agent/servers/serverless.py index 8e2ab08a..938be31b 100644 --- a/pr_agent/servers/serverless.py +++ b/pr_agent/servers/serverless.py @@ -5,13 +5,10 @@ from starlette_context.middleware import RawContextMiddleware from pr_agent.servers.github_app import router -# Execute AWS Secrets Manager configuration override at module load time -# Initialize with same pattern as Google Cloud Storage provider try: from pr_agent.config_loader import apply_secrets_manager_config apply_secrets_manager_config() except Exception as e: - # Handle initialization failure silently (fallback to environment variables) try: from pr_agent.log import get_logger get_logger().debug(f"AWS Secrets Manager initialization failed, falling back to environment variables: {e}") diff --git a/pr_agent/settings/.secrets_template.toml b/pr_agent/settings/.secrets_template.toml index f27b6bee..350abe5c 100644 --- a/pr_agent/settings/.secrets_template.toml +++ b/pr_agent/settings/.secrets_template.toml @@ -123,16 +123,6 @@ AWS_ACCESS_KEY_ID = "" AWS_SECRET_ACCESS_KEY = "" AWS_REGION_NAME = "" -# AWS Secrets Manager (for secure secret management in Lambda environments) [aws_secrets_manager] secret_arn = "" # The ARN of the AWS Secrets Manager secret containing PR-Agent configuration region_name = "" # Optional: specific AWS region (defaults to AWS_REGION_NAME or Lambda region) - -# AWS Secrets Manager secret should contain JSON with configuration overrides: -# Example secret value: -# { -# "openai.key": "sk-...", -# "github.webhook_secret": "your-webhook-secret", -# "github.user_token": "ghp_...", -# "gitlab.personal_access_token": "glpat-..." -# } \ No newline at end of file