Usar o Amazon RDS Proxy - Amazon Relational Database Service

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.

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 Amazon RDS Proxy.

Cotas e limitações do RDS Proxy

As seguintes limitações aplicam-se ao RDS Proxy:

  • Você pode ter até 20 proxies para cada ID de conta de AWS. Se a aplicação exigir mais proxies, você poderá solicitar proxies adicionais abrindo um tíquete com a organização do 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 Configuração de credenciais de banco de dados no AWS Secrets Manager e Configuração de políticas do AWS Identity and Access Management (IAM).

  • 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 de usw1-az2 disponibilidade. Ao selecionar sub-redes ao criar seu proxy, certifique-se de não selecionar sub-redes nas zonas de disponibilidade mencionadas acima.

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 como 1.

  • 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 comando mysql.

  • 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 Como evitar fixação.

  • 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 e SCOPE_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.

  • 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.

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 e caching_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 como 1.

  • 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 comando mysql.

  • 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 Como evitar fixação.

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ê configurar ClientPasswordAuthType como scram-sha-256, nenhuma personalização feita no valor scram_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 a MD5.

  • 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.