AWS SaaS Policy Compliance - Service Removal Plan¶
Date: 2025-12-30 (Updated) Original Date: 2025-11-21 Objective: Remove all non-AWS third-party services to achieve 100% AWS SaaS Policy compliance Deadline: January 21, 2026 Current Progress: 85% Complete
Executive Summary¶
Per AWS SaaS Policy requirements, all application and control plane components, including third-party services, LLMs, and APIs handling application data, must run exclusively on AWS infrastructure.
Non-Compliant Services Identified¶
1. Image Generation Services¶
Midjourney¶
- Engine: PI_API
- Location:
app/Extensions/Midjourney/ - Package:
app/Domains/Entity/Drivers/PiAPI/ - Status: ❌ NON-COMPLIANT (External API)
- AWS Alternative: AWS Bedrock Stable Diffusion (already integrated)
Creatify¶
- Engine: CREATIFY
- Location:
app/Packages/Creatify/ - Entity: AD_MARKETING_VIDEO
- Status: ❌ NON-COMPLIANT (External API)
- AWS Alternative: AWS Bedrock image/video models
FalAI¶
- Engine: FAL_AI
- Location:
app/Packages/FalAI/ - Models: Kling, Kling 2.1, Luma Dream Machine, Haiper, Minimax, Veo, Flux, Ideogram, etc.
- Status: ❌ NON-COMPLIANT (External API)
- AWS Alternative: AWS Bedrock Stable Diffusion
Video AI Tools¶
- Topview (TOPVIEW engine)
- Vizard (VIZARD engine)
- Klap (KLAP engine)
- Status: ❌ NON-COMPLIANT (External APIs)
- AWS Alternative: Self-hosted solutions on EC2 or future AWS Bedrock video models
2. Voice/TTS Services¶
ElevenLabs¶
- Engine: ELEVENLABS
- Location:
app/Packages/Elevenlabs/ - Entities:
- ELEVENLABS (TTS)
- ELEVENLABS_VOICE_CHATBOT
- ELEVENLABS_AI_MUSIC
- ISOLATOR
- Status: ❌ NON-COMPLIANT (External API)
- AWS Alternative: Amazon Polly (not yet integrated)
Speechify¶
- Engine: Speechify
- Location:
app/Domains/Entity/Drivers/SpeechifyDriver.php - Status: ❌ NON-COMPLIANT (External API)
- AWS Alternative: Amazon Polly
Google Cloud TTS¶
- Engine: GOOGLE
- Location:
app/Domains/Entity/Drivers/GoogleDriver.php - Status: ❌ NON-COMPLIANT (External API - Google Cloud)
- AWS Alternative: Amazon Polly
Removal Actions¶
Phase 1: Image/Video Generation (MOSTLY COMPLETE)¶
Status: ⚠️ 90% Complete - Engines disabled, legacy code cleanup pending
All non-AWS engines have been removed from EngineEnum.php (making them inaccessible to users), but some legacy driver code remains and should be cleaned up:
- Midjourney Extension - ✅ FULLY REMOVED
- Extension directory deleted
-
PI_API engine removed from
EngineEnum.php -
Creatify Package - ⚠️ ENGINE DISABLED
- CREATIFY engine removed from
EngineEnum.php -
Legacy code in
app/Packages/Creatify/(cleanup pending) -
FalAI Package - ⚠️ ENGINE DISABLED
- FAL_AI engine removed from
EngineEnum.php -
Legacy drivers in
app/Domains/Entity/Drivers/FalAI/(cleanup pending) -
Video AI Packages - ⚠️ ENGINES DISABLED
- TOPVIEW, VIZARD, KLAP engines removed from
EngineEnum.php - Legacy code in packages (cleanup pending)
Note: While legacy code exists, these services are not accessible to users because the engines have been removed from EngineEnum.php. Code cleanup is a low-priority housekeeping task.
Phase 2: Presentation Services (COMPLETED)¶
- Remove Gamma AI
- Delete
app/Domains/Entity/Drivers/GammaAIDriver.php - Delete
app/Domains/Engine/Drivers/GammaAIEngineDriver.php - Remove GAMMA_AI from
EngineEnum.php - Remove GAMMA_AI from
EntityEnum.php -
Remove GammaService from AiPresentation extension
-
Implement AWS Bedrock Presentation Generator
- Create
BedrockPresentationService.php(main orchestrator) - Create
BedrockContentGenerator.php(Claude Sonnet 4.5) - Create
BedrockImageGenerator.php(Stable Diffusion SDXL) - Create
PresentationAssembler.php(PPTX assembly) - Update AiPresentation extension to use new service
Status: ✅ COMPLETED
Documentation: docs/AWS_BEDROCK_PRESENTATION_GENERATOR.md
Phase 3: Voice/TTS Services (COMPLETED)¶
Status: ✅ COMPLETED (2025-12-30)
All non-AWS TTS services have been removed and replaced with Amazon Polly:
- ElevenLabs - ✅ REMOVED
- All ElevenLabs packages and drivers deleted
- Engine removed from
EngineEnum.php -
Entities removed from
EntityEnum.php -
Speechify - ✅ REMOVED
- All Speechify drivers deleted
-
Engine removed from
EngineEnum.php -
Google TTS - ✅ REMOVED
- All Google TTS drivers deleted
-
Engine removed from
EngineEnum.php -
Amazon Polly Integration - ✅ IMPLEMENTED
- Service:
app/Packages/Bedrock/Services/PollyVoiceSynthesisService.php - Neural voice support for 10+ languages
- SSML support for advanced speech control
- Video narration generation
- Integrated with HybridVideoPipelineService
Phase 4: Storage Migration (COMPLETED)¶
- Remove Cloudflare R2
- Delete
app/Extensions/Cloudflare/directory - Remove Cloudflare R2 SQL files
- Update to use AWS S3 exclusively
Status: ✅ COMPLETED
Phase 5: UI and Configuration Cleanup¶
- Update Settings Views
- Remove references from
resources/views/default/panel/admin/settings/ -
Remove from
resources/views/default/panel/admin/config/tools.blade.php -
Update Menu Service
-
Remove entries from
app/Services/Common/MenuService.php -
Update Routes
-
Clean up
routes/panel.php -
Update Language Files
-
Remove translations from
resources/lang/*.json -
Update JavaScript
- Remove from
public/themes/default/assets/js/panel/settings.js - Remove ElevenLabs realtime from
resources/views/default/js/components/realtime-frontend/
AWS-Compliant Services Retained¶
Presentation Generation¶
✅ AWS Bedrock Presentation Generator (NEW - Replaces Gamma AI)
- Content: Claude Sonnet 4.5 for presentation structure
- Images: Stable Diffusion SDXL for slide images
- Assembly: PhpPresentation library for PPTX generation
- Storage: AWS S3 for file storage
- Documentation: docs/AWS_BEDROCK_PRESENTATION_GENERATOR.md
Image Generation¶
✅ AWS Bedrock Stable Diffusion
- Already integrated: app/Domains/Entity/Drivers/StableDiffusion/AwsBedrockDriver.php
- Supported models in BedrockEngine.php: STABLE_DIFFUSION_1
Voice/TTS¶
✅ Amazon Polly - FULLY INTEGRATED
- Service: app/Packages/Bedrock/Services/PollyVoiceSynthesisService.php
- Neural voice support for 10+ languages (en-US, en-GB, es-ES, fr-FR, de-DE, ja-JP, ko-KR, zh-CN, pt-BR, it-IT)
- SSML support for advanced speech synthesis control
- Integrated with video narration pipeline via HybridVideoPipelineService.php
- Cost estimation and credit tracking included
LLM/Text Generation¶
✅ AWS Bedrock Claude Models (already integrated)
- Full suite of Claude models available
- See BedrockEngine.php for complete list
Testing Requirements¶
- Verify AWS Bedrock Stable Diffusion works for all image generation use cases
- Test that removal doesn't break existing functionality
- Verify database migrations handle removed entity types gracefully
- Ensure UI properly hides/removes non-AWS options
Rollback Plan¶
- Git branch:
claude/aws-saas-compliance-01BwnRbT6bS7WXnz3gb2pUvi - Can revert commits if needed before pushing
- Keep removed code in separate branch for reference
Timeline¶
- Phase 1 (Image/Video): ✅ COMPLETED (2025-11-21) - Engines disabled, legacy code cleanup pending
- Phase 2 (Presentation): ✅ COMPLETED (2025-11-21)
- Phase 3 (Voice/TTS): ✅ COMPLETED (2025-12-30) - Amazon Polly integrated
- Phase 4 (Storage R2→S3): ✅ COMPLETED (2025-11-21)
- Phase 5 (UI Cleanup): ⏳ LOW PRIORITY - Most non-AWS options already hidden
- Testing: ✅ ONGOING
Progress: 85% complete ⬅️ CURRENT
Compliance Impact¶
Before (Nov 2024): ~40-50% compliant After Phase 1 (Image/Video): ~60% compliant After Phase 2 (Presentation): ~65% compliant After Phase 3 (Voice/TTS with Polly): ~80% compliant After Phase 4 (Storage): ~85% compliant ⬅️ CURRENT After Legacy Code Cleanup: ~90% compliant With Bedrock-Only Mode Enabled: ~95% compliant (non-AWS LLMs disabled)
Remaining Compliance Items (Not in this plan)¶
Active Non-AWS LLM Providers (User-Selectable)¶
These engines remain available when bedrock_only_mode is disabled:
- OpenAI (GPT-4o, DALL-E, TTS, Whisper, Sora)
- Anthropic Direct API (should use Bedrock)
- Gemini (Google)
- DeepSeek
- X.AI (Grok)
- Perplexity
- OpenRouter
- Together
- Azure OpenAI
- AI/ML Minimax
FTR Compliance Note: Enable bedrock_only_mode in settings to restrict to AWS-native engines only. This is controlled via SettingTwo->bedrock_only_mode and the EngineEnum::isBedrockOnlyMode() method.
Infrastructure Items (AWS Migration Candidates)¶
- ✅ Cloudflare R2 storage → Migrated to AWS S3 (COMPLETED)
- ⚠️ Pusher → AWS API Gateway WebSocket (PLANNED)
- ⚠️ Sentry → CloudWatch/X-Ray (EVALUATE)
Exempt Services (Per AWS FTR Policy)¶
- Payment processors (Stripe, PayPal, Paddle, Razorpay) - billing exempt
- Social media APIs (LinkedIn, Twitter, Instagram) - user-initiated
- OAuth providers (Google, Apple, GitHub) - authentication exempt
Subscription Plan Model Mapping (FTR Compliance)¶
Overview¶
When bedrock_only_mode is enabled, the subscription plan creation system restricts the "Default AI Model" dropdown to AWS-native engines only. This ensures new plans are FTR compliant.
How It Works¶
File: app/Livewire/Admin/Finance/Plan/SubscriptionPlanCreate.php
// getModels() now respects bedrock_only_mode via:
$availableEngines = EngineEnum::getAvailableEngines();
// When bedrock_only_mode=true, returns only: AWS_BEDROCK, STABLE_DIFFUSION, UNSPLASH, PEXELS, PIXABAY, SERPER
Engine Categories¶
AWS-Native Engines (Available in bedrock_only_mode)¶
| Engine | Database Value | Models |
|---|---|---|
| AWS Bedrock | aws_bedrock |
Claude 4.x, Nova, Qwen, Gemma, MiniMax, Kimi, Mistral via Bedrock |
| Stable Diffusion | stable_diffusion |
Uses Bedrock Stable Diffusion |
| Stock Images | unsplash, pexels, pixabay |
Exempt (user-initiated, not AI/ML) |
| Search | serper |
Exempt (not AI/ML) |
Legacy Engines (Hidden when bedrock_only_mode enabled)¶
| Engine | Database Value | FTR Status |
|---|---|---|
| OpenAI | openai |
Non-compliant (direct API) |
| Anthropic | anthropic |
Non-compliant (use Bedrock Claude) |
| Gemini | gemini |
Non-compliant (Google) |
| DeepSeek | deep_seek |
Non-compliant |
| X.AI | x_ai |
Non-compliant |
| Azure OpenAI | azure_openai |
Non-compliant (Microsoft) |
Backwards Compatibility¶
Existing plans with legacy (non-Bedrock) models are preserved:
- Legacy model appears in dropdown with [Legacy - Migration Required] badge
- Warning alert displayed: "This plan uses a non-Bedrock model..."
- Admin can switch to Bedrock model or keep legacy for existing subscribers
Migration Path¶
- Enable
bedrock_only_modein Admin → Settings → Bedrock - New plans will only see Bedrock models
- Edit existing plans to see migration warning
- Switch legacy models to Bedrock equivalents:
gpt-4o→bedrock-claude-sonnet-4orbedrock-nova-proclaude-3-5-sonnet→bedrock-claude-3-5-sonnet-v2gemini-1.5-flash→bedrock-nova-lite
Database Tables¶
entities- All AI models withenginecolumnplans- Subscription plans withdefault_ai_modelcolumnsettings_two- Containsbedrock_only_modeboolean
References¶
- AWS SaaS Policy Email: January 21, 2026 deadline
- AWS Contact: pctsaaspolicyreview@amazon.com
- Documentation:
docs/AWS_BEDROCK_CONFIGURATION.md