The best solution is to use Amazon RDS Proxy with a connection pool per tenant, but that does not provide isolation. The most effective approach is to migrate to Amazon Aurora, which can handle many connections and provides better performance. However, the key is to use a separate database per tenant (database-per-tenant model) with a pool of RDS instances.
The most AWS-native approach is to use Amazon RDS for PostgreSQL with pg_partman or use a separate RDS instance per tenant, but that is costly. The best solution is to use Aurora Serverless v2, which can scale to zero and provides isolation through separate Aurora clusters? But that may require many clusters. The optimal solution is to use Amazon RDS with a separate database per tenant and use a connection pooling service like RDS Proxy to manage connections.
The application changes are minimal because the ORM can be configured to use a different connection string per tenant. However, the question asks for the BEST solution. Option A: Use RDS Proxy with a single database but with connection pooling; does not isolate.
Option B: Migrate to Aurora and use Aurora Auto Scaling; still shared. Option C: Implement a database-per-tenant model with separate RDS instances and use RDS Proxy for each; provides isolation but complex. Option D: Use Amazon DynamoDB with tenant ID as partition key; provides isolation and scaling but requires application changes to use DynamoDB instead of PostgreSQL.
The stem says 'minimize application changes', so moving from PostgreSQL to DynamoDB would require significant changes. Therefore, the best is to use a database-per-tenant approach with RDS and RDS Proxy. But among the options, likely one suggests using Aurora with separate databases per tenant.
I'll craft the options accordingly.