Usar o Amazon RDS Proxy
Com o proxy do Amazon RDS, você pode permitir que suas aplicações agrupem e compartilhem conexões de banco de dados para melhorar sua capacidade de escala. O proxy do RDS torna as aplicações mais resilientes a falhas de banco de dados conectando-se automaticamente a uma instância de banco de dados em espera e preservando as conexões de aplicações. Ao usar o RDS Proxy, você também pode impor a autenticação do AWS Identity and Access Management (IAM) para bancos de dados e armazenar credenciais com segurança no AWS Secrets Manager.
Com o RDS Proxy, você pode lidar com picos imprevisíveis no tráfego de banco de dados. Caso contrário, esses picos podem causar problemas devido a conexões com excesso de assinaturas ou à criação rápida de conexões. O RDS Proxy estabelece um grupo de conexões de banco de dados e reutiliza conexões nesse grupo. Essa abordagem evita sobrecarregar a memória e a CPU de abrir uma nova conexão de banco de dados todas as vezes. Para proteger um banco de dados contra o excesso de assinaturas, é possível controlar o número de conexões do banco de dados criadas.
O RDS Proxy coloca na fila ou limita as conexões das aplicações que não podem ser atendidas imediatamente do grupo de conexões. Embora as latências possam aumentar, sua aplicação pode continuar a escalar sem falhar abruptamente ou sobrecarregar o banco de dados. Se as solicitações de conexão excederem os limites especificados, o proxy do RDS rejeitará as conexões de aplicações (ou seja, grandes quantidades de carga). Ao mesmo tempo, ele mantém uma performance previsível para a carga que pode ser atendida pelo RDS com a capacidade disponível.
Você pode reduzir a sobrecarga para processar credenciais e estabelecer uma conexão segura para cada nova conexão. O proxy do RDS pode lidar com parte desse trabalho em nome do banco de dados.
O proxy do RDS é totalmente compatível com as versões dos mecanismos com os quais é compatível. É possível habilitar o proxy do RDS para a maioria das aplicações sem alterações de código.
Tópicos
- Disponibilidade de região e versão
- Cotas e limitações do RDS Proxy
- Planejar onde usar o RDS Proxy
- Conceitos e terminologia do RDS Proxy
- Conceitos básicos do RDS Proxy
- Gerenciar um RDS Proxy
- Como trabalhar com endpoints do proxy do Amazon RDS
- Monitorar métricas do proxy do RDS com o Amazon CloudWatch
- Trabalhar com eventos do RDS Proxy
- Solução de problemas do RDS Proxy
- Usar o proxy do RDS com o AWS CloudFormation
Disponibilidade de região e versão
A disponibilidade e a compatibilidade de recursos variam entre versões específicas de cada mecanismo de banco de dados e entre Regiões da AWS. Para ter mais informações sobre a disponibilidade de versões e regiões do Amazon RDS com o RDS Proxy, consulte Regiões e mecanismos de banco de dados compatíveis com o Amazon RDS Proxy.
Cotas e limitações do RDS Proxy
As seguintes limitações aplicam-se ao RDS Proxy:
-
Cada ID de Conta da AWS é limitado a 20 proxies. Se a aplicação exigir mais proxies, solicite um aumento na página Service Quotas no AWS Management Console. Na página Service Quotas, selecione Amazon Relational Database Service (Amazon RDS) e localize Proxies para solicitar um aumento de cota. A AWS pode aumentar automaticamente a cota ou aguardar a análise da solicitação pelo AWS Support.
-
Cada proxy pode ter até 200 segredos associados do Secrets Manager. Assim, cada proxy pode se conectar com até 200 contas de usuário diferentes em qualquer momento.
-
Cada proxy tem um endpoint padrão. Também é possível adicionar até vinte endpoints a cada proxy. É possível criar, visualizar, modificar e excluir esses endpoints.
-
Para instâncias de banco de dados do RDS em configurações de replicação, você pode associar um proxy somente à instância de banco de dados do gravador, não a uma réplica de leitura.
-
O proxy do RDS deve estar na mesma nuvem privada virtual (VPC) que o banco de dados. O proxy não pode ser acessível publicamente, embora o banco de dados sim. Por exemplo, se você estiver fazendo protótipos do banco de dados em um host local, não poderá se conectar ao proxy, a menos que você configure os requisitos de rede necessários para permitir a conexão com o proxy. O motivo disso é que o host local está fora da VPC do proxy.
-
Não é possível usar o proxy do RDS com uma VPC cuja locação está definida como
dedicated
. -
Se você usar o RDS Proxy com uma instância de banco de dados do RDS com a autenticação do IAM habilitada, confira a autenticação do usuário. Os usuários que se conectam por meio de um proxy devem ser autenticados por credenciais de login. Para obter detalhes sobre o suporte do Secrets Manager e do IAM no RDS Proxy, consulte Configurar credenciais de banco de dados no AWS Secrets Manager para RDS Proxy e Configurar políticas do AWS Identity and Access Management (IAM) para o RDS Proxy.
-
Você não pode usar o RDS Proxy com DNS personalizado ao usar a validação do nome de host SSL.
-
Cada proxy pode ser associado a uma única instância de banco de dados de destino. No entanto, é possível associar vários proxies à mesma instância de banco de dados.
Qualquer instrução com um tamanho de texto maior do que 16 KB faz com que o proxy fixe a sessão à conexão atual.
-
Certas regiões têm restrições de zona de disponibilidade (AZ) a serem consideradas ao criar seu proxy. A região Leste dos EUA (Norte da Virgínia) não é compatível com o RDS Proxy na zona de
use1-az3
disponibilidade. A região Oeste dos EUA (Norte da Califórnia) não é compatível com o RDS Proxy na zona deusw1-az2
disponibilidade. Ao selecionar sub-redes ao criar seu proxy, certifique-se de não selecionar sub-redes nas zonas de disponibilidade mencionadas acima. -
No momento, o RDS Proxy não comporta nenhuma chave de contexto de condição global.
Para obter mais informações sobre chaves de contexto de condição global, consulte Chaves de contexto de condição global AWS no Guia do usuário do IAM.
-
Não é possível usar o RDS Proxy com o RDS Custom para SQL Server.
Para saber as limitações adicionais para cada mecanismo de banco de dados, consulte as seguintes seções:
Limitações adicionais do RDS para MariaDB
As seguintes limitações adicionais se aplicam ao RDS Proxy com bancos de dados do RDS para MariaDB:
-
No momento, todos os proxies escutam na porta 3306 para o MariaDB. Os proxies ainda se conectam ao banco de dados usando a porta especificada nas configurações do banco de dados.
-
Não é possível usar o RDS Proxy com bancos de dados do MariaDB autogerenciados em instâncias do Amazon EC2.
-
Você não pode usar o proxy do RDS com uma instância de banco de dados do RDS para MariaDB que tenha o parâmetro
read_only
em seu grupo de parâmetros de banco de dados definido como1
. -
O RDS Proxy não é compatível com o modo compactado do MariaDB. Por exemplo, ele não é compatível com a compactação usada pelas opções
--compress
ou-C
do comandomysql
. -
Algumas funções e instruções SQL podem alterar o estado da conexão sem causar fixação. Para obter o comportamento de fixação mais atual, consulte Evitar a fixação de um RDS Proxy.
O RDS Proxy não é compatível com o plug-in
auth_ed25519
do Memcached.O RDS Proxy não é compatível com Transport Layer Security (TLS) versão 1.3 para bancos de dados MariaDB.
-
Conexões de banco de dados que processam um comando
GET DIAGNOSTIC
podem retornar informações imprecisas quando o RDS Proxy reutiliza a mesma conexão de banco de dados para executar outra consulta. Isso pode acontecer quando o RDS Proxy realiza multiplexação de conexões de banco de dados. Para ter mais informações, consulte Visão geral dos conceitos do RDS Proxy.
Importante
Para proxies associados a bancos de dados MariaDB, não defina o parâmetro de configuração sql_auto_is_null
como true
ou um valor diferente de zero na consulta de inicialização. Isso pode causar um comportamento incorreto da aplicação.
Limitações adicionais do RDS para Microsoft SQL Server
As seguintes limitações adicionais se aplicam ao RDS Proxy com RDS para bancos de dados do Microsoft SQL Server:
o número de segredos do Secrets Manager que você precisa criar para um proxy depende do agrupamento que sua instância de banco de dados usa. Por exemplo, suponha que sua instância de banco de dados use agrupamento que diferencie maiúsculas de minúsculas. Se sua aplicação aceitar “Admin” e “admin”, seu proxy precisará de dois segredos separados. Para ter mais informações sobre agrupamento no SQL Server, consulte a documentação do Microsoft SQL Server
. O RDS Proxy não é compatível com conexões que usam o Active Directory.
Você não pode usar a autenticação do IAM com clientes que não sejam compatíveis com as propriedades do token. Para ter mais informações, consulte Considerações sobre como se conectar a um proxy com o Microsoft SQL Server.
Os resultados de
@@IDENTITY
,@@ROWCOUNT
eSCOPE_IDENTITY
nem sempre são precisos. Como solução alternativa, recupere seus valores na mesma declaração de sessão para garantir que eles retornem as informações corretas.Se a conexão usar vários conjuntos de resultados ativos (MARS), o RDS Proxy não realizará as consultas de inicialização. Para obter informações sobre MARS, consulte a documentação do Microsoft SQL Server
. -
No momento, o RDS Proxy não é compatível com instâncias de banco de dados do RDS para SQL Server executadas na versão principal do SQL Server 2022.
-
O proxy do RDS não é compatível com instâncias de banco de dados do RDS para SQL Server que são executadas na versão principal do SQL Server 2014.
-
O RDS Proxy não comporta aplicações clientes que não conseguem lidar com várias mensagens de resposta em um registro do TLS.
Limitações adicionais do RDS para MySQL
As seguintes limitações adicionais se aplicam ao RDS Proxy com bancos de dados do RDS para MySQL:
O proxy do RDS não tem compatibilidade com os plug-ins de autenticação
sha256_password
ecaching_sha2_password
do MySQL. Esses plug-ins implementam hashes SHA-256 para senhas de contas de usuários.-
No momento, todos os proxies escutam na porta 3306 para o MySQL. Os proxies ainda se conectam ao banco de dados usando a porta especificada nas configurações do banco de dados.
-
Não é possível usar o proxy do RDS com bancos de dados MySQL autogerenciados em instâncias do EC2.
-
Você não pode usar o proxy do RDS com uma instância de banco de dados do RDS para MySQL que tenha o parâmetro
read_only
em seu grupo de parâmetros de banco de dados definido como1
. -
O proxy do RDS não é compatível com o modo compactado do MySQL. Por exemplo, ele não é compatível com a compactação usada pelas opções
--compress
ou-C
do comandomysql
. -
Conexões de banco de dados que processam um comando
GET DIAGNOSTIC
podem retornar informações imprecisas quando o RDS Proxy reutiliza a mesma conexão de banco de dados para executar outra consulta. Isso pode acontecer quando o RDS Proxy realiza multiplexação de conexões de banco de dados. -
Algumas funções e declarações SQL, como
SET LOCAL
, podem alterar o estado da conexão sem causar fixação. Para obter o comportamento de fixação mais atual, consulte Evitar a fixação de um RDS Proxy. -
Usar a função
ROW_COUNT()
em uma consulta com várias declarações não é aceito. -
O RDS Proxy não comporta aplicações clientes que não conseguem lidar com várias mensagens de resposta em um registro do TLS.
Importante
Para proxies associados a bancos de dados MySQL, não defina o parâmetro de configuração sql_auto_is_null
como true
ou um valor diferente de zero na consulta de inicialização. Isso pode causar um comportamento incorreto da aplicação.
Limitações adicionais do RDS para PostgreSQL
As seguintes limitações adicionais se aplicam ao RDS Proxy com bancos de dados do RDS para PostgreSQL:
O proxy do RDS não é compatível com os filtros de fixação de sessão do PostgreSQL.
-
Atualmente, todos os proxies escutam na porta 5432 para o PostgreSQL.
-
No PostgreSQL, o proxy do RDS atualmente não é compatível com o cancelamento de uma consulta de um cliente emitindo um
CancelRequest
. Esse é o caso, por exemplo, quando você cancela uma consulta de longa duração em uma sessão psql interativa usando Ctrl+C. -
Os resultados da função do PostgreSQL lastval
nem sempre são precisos. Como uma solução alternativa, use a instrução INSERT com a cláusula RETURNING
. Atualmente, o RDS Proxy não é compatível com o modo de replicação de streaming.
-
Com o RDS para PostgreSQL 16, as modificações no valor
scram_iterations
afetam exclusivamente o processo de autenticação entre o proxy e o banco de dados. Especificamente, se você configurarClientPasswordAuthType
comoscram-sha-256
, nenhuma personalização feita no valorscram_iterations
influenciará a autenticação de senha do cliente para o proxy. Em vez disso, o valor de iteração para autenticação de senha do cliente para proxy é fixado em 4096.
Importante
Para proxies existentes com bancos de dados PostgreSQL, se você modificar a autenticação do banco de dados para usar apenas SCRAM
, o proxy ficará indisponível por até 60 segundos. Para evitar o problema, faça o seguinte:
O banco de dados deve permitir tanto a autenticação
SCRAM
quanto aMD5
.Para usar somente a autenticação
SCRAM
, crie um proxy, migre o tráfego da aplicação para o novo proxy e exclua o proxy anteriormente associado ao banco de dados.