

# Amazon RDS Proxy
<a name="rds-proxy"></a>

Com o Amazon RDS Proxy, você pode permitir que suas aplicações agrupem e compartilhem conexões de banco de dados para melhorar sua capacidade de escala. O RDS Proxy 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ê pode aplicar a autenticação do AWS Identity and Access Management (IAM) para clientes que se conectam ao proxy, e o proxy pode se conectar aos bancos de dados usando a autenticação do banco de dados do IAM ou as credenciais armazenadas no AWS Secrets Manager. 

![\[Visão geral de como as aplicações se conectam ao RDS Proxy\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/Proxy-Overview.png)


 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. 

![\[Visão detalhada de como as aplicações se conectam ao RDS Proxy e os tipos de conexões envolvidas.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/Proxy-detail.png)


 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. 

**Topics**
+ [

## Disponibilidade de região e versão
](#rds-proxy.RegionVersionAvailability)
+ [

## Cotas e limitações do RDS Proxy
](#rds-proxy.limitations)
+ [

# Planejar onde usar o RDS Proxy
](rds-proxy-planning.md)
+ [

# Conceitos e terminologia do RDS Proxy
](rds-proxy.howitworks.md)
+ [

# Conceitos básicos do RDS Proxy
](rds-proxy-setup.md)
+ [

# Gerenciar um RDS Proxy
](rds-proxy-managing.md)
+ [

# Como trabalhar com endpoints do proxy do Amazon RDS
](rds-proxy-endpoints.md)
+ [

# Monitorar métricas do proxy do RDS com o Amazon CloudWatch
](rds-proxy.monitoring.md)
+ [

# Trabalhar com eventos do RDS Proxy
](rds-proxy.events.md)
+ [

# Solução de problemas do RDS Proxy
](rds-proxy.troubleshooting.md)
+ [

# Usar o proxy do RDS com o AWS CloudFormation
](rds-proxy-cfn.md)

## Disponibilidade de região e versão
<a name="rds-proxy.RegionVersionAvailability"></a>

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](Concepts.RDS_Fea_Regions_DB-eng.Feature.RDSProxy.md).

## Cotas e limitações do RDS Proxy
<a name="rds-proxy.limitations"></a>

 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 Console de gerenciamento da AWS. 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 Suporte.
+ Cada proxy pode ter até duzentos segredos do Secrets Manager. Assim, as conexões podem ser limitadas a até duzentas contas de usuário diferentes ao usar segredos. 
+  Cada proxy tem um endpoint padrão que é provisionado em apenas duas zonas de disponibilidade selecionadas nas sub-redes configuradas do proxy. Se houver sub-redes configuradas em mais de duas AZs, quaisquer duas serão selecionadas. 
+  É possível acrescentar até vinte endpoints de proxy adicionais a cada proxy. Esses endpoints adicionais são provisionados em todas as zonas de disponibilidade especificadas durante a respectiva criação. É 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`. 
+  Não é possível usar o RDS Proxy em uma VPC que tenha controles de criptografia com o `Enforce Mode` habilitado. 
+ Para os tipos de rede de endpoint IPv6, configure sua VPC e sub-redes para comportar apenas IPv6. Para os tipos de rede de conexão de destino IPv4 e IPv6, configure sua VPC e sub-redes para comportar o modo de pilha dupla. 
+ Se você usar o RDS Proxy com uma instância de banco de dados do RDS com a autenticação do IAM habilitada, o proxy poderá se conectar ao banco de dados usando a autenticação do IAM ou com as credenciais armazenadas no Secrets Manager. Os clientes que se conectam ao proxy devem se autenticar usando as credenciais do IAM. Para receber instruções detalhadas de configuração, consulte [Configurar credenciais de banco de dados para RDS Proxy](rds-proxy-secrets-arns.md) e [Configurar a autenticação do IAM para o RDS Proxy](rds-proxy-iam-setup.md).
+  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. 
+ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) no *Guia do usuário do IAM*.
+ Não é possível usar o RDS Proxy com o RDS Custom para SQL Server.
+ Para refletir qualquer modificação do grupo de parâmetros do banco de dados no proxy, é necessária uma reinicialização da instância, mesmo que você opte por aplicar as alterações imediatamente. Com relação a parâmetros no nível do cluster, é necessária uma reinicialização em todo o cluster.
+ Seu proxy cria automaticamente o usuário do banco de dados `rdsproxyadmin` quando você registra um destino de proxy. Este é um usuário protegido que é essencial para a funcionalidade de proxy. Você deve evitar alterar o usuário `rdsproxyadmin` em qualquer função. A exclusão ou modificação do usuário `rdsproxyadmin` ou das respectivas permissões pode afetar a disponibilidade do proxy para sua aplicação.

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](#rds-proxy.limitations-mdb)
+ [Limitações adicionais do RDS para Microsoft SQL Server](#rds-proxy.limitations-ms)
+ [Limitações adicionais do RDS para MySQL](#rds-proxy.limitations-my)
+ [Limitações adicionais do RDS para PostgreSQL](#rds-proxy.limitations-pg)

### Limitações adicionais do RDS para MariaDB
<a name="rds-proxy.limitations-mdb"></a>

 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 [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md).
+ 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 obter mais informações, consulte [Visão geral dos conceitos do RDS Proxy](rds-proxy.howitworks.md#rds-proxy-overview).
+ Atualmente, o RDS Proxy não é compatível com a opção `caching_sha2_password` para `ClientPasswordAuthType` para MariaDB.

**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
<a name="rds-proxy.limitations-ms"></a>

 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](https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver16).
+ 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 ao Microsoft SQL Server](rds-proxy-connecting.md#rds-proxy-connecting-sqlserver).
+ 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](https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars?view=sql-server-ver16).
+ 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.
+ O RDS Proxy não comporta a autenticação de ponta a ponta do IAM para o RDS para SQL Server.

### Limitações adicionais do RDS para MySQL
<a name="rds-proxy.limitations-my"></a>

 As seguintes limitações adicionais se aplicam ao RDS Proxy com bancos de dados do RDS para MySQL:
+ O suporte do RDS Proxy para autenticação `caching_sha2_password` requer uma conexão segura (TLS).
+ Sabe-se que o suporte do RDS Proxy para `caching_sha2_password` tem problemas de compatibilidade com determinadas versões do driver go-sql.
+ Ao usar o driver MySQL 8.4 C, a API `mysql_stmt_bind_named_param` poderá formar pacotes malformados se a contagem de parâmetros exceder a contagem de espaços reservados em instruções preparadas. Isso resulta em respostas incorretas. Para obter mais informações, consulte [Relatório de bugs do MySQL](https://bugs.mysql.com/bug.php?id=116860&thanks=4).
+ 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 [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md).
+ 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.
+ O RDS Proxy não aceita senhas duplas do MySQL.
+ O RDS Proxy pode não funcionar conforme o esperado quando você configura o parâmetro `init_connect` no grupo de parâmetros do banco de dados do RDS para definir variáveis de estado da sessão. Em vez disso, defina a consulta de inicialização para que o proxy execute as instruções de inicialização da sessão ao usar o proxy para se conectar ao seu banco de dados.

**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
<a name="rds-proxy.limitations-pg"></a>

 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\$1C. 
+  Os resultados da função do PostgreSQL [lastval](https://www.postgresql.org/docs/current/functions-sequence.html) nem sempre são precisos. Como uma solução alternativa, use a instrução [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) 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.
+ O banco de dados `postgres` padrão deve existir na instância do RDS para PostgreSQL para que o RDS Proxy funcione. Não exclua esse banco de dados, mesmo que sua aplicação use bancos de dados diferentes.
+ Se você usar `ALTER ROLE` para alterar o perfil do usuário com `SET ROLE`, as conexões subsequentes desse usuário com o proxy talvez não usem essa configuração de perfil, se essas conexões encontrarem fixação. Para evitar isso, ao usar o proxy, use `SET ROLE` na consulta de inicialização do proxy. Para obter mais informações, consulte **Consulta de inicialização** no [Criar um proxy para o Amazon RDS](rds-proxy-creating.md).

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

# Planejar onde usar o RDS Proxy
<a name="rds-proxy-planning"></a>

 Você pode determinar quais de suas instâncias de banco de dados, clusters e aplicações podem se beneficiar mais com o uso do RDS Proxy. Para fazer isso, considere estes fatores: 
+  Qualquer instância de banco de dados que encontrar erros de “conexões em excesso” é uma boa candidata para associação a um proxy. Isso geralmente é caracterizado por um alto valor da métrica `ConnectionAttempts` do CloudWatch. O proxy permite que as aplicações abram muitas conexões de cliente enquanto gerencia um número menor de conexões de longa duração para a instância de banco de dados. 
+  Para instâncias de bancos de dados que usam classes de instância menores da AWS, como T2 ou T3, o uso de um proxy pode ajudar a evitar condições de falta de memória. Isso também pode ajudar a reduzir a sobrecarga da CPU para estabelecer conexões. Essas condições podem ocorrer ao lidar com um grande número de conexões. 
+  É possível monitorar certas métricas do Amazon CloudWatch para determinar se uma instância de banco de dados está se aproximando de certos tipos de limite. Esses limites são para o número de conexões e para a memória associada ao gerenciamento de conexão. Você também pode monitorar certas métricas do CloudWatch para determinar se uma instância de banco de dados está lidando com muitas conexões de curta duração. A abertura e o fechamento dessas conexões podem aplicar um sobrecarga de performance a seu banco de dados. Para obter informações sobre as métricas a serem monitoradas, consulte [Monitorar métricas do proxy do RDS com o Amazon CloudWatchMonitorar o proxy do RDS com o CloudWatch](rds-proxy.monitoring.md). 
+  AWS LambdaAs funções do também podem ser boas candidatas para o uso de um proxy. Essas funções fazem conexões curtas frequentes com o banco de dados que se beneficiam do grupo de conexões oferecido pelo RDS Proxy. É possível aproveitar qualquer autenticação do IAM que você já tenha para funções do Lambda, em vez de gerenciar credenciais de banco de dados em seu código de aplicação do Lambda. 
+  Essas aplicações que geralmente abrem e encerram um grande número de conexões de banco de dados e não têm mecanismos internos de agrupamento de conexões são ideais para usar um proxy. 
+  As aplicações que mantêm um grande número de conexões abertas por longos períodos geralmente são boas candidatas para o uso de um proxy. As aplicações em setores como software como serviço (SaaS) ou comércio eletrônico geralmente minimizam a latência de solicitações de banco de dados deixando as conexões abertas. Com o RDS Proxy, uma aplicação pode manter mais conexões abertas do que quando se conecta diretamente à instância de banco de dados. 
+  Talvez você não tenha adotado a autenticação do IAM e do Secrets Manager devido à complexidade da configuração dessa autenticação para todas as instâncias  de banco de dados. O proxy pode aplicar as políticas de autenticação para conexões de cliente para aplicações específicas. É possível aproveitar qualquer autenticação do IAM que você já tenha para funções do Lambda, em vez de gerenciar credenciais de banco de dados em seu código de aplicação do Lambda. 
+  O RDS Proxy pode ajudar a tornar as aplicações mais resilientes e transparentes às falhas do banco de dados. Ele ignora os caches do Sistema de Nomes de Domínio (DNS) para reduzir os tempos de failover em até 66% para bancos de dados multi-AZ do Amazon RDS. O RDS Proxy também direciona automaticamente o tráfego para uma nova instância de banco de dados, preservando as conexões da aplicação. Isso torna os failovers mais transparentes para as aplicações.

# Conceitos e terminologia do RDS Proxy
<a name="rds-proxy.howitworks"></a>

 É possível simplificar o gerenciamento das conexões das instâncias de banco de dados do Amazon RDS e de clusters de bancos de dados Amazon Aurora usando o RDS Proxy. 

 O proxy do RDS lida com o tráfego de rede entre a aplicação cliente e o banco de dados. Ele faz isso de uma maneira ativa primeiro, entendendo o protocolo de banco de dados. Depois, ele ajusta seu comportamento com base nas operações SQL da aplicação e nos conjuntos de resultados do banco de dados. 

 O proxy do RDS reduz a sobrecarga de memória e de CPU para gerenciamento de conexão no banco de dados. O banco de dados precisa de menos memória e recursos de CPU quando as aplicações abrem muitas conexões simultâneas. Ele também não requer lógica em suas aplicações para fechar e reabrir conexões que permanecem ociosas por um longo período. Da mesma forma, ele requer menos lógica nas aplicações para restabelecer conexões em caso de um problema de banco de dados. 

 A infraestrutura do proxy do RDS é altamente disponível e implantada em várias zonas de disponibilidade (AZs). A computação, a memória e o armazenamento do RDS Proxy são independentes da instância de banco de dados do RDS. Essa separação ajuda a reduzir a sobrecarga em seus servidores de banco de dados, para que eles possam dedicar seus recursos para atender às workloads do banco de dados. Os recursos de computação do proxy do RDS não têm servidor, realizando a escalabilidade automática com base na workload do banco de dados. 

**Topics**
+ [

## Visão geral dos conceitos do RDS Proxy
](#rds-proxy-overview)
+ [

## Agrupamento de conexões
](#rds-proxy-connection-pooling)
+ [

## Segurança do RDS Proxy
](#rds-proxy-security)
+ [

## Failover
](#rds-proxy-failover)
+ [

## Transações
](#rds-proxy-transactions)

## Visão geral dos conceitos do RDS Proxy
<a name="rds-proxy-overview"></a>

 O proxy do RDS lida com a infraestrutura para executar o agrupamento de conexões e os outros recursos descritos nas seções a seguir. Os proxies estão representados no console do RDS na página **Proxies**. 

Cada proxy lida com conexões com uma única instância de banco de dados do RDS. O proxy determina automaticamente a instância de gravador atual para as instâncias de banco de dados multi-AZ do RDS e para os clusters provisionados do Aurora.

 As conexões que um proxy mantém abertas e disponíveis para a aplicação de banco de dados usar compõem o *grupo de conexões*. 

 Por padrão, o proxy do RDS pode reutilizar uma conexão após cada transação em sua sessão. Essa reutilização em nível de transação é chamada de *multiplexação*. Quando o proxy do RDS remove temporariamente uma conexão do grupo de conexões para reutilizá-la, essa operação é chamada de *empréstimo* da conexão. Quando é seguro fazer isso, o proxy do RDS retorna essa conexão ao grupo de conexões. 

 Em alguns casos, o proxy do RDS não consegue ter certeza de que é seguro reutilizar uma conexão de banco de dados fora da sessão atual. Nesses casos, ele mantém a sessão na mesma conexão até que a sessão termine. Esse comportamento de fallback é chamado de *fixação*. 

Um proxy tem um endpoint padrão. Você se conecta a esse endpoint ao trabalhar com uma instância de banco de dados do RDS ou com um cluster de banco de dados do Aurora. Você faz isso em vez de se conectar ao endpoint de leitura/gravação que se conecta diretamente à instância ou ao cluster. Os endpoints de finalidade especial de um cluster do Aurora permanecem disponíveis para uso. Para clusters de banco de dados do RDS, também é possível criar endpoints adicionais de leitura/gravação e somente leitura. Para ter mais informações, consulte [Visão geral dos endpoints de proxy](rds-proxy-endpoints.md#rds-proxy-endpoints-overview). 

 Por exemplo, você ainda pode se conectar ao endpoint do cluster para conexões de leitura/gravação sem agrupamento de conexões. Você ainda pode se conectar ao endpoint de leitor para conexões somente leitura com balanceamento de carga. Você ainda pode se conectar aos endpoints da instância para diagnóstico e solução de problemas de instâncias de banco de dados específicas em um cluster do . Se você usa outros serviços da AWS, como o AWS Lambda para se conectar a bancos de dados do RDS, altere as configurações de conexão para usar o endpoint do proxy. Por exemplo, você especifica o endpoint do proxy para permitir que as funções do Lambda acessem seu banco de dados enquanto aproveita a funcionalidade do RDS Proxy. 

 Cada proxy contém um grupo de destino. Esse *grupo de destino* incorpora a instância de banco de dados do RDS à qual o proxy pode se conectar. Para um cluster do Aurora, por padrão, o grupo de destino é associado a todas as instâncias de banco de dados nesse cluster. Dessa forma, o proxy pode se conectar a qualquer instância de bancos de dados Aurora promovida para ser a instância de gravação no cluster. A instância de banco de dados do RDS associada a um proxy é chamada de *destino* desse proxy. Por conveniência, quando você cria um proxy pelo console, o proxy do RDS também cria o grupo de destino correspondente e registra os destinos associados automaticamente. 

 Uma *família de mecanismos* é um conjunto relacionado de mecanismos de banco de dados que usam o mesmo protocolo de banco de dados. Escolha a família de mecanismos para cada proxy criado. 

## Agrupamento de conexões
<a name="rds-proxy-connection-pooling"></a>

Cada proxy executa o agrupamento de conexões separadamente para a instância de gravação e leitura de seu banco de dados do RDS ou do associado. O *agrupamento de conexões* é uma otimização que reduz a sobrecarga associada à abertura e ao fechamento de conexões e à manutenção de muitas conexões abertas simultaneamente. Essa sobrecarga inclui a memória necessária para lidar com cada nova conexão. Também envolve a sobrecarga da CPU para fechar cada conexão e abrir uma nova. Os exemplos incluem handshaking TLS/SSL (Transport Layer Security/Secure Sockets Layer), autenticação, recursos de negociação etc. O agrupamento de conexões simplifica a lógica da aplicação. Você não precisa escrever código da aplicação para minimizar o número de conexões abertas simultâneas. 

 Cada proxy também executa a multiplexação de conexões, também conhecida como reutilização de conexões. Com a *multiplexação*, o RDS Proxy executa todas as operações para uma transação usando uma conexão de banco de dados subjacente. Depois, o RDS pode usar uma conexão diferente para a próxima transação. Você pode abrir muitas conexões simultâneas com o proxy, e o proxy mantém um número menor de conexões abertas com a instância ou o cluster de banco de dados. Isso minimiza ainda mais a sobrecarga na memória de conexões no servidor de banco de dados. Essa técnica também reduz a possibilidade de erros de “excesso de conexões”. 

## Segurança do RDS Proxy
<a name="rds-proxy-security"></a>

 O proxy do RDS usa os mecanismos de segurança do RDS existentes, como TLS/SSL e o AWS Identity and Access Management (IAM). Para obter informações gerais sobre esses recursos de segurança, consulte [Segurança no Amazon RDS](UsingWithRDS.md). Além disso, familiarize-se com a forma como o RDS e o Aurora trabalham com autenticação, autorização e outras áreas de segurança. 

 O proxy do RDS pode atuar como uma camada adicional de segurança entre aplicações cliente e o banco de dados subjacente. Por exemplo, você pode se conectar ao proxy usando o TLS 1.3, mesmo que a instância de banco de dados subjacente ofereça suporte a uma versão mais antiga do TLS. Você pode se conectar ao proxy usando um perfil do IAM, mesmo que o proxy se conecte ao banco de dados usando o método de autenticação de usuário e senha do banco de dados. Usando essa técnica, você pode aplicar requisitos de autenticação fortes para aplicações de banco de dados sem um esforço de migração dispendioso para as próprias instâncias de banco de dados. 

Você pode usar os seguintes métodos de autenticação com o RDS Proxy:
+ **Credenciais do banco de dados**
+ **Autenticação padrão do IAM**
+ **Autenticação de ponta a ponta do IAM**

### Usar o IAM com o RDS Proxy
<a name="rds-proxy-security.IAM"></a>

O RDS Proxy oferece dois métodos de autenticação do IAM:
+ **Autenticação padrão do IAM**: aplique a autenticação do IAM para conexões com seu proxy enquanto ele se conecta ao banco de dados usando credenciais armazenadas no Secrets Manager. Isso aplica a autenticação do IAM para acesso ao banco de dados mesmo que os bancos de dados usem autenticação nativa de senha. O proxy recupera as credenciais do banco de dados do Secrets Manager e gerencia a autenticação no banco de dados em nome da sua aplicação.
+ **Autenticação de ponta a ponta do IAM**: aplica a autenticação do IAM para conexões diretamente de suas aplicações com o seu banco de dados por meio do proxy. A autenticação de ponta a ponta do IAM simplifica sua configuração de segurança e evita o gerenciamento de credenciais do banco de dados no Secrets Manager. Essa camada adicional de segurança aplica o controle de acesso baseado no IAM da aplicação cliente ao banco de dados.

Para usar a autenticação padrão do IAM, configure seu proxy para usar segredos do Secrets Manager para autenticação e habilite a autenticação do IAM para conexões de clientes. Suas aplicações fazem a autenticação no proxy usando o IAM, enquanto o proxy faz a autenticação no banco de dados usando as credenciais recuperadas do Secrets Manager.

Para usar a autenticação de ponta a ponta do IAM, configure seu proxy para usar a autenticação do IAM ao definir o esquema de autenticação padrão ao criar ou modificar seu proxy.

Para a autenticação de ponta a ponta do IAM, você deve atualizar o perfil do IAM associado ao proxy para conceder a permissão `rds-db:connect`. Com a autenticação de ponta a ponta do IAM, isso elimina a necessidade de registrar usuários individuais do banco de dados com o proxy por meio dos segredos do Secrets Manager.

### Usar TLS/SSL com o RDS Proxy
<a name="rds-proxy-security.tls"></a>

 Você pode se conectar ao proxy do RDS usando o protocolo TLS/SSL. 

**nota**  
 O proxy do Amazon RDS usa certificados do AWS Certificate Manager (ACM). Se você estiver usando o RDS Proxy, não será necessário baixar os certificados do Amazon RDS ou atualizar as aplicações que usam conexões RDS Proxy.

Para aplicar o TLS a todas as conexões entre o proxy e o banco de dados, é possível especificar uma configuração **Exigir Transport Layer Security** ao criar ou modificar um proxy no Console de gerenciamento da AWS. 

O proxy do RDS também pode garantir que a sessão use TLS/SSL entre o cliente e o endpoint do RDS Proxy. Para que o proxy do RDS faça isso, especifique o requisito no lado do cliente. As variáveis de sessão SSL não são definidas para conexões SSL a um banco de dados usando o RDS Proxy. 
+  Para o RDS para MySQL, especifique o requisito no lado do cliente com o parâmetro `--ssl-mode` ao executar o comando `mysql`. 
+  No Amazon RDS PostgreSQL, especifique `sslmode=require` como parte da string `conninfo` ao executar o comando `psql`. 

O RDS Proxy é compatível com o protocolo TLS versões 1.0, 1.1, 1.2 e 1.3. É possível se conectar ao proxy usando uma versão mais recente do TLS do que a usada no banco de dados subjacente. 

Por padrão, os programas cliente estabelecem uma conexão criptografada com o RDS Proxy, com controle adicional disponível por meio da opção `--ssl-mode`. No lado do cliente, o proxy do RDS oferece suporte a todos os modos SSL. 

 Para o cliente, os modos SSL são os seguintes: 

**PREFERRED**  
 O SSL é a primeira opção, mas não é obrigatória. 

**DISABLED**  
 Nenhum SSL é permitido. 

**REQUIRED**  
 Impor SSL. 

**VERIFY\$1CA**  
 Impor SSL e verificar a autoridade de certificação (CA - certificate authority). 

**VERIFY\$1IDENTITY**  
 Impor SSL e verificar a CA, além do nome de host da CA. 

 Ao usar um cliente com `--ssl-mode` `VERIFY_CA` ou `VERIFY_IDENTITY`, especifique a opção `--ssl-ca` apontando para uma CA em formato `.pem`. Para o arquivo `.pem` a ser usado, baixe todos os PEMs de CA raiz de [Amazon Trust Services ](https://www.amazontrust.com/repository/) e coloque-os em um único arquivo `.pem`.

 O RDS Proxy usa certificados curinga, que se aplicam a um domínio e aos seus subdomínios. No momento, se você usa o cliente `mysql` para se conectar ao modo SSL `VERIFY_IDENTITY`, é necessário usar o comando `mysql` compatível com MySQL 8.0. 

## Failover
<a name="rds-proxy-failover"></a>

 O *failover* é um recurso de alta disponibilidade que substitui uma instância de banco de dados por outra quando a instância original fica indisponível. Um failover pode ocorrer devido a um problema com uma instância de banco de dados. Ele também pode fazer parte de procedimentos normais de manutenção, como durante uma atualização de banco de dados. O failover se aplica a instâncias de banco de dados do RDS em uma configuração multi-AZ

 A conexão por meio de um proxy torna a aplicação mais resiliente a failovers de banco de dados. Quando a instância de banco de dados original se torna indisponível, o proxy do RDS conecta-se ao banco de dados em espera sem eliminar as conexões de aplicações ociosas. Isso ajuda a acelerar e simplificar o processo de failover. Isso causa menos interrupções na aplicação do que uma reinicialização típica ou um problema de banco de dados. 

 Sem o RDS Proxy, um failover envolve uma breve interrupção. Durante a interrupção, não é possível executar operações de gravação no banco de dados em failover. Todas as conexões de banco de dados existentes são interrompidas e sua aplicação precisa reabri-las. O banco de dados fica disponível para novas conexões e operações de gravação quando uma instância de banco de dados somente leitura é promovida para substituir a que não está disponível. 

 Durante os failovers de banco de dados, o proxy do RDS continua aceitando conexões no mesmo endereço IP e direciona conexões automaticamente para a nova instância do banco de dados primário. Os clientes que se conectam pelo proxy do RDS não são suscetíveis ao seguinte: 
+  Atrasos de propagação do Domain Name System (DNS) no failover. 
+  Cache DNS local. 
+  Tempos limite de conexão. 
+  Incerteza sobre qual instância de banco de dados é o gravador atual. 
+  Espera pela resposta de uma consulta de um gravador anterior que ficou indisponível sem fechar conexões. 

 Para aplicações que mantêm seu próprio grupo de conexões, passar pelo proxy do RDS significa que a maioria das conexões permanecem ativas durante failovers ou outras interrupções. Somente conexões que estão no meio de uma transação ou de uma instrução SQL são canceladas. O proxy do RDS aceita novas conexões imediatamente. Quando o gravador do banco de dados não estiver disponível, o proxy do RDS coloca as solicitações de entrada em fila. 

 Para aplicações que não mantêm seus próprios grupos de conexão, o proxy do RDS oferece taxas de conexão mais rápidas e conexões mais abertas. Ele descarrega a sobrecarga cara de reconexões frequentes do banco de dados. E faz isso reutilizando as conexões de banco de dados mantidas no grupo de conexões do RDS Proxy. Essa abordagem é particularmente importante para conexões TLS, em que os custos da configuração são significativos. 

## Transações
<a name="rds-proxy-transactions"></a>

 Todas as instruções dentro de uma única transação sempre usam a mesma conexão ao banco de dados subjacente. A conexão se torna disponível para uso de outra sessão quando a transação termina. O uso da transação como a unidade de granularidade tem as seguintes consequências: 
+  A reutilização da conexão pode ocorrer após cada declaração individual, quando a configuração `autocommit` do RDS para MySQL estiver ativada. 
+  Por outro lado, quando a configuração `autocommit` está desativada, a primeira declaração emitida em uma sessão inicia uma nova transação. Por exemplo, suponhamos que você insira uma sequência de `SELECT`, `INSERT`, `UPDATE` e outras declarações em linguagem de manipulação de dados (DML). Nesse caso, a reutilização da conexão não ocorrerá até que você emita um `COMMIT`, `ROLLBACK` ou encerre a transação. 
+  A inserção de uma instrução DDL (Data Definition Language, linguagem de definição de dados) faz com que a transação termine depois que essa instrução é concluída. 

 O proxy do RDS detecta quando uma transação termina por meio do protocolo de rede usado pela aplicação cliente de banco de dados. A detecção da transação não depende de palavras-chave, como `COMMIT` ou `ROLLBACK`, que aparecem no texto da instrução SQL. 

 Em alguns casos, o proxy do RDS pode detectar uma solicitação de banco de dados que torna impraticável mover a sessão para uma conexão diferente. Nesses casos, ele desativa a multiplexação para essa conexão o restante da sessão. A mesma regra se aplicará se o proxy do RDS não puder ter certeza de que a multiplexação é prática para a sessão. Essa operação é chamada de *fixação*. Para obter formas de detectar e minimizar a fixação, consulte [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md). 

# Conceitos básicos do RDS Proxy
<a name="rds-proxy-setup"></a>

Use as informações nas páginas a seguir para configurar, gerenciar [Amazon RDS Proxy](rds-proxy.md) e definir opções de segurança relacionadas. As opções de segurança controlam quem pode acessar cada proxy e como cada proxy se conecta a instâncias de banco de dados.

Se você é novo no RDS Proxy, recomendamos seguir as páginas na ordem em que as apresentamos. 

**Topics**
+ [

# Configurar os pré-requisitos de rede para o RDS Proxy
](rds-proxy-network-prereqs.md)
+ [

# Configurar credenciais de banco de dados para RDS Proxy
](rds-proxy-secrets-arns.md)
+ [

# Configurar a autenticação do IAM para o RDS Proxy
](rds-proxy-iam-setup.md)
+ [

# Criar um proxy para o Amazon RDS
](rds-proxy-creating.md)
+ [

# Visualizar um proxy
](rds-proxy-viewing.md)
+ [

# Conectar-se a um banco de dados pelo RDS Proxy
](rds-proxy-connecting.md)

# Configurar os pré-requisitos de rede para o RDS Proxy
<a name="rds-proxy-network-prereqs"></a>

 O uso do RDS Proxy requer que você tenha uma nuvem privada virtual (VPC) comum entre a instância de banco de dados do RDS e o RDS Proxy. Essa VPC deve ter um mínimo de duas sub-redes em zonas de disponibilidade diferentes. Sua conta pode possuir essas sub-redes ou compartilhá-las com outras contas. Para obter informações sobre compartilhamento de VPC, consulte [Trabalhar com VPCs compartilhadas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html). 

Para suporte a IPv6, é necessária uma configuração de rede adicional:
+ **Tipos de rede de endpoint IPv6**: sua VPC e sub-redes devem estar configuradas para comportar IPv6. Isso inclui ter blocos CIDR IPv6 atribuídos à VPC e às sub-redes.
+ **Tipos de rede de endpoint de pilha dupla**: sua VPC e sub-redes devem comportar endereçamento IPv4 e IPv6.
+ **Tipos de rede de conexão de destino IPv6**: seu banco de dados deve estar configurado para o modo de pilha dupla a fim de comportar conexões IPv6 do proxy.

Seus recursos de aplicações cliente, como Amazon EC2, Lambda ou Amazon ECS, podem estar na mesma VPC que o proxy. Ou podem estar em uma VPC separada do proxy. Se você se conectou com êxito a quaisquer instâncias de banco de dados do RDS , você já terá os recursos de rede necessários. 

**Topics**
+ [

## Obter informações sobre suas sub-redes
](#rds-proxy-network-prereqs.subnet-info)
+ [

## Planejar a capacidade de endereços IP
](#rds-proxy-network-prereqs.plan-ip-address)

## Obter informações sobre suas sub-redes
<a name="rds-proxy-network-prereqs.subnet-info"></a>

Para criar um proxy, é necessário fornecer as sub-redes e a VPC em que o proxy opera. O exemplo do Linux a seguir mostra comandos da AWS CLI que examinam as VPCs e as sub-redes pertencentes à sua Conta da AWS. Em particular, você passa IDs de sub-rede como parâmetros quando cria um proxy usando o CLI. 

```
aws ec2 describe-vpcs
aws ec2 describe-internet-gateways
aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort
```

O exemplo do Linux a seguir mostra comandos da AWS CLI para determinar os IDs de sub-rede correspondentes a uma instância específica de banco de dados do RDS. Encontre o ID da VPC para a instância de banco de dados. Examine a VPC para encontrar as sub-redes. O exemplo do Linux a seguir mostra como fazer isso.

```
$ #From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs.
$ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
```

```
subnet_id_1
subnet_id_2
subnet_id_3
...
```

```
$ #From the DB instance, find the VPC.
$ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
```

```
my_vpc_id
```

```
$ aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id --query '*[].[SubnetId]' --output text
```

```
subnet_id_1
subnet_id_2
subnet_id_3
subnet_id_4
subnet_id_5
subnet_id_6
```

## Planejar a capacidade de endereços IP
<a name="rds-proxy-network-prereqs.plan-ip-address"></a>

Um RDS Proxy ajusta automaticamente sua capacidade conforme necessário com base no tamanho e no número de instâncias de banco de dados registradas nele. Algumas operações também podem precisar de capacidade adicional de proxy, como aumentar o tamanho de um banco de dados registrado ou operações internas de manutenção do RDS Proxy. Durante essas operações, seu proxy pode precisar de mais endereços IP para provisionar a capacidade extra. Esses endereços adicionais possibilitam que seu proxy se expanda sem afetar a workload. A falta de endereços IP gratuitos em suas sub-redes impede que um proxy aumente a escala verticalmente. Isso pode ocasionar maiores latências de consulta ou falhas na conexão do cliente. O RDS notifica você por meio de um evento `RDS-EVENT-0243` quando não há endereços IP livres suficientes em suas sub-redes. Para obter informações sobre esse evento, consulte [Trabalhar com eventos do RDS ProxyTrabalhar com eventos do RDS Proxy](rds-proxy.events.md).

**nota**  
O RDS Proxy não consome mais de 215 endereços IP para cada proxy em uma VPC.

Reserve os números mínimos a seguir de endereços IP livres nas sub-redes para o proxy, com base no tamanho das classes de instâncias de banco de dados.


|  DB instance class  |  Mínimo de endereços IP livres  | 
| --- | --- | 
|  db.\$1.xlarge ou menor   |  10  | 
|  db.\$1.2xlarge   |  15  | 
|  db.\$1.4xlarge   |  25  | 
|  db.\$1.8xlarge   |  45  | 
|  db.\$1.12xlarge   |  60  | 
|  db.\$1.16xlarge   |  75  | 
|  db.\$1.24xlarge   |  110  | 

Esses números de endereços IP recomendados são estimativas para um proxy com apenas o endpoint padrão. Um proxy com endpoints adicionais ou réplicas de leitura pode precisar de mais endereços IP livres. Para cada endpoint adicional, recomendamos que você reserve mais três endereços IP. Para cada réplica de leitura, recomendamos que você reserve endereços IP adicionais conforme especificado na tabela com base no tamanho dessa réplica de leitura.

# Configurar credenciais de banco de dados para RDS Proxy
<a name="rds-proxy-secrets-arns"></a>

O RDS Proxy no Amazon RDS usa o AWS Secrets Manager para armazenar e gerenciar credenciais de banco de dados com segurança. Em vez de incorporar credenciais na aplicação, você associa um proxy a um segredo do Secrets Manager que contenha os detalhes de autenticação necessários. Crie um segredo separado do Secrets Manager para cada conta de usuário de banco de dados ao qual o proxy se conecta na instância de banco de dados do RDS.

Você também pode configurar o RDS Proxy para usar a autenticação de ponta a ponta do IAM, o que elimina a necessidade de armazenar as credenciais do banco de dados no Secrets Manager. O RDS Proxy usa a autenticação do IAM para conexões de cliente para proxy e de proxy para banco de dados. Isso fornece uma solução de autenticação baseada no IAM totalmente integrada que não exige o gerenciamento de segredos ou senhas. Para acessar informações sobre como adicionar um novo usuário de banco de dados do IAM, consulte [Criar uma conta de banco de dados usando autenticação do IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

**Topics**
+ [

## Criar segredos para usá-los com o RDS Proxy
](#rds-proxy-secrets-create)

## Criar segredos para usá-los com o RDS Proxy
<a name="rds-proxy-secrets-create"></a>

Antes de criar um proxy, você deve primeiro criar pelo menos um segredo que armazene suas credenciais de banco de dados.

### Console
<a name="rds-proxy-secrets-create-console"></a>

**Como criar um segredo**

1. Abra o console Secrets Manager em [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Escolha **Armazenar Novo Segredo**.

1. Escolha **Credenciais para um banco de dados do Amazon RDS**.

1. Insira um nome de usuário e senha. As credenciais que você inserir devem corresponder às credenciais de um usuário do banco de dados que exista no banco de dados do RDS correlacionado. O RDS Proxy usa essas credenciais para autenticar e estabelecer conexões com o banco de dados em nome das aplicações.

   Se houver alguma incompatibilidade, você poderá atualizar o segredo para que corresponda à senha do banco de dados. Enquanto você não atualizar o segredo, as tentativas de conexão por meio do proxy usando esse segredo falharão, mas as conexões que usam outros segredos válidos ainda funcionarão.
**nota**  
No caso do RDS para SQL Server, o RDS Proxy exige um segredo com distinção entre maiúsculas e minúsculas no Secrets Manager, independentemente das configurações de agrupamento da instância de banco de dados. Se a aplicação permitir nomes de usuário com diferentes usos de maiúsculas e minúsculas, como “Admin” e “admin”, você deverá criar segredos separados para cada um. O RDS Proxy não aceita autenticação de nome de usuário sem distinção entre maiúsculas e minúsculas entre o cliente e o proxy.  
Para ter mais informações sobre agrupamento no SQL Server, consulte a documentação do [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver16).

1. Em **Banco de dados**, selecione o banco de dados do Amazon RDS que o segredo acessará.

1. Preencha outras configurações referentes ao segredo e escolha **Armazenar**. Para obter instruções mais abrangentes, consulte [Creating an AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) no *Guia do usuário do AWS Secrets Manager*. 

### AWS CLI
<a name="rds-proxy-secrets-create-cli"></a>

Ao criar um proxy por meio da AWS CLI, especifique os nomes de recurso da Amazon (ARNs) dos segredos correspondentes. Você faz isso para todas as contas de usuário do banco de dados que o proxy pode acessar. No Console de gerenciamento da AWS, escolha os segredos por seus nomes descritivos.
+ Para criar um segredo do Secrets Manager e utilizá-lo com o RDS Proxy, use o comando [create-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/create-secret.html):

  ```
  aws secretsmanager create-secret \
    --name "secret_name" \
    --description "secret_description" \
    --region region_name \
    --secret-string '{"username":"db_user","password":"db_user_password"}'
  ```
+ Também é possível criar uma chave personalizada para criptografar o segredo do Secrets Manager. O comando a seguir cria uma chave de exemplo.

  ```
  aws kms create-key --description "test-key" --policy '{
    "Id":"kms-policy",
    "Version": "2012-10-17",		 	 	 
    "Statement":
      [
        {
          "Sid":"Enable IAM User Permissions",
          "Effect":"Allow",
          "Principal":{"AWS":"arn:aws:iam::account_id:root"},
          "Action":"kms:*","Resource":"*"
        },
        {
          "Sid":"Allow access for Key Administrators",
          "Effect":"Allow",
          "Principal":
            {
              "AWS":
                ["$USER_ARN","arn:aws:iam:account_id::role/Admin"]
            },
          "Action":
            [
              "kms:Create*",
              "kms:Describe*",
              "kms:Enable*",
              "kms:List*",
              "kms:Put*",
              "kms:Update*",
              "kms:Revoke*",
              "kms:Disable*",
              "kms:Get*",
              "kms:Delete*",
              "kms:TagResource",
              "kms:UntagResource",
              "kms:ScheduleKeyDeletion",
              "kms:CancelKeyDeletion"
            ],
          "Resource":"*"
        },
        {
          "Sid":"Allow use of the key",
          "Effect":"Allow",
          "Principal":{"AWS":"$ROLE_ARN"},
          "Action":["kms:Decrypt","kms:DescribeKey"],
          "Resource":"*"
        }
      ]
  }'
  ```

 Por exemplo, os seguintes comandos criam segredos do Secrets Manager para dois usuários de banco de dados: 

```
aws secretsmanager create-secret \
  --name secret_name_1 --description "db admin user" \
  --secret-string '{"username":"admin","password":"choose_your_own_password"}'

aws secretsmanager create-secret \
  --name secret_name_2 --description "application user" \
  --secret-string '{"username":"app-user","password":"choose_your_own_password"}'
```

Para criar esses segredos criptografados com a chave do AWS KMS personalizada, use os seguintes comandos:

```
aws secretsmanager create-secret \
  --name secret_name_1 --description "db admin user" \
  --secret-string '{"username":"admin","password":"choose_your_own_password"}' \
  --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id

aws secretsmanager create-secret \
  --name secret_name_2 --description "application user" \
  --secret-string '{"username":"app-user","password":"choose_your_own_password"}' \
  --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id
```

Para ver os segredos que pertencem à sua conta da AWS, use o comando [list-secrets](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/list-secrets.html):

```
aws secretsmanager list-secrets
```

Ao criar um proxy utilizando a CLI, você transmite os nomes de recursos da Amazon (ARNs) de um ou mais segredos ao parâmetro `--auth`. O exemplo a seguir mostra como preparar um relatório com apenas o nome e o ARN de cada segredo pertencente à sua conta da AWS. Este exemplo usa o parâmetro `--output table` que está disponível na AWS CLI versão 2. Se você estiver usando a AWS CLI versão 1, use `--output text` em vez disso. 

```
aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table
```

Para confirmar se o segredo contém as credenciais corretas no formato adequado, use o comando [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html). Substitua `your_secret_name` pelo nome abreviado ou ARN do segredo.

```
aws secretsmanager get-secret-value --secret-id your_secret_name
```

A saída contém uma linha com um valor codificado em JSON semelhante ao seguinte:

```
...
"SecretString": "{\"username\":\"your_username\",\"password\":\"your_password\"}",
...
```

# Configurar a autenticação do IAM para o RDS Proxy
<a name="rds-proxy-iam-setup"></a>

Para configurar a autenticação do AWS Identity and Access Management (IAM) para o RDS Proxy no Amazon RDS, crie e configure uma política do IAM que conceda as permissões necessárias. 

Este tópico apresenta as etapas para configurar a autenticação do IAM para o RDS Proxy, bem como para criar a política do IAM necessária e anexá-la a um perfil do IAM. 

**dica**  
Este procedimento só é necessário se você quiser criar seu próprio perfil do IAM. Caso contrário, o RDS pode criar automaticamente o perfil necessário ao configurar o proxy, para que você possa pular essas etapas.

## Pré-requisitos
<a name="rds-proxy-iam-setup-prereqs"></a>

Antes de configurar a autenticação do IAM para o RDS Proxy, você deve ter o seguinte:
+ **AWS Secrets Manager**: pelo menos um segredo armazenado que contenha as credenciais do banco de dados. Para obter instruções sobre como criar esses segredos, consulte [Configurar credenciais de banco de dados para RDS Proxy](rds-proxy-secrets-arns.md).

  Isso não será necessário se você estiver usando a autenticação de ponta a ponta do IAM.
+ **Permissões do IAM**: um perfil ou usuário do IAM com permissões para criar e gerenciar políticas, perfis e segredos do IAM no AWS Secrets Manager.

## Criar uma política do IAM para a autenticação de ponta a ponta do IAM
<a name="rds-proxy-iam-setup-e2e-steps"></a>

Ao usar a autenticação de ponta a ponta do IAM, o RDS Proxy se conecta ao seu banco de dados usando a autenticação do IAM em vez de recuperar as credenciais do Secrets Manager. Isso requer configurar seu perfil do IAM com permissões `rds-db:connect` para as contas de banco de dados que você deseja usar com o proxy.

Para autenticar o RDS Proxy no banco de dados usando o IAM, crie um perfil do IAM com uma política que conceda as permissões de conexão com o banco de dados.

### Console
<a name="rds-proxy-iam-e2e-console"></a>

**Como criar um perfil para autenticação de ponta a ponta do IAM com seu proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Crie uma política de permissões para o perfil. Para ver as etapas gerais, consulte [Criar políticas do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html).

   Cole essa política no editor de JSON e faça as seguintes alterações:
   + Substitua o ID da sua própria conta.
   + Substitua `us-east-2` pela região onde o proxy deverá residir.
   + Substitua os IDs de recursos do banco de dados e os nomes de usuário pelos que você deseja usar. O formato dos IDs de recursos difere entre as instâncias do RDS e Aurora clusters.

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "rds-db:connect",
               "Resource": [
                   "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1",
                   "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2"
               ]
           }
       ]
   }
   ```

1. Crie o perfil e anexe a política de permissões a ele. Para ver as etapas gerais, consulte [Criar um perfil para delegar permissões a um serviço da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). 

   Em **Tipo de entidade confiável**, escolha **Serviço da AWS**. Em **Caso de uso**, selecione **RDS** e escolha **RDS - Adicionar perfil ao banco de dados** para o caso de uso.

1. Em **Políticas de permissões**, escolha a política que você criou.

1. Em **Selecionar entidades confiáveis**, insira a seguinte política de confiança para o perfil:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rds.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

### AWS CLI
<a name="rds-proxy-iam-e2e-cli"></a>

Para criar o perfil usando a AWS CLI, envie a seguinte solicitação:

```
aws iam create-role \
  --role-name my_e2e_iam_role_name \

  --assume-role-policy-document '{"Version":"2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
```

Depois, anexe a política ao perfil:

```
aws iam put-role-policy \
  --role-name my_e2e_iam_role_name \
  --policy-name e2e_iam_db_connect_policy \
  --policy-document '{

    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "rds-db:connect",
            "Resource": [
                "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_1",
                "arn:aws:rds-db:us-east-2:account_id:dbuser:db_instance_resource_id/db_user_name_2"
            ]
        }
    ]
}'
```

Com as permissões e o perfil do IAM configurados para a autenticação de ponta a ponta do IAM, agora você pode criar um proxy com `DefaultAuthScheme` definido como `IAM_AUTH`. Esse proxy se autentica diretamente no banco de dados usando o IAM sem exigir segredos do Secrets Manager. Para instruções, consulte [Criar um proxy para o Amazon RDS](rds-proxy-creating.md).

Ao usar a autenticação de ponta a ponta do IAM, garanta que os usuários do banco de dados estejam configurados para a autenticação do IAM, conforme descrito em [Criar uma conta de banco de dados usando autenticação do IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

## Criar uma política do IAM para acesso ao Secrets Manager
<a name="rds-proxy-iam-setup-steps"></a>

Para permitir que o RDS Proxy recupere as credenciais do banco de dados do Secrets Manager, crie um perfil do IAM com uma política que conceda as permissões necessárias.

## Console
<a name="rds-proxy-iam-console"></a>

**Como criar um perfil para acessar segredos e usá-los com o proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Crie uma política de permissões para o perfil. Para ver as etapas gerais, consulte [Criar políticas do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html).

   Cole essa política no editor de JSON e faça as seguintes alterações:
   + Substitua o ID da sua própria conta.
   + Substitua `us-east-2` pela região onde o proxy residirá.
   + Substitua os nomes dos segredos pelos que você criou. Para ter mais informações, consulte [Specifying KMS keys in IAM policy statements](https://docs.aws.amazon.com/kms/latest/developerguide/cmks-in-iam-policies.html).
   + Substitua o ID da chave do KMS pelo que você usou para criptografar os segredos do Secrets Manager, seja a chave padrão ou sua própria chave.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "secretsmanager:GetSecretValue",
               "Resource": [
                   "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret_name_1",
                   "arn:aws:secretsmanager:us-east-2:111122223333:secret:secret_name_2"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "kms:Decrypt",
               "Resource": "arn:aws:kms:us-east-2:111122223333:key/key_id",
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Crie o perfil e anexe a política de permissões a ele. Para ver as etapas gerais, consulte [Criar um perfil para delegar permissões a um serviço da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html). 

   Em **Tipo de entidade confiável**, escolha **Serviço da AWS**. Em **Caso de uso**, selecione **RDS** e escolha **RDS - Adicionar perfil ao banco de dados** para o caso de uso.

1. Em **Políticas de permissões**, escolha a política que você criou.

1. Em **Selecionar entidades confiáveis**, insira a seguinte política de confiança para o perfil:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "rds.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

## AWS CLI
<a name="rds-proxy-iam-cli"></a>

Para criar o perfil usando a AWS CLI, envie a seguinte solicitação:

```
aws iam create-role \
  --role-name my_role_name \
  --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
```

Depois, anexe a política ao perfil:

```
aws iam put-role-policy \
  --role-name my_role_name \
  --policy-name secret_reader_policy \
  --policy-document '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1",
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"
                }
            }
        }
    ]
}'
```

Com o perfil e as permissões do IAM configurados, agora você pode criar um proxy e associá-lo a esse perfil. Isso permite que o proxy recupere seguramente as credenciais do banco de dados por meio do AWS Secrets Manager e habilite a autenticação do IAM para suas aplicações. Para instruções, consulte [Criar um proxy para o Amazon RDS](rds-proxy-creating.md).

# Criar um proxy para o Amazon RDS
<a name="rds-proxy-creating"></a>

É possível associar um proxy a uma instância de banco de dados do RDS para MariaDB, do RDS para Microsoft SQL Server, do RDS para MySQL ou do RDS para PostgreSQL. 

## Console
<a name="rds-proxy-creating.console"></a>

**Como criar um proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Proxies**. 

1. Escolha **Create proxy (Criar proxy)**. 

1. Defina as configurações de proxy a seguir.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy-creating.html)

1.  Escolha **Create proxy (Criar proxy)**. 

## AWS CLI
<a name="rds-proxy-creating.CLI"></a>

 Para criar um proxy utilizando a AWS CLI, chame o comando [create-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-proxy.html) com os seguintes parâmetros obrigatórios: 
+ `--db-proxy-name`
+ `--engine-family`
+ `--role-arn`
+ `--vpc-subnet-ids`

O valor `--engine-family` diferencia letras maiúsculas de minúsculas.

**Example**  
Para Linux, macOS ou Unix:  

```
aws rds create-db-proxy \
    --db-proxy-name proxy_name \
    --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \
    --role-arn iam_role \
    --vpc-subnet-ids space_separated_list \
    [--default-auth-scheme { NONE | IAM_AUTH }] \
    [--auth ProxyAuthenticationConfig_JSON_string] \
    [--vpc-security-group-ids space_separated_list] \
    [--require-tls | --no-require-tls] \
    [--idle-client-timeout value] \
    [--debug-logging | --no-debug-logging] \
    [--endpoint-network-type { IPV4 | IPV6 | DUAL }] \
    [--target-connection-network-type { IPV4 | IPV6 }] \
    [--tags comma_separated_list]
```
Para Windows:  

```
aws rds create-db-proxy ^
    --db-proxy-name proxy_name ^
    --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^
    --role-arn iam_role ^
    --vpc-subnet-ids space_separated_list ^
    [--default-auth-scheme { NONE | IAM_AUTH }] ^
    [--auth ProxyAuthenticationConfig_JSON_string] ^
    [--vpc-security-group-ids space_separated_list] ^
    [--require-tls | --no-require-tls] ^
    [--idle-client-timeout value] ^
    [--debug-logging | --no-debug-logging] ^
    [--endpoint-network-type { IPV4 | IPV6 | DUAL }] ^
    [--target-connection-network-type { IPV4 | IPV6 }] ^
    [--tags comma_separated_list]
```

Veja a seguir um exemplo do valor JSON da opção `--auth`. Este exemplo aplica um tipo de autenticação de cliente diferente a cada segredo.

```
[
  {
    "Description": "proxy description 1",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab",
    "IAMAuth": "DISABLED",
    "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256"
  },
  
  {
    "Description": "proxy description 2",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:secret/1234abcd-12ab-34cd-56ef-1234567890cd",
    "IAMAuth": "DISABLED",
    "ClientPasswordAuthType": "POSTGRES_MD5"
    
  },
  
  {
    "Description": "proxy description 3",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef",
    "IAMAuth": "REQUIRED"
  }
  
]
```

O parâmetro `--endpoint-network-type` especifica a versão do IP do endpoint de proxy que os clientes usam para se conectar ao proxy. Os valores válidos são:
+ `IPV4`: o endpoint de proxy usa somente endereços IPv4 (padrão).
+ `IPV6`: o endpoint de proxy usa somente endereços IPv6.
+ `DUAL`: o endpoint de proxy comporta endereços IPv4 e IPv6.

O parâmetro `--target-connection-network-type` especifica a versão do IP que o proxy usa para se conectar ao banco de dados de destino. Os valores válidos são:
+ `IPV4`: o proxy se conecta ao banco de dados usando endereços IPv4 (padrão).
+ `IPV6`: o proxy se conecta ao banco de dados usando endereços IPv6.

Para usar tipos de rede de endpoint IPv6 ou de pilha dupla, sua VPC e sub-redes devem ser configuradas para comportar o tipo de rede selecionado. Para usar o tipo de rede de conexão de destino IPv6, seu banco de dados deve comportar o modo de pilha dupla.

**dica**  
 Se você ainda não souber os IDs de sub-rede que serão usados para o parâmetro `--vpc-subnet-ids`, consulte [Configurar os pré-requisitos de rede para o RDS Proxy](rds-proxy-network-prereqs.md) para obter exemplos de como encontrá-los. 

**nota**  
O grupo de segurança deve permitir acesso ao banco de dados ao qual o proxy se conecta. O mesmo grupo de segurança é usado para entrada das aplicações para o proxy e para saída do proxy para o banco de dados. Por exemplo, suponha que você use o mesmo grupo de segurança para o banco de dados e o proxy. Nesse caso, especifique que os recursos nesse grupo de segurança podem se comunicar com outros recursos no mesmo grupo de segurança.  
Ao usar uma VPC compartilhada, você não pode usar o grupo de segurança padrão para a VPC ou um grupo de segurança pertencente a outra conta. Escolha um grupo de segurança que pertença à sua conta. Se não houver, crie um. Para ter mais informações sobre essa limitação, consulte [Trabalhar com VPCs compartilhadas](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html#vpc-share-limitations). 

 Para criar as associações corretas para o proxy, também é possível usar o comando [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html). Especificar o nome do grupo de destino do `default`. O proxy do RDS cria automaticamente um grupo de destino com este nome ao criar cada proxy. 

```
aws rds register-db-proxy-targets
    --db-proxy-name value
    [--target-group-name target_group_name]
    [--db-instance-identifiers space_separated_list]  # rds db instances, or
    [--db-cluster-identifiers cluster_id]        # rds db cluster (all instances)
```

## API do RDS
<a name="rds-proxy-creating.API"></a>

 Para criar um proxy do RDS , chame a operação [CreateDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBProxy.html) da API do Amazon RDS. Passe um parâmetro com a estrutura de dados [AuthConfig](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AuthConfig.html). 

 O proxy do RDS cria automaticamente um grupo de destino chamado `default` ao criar cada proxy. Associe uma instância de banco de dados do RDS ao grupo de destino chamando a função [RegisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html). 

**Importante**  
Quando você seleciona a **autenticação do IAM** para o esquema de autenticação padrão:  
Você deve habilitar a autenticação do banco de dados do IAM em suas instâncias ou clusters de banco de dados de destino para que o proxy possa se conectar com êxito.
Se você escolher **Criar perfil do IAM**, o campo **Contas de banco de dados para autenticação do IAM** será obrigatório.
Se você selecionar um perfil do IAM existente, o console não atualizará automaticamente o perfil com as permissões de conexão do banco de dados. Confira se o perfil tem as permissões `rds-db:connect` necessárias.

# Visualizar um proxy
<a name="rds-proxy-viewing"></a>

 Depois de criar um ou mais proxies do RDS, você pode visualizá-los e gerenciá-los no Console de gerenciamento da AWS, na AWS CLI ou na API do RDS. É possível analisar seus detalhes de configuração, monitorar a performance e determinar quais proxies devem ser modificados ou excluídos, conforme necessário.

Para possibilitar que as aplicações de banco de dados direcionem o tráfego por meio de um proxy, é necessário especificar o endpoint do proxy na string de conexão.

## Console
<a name="rds-proxy-viewing.console"></a>

**Como visualizar um proxy no console**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Proxies**. 

1. Selecione o nome do proxy para visualizar os detalhes. 

1. Na página de detalhes, a seção **Grupos de destino** mostra como o proxy está vinculado a uma instância de banco de dados específica do RDS. É possível acessar a página do grupo de destino padrão para ter uma visão mais detalhada dessa associação, incluindo as configurações definidas durante a criação do proxy. Essas configurações incluem a porcentagem máxima de conexão, o tempo-limite de empréstimo da conexão, a família de mecanismos e os filtros de fixação de sessão.

## CLI
<a name="rds-proxy-viewing.cli"></a>

 Para visualizar o proxy usando a CLI, use o comando [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). Por padrão, a solicitação exibe todos os proxies pertencentes à sua conta da AWS. Para ver detalhes de um único proxy, especifique o nome dele com o parâmetro `--db-proxy-name`. 

```
aws rds describe-db-proxies [--db-proxy-name proxy_name]
```

 Para visualizar as outras informações associadas ao proxy, use os comandos a seguir. 

```
aws rds describe-db-proxy-target-groups  --db-proxy-name proxy_name

aws rds describe-db-proxy-targets --db-proxy-name proxy_name
```

 Use a seguinte sequência de comandos para ver mais detalhes sobre as coisas associadas ao proxy: 

1.  Para obter uma lista de proxies, execute [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). 

1.  Para mostrar parâmetros de conexão, como a porcentagem máxima de conexões que o proxy pode usar, execute [describe-db-proxy-target-groups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-target-groups.html) `--db-proxy-name`. Use o nome do proxy como o valor do parâmetro. 

1.  Para ver os detalhes da instância de banco de dados do RDS associada ao grupo de destino exibido, execute [describe-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-targets.html). 

## API do RDS
<a name="rds-proxy-viewing.api"></a>

 Para visualizar seus proxies usando a API do RDS, use a operação [DescribeDBProxies](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxies.html). Ela retorna valores do tipo de dados [DBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBProxy.html). 

 Para ver detalhes das configurações de conexão do proxy, use os identificadores de proxy desse valor de retorno com a operação [DescribeDBProxyTargetGroups](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxyTargetGroups.html). Ela retorna valores do tipo de dados [DBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBProxyTargetGroup.html). 

 Para ver a instância do RDS ou o cluster de bancos de dados Aurora associado ao proxy, use a operação [DescribeDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxyTargets.html). Ela retorna valores do tipo de dados [DBProxyTarget](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DBProxyTarget.html). 

# Conectar-se a um banco de dados pelo RDS Proxy
<a name="rds-proxy-connecting"></a>

A maneira de se conectar a uma instância de banco de dados do RDS por meio de um proxy ou se conectar ao banco de dados, em geral, é a mesma. Para ter mais informações, consulte [Visão geral dos endpoints de proxy](rds-proxy-endpoints.md#rds-proxy-endpoints-overview). 

**Topics**
+ [

## Conectar-se a um banco de dados usando credenciais de banco de dados
](#rds-proxy-connecting-native)
+ [

## Conectar-se a um banco de dados usando autenticação do IAM
](#rds-proxy-connecting-iam)
+ [

## Considerações sobre como se conectar ao Microsoft SQL Server
](#rds-proxy-connecting-sqlserver)
+ [

## Considerações sobre como se conectar ao PostgreSQL
](#rds-proxy-connecting-postgresql)

## Conectar-se a um banco de dados usando credenciais de banco de dados
<a name="rds-proxy-connecting-native"></a>

 Use as seguintes etapas para se conectar a um proxy usando as credenciais de banco de dados: 

1.  Localize o endpoint do proxy. No Console de gerenciamento da AWS, você pode encontrar o endpoint na página de detalhes do proxy correspondente. Com a AWS CLI, é possível usar o comando [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). O exemplo a seguir mostra como. 

   ```
   # Add --output text to get output as a simple tab-separated list.
   $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}'
   [
       [
           {
               "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy"
           },
           {
               "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy-other-secret"
           },
           {
               "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy-rds-secret"
           },
           {
               "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com",
               "DBProxyName": "the-proxy-t3"
           }
       ]
   ]
   ```

1.  Especifique o endpoint como o parâmetro host na string de conexão da aplicação cliente. Por exemplo, especifique o endpoint do proxy como o valor da opção `mysql -h` ou da opção `psql -h`. 

1.  Forneça o mesmo nome de usuário e senha do banco de dados como o faz normalmente. 

## Conectar-se a um banco de dados usando autenticação do IAM
<a name="rds-proxy-connecting-iam"></a>

 Ao usar a autenticação do IAM com o RDS Proxy, você tem duas opções de autenticação entre o cliente e o proxy:
+ Configure os usuários do banco de dados para fazer a autenticação com nomes de usuário e senhas regulares. O RDS Proxy recupera as credenciais de nome de usuário e senha do Secrets Manager. A conexão do proxy do RDS com o banco de dados subjacente não passa pelo IAM.
+ Você também pode usar a autenticação de ponta a ponta do IAM, que se conecta ao seu banco de dados por meio do proxy usando o IAM sem exigir credenciais de banco de dados.

 Para conectar-se ao RDS Proxy usando a autenticação do IAM, siga o mesmo procedimento de conexão geral utilizado na autenticação do IAM com uma instância de banco de dados do RDS. Para obter mais informações sobre como usar a IAM, consulte [Segurança no Amazon RDS](UsingWithRDS.md). Se você estiver usando a autenticação de ponta a ponta do IAM, forneça o plug-in de autenticação do IAM ao seu usuário de banco de dados. Consulte [Criar uma conta de banco de dados usando autenticação do IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

 As principais diferenças no uso do IAM para o proxy do RDS incluem o seguinte: 
+ Com a autenticação padrão do IAM, os usuários do banco de dados têm credenciais normais no banco de dados. Você configura segredos do Secrets Manager contendo esses nomes de usuário e senhas e autoriza o proxy do RDS a recuperar as credenciais do Secrets Manager. A autenticação do IAM aplica-se à conexão entre o programa cliente e o proxy. Depois, o proxy faz a autenticação no banco de dados usando as credenciais de nome de usuário e senha recuperadas pelo Secrets Manager.
+ Com a autenticação de ponta a ponta do IAM, você não precisa configurar segredos do Secrets Manager para credenciais de banco de dados. A autenticação do IAM aplica-se à conexão entre o cliente e o proxy e entre o proxy e o banco de dados.
+ Em vez da instância, do cluster ou do endpoint de leitor, especifique o endpoint do proxy. Para obter detalhes sobre o endpoint do proxy, consulte [Conectar-se à instância de banco de dados usando a autenticação do IAM](UsingWithRDS.IAMDBAuth.Connecting.md).
+ Certifique-se de usar os protocolos Transport Layer Security (TLS)/Secure Sockets Layer (SSL) ao se conectar a um proxy usando a autenticação do IAM.

É possível conceder a um usuário específico acesso ao proxy modificando a política do IAM. Veja a seguir um exemplo.

```
"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"
```

**dica**  
Ao configurar a autenticação do IAM para conexões do RDS Proxy, siga estas diretrizes importantes para evitar problemas de conexão:  
Não conceda o perfil `rds_iam` enquanto mantém a autenticação geral por senha para o mesmo usuário ou perfil do banco de dados.
Lembre-se de que, embora os clientes se conectem ao RDS Proxy usando a autenticação do IAM, o RDS Proxy sempre se conecta ao banco de dados usando a autenticação por senha por meio do Secrets Manager.
Se você tiver encerramentos e novas conexões frequentes, remova todas as concessões `rds_iam` existentes do usuário ou do perfil e use somente a autenticação por senha.
Garanta que sua política de senha atenda aos requisitos de caracteres seguros SCRAM-SHA-256.
Combinar métodos de autenticação do IAM e senha para o mesmo usuário do banco de dados pode causar instabilidade na conexão.

## Considerações sobre como se conectar ao Microsoft SQL Server
<a name="rds-proxy-connecting-sqlserver"></a>

Para se conectar a um proxy usando a autenticação do IAM, você não usa o campo de senha. Em vez disso, você fornece a propriedade de token apropriada para cada tipo de driver de banco de dados no campo token. Por exemplo, use a propriedade `accessToken` para JDBC ou a propriedade `sql_copt_ss_access_token` para ODBC. Ou use a propriedade `AccessToken` do driver .NET SqlClient. Você não pode usar a autenticação do IAM com clientes que não sejam compatíveis com as propriedades do token.

Em algumas condições, um proxy não pode compartilhar uma conexão de banco de dados e, em vez disso, fixa a conexão de sua aplicação cliente ao proxy em uma conexão de banco de dados dedicada. Para ter mais informações sobre essas condições, consulte [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md).

## Considerações sobre como se conectar ao PostgreSQL
<a name="rds-proxy-connecting-postgresql"></a>

Se você criar um usuário de banco de dados PostgreSQL para se conectar ao RDS Proxy, conceda a ele o privilégio `CONNECT` no banco de dados. Sem isso, o usuário não poderá estabelecer uma conexão. Para ter mais informações, consulte [Adicionar um novo usuário de banco de dados a um banco de dados do PostgreSQL ao usar o RDS Proxy](rds-proxy-new-db-user.md#rds-proxy-new-db-user-pg).

Quando um cliente inicia uma conexão com um banco de dados PostgreSQL, ele envia uma mensagem de inicialização. Essa mensagem inclui pares de strings de caracteres de nome e valor do parâmetro. Para obter mais detalhes, consulte o `StartupMessage` em [PostgreSQL Message Formats](https://www.postgresql.org/docs/current/protocol-message-formats.html) na documentação do PostgreSQL. 

Ao se conectar por meio de um proxy do RDS, a mensagem de inicialização pode incluir os seguintes parâmetros reconhecidos atualmente: 
+  `user` 
+  `database`

 A mensagem de inicialização também pode incluir os seguintes parâmetros de tempo de execução adicionais: 
+ `[application\$1name](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-APPLICATION-NAME) `
+ `[client\$1encoding](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-CLIENT-ENCODING) `
+ `[DateStyle](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DATESTYLE) `
+ `[TimeZone](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-TIMEZONE) `
+  `[extra\$1float\$1digits](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS) `
+  `[ search\$1path ](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SEARCH-PATH)` 

 Para ter mais informações sobre sistemas de mensagens PostgreSQL, consulte [Frontend/Backend Protocol](https://www.postgresql.org/docs/current/protocol.html) na documentação do PostgreSQL.

 Para o PostgreSQL, se você usar JDBC, recomendamos o seguinte para evitar a fixação:
+ Defina o parâmetro de conexão JDBC `assumeMinServerVersion` como pelo menos `9.0` para evitar a fixação. Isso impede que o driver JDBC execute uma viagem de ida e volta adicional durante a inicialização da conexão quando ele executa `SET extra_float_digits = 3`. 
+ Defina o parâmetro de conexão JDBC `ApplicationName` como `any/your-application-name` para evitar a fixação. Isso impede que o driver JDBC execute uma viagem de ida e volta adicional durante a inicialização da conexão quando ele executa `SET application_name = "PostgreSQL JDBC Driver"`. Observe que o parâmetro JDBC é `ApplicationName`, mas o parâmetro `StartupMessage` do PostgreSQL é `application_name`.

Para ter mais informações, consulte [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md). Para ter mais informações sobre como se conectar usando JDBC, consulte [Connecting to the Database](https://jdbc.postgresql.org/documentation/setup/) na documentação do PostgreSQL.

# Gerenciar um RDS Proxy
<a name="rds-proxy-managing"></a>

 Esta seção fornece informações sobre como gerenciar a operação e a configuração do RDS Proxy. Esses procedimentos ajudam a aplicação a fazer o uso mais eficiente de conexões de banco de dados e alcançar o máximo de reutilização de conexão. Quanto mais você puder aproveitar a reutilização de conexões, poderá economizar mais sobrecarga de CPU e de memória. Isso, por sua vez, reduz a latência da aplicação e permite que o banco de dados dedique mais de seus recursos ao processamento de solicitações da aplicação. 

**Topics**
+ [

# Modificar um RDS Proxy
](rds-proxy-modifying-proxy.md)
+ [

# Adicionar um novo usuário de banco de dados ao usar o RDS Proxy
](rds-proxy-new-db-user.md)
+ [

# Migrar da autenticação padrão do IAM para a autenticação de ponta a ponta do IAM para o RDS Proxy
](rds-proxy-iam-migration.md)
+ [

# Considerações sobre a conexão do RDS Proxy
](rds-proxy-connections.md)
+ [

# Evitar a fixação de um RDS Proxy
](rds-proxy-pinning.md)
+ [

# Excluir um RDS Proxy
](rds-proxy-deleting.md)

# Modificar um RDS Proxy
<a name="rds-proxy-modifying-proxy"></a>

 Você pode alterar determinadas configurações associadas a um proxy depois de criar o proxy. Faça isso modificando o próprio proxy, seu grupo de destino associado ou ambos. Cada proxy tem um grupo de destino associado. 

## Console de gerenciamento da AWS
<a name="rds-proxy-modifying-proxy.console"></a>

**Importante**  
Os valores nos campos **Client authentication type** (Tipo de autenticação do cliente) e **IAM authentication** (Autenticação do IAM) se aplicam a todos os segredos do Secrets Manager associados a esse proxy. Para especificar valores diferentes para cada segredo, modifique seu proxy usando a AWS CLI ou a API.

**Como modificar as configurações de um proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  No painel de navegação, escolha **Proxies**. 

1.  Na lista de proxies, escolha o proxy cujas configurações você deseja modificar ou vá para sua página de detalhes. 

1.  Para **Actions (Ações)**, escolha **Modify (Modificar)**. 

1.  Insira ou escolha as propriedades a serem modificadas. Você pode modificar o seguinte: 
   +  **Proxy identifier** (Identificador de proxy): renomeie o proxy inserindo um novo identificador. 
   +  **Idle client connection timeout** (Tempo limite da conexão do cliente ociosa): insira um período para o tempo limite da conexão do cliente ociosa. 
   +  **IAM role** (Perfil do IAM): altere o perfil do IAM usada para recuperar os segredos do Secrets Manager. 
**nota**  
Você não poderá criar um perfil do IAM se definir o **esquema de autenticação padrão** como **autenticação do IAM**.
   +  **Secrets Manager secrets** (Segredos do Secrets Manager): adicione ou remova segredos do Secrets Manager. Esses segredos correspondem a nomes de usuário e senhas de banco de dados. 
   +  **Tipo de autenticação de cliente**: altere o tipo de autenticação das conexões do cliente com o proxy. 
   +  **IAM Authentication** (Autenticação do IAM): exija ou desabilite a autenticação do IAM para conexões com o proxy. 
   +  **Esquema de autenticação padrão**: altere o esquema de autenticação padrão usado pelo proxy para conexões do cliente com o proxy e conexões do proxy com o banco de dados subjacente. 
   +  **Require Transport Layer Security** (Exija Transport Layer Security): ative ou desative o requisito de segurança do Transport layer Security (TLS). 
   +  **VPC grupo de segurança** (Grupos de segurança da VPC): adicione ou remova grupos de segurança da VPC para uso do proxy. 
   +  **Enable enhanced logging** (Habilite o registro em log aprimorado): habilite ou desabilite o registro em log aprimorado. 

1.  Selecione **Modify**. 

Se você não encontrou as configurações listadas que deseja alterar, use o procedimento a seguir para atualizar o grupo de destino para o proxy. O *grupo de destino* associado a um proxy controla as configurações relacionadas às conexões físicas do banco de dados. Cada proxy tem um grupo de destino associado, chamado `default`, que é criado automaticamente com o proxy. Não é possível renomear o grupo de destino padrão.

 Você só pode modificar o grupo de destino na página de detalhes do proxy, não na lista da página **Proxies**. 

**Como modificar as configurações de um grupo de destino de proxy**

1.  Na página **Proxies**, acesse a página de detalhes de um proxy. 

1.  Em **Target groups (Grupos de destino)**, escolha o link `default`. Atualmente, todos os proxies têm um único grupo de destino chamado `default`. 

1.  Na página de detalhes do grupo de destino **default (padrão)** escolha **Modify (Modificar)**. 

1.  Escolha novas configurações para as propriedades que você pode modificar: 
   +  **Banco de dados**: escolha outra instância de banco de dados do RDS ou outro cluster. 
   +  **Connection pool maximum connections** (Conexões máximas do grupo de conexões): ajuste a porcentagem das conexões máximas disponíveis que o proxy pode usar. 
   +  **Session pinning filters** (Filtros de fixação de sessões): (opcional) escolha um filtro de fixação de sessões. Isso contorna as medidas de segurança padrão para multiplexar conexões de banco de dados entre conexões de clientes. No momento, a configuração não é compatível com o PostgreSQL. A única opção é `EXCLUDE_VARIABLE_SETS`. 

     Habilitar essa configuração pode fazer com que as variáveis da sessão de uma conexão afetem outras conexões. Isso pode causar erros ou problemas de correção se suas consultas dependerem dos valores das variáveis de sessão definidos fora da transação atual. Considere a possibilidade de usar essa opção depois de verificar se é seguro as aplicações compartilharem conexões de banco de dados entre conexões de clientes.

     Os seguintes padrões podem ser considerados seguros:
     + Instruções `SET` em que não há alteração no valor efetivo da variável de sessão; isto é, não há alteração na variável de sessão.
     + Você altera o valor da variável de sessão e executa uma instrução na mesma transação.

     Para ter mais informações, consulte [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md). 
   +  **Connection borrow timeout** (Tempo limite do empréstimo de conexões): ajuste o intervalo do tempo limite de empréstimo de conexões. Essa configuração se aplica quando o número máximo de conexões já está sendo usado para o proxy. A configuração determina quanto tempo o proxy espera que uma conexão fique disponível antes de retornar um erro de tempo limite. 
   + **Consulta de inicialização**. (Opcional) Adicione uma consulta de inicialização ou modifique a atual. Você pode especificar uma ou mais instruções SQL para o proxy executar ao abrir cada nova conexão de banco de dados. A configuração normalmente é usada com instruções `SET` para garantir que cada conexão tenha configurações idênticas. Verifique se a consulta adicionada é válida. Para incluir diversas variáveis em uma única instrução `SET`, use vírgulas como separadores. Por exemplo:

     ```
     SET variable1=value1, variable2=value2
     ```

     Para várias instruções, use um ponto e vírgula como separador.

    Não é possível alterar determinadas propriedades, como o identificador do grupo de destino e o mecanismo de banco de dados. 

1.  Escolha **Modify target group (Modificar grupo de destino)**. 

## AWS CLI
<a name="rds-proxy-modifying-proxy.cli"></a>

 Para modificar um proxy usando a AWS CLI, use os comandos [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html), [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html), [deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html) e [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html). 

 Com o comando `modify-db-proxy`, é possível alterar propriedades como as seguintes: 
+  O conjunto de segredos do Secrets Manager usados pelo proxy. 
+  Se o TLS é necessário. 
+  O tempo limite do cliente ocioso. 
+  Se deseja registrar em log informações adicionais de instruções SQL para depuração. 
+  O perfil do IAM usada para recuperar segredos do Secrets Manager. 
+  Os grupos de segurança usados pelo proxy. 
+ O esquema de autenticação padrão associado ao proxy.

 O exemplo a seguir mostra como renomear um proxy existente. 

```
aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name
```

Para modificar configurações relacionadas à conexão ou renomear o grupo de destino, use o comando `modify-db-proxy-target-group`. Atualmente, todos os proxies têm um único grupo de destino chamado `default`. Ao trabalhar com esse grupo de destino, especifique o nome do proxy e `default` para o nome do grupo de destino. Não é possível renomear o grupo de destino padrão.

 O exemplo a seguir mostra como verificar primeiro a configuração de `MaxIdleConnectionsPercent` de um proxy e alterá-la usando o grupo de destino. 

```
aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy

{
    "TargetGroups": [
        {
            "Status": "available",
            "UpdatedDate": "2019-11-30T16:49:30.342Z",
            "ConnectionPoolConfig": {
                "MaxIdleConnectionsPercent": 50,
                "ConnectionBorrowTimeout": 120,
                "MaxConnectionsPercent": 100,
                "SessionPinningFilters": []
            },
            "TargetGroupName": "default",
            "CreatedDate": "2019-11-30T16:49:27.940Z",
            "DBProxyName": "the-proxy",
            "IsDefault": true
        }
    ]
}

aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config '
{ "MaxIdleConnectionsPercent": 75 }'

{
    "DBProxyTargetGroup": {
        "Status": "available",
        "UpdatedDate": "2019-12-02T04:09:50.420Z",
        "ConnectionPoolConfig": {
            "MaxIdleConnectionsPercent": 75,
            "ConnectionBorrowTimeout": 120,
            "MaxConnectionsPercent": 100,
            "SessionPinningFilters": []
        },
        "TargetGroupName": "default",
        "CreatedDate": "2019-11-30T16:49:27.940Z",
        "DBProxyName": "the-proxy",
        "IsDefault": true
    }
}
```

 Com os comandos `deregister-db-proxy-targets` e `register-db-proxy-targets`, você altera a quais instâncias de banco de dados do RDS o proxy está associado por meio de seu grupo de destino. No momento, cada proxy pode se conectar a uma instância de banco de dados do RDS. O grupo de destino controla os detalhes da conexão de todas as instâncias de banco de dados do RDS em uma configuração multi-AZ.

 O exemplo a seguir começa com um proxy associado a um cluster do Aurora MySQL chamado `cluster-56-2020-02-25-1399`. O exemplo mostra como alterar o proxy para que ele possa se conectar a outro cluster chamado `provisioned-cluster`. 

 Ao trabalhar com uma instância de banco de dados do RDS, você especifica a opção `--db-instance-identifier`. 

 O exemplo a seguir modifica um proxy Aurora MySQL. Um proxy Aurora PostgreSQL tem a porta 5432. 

```
aws rds describe-db-proxy-targets --db-proxy-name the-proxy

{
    "Targets": [
        {
            "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-9814"
        },
        {
            "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-8898"
        },
        {
            "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-1018"
        },
        {
            "Type": "TRACKED_CLUSTER",
            "Port": 0,
            "RdsResourceId": "cluster-56-2020-02-25-1399"
        },
        {
            "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-4330"
        }
    ]
}

aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399

aws rds describe-db-proxy-targets --db-proxy-name the-proxy

{
    "Targets": []
}

aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster

{
    "DBProxyTargets": [
        {
            "Type": "TRACKED_CLUSTER",
            "Port": 0,
            "RdsResourceId": "provisioned-cluster"
        },
        {
            "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "gkldje"
        },
        {
            "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "provisioned-1"
        }
    ]
}
```

## API do RDS
<a name="rds-proxy-modifying-proxy.api"></a>

 Para modificar um proxy utilizando a API do RDS, utilize as operações [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html), [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html), [DeregisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html) e [RegisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html). 

 Com `ModifyDBProxy`, é possível alterar propriedades como as seguintes: 
+  O conjunto de segredos do Secrets Manager usados pelo proxy. 
+  Se o TLS é necessário. 
+  O tempo limite do cliente ocioso. 
+  Se deseja registrar em log informações adicionais de instruções SQL para depuração. 
+  O perfil do IAM usada para recuperar segredos do Secrets Manager. 
+  Os grupos de segurança usados pelo proxy. 

Com `ModifyDBProxyTargetGroup`, é possível modificar as configurações relacionadas à conexão. Atualmente, todos os proxies têm um único grupo de destino chamado `default`. Ao trabalhar com esse grupo de destino, especifique o nome do proxy e `default` para o nome do grupo de destino. Não é possível renomear o grupo de destino padrão.

 Com `DeregisterDBProxyTargets` e `RegisterDBProxyTargets`, altere a qual instância de banco de dados do RDS o proxy está associado por meio do grupo de destino. Atualmente, cada proxy pode se conectar a uma instância de banco de dados do RDS. O grupo de destino monitora os detalhes da conexão das instâncias de banco de dados do RDS em uma configuração multi-AZ . 

# Adicionar um novo usuário de banco de dados ao usar o RDS Proxy
<a name="rds-proxy-new-db-user"></a>

Em alguns casos, é possível adicionar um novo usuário de banco de dados a uma instância de banco de dados do RDS ou um cluster com associação a um proxy. Prossiga dependendo se você estiver usando a autenticação padrão com segredos do Secrets Manager ou a autenticação de ponta a ponta do IAM.

Se você estiver usando a autenticação padrão do IAM, siga estas instruções:

1. Crie um segredo do Secrets Manager usando o procedimento descrito em [Configurar credenciais de banco de dados para RDS Proxy](rds-proxy-secrets-arns.md). 

1. Atualize o perfil do IAM para conceder ao proxy do RDS acesso ao novo segredo do Secrets Manager. Para fazer isso, atualize a seção de recursos da política de perfil do IAM. 

1. Modifique o RDS Proxy para adicionar o novo segredo do Secrets Manager em **Segredos do Secrets Manager**.

1.  Se o novo usuário tomar o lugar de um existente, atualize as credenciais armazenadas no segredo do Secrets Manager do proxy do usuário existente. 

Se você estiver usando a autenticação de ponta a ponta do IAM, precisará criar o usuário do banco de dados e configurar as permissões do IAM. Para isso, siga estas etapas:

1. Crie um usuário em seu banco de dados que corresponda ao nome de usuário ou perfil do IAM que você deseja usar para autenticação.

1. O usuário do banco de dados deve estar configurado com o plug-in de autenticação do IAM no banco de dados. Consulte [Criar uma conta de banco de dados usando autenticação do IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

1. Atualize a política do IAM para conceder a permissão `rds-db:connect` ao usuário ou ao perfil do IAM, conforme descrito em [Criar uma política do IAM para a autenticação de ponta a ponta do IAM](rds-proxy-iam-setup.md#rds-proxy-iam-setup-e2e-steps).

1. Seu proxy deve estar configurado para usar a autenticação do IAM como o esquema de autenticação padrão.

Com a autenticação de ponta a ponta do IAM, você não precisa gerenciar as credenciais do banco de dados nos segredos do Secrets Manager, pois as credenciais do IAM são usadas para autenticação do cliente para o proxy e do proxy para o banco de dados. 

## Adicionar um novo usuário de banco de dados a um banco de dados do PostgreSQL ao usar o RDS Proxy
<a name="rds-proxy-new-db-user-pg"></a>

Ao adicionar um novo usuário ao banco de dados do PostgreSQL, se você tiver executado o seguinte comando:

```
REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;
```

Conceda ao usuário `rdsproxyadmin` o privilégio `CONNECT` para que ele possa monitorar as conexões no banco de dados de destino. 

```
GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;
```

Também é possível permitir que outros usuários do banco de dados de destino realizem verificações de integridade mudando `rdsproxyadmin` para o usuário do banco de dados no comando acima.

## Alterar a senha de um usuário de banco de dados ao usar o RDS Proxy
<a name="rds-proxy-changing-db-user-password"></a>

Em alguns casos, você pode alterar a senha de um usuário de banco de dados em uma instância de banco de dados do RDS com associação a um proxy. Nesse caso, atualize o segredo do Secrets Manager correspondente com a nova senha.

Se você estiver usando a autenticação de ponta a ponta do IAM, não precisará atualizar nenhuma senha nos segredos do Secrets Manager.

# Migrar da autenticação padrão do IAM para a autenticação de ponta a ponta do IAM para o RDS Proxy
<a name="rds-proxy-iam-migration"></a>

 Se atualmente você usa a autenticação do IAM padrão para RDS Proxy, em que os clientes se autenticam no proxy usando o IAM, mas o proxy se conecta ao banco de dados usando segredos, você pode migrar para a autenticação de ponta a ponta do IAM, na qual as conexões cliente-para-proxy e proxy-para-banco de dados usam a autenticação do IAM. 

**Como migrar para a autenticação de ponta a ponta do IAM**

1. **Atualizar as permissões do perfil do IAM para RDS Proxy**

   Crie uma política de permissão de proxy atualizada que inclua o Secrets Manager e permissões `rds:db-connect`:

   ```
   # Create updated proxy permission policy
   cat > updated-proxy-policy.json ≪ EOF
   ```

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "GetSecretsValue",
         "Action": [
           "secretsmanager:GetSecretValue"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-1234f"
         ]
       },
       {
         "Sid": "RdsDBConnect",
         "Action": [
           "rds-db:connect"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:rds-db:us-east-1:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe"
         ]
       }
     ]
   }
   ```

   Atualize a política de perfil do proxy:

   ```
   aws iam put-role-policy \
               --role-name RDSProxyRole \
               --policy-name UpdatedProxyPermissions \
               --policy-document file://updated-proxy-policy.json
   ```

1. Modificar o RDS Proxy para habilitar a autenticação de ponta a ponta do IAM

   ```
   aws rds modify-db-proxy \
     --db-proxy-name my-database-proxy \
     --default-auth-scheme IAM_AUTH \
     --region us-east-1
   ```

   Verifique se o status do Proxy RDS está **disponível** e `DefaultAuthScheme` é `IAM_AUTH` antes de continuar para garantir zero tempo de inatividade durante a migração.

   ```
   aws rds describe-db-proxies --db-proxy-name my-database-proxy --region us-east-1
   ```

   Saída esperada:

   ```
   {
     "DBProxies": [
       {
         "DBProxyName": "my-database-proxy",
         "DBProxyArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:prx-0123456789abcdef",
         "Status": "available",
         ...
         "DefaultAuthScheme": "IAM_AUTH"
       }
     ]
   }
   ```

1. Habilitar a autenticação do IAM no banco de dados

   ```
   aws rds modify-db-cluster \
     --db-cluster-identifier my-database-cluster \
     --enable-iam-database-authentication \
     --region us-east-1
   ```

1. Configurar o usuário do banco de dados para autenticação do IAM

   Para RDS para PostgreSQL:

   ```
   GRANT rds_iam TO jane_doe;
   ```

   Para RDS para MySQL e RDS para MariaDB:

   ```
   ALTER USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
   ALTER USER 'jane_doe'@'%' REQUIRE SSL;
   ```

1. O código da sua aplicação cliente não precisa mudar. O processo de conexão permanece o mesmo:

   Para RDS para PostgreSQL:

   ```
   # Generate authentication token
   export PGPASSWORD=$(aws rds generate-db-auth-token \
     --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     --port 5432 \
     --username jane_doe \
     --region us-east-1)
   
   # Connect to database through proxy
   psql "host=my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com port=5432 user=jane_doe dbname=postgres password=$PGPASSWORD sslmode=require sslrootcert=us-east-1-bundle.pem"
   ```

   Para RDS para MySQL e RDS para MariaDB:

   ```
   # Generate authentication token
   export MYSQL_PWD=$(aws rds generate-db-auth-token \
     --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     --port 3306 \
     --username jane_doe \
     --region us-east-1)
   
   # Connect to database through proxy
   mysql -h my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     -P 3306 \
     -u jane_doe \
     --ssl-ca=us-east-1-bundle.pem \
     --enable-cleartext-plugin
   ```

# Considerações sobre a conexão do RDS Proxy
<a name="rds-proxy-connections"></a>

## Configurar configurações de conexões
<a name="rds-proxy-connection-pooling-tuning"></a>

Para ajustar o grupo de conexões do RDS Proxy, você pode modificar as seguintes configurações:
+ [IdleClientTimeout](#rds-proxy-connection-pooling-tuning.idleclienttimeout)
+ [MaxConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxconnectionspercent)
+ [MaxIdleConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxidleconnectionspercent)
+ [ConnectionBorrowTimeout](#rds-proxy-connection-pooling-tuning.connectionborrowtimeout)

### IdleClientTimeout
<a name="rds-proxy-connection-pooling-tuning.idleclienttimeout"></a>

É possível especificar por quanto tempo uma conexão de cliente pode ficar antes que o proxy a feche. O padrão é de 1.800 segundos (30 minutos). 

Uma conexão de cliente é considerada *ociosa* quando a aplicação não envia uma nova solicitação dentro do tempo especificado após a conclusão da solicitação anterior. A conexão de banco de dados subjacente permanece aberta e é retornada ao grupo de conexões. Portanto, ela está disponível para ser reutilizada para novas conexões de cliente. Reduza o tempo limite de conexão do cliente ocioso se desejar que o proxy remova proativamente as conexões obsoletas. Se a workload estabelecer conexões frequentes com o proxy, aumente o tempo limite de conexão do cliente ocioso para reduzir o custo de estabelecimento de conexões.

Essa configuração é representada pelo **Tempo limite de conexão do cliente ocioso** no console do RDS e na configuração `IdleClientTimeout` na AWS CLI e a API. Para saber como alterar o valor do **Tempo limite de conexão do cliente ocioso** no console do RDS, consulte [Console de gerenciamento da AWS](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Para saber como alterar o valor da configuração `IdleClientTimeout`, use o comando da CLI [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html) ou a operação da API [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html).

### MaxConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxconnectionspercent"></a>

Você pode limitar o número de conexões que um Proxy RDS pode estabelecer com o banco de dados de destino. Você especifica o limite como uma porcentagem do máximo de conexões disponíveis para o banco de dados. Essa configuração é representada pelo campo **Connection pool maximum connections** (Número máximo de conexões para o grupo de conexões) no console do proxy do RDS ou pelo parâmetro `MaxConnectionsPercent` na AWS CLI e na API. 

O valor `MaxConnectionsPercent` é expresso como uma porcentagem da configuração `max_connections` da instância de banco de dados do RDS usada pelo grupo de destino. O proxy não cria todas essas conexões com antecedência. Essa configuração permite ao proxy estabelecer essas conexões conforme a necessidade da workload.

Por exemplo, para um destino de banco de dados registrado com `max_connections` definido como 1.000 e `MaxConnectionsPercent` definido como 95, o RDS Proxy define 950 conexões como o limite superior para conexões simultâneas com esse destino de banco de dados.

Um efeito colateral comum de sua workload atingir o número máximo de conexões de banco de dados permitidas é um aumento na latência geral da consulta, bem como um aumento na métrica `DatabaseConnectionsBorrowLatency`. Você pode monitorar as conexões de banco de dados usadas atualmente e o total permitido comparando as métricas `DatabaseConnections` e `MaxDatabaseConnectionsAllowed`.

Ao definir esse parâmetro, observe as seguintes práticas recomendadas:
+ Permita espaço de conexão suficiente para mudanças no padrão da workload. É recomendável definir o parâmetro pelo menos 30% acima do seu uso máximo monitorado recentemente. Como o RDS Proxy redistribui as cotas de conexão do banco de dados em vários nós, as mudanças na capacidade interna podem exigir pelo menos 30% de espaço livre para conexões adicionais, a fim de evitar o aumento das latências de empréstimo.
+ O RDS Proxy reserva um certo número de conexões para monitoramento ativo para comportar falhas rápidas, roteamento de tráfego e operações internas. A métrica `MaxDatabaseConnectionsAllowed` não inclui essas conexões reservadas. Ela representa o número de conexões disponíveis para atender à workload e pode ser menor do que o valor derivado da configuração `MaxConnectionsPercent`.

  Valores `MaxConnectionsPercent` mínimos recomendados
  + db.t3.small: 30
  + db.t3.medium ou superior: 20

Para saber como alterar o valor **Connection pool maximum connections** (Número máximo de conexões para o grupo de conexões) no console do RDS, consulte [Console de gerenciamento da AWS](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Para saber como alterar o valor de `MaxConnectionsPercent`, consulte o comando da CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) ou a operação da API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

 Para obter informações sobre os limites de conexões de banco de dados, consulte [Número máximo de conexões de banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections). 

### MaxIdleConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxidleconnectionspercent"></a>

Você pode controlar o número de conexões de banco de dados ociosas que o proxy do RDS pode manter no grupo de conexões. Por padrão, o RDS Proxy considera uma conexão de banco de dados no grupo como *ociosa* quando não há atividade na conexão por cinco minutos. 

O valor `MaxIdleConnectionsPercent` é expresso como uma porcentagem da configuração `max_connections` do grupo de destino da instância de banco de dados do RDS. O valor padrão é 50% de `MaxConnectionsPercent` e o limite superior é o valor de `MaxConnectionsPercent`. Por exemplo, se `MaxConnectionsPercent` for 80, o valor padrão de `MaxIdleConnectionsPercent` será 40. Se o valor de `MaxConnectionsPercent` não for especificado, para o SQL Server, `MaxIdleConnectionsPercent` será 5 e, para todos os outros mecanismos, o padrão será 50.

Com um valor alto, o proxy deixa uma alta porcentagem de conexões de banco de dados ociosas abertas. Com um valor baixo, o proxy fecha uma alta porcentagem de conexões de banco de dados ociosas. Se suas workloads forem imprevisíveis, considere definir um valor alto para `MaxIdleConnectionsPercent`. Isso significa que o RDS Proxy pode acomodar picos de atividade sem abrir muitas novas conexões de banco de dados. 

Essa configuração é representada pela configuração `MaxIdleConnectionsPercent` do `DBProxyTargetGroup` na AWS CLI e na API. Para saber como alterar o valor de `MaxIdleConnectionsPercent`, consulte o comando da CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) ou a operação da API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

 Para obter informações sobre os limites de conexões de banco de dados, consulte [Número máximo de conexões de banco de dados](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections). 

### ConnectionBorrowTimeout
<a name="rds-proxy-connection-pooling-tuning.connectionborrowtimeout"></a>

É possível especificar quanto tempo o proxy do RDS espera que uma conexão de banco de dados no grupo de conexão fique disponível antes de retornar um erro de tempo limite. O padrão é 120 segundos. Esta configuração se aplica quando o número de conexões está no máximo e, portanto, nenhuma conexão está disponível no grupo de conexões. Isso também se aplica caso nenhuma instância de banco de dados apropriada esteja disponível para lidar com a solicitação, por exemplo, quando uma operação de failover está em andamento. Usando essa configuração, é possível definir o melhor período de espera para a aplicação sem precisar alterar o tempo limite da consulta no código.

Essa configuração é representada pelo campo **Connection borrow timeout** (Tempo limite de empréstimo de conexões) no console do RDS ou pela configuração `ConnectionBorrowTimeout` de `DBProxyTargetGroup` na AWS CLI ou API. Para saber como alterar o valor do campo **Connection borrow timeout** (Tempo limite de empréstimo de conexões) no console do RDS, consulte [Console de gerenciamento da AWS](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Para saber como alterar o valor de `ConnectionBorrowTimeout`, consulte o comando da CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) ou a operação da API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

## Conexões de cliente e banco de dados
<a name="rds-proxy-connection-life"></a>

As conexões do seu aplicativo com o RDS Proxy são conhecidas como conexões de cliente. As conexões de um proxy com o banco de dados são conexões de banco de dados. Ao usar o RDS Proxy, as conexões do cliente terminam no proxy, enquanto as conexões do banco de dados são gerenciadas no RDS Proxy.

O grupo de conexões do lado da aplicação pode oferecer o benefício de reduzir o estabelecimento de conexão recorrente entre a aplicação e o RDS Proxy.

Pense nos seguintes aspectos de configuração antes de implementar um grupo de conexões do lado da aplicação:
+ Vida útil máxima da conexão do cliente: o RDS Proxy impõe uma vida útil máxima das conexões do cliente de 24 horas. Esse valor não é configurável. Configure o grupo com uma vida útil máxima de conexão inferior a 24 horas para evitar quedas inesperadas na conexão do cliente. 
+ Tempo limite de inatividade da conexão do cliente: o RDS Proxy impõe um tempo máximo de inatividade para as conexões do cliente. Configure seu pool com um tempo limite de conexão ociosa de um valor menor do que a configuração de tempo limite de inatividade da conexão do cliente para o RDS Proxy para evitar quedas inesperadas de conexão.

O número máximo de conexões de cliente configuradas no grupo de conexões do lado da aplicação não precisa ser limitado à configuração **max\$1connections** do RDS Proxy.

O grupo de conexões do cliente resulta em maior vida útil da conexão do cliente. Se suas conexões experimentarem fixação, o agrupamento de conexões de clientes pode reduzir a eficiência da multiplexação. As conexões de cliente fixas, mas ociosas, no grupo de conexões do lado da aplicação continuam mantendo uma conexão com o banco de dados e impedem que a conexão seja reutilizada por outras conexões do cliente. Analise os logs do proxy para conferir se as conexões estão sendo fixadas.

**nota**  
O proxy do RDS encerra as conexões com o banco de dados depois de 24 horas, quando elas não estiverem mais em uso. O proxy executa essa ação independentemente do valor da configuração máxima de conexões ociosas.

# Evitar a fixação de um RDS Proxy
<a name="rds-proxy-pinning"></a>

 A multiplexação é mais eficiente quando as solicitações de banco de dados não dependem de informações de estado de solicitações anteriores. Nesse caso, o proxy do RDS pode reutilizar uma conexão na conclusão de cada transação. Exemplos de tais informações de estado incluem a maioria das variáveis e parâmetros de configuração que você pode alterar por meio de instruções `SET` ou `SELECT`. Por padrão, as transações SQL em uma conexão de cliente podem multiplexar entre conexões de banco de dados subjacentes. 

 Suas conexões com o proxy podem entrar em um estado conhecido como *fixação*. Quando uma conexão é fixada, cada transação posterior usa a mesma conexão de banco de dados subjacente até que a sessão termine. Outras conexões de cliente também não podem reutilizar essa conexão de banco de dados até que a sessão termine. A sessão termina quando a conexão do cliente é descartada. 

 O proxy do RDS automaticamente fixa uma conexão de cliente a uma conexão de banco de dados específica quando detecta uma alteração no estado de sessão que não é apropriada para outras sessões. A fixação reduz a eficácia da reutilização de conexões. Se todas ou quase todas as suas conexões forem fixadas, considere modificar o código da aplicação ou a workload para reduzir as condições que provocam a fixação. 

Por exemplo, a aplicação altera uma variável de sessão ou um parâmetro de configuração. Nesse caso, as declarações posteriores poderão contar que a nova variável ou parâmetro estará em vigor. Assim, quando o proxy do RDS processa solicitações para alterar variáveis ou definições da configuração da sessão, ele fixa essa sessão para a conexão com o banco de dados. Dessa forma, o estado da sessão permanece em vigor para todas as transações posteriores na mesma sessão. 

 Em alguns mecanismos de banco de dados, essa regra não se aplica a todos os parâmetros que você pode definir. O proxy do RDS monitora determinadas instruções e variáveis. Portanto, o RDS Proxy não fixa a sessão quando você as modifica. Nesse caso, o proxy do RDS apenas reutiliza a conexão para outras sessões que tenham os mesmos valores para essas configurações. Para obter detalhes sobre o que o RDS Proxy monitora para um mecanismo de banco de dados, consulte o seguinte: 
+ [O que o RDS Proxy monitora para bancos de dados do RDS para SQL Server](#rds-proxy-pinning.sql-server-tracked-vars)
+ [O que o RDS Proxy monitora para bancos de dados do RDS para MariaDB e o RDS para MySQL](#rds-proxy-pinning.mysql-tracked-vars)

## O que o RDS Proxy monitora para bancos de dados do RDS para SQL Server
<a name="rds-proxy-pinning.sql-server-tracked-vars"></a>

O RDS Proxy monitora as seguintes instruções do SQL Server:
+ `USE`
+ `SET ANSI_NULLS`
+ `SET ANSI_PADDING`
+ `SET ANSI_WARNINGS`
+ `SET ARITHABORT`
+ `SET CONCAT_NULL_YIELDS_NULL`
+ `SET CURSOR_CLOSE_ON_COMMIT`
+ `SET DATEFIRST`
+ `SET DATEFORMAT`
+ `SET LANGUAGE`
+ `SET LOCK_TIMEOUT`
+ `SET NUMERIC_ROUNDABORT`
+ `SET QUOTED_IDENTIFIER`
+ `SET TEXTSIZE`
+ `SET TRANSACTION ISOLATION LEVEL`

## O que o RDS Proxy monitora para bancos de dados do RDS para MariaDB e o RDS para MySQL
<a name="rds-proxy-pinning.mysql-tracked-vars"></a>

O RDS Proxy monitora as seguintes instruções do MariaDB e do MySQL:
+ DROP DATABASE
+ DROP SCHEMA
+ USE

O RDS Proxy monitora as seguintes variáveis do MySQL e do MariaDB:
+ `AUTOCOMMIT`
+ `AUTO_INCREMENT_INCREMENT`
+ `CHARACTER SET (or CHAR SET)`
+ `CHARACTER_SET_CLIENT`
+ `CHARACTER_SET_DATABASE`
+ `CHARACTER_SET_FILESYSTEM`
+ `CHARACTER_SET_CONNECTION`
+ `CHARACTER_SET_RESULTS`
+ `CHARACTER_SET_SERVER`
+ `COLLATION_CONNECTION`
+ `COLLATION_DATABASE`
+ `COLLATION_SERVER`
+ `INTERACTIVE_TIMEOUT`
+ `NAMES`
+ `NET_WRITE_TIMEOUT`
+ `QUERY_CACHE_TYPE`
+ `SESSION_TRACK_SCHEMA`
+ `SQL_MODE`
+ `TIME_ZONE`
+ `TRANSACTION_ISOLATION (or TX_ISOLATION)`
+ `TRANSACTION_READ_ONLY (or TX_READ_ONLY)`
+ `WAIT_TIMEOUT`

**nota**  
O RDS Proxy rastreia as alterações nas variáveis `TRANSACTION_ISOLATION` e `TRANSACTION_READ_ONLY` quando você as define no escopo da sessão. No entanto, se você defini-las no escopo da próxima transação, o RDS Proxy fixará as conexões. Esse comportamento se aplica independentemente de você usar uma instrução `SET` ou uma instrução `SET TRANSACTION` para configurar esses valores.

## Reduzir a fixação
<a name="rds-proxy-pinning.minimizing"></a>

 O ajuste de performance do proxy do RDS envolve a tentativa de maximizar a reutilização de conexões em nível de transação (multiplexação) minimizando a fixação. 

É possível reduzir a fixação da seguinte maneira: 
+  Evite solicitações de banco de dados desnecessárias que podem causar fixação. 
+  Defina variáveis e definições de configuração de forma consistente em todas as conexões. Dessa forma, as sessões posteriores têm mais probabilidade de reutilizar conexões que têm essas configurações específicas. 

   No entanto, para a configuração do PostgreSQL, uma variável leva à fixação da sessão. 
+  Para um banco de dados da família de mecanismos do MySQL, aplique um filtro de fixação de sessão ao proxy. Você pode isentar certos tipos de operações de fixar a sessão se souber que isso não afeta o funcionamento correto da aplicação. 
+  Veja com que frequência a fixação ocorre monitorando a métrica `DatabaseConnectionsCurrentlySessionPinned` do Amazon CloudWatch. Para obter informações sobre essa e outras métricas do CloudWatch, consulte [Monitorar métricas do proxy do RDS com o Amazon CloudWatchMonitorar o proxy do RDS com o CloudWatch](rds-proxy.monitoring.md). 
+  Se você usar instruções `SET` para executar uma inicialização idêntica para cada conexão de cliente, poderá fazê-lo enquanto preserva a multiplexação no nível de transação. Nesse caso, você move as instruções que configuram o estado da sessão inicial para a consulta de inicialização usada por um proxy. Esta propriedade é uma string que contém uma ou mais instruções SQL, separadas por ponto e vírgula. 

   Por exemplo, você pode definir uma consulta de inicialização para um proxy que define determinados parâmetros de configuração. O proxy do RDS aplica essas configurações sempre que configura uma nova conexão para esse proxy. Você pode remover as instruções `SET` correspondentes do código de sua aplicação, para que elas não interfiram na multiplexação em nível de transação. 

   Para ver métricas sobre a frequência com que a fixação ocorre para um proxy, consulte [Monitorar métricas do proxy do RDS com o Amazon CloudWatchMonitorar o proxy do RDS com o CloudWatch](rds-proxy.monitoring.md). 

## Condições que causam fixação para todas as famílias de mecanismos
<a name="rds-proxy-pinning.all"></a>

 O proxy fixa a sessão à conexão atual nas seguintes situações em que a multiplexação pode causar um comportamento inesperado: 
+ Qualquer instrução com um tamanho de texto maior do que 16 KB faz com que o proxy fixe a sessão.

## Condições que podem causar fixação no RDS para Microsoft SQL Server
<a name="rds-proxy-pinning.sqlserver"></a>

 Para o RDS para SQL Server, as seguintes interações também geram fixação: 
+ Utilizando vários conjuntos de resultados ativos (MARS). Para obter informações sobre MARS, consulte a documentação do [SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars?view=sql-server-ver16).
+ Utilizando a comunicação do coordenador de transações distribuídas (DTC).
+ Criando tabelas temporárias, transações, cursores ou declarações preparadas.
+ Usando as seguintes declarações `SET`:
  + `SET ANSI_DEFAULTS`
  + `SET ANSI_NULL_DFLT`
  + `SET ARITHIGNORE`
  + `SET DEADLOCK_PRIORITY`
  + `SET FIPS_FLAGGER`
  + `SET FMTONLY`
  + `SET FORCEPLAN`
  + `SET IDENTITY_INSERT`
  + `SET NOCOUNT`
  + `SET NOEXEC`
  + `SET OFFSETS`
  + `SET PARSEONLY`
  + `SET QUERY_GOVERNOR_COST_LIMIT`
  + `SET REMOTE_PROC_TRANSACTIONS`
  + `SET ROWCOUNT`
  + `SET SHOWPLAN_ALL`, `SHOWPLAN_TEXT`, e `SHOWPLAN_XML`
  + `SET STATISTICS`
  + `SET XACT_ABORT`

## Condições que causam fixação no RDS para MariaDB e RDS para MySQL
<a name="rds-proxy-pinning.mysql"></a>

 Para o MySQL e o MariaDB, as seguintes interações também podem causar fixação: 
+ As instruções explícitas de bloqueio de tabela `LOCK TABLE`, `LOCK TABLES` ou `FLUSH TABLES WITH READ LOCK` fazem com que o proxy fixe a sessão. 
+ A criação de bloqueios nomeados usando `GET_LOCK` faz com que o proxy fixe a sessão. 
+ Definir uma variável de usuário ou sistema (com algumas exceções) fixa a sessão ao proxy. Se isso limitar significativamente a reutilização da conexão, você poderá configurar as operações `SET` para evitar a fixação. Para fazer isso, ajuste a propriedade de filtros de fixação de sessão. Para obter mais informações, consulte [Criar um proxy para o Amazon RDS](rds-proxy-creating.md) e [Modificar um RDS Proxy](rds-proxy-modifying-proxy.md).
+ A criação de uma tabela temporária faz com que o proxy fixe a sessão. Dessa forma, o conteúdo da tabela temporária é preservado durante toda a sessão, independentemente dos limites de transação. 
+ A chamada das funções `ROW_COUNT` e `FOUND_ROWS` às vezes causa fixação. 
+ As instruções preparadas fazem com que o proxy fixe a sessão. Essa regra se aplicará se a instrução preparada usar texto SQL ou o protocolo binário. 
+ O RDS Proxy não fixa conexões quando você usa SET LOCAL.
+ A chamada de procedimentos armazenados e de funções armazenadas não causa fixação. O proxy do RDS não detecta nenhuma alteração de estado de sessão resultante dessas chamadas. Verifique se a aplicação não altera o estado da sessão dentro de rotinas armazenadas se você confia nesse estado de sessão para persistir entre transações. Por exemplo, no momento, o proxy do RDS não é compatível com um procedimento armazenado que cria uma tabela temporária que persiste em todas as transações. 
+ Consultas com comentários executáveis para MySQL (sintaxe /\$1\$1 ... \$1/) ou MariaDB (sintaxe /\$1M\$1 ... \$1/) causam fixação. O RDS Proxy não pode analisar o SQL incorporado nesses comentários para rastrear alterações no estado da sessão.

 Se você tiver conhecimento especializado sobre o comportamento da aplicação, poderá ignorar o comportamento de fixação de determinadas instruções da aplicação. Para fazer isso, escolha a opção **Filtros de fixação de sessão** ao criar o proxy. Atualmente, é possível cancelar a fixação de sessão para definir variáveis de sessão e configurações. 

## Condições que causam fixação no RDS para PostgreSQL
<a name="rds-proxy-pinning.postgres"></a>

 Para o PostgreSQL, as seguintes interações também geram a fixação: 
+  Usar comandos `SET`.
+  Usar comandos `PREPARE`, `DISCARD`, `DEALLOCATE` ou `EXECUTE` para gerenciar instruções preparadas.
+  Criar sequências, tabelas ou visualizações temporárias.
+  Declarar cursores.
+  Descartar o estado da sessão.
+  Escutar em um canal de notificação.
+  Carregar um módulo de biblioteca, como `auto_explain`.
+  Manipular sequências usando funções como `nextval` e `setval`.
+  Interagir com bloqueios usando funções como `pg_advisory_lock` e `pg_try_advisory_lock`. 
**nota**  
O RDS Proxy não fixa bloqueios consultivos em nível de transação, especificamente `pg_advisory_xact_lock`, `pg_advisory_xact_lock_shared`, `pg_try_advisory_xact_lock` e `pg_try_advisory_xact_lock_shared`.
+ Definir ou redefinir um parâmetro como o padrão. Especificamente, usar comandos `SET` e `set_config` para atribuir valores padrão às variáveis da sessão.
+ A chamada de procedimentos armazenados e de funções armazenadas não causa fixação. O proxy do RDS não detecta nenhuma alteração de estado de sessão resultante dessas chamadas. Verifique se a aplicação não altera o estado da sessão dentro de rotinas armazenadas se você confia nesse estado de sessão para persistir entre transações. Por exemplo, no momento, o proxy do RDS não é compatível com um procedimento armazenado que cria uma tabela temporária que persiste em todas as transações. 
+ Descartar estado da sessão. Se você usar bibliotecas de pool de conexões com a consulta `DISCARD ALL` configurada como uma consulta de redefinição, o RDS Proxy fixará sua conexão de cliente na liberação. Isso reduz a eficiência da multiplexação do proxy e pode levar a resultados inesperados, pois o comando `DISCARD ALL` pode interferir no gerenciamento do estado da sessão.

# Excluir um RDS Proxy
<a name="rds-proxy-deleting"></a>

 Será possível excluir um proxy quando não precisar mais dele. Ou poderá excluir um proxy se você tirar de serviço a instância ou o cluster de banco de dados associado. 

## Console de gerenciamento da AWS
<a name="rds-proxy-deleting.console"></a>

**Como excluir um proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  No painel de navegação, escolha **Proxies**. 

1.  Escolha o proxy a ser excluído da lista. 

1.  Escolha **Delete Proxy (Excluir proxy)**. 

## AWS CLI
<a name="rds-proxy-deleting.CLI"></a>

 Para excluir um proxy de banco de dados, use o comando [delete-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-proxy.html) da AWS CLI. Para remover associações relacionadas, use também o comando [deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html). 

```
aws rds delete-db-proxy --name proxy_name
```

```
aws rds deregister-db-proxy-targets
    --db-proxy-name proxy_name
    [--target-group-name target_group_name]
    [--target-ids comma_separated_list]       # or
    [--db-instance-identifiers instance_id]       # or
    [--db-cluster-identifiers cluster_id]
```

## API do RDS
<a name="rds-proxy-deleting.API"></a>

 Para excluir um proxy de banco de dados, chame a função [DeleteDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxy.html) da API do Amazon RDS. Para excluir itens e associações relacionados, você também chama as funções [DeleteDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxyTargetGroup.html) e [DeregisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html). 

# Como trabalhar com endpoints do proxy do Amazon RDS
<a name="rds-proxy-endpoints"></a>

Os endpoints do RDS Proxy oferecem maneiras flexíveis e eficientes de gerenciar conexões de banco de dados, o que melhora a escalabilidade, disponibilidade e segurança. Com endpoints de proxy, é possível:
+ **Simplificar o monitoramento e a solução de problemas**: use vários endpoints para monitorar e gerenciar conexões de diferentes aplicações de maneira independente.

**Topics**
+ [

## Visão geral dos endpoints de proxy
](#rds-proxy-endpoints-overview)
+ [

## Limitações de endpoints de proxy
](#rds-proxy-endpoints-limits)
+ [

## Endpoints de proxy para clusters de banco de dados multi-AZ
](#rds-proxy-endpoints-overview-maz)
+ [

## Acessar bancos de dados RDS entre VPCs
](#rds-proxy-cross-vpc)
+ [

# Criação de um endpoint de proxy
](rds-proxy-endpoints.CreatingEndpoint.md)
+ [

# Visualização dos endpoints de proxy
](rds-proxy-endpoints.DescribingEndpoint.md)
+ [

# Modificação de um endpoint de proxy
](rds-proxy-endpoints.ModifyingEndpoint.md)
+ [

# Exclusão de um endpoint de proxy
](rds-proxy-endpoints.DeletingEndpoint.md)

## Visão geral dos endpoints de proxy
<a name="rds-proxy-endpoints-overview"></a>

Trabalhar com endpoints de proxy do RDS envolve os mesmos tipos de procedimentos usados com endpoints de instâncias do RDS. Se você não tem familiaridade com os endpoints do RDS, encontre mais informações em [Conexão a uma instância de banco de dados executando o mecanismo de banco de dados do MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) e [ Conectar a uma instância de banco de dados executando o mecanismo de banco de dados do PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html). 

Ao criar um endpoint de proxy, você pode associá-lo a uma nuvem privada virtual (VPC) diferente da utilizada pelo proxy. Isso possibilita que você se conecte ao proxy por meio de outra VPC, como uma usada por uma aplicação diferente em sua organização. 

Para obter informações sobre limites associados aos endpoints de proxy, consulte [Limitações de endpoints de proxy](#rds-proxy-endpoints-limits). 

Os logs do RDS Proxy incluem como prefixo em cada entrada o nome do endpoint de proxy associado. Pode ser o nome especificado para um endpoint definido pelo usuário ou o nome especial `default` para o endpoint padrão de leitura/gravação do proxy.

Cada endpoint de proxy tem seu próprio conjunto de métricas do CloudWatch. Monitore métricas de todos os endpoints específicos, de um endpoint específico ou de todos os endpoints de leitura/gravação ou somente leitura de um proxy. Para obter mais informações, consulte [Monitorar métricas do proxy do RDS com o Amazon CloudWatchMonitorar o proxy do RDS com o CloudWatch](rds-proxy.monitoring.md). 

Um endpoint de proxy usa o mesmo mecanismo de autenticação que o proxy associado. O proxy do RDS configura automaticamente permissões e autorizações para o endpoint definido pelo usuário, consistentes com as propriedades do proxy associado. 

## Limitações de endpoints de proxy
<a name="rds-proxy-endpoints-limits"></a>

Os endpoints do RDS Proxy têm as seguintes limitações:
+  O endpoint padrão do proxy do RDS não pode ser modificado. 
+  O número máximo de endpoints definidos pelo usuário para um proxy é 20. Assim, um proxy pode ter até 21 endpoints: o endpoint padrão e mais 20 que você cria. 
+  Quando você associa endpoints adicionais a um proxy, o proxy do RDS determina automaticamente quais instâncias de banco de dados em seu cluster usar para cada endpoint. 
+  Para tipos de rede de endpoint IPv6 ou de pilha dupla, sua VPC e sub-redes devem ser configuradas para comportar o tipo de rede selecionado. 

Quando você cria um proxy, o RDS cria automaticamente um endpoint da VPC para comunicação segura entre as aplicações e o banco de dados. O endpoint da VPC é visível e pode ser acessado no console da Amazon VPC.

A adição de um novo endpoint de proxy provisiona um endpoint de interface do AWS PrivateLink. Se você adicionar um ou mais endpoints ao proxy, incorrerá em cobranças adicionais. Para ter mais informações, consulte [Preços do Amazon Relational Database Service Proxy](https://aws.amazon.com/rds/proxy/pricing/).

## Endpoints de proxy para clusters de banco de dados multi-AZ
<a name="rds-proxy-endpoints-overview-maz"></a>

Por padrão, o endpoint ao qual você se conecta quando usa o proxy do RDS com um cluster do Aurora tem capacidade de leitura/gravação. Como resultado, esse endpoint envia todas as solicitações à instância do gravador do cluster. Todas essas conexões são consideradas no valor `max_connections` da instância do gravador. Se o seu proxy estiver associado a um cluster de banco de dados do , você pode criar endpoints adicionais de leitura/gravação ou somente leitura para esse proxy.

Você pode usar um endpoint somente leitura com seu proxy para consultas somente leitura. Você faz isso da mesma forma que usa o endpoint do leitor para um cluster provisionado do Aurora. Fazer isso ajuda você a aproveitar o dimensionamento de leitura de um cluster do com uma ou mais instâncias de banco de dados do leitor. Você pode executar mais consultas simultâneas e fazer mais conexões simultâneas usando um endpoint somente leitura e adicionando mais instâncias de banco de dados do leitor ao cluster do , conforme necessário. Esses endpoints de leitor ajudam a melhorar a escalabilidade de leitura de suas aplicações com uso intensivo de consultas. Os endpoints de leitor também ajudam a melhorar a disponibilidade de suas conexões, se uma instância de banco de dados do leitor no cluster ficar indisponível. 

### Endpoints de leitor para clusters de banco de dados Multi-AZ
<a name="rds-proxy-endpoints-reader-stub"></a>

 Com o RDS Proxy, você pode criar e usar endpoints de leitor. No entanto, esses endpoints funcionam apenas para proxies associados a clusters de banco de dados do . Se você usa a CLI ou a API do RDS, pode ver o atributo `TargetRole` com um valor `READ_ONLY`. É possível aproveitar esses proxies alterando o destino de um proxy de uma instância de banco de dados do RDS para um cluster de banco de dados multi-AZ.

 Você pode criar e se conectar a endpoints somente leitura chamados *endpoints de leitor* quando usa o proxy do RDS com clusters do Aurora.

#### Como os endpoints de leitor ajudam a disponibilidade das aplicações
<a name="rds-proxy-endpoints-reader-hapa"></a>

 Em alguns casos, uma ou mais instâncias de leitor no cluster podem ficar indisponíveis. Nesses casos, as conexões que usam um endpoint leitor de um proxy de banco de dados podem se recuperar mais rapidamente do que aquelas que usam o endpoint leitor do Aurora. O proxy do RDS roteia conexões somente para as instâncias de leitor disponíveis no cluster. Não há um atraso causado pelo cache de DNS quando uma instância fica indisponível. 

 Se a conexão for multiplexada, o proxy do RDS direciona as consultas subsequentes para uma instância de banco de dados de leitor diferente, sem qualquer interrupção na aplicação. Se uma instância do leitor estiver em um estado indisponível, todas as conexões do cliente com esse endpoint da instância serão fechadas. 

 Se a conexão estiver fixada, a próxima consulta na conexão retornará um erro. Porém, a aplicação pode se reconectar imediatamente ao mesmo endpoint de proxy. O proxy do RDS roteia a conexão para uma instância de banco de dados de leitor diferente que esteja no estado `available`. Quando você se reconecta manualmente, o proxy do RDS não verifica o atraso de replicação entre as instâncias antigas e novas do leitor. 

 Se o seu cluster de banco de dados Multi-AZ não tiver nenhuma instância de leitor disponível, o RDS Proxy tentará se conectar a um endpoint de leitor quando ele estiver disponível. Se nenhuma instância de leitor ficar disponível dentro do tempo limite de empréstimo da conexão, a tentativa de conexão falhará. Se uma instância de leitor ficar disponível, a tentativa de conexão será bem-sucedida. 

#### Como os endpoints de leitor contribuem para a escalabilidade da consulta
<a name="rds-proxy-endpoints-reader-scalability"></a>

 Os endpoints de leitor para um proxy ajudam no dimensionamento da consulta do das seguintes maneiras: 
+  Onde for prático, o proxy do RDS usa a mesma instância de banco de dados de leitor para todos os problemas de consultas usando uma conexão de endpoint de leitor específica. Dessa forma, um conjunto de consultas relacionadas nas mesmas tabelas pode aproveitar o cache, a otimização do plano e assim por diante em uma instância de banco de dados específica. 
+  Se uma instância de banco de dados de leitor ficar indisponível, o efeito sobre a aplicação dependerá se a sessão for multiplexada ou fixada. Se a sessão for multiplexada, o proxy do RDS roteia todas as consultas subsequentes para uma instância de banco de dados de leitor diferente sem qualquer ação de sua parte. Se a sessão estiver fixada, a aplicação receberá um erro e deverá se reconectar. Você pode se reconectar ao endpoint de leitor imediatamente e o proxy do RDS roteará a conexão para uma instância de banco de dados de leitor disponível. Para obter mais informações sobre multiplexação e fixação para sessões de proxy, consulte [Visão geral dos conceitos do RDS Proxy](rds-proxy.howitworks.md#rds-proxy-overview). 

## Acessar bancos de dados RDS entre VPCs
<a name="rds-proxy-cross-vpc"></a>

 Por padrão, os componentes da pilha de tecnologia do RDS estão todos na mesma Amazon VPC. Por exemplo, suponha que uma aplicação em execução em uma instância do Amazon EC2 se conecte a uma instância de banco de dados do Amazon RDS. Nesse caso, o servidor da aplicação e o banco de dados devem estar dentro da mesma VPC. 

 Com o RDS Proxy, é possível configurar o acesso a uma instância de banco de dados do Amazon RDS em uma VPC a partir de recursos em outra VPC, como instâncias do EC2. Por exemplo, sua organização pode ter várias aplicações que acessam os mesmos recursos de banco de dados. Cada aplicação pode estar em sua própria VPC. 

 Para habilitar o acesso entre VPCs, crie um novo endpoint para o proxy. O proxy em si reside na mesma VPC que a instância de banco de dados do Amazon RDS. No entanto, o endpoint entre VPCs reside na outra VPC, juntamente com os outros recursos, como as instâncias do EC2. O endpoint entre VPC está associado a sub-redes e grupos de segurança da mesma VPC que o EC2 e outros recursos. Essas associações permitem que você se conecte ao endpoint a partir das aplicações que, de outra forma, não podem acessar o banco de dados devido às restrições da VPC. 

 As etapas a seguir explicam como criar e acessar um endpoint entre VPCs com o RDS Proxy: 

1.  Crie duas VPCs ou escolha duas VPCs que você já usa para trabalhar com o RDS. Cada VPC deve ter os próprios recursos de rede associados, como um gateway da Internet, tabelas de roteamento, sub-redes e grupos de segurança. Se você tiver apenas uma VPC, consulte [Conceitos básicos do Amazon RDS](CHAP_GettingStarted.md) para ver as etapas de configuração de outra VPC, a fim de usar o RDS com êxito. Também é possível examinar a VPC existente no console do Amazon EC2 para ver quais tipos de recursos podem ser conectados. 

1.  Crie um proxy de banco de dados associado à instância de banco de dados do Amazon RDS a que você deseja se conectar. Siga o procedimento em [Criar um proxy para o Amazon RDS](rds-proxy-creating.md). 

1.  Na página **Details** (Detalhes) do seu proxy no console do RDS, na seção **Proxy endpoints** (Endpoints de proxy), escolha **Create endpoint** (Criar endpoint). Siga o procedimento em [Criação de um endpoint de proxy](rds-proxy-endpoints.CreatingEndpoint.md). 

1.  Escolha se deseja criar o endpoint entre VPCs como leitura/gravação ou somente leitura. 

1.  Em vez de aceitar o padrão da mesma VPC que a instância de banco de dados do Amazon RDS, escolha uma VPC diferente. Essa VPC deve estar na mesma região da AWS que a VPC, onde o proxy reside. 

1.  Agora, em vez de aceitar os padrões para sub-redes e grupos de segurança da mesma VPC que a instância de banco de dados do Amazon RDS, faça novas seleções. Faça-as com base nas sub-redes e grupos de segurança da VPC que você escolheu. 

1. Você não precisa alterar nenhuma das configurações para os segredos do Secrets Manager. As mesmas credenciais funcionam para todos os endpoints de proxy, independentemente da VPC em que cada endpoint esteja. Da mesma forma, ao usar a autenticação do IAM, a configuração e as permissões do IAM funcionam de forma consistente em todos os endpoints de proxy, mesmo quando os endpoints estão em VPCs diferentes. Nenhuma configuração adicional do IAM é necessária por endpoint.

1.  Aguarde até que o novo endpoint alcance o estado **Available** (Disponível). 

1.  Anote o nome completo do endpoint. Esse é o valor que termina em `Region_name.rds.amazonaws.com`, que você fornece como parte da string de conexão para sua aplicação de banco de dados. 

1.  Acesse o novo endpoint por meio de um recurso na mesma VPC que o endpoint. Uma maneira simples de testar esse processo é criar uma nova instância do EC2 nessa VPC. Depois, faça login na instância do EC2 e execute os comandos `mysql` ou `psql` para se conectar usando o valor do endpoint na string de conexão. 

# Criação de um endpoint de proxy
<a name="rds-proxy-endpoints.CreatingEndpoint"></a>

Para criar um endpoint de proxy, siga estas instruções:

## Console
<a name="rds-proxy-endpoints.CreatingEndpoint.CON"></a>

**Para criar um endpoint de proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  No painel de navegação, escolha **Proxies**. 

1.  Clique no nome do proxy para o qual você deseja criar um novo endpoint. 

    A página de detalhes desse proxy é exibida. 

1.  Na seção **Proxy endpoints** (Endpoints do proxy), escolha **Create proxy endpoint** (Criar endpoint proxy). 

    A janela **Create proxy endpoint** (Criar endpoint proxy) aparece. 

1.  em **Proxy endpoint name** (Nome do endpoint de proxy), insira um nome descritivo de sua escolha. 

1.  Em **Target role** (Função de destino), escolha se deseja criar o endpoint como leitura/gravação ou somente leitura. 

    As conexões que usam endpoints de leitura/gravação podem executar qualquer tipo de operação: declarações DDL (linguagem de definição de dados), declarações DML (linguagem de manipulação de dados) e consultas. Esses endpoints sempre se conectam à instância principal do cluster de banco de dados do RDS. Você pode usar endpoints de leitura/gravação para operações gerais de banco de dados quando você usa apenas um único endpoint em sua aplicação. Você também pode usar endpoints de leitura/gravação para operações administrativas, aplicações de processamento de transações on-line (OLTP) e trabalhos de extração de transformação de carga (ETL). 

    As conexões que usam um endpoint somente leitura só podem executar consultas. O RDS Proxy pode usar uma das instâncias de leitor para cada conexão com o endpoint. Dessa forma, uma aplicação com uso intensivo de consultas pode tirar proveito da capacidade de clustering do Aurora. Essas conexões somente leitura não impõem nenhuma sobrecarga na instância primária do cluster. Dessa forma, suas consultas de relatórios e análises não retardam as operações de gravação de suas aplicações OLTP. 

1.  Em **Nuvem privada virtual (VPC)**, selecione o padrão para acessar o endpoint das mesmas instâncias do EC2 ou outros recursos que normalmente são usados para acessar o proxy ou o banco de dados associado. Para configurar o acesso entre VPC para esse proxy, selecione uma VPC diferente da padrão. Para obter mais informações sobre acesso entre VPCs, consulte [Acessar bancos de dados RDS entre VPCs](rds-proxy-endpoints.md#rds-proxy-cross-vpc). 

1.  Para o **tipo de rede de endpoint**, escolha a versão do IP para o endpoint de proxy. As opções disponíveis são:
   + **IPv4**: o endpoint de proxy usa somente endereços IPv4 (padrão).
   + **IPv6**: o endpoint de proxy usa somente endereços IPv6.
   + **Pilha dupla**: o endpoint de proxy comporta endereços IPv4 e IPv6.

   Para usar IPv6 ou pilha dupla, sua VPC e sub-redes devem ser configuradas para comportar o tipo de rede selecionado.

1.  Em **Subnets** (Sub-redes), o proxy do RDS preenche as mesmas sub-redes que o proxy associado por padrão. Para restringir o acesso ao endpoint para que apenas uma parte do intervalo de endereços da VPC possa se conectar a ele, remova uma ou mais sub-redes. 

1.  Em **VPC grupo de segurança** (Grupo de segurança da VPC), você pode selecionar um grupo de segurança existente ou criar outro. O proxy do RDS preenche os mesmos grupos de segurança que o proxy associado por padrão. Se as regras de entrada e saída para o proxy forem apropriadas para esse endpoint, deixe a escolha padrão. 

    Se você optar por criar um novo grupo de segurança, especifique um nome para o grupo de segurança nessa página. Depois, edite as configurações do grupo de segurança no console do EC2. 

1.  Escolha **Create proxy endpoint** (Criar endpoint de proxy). 

## AWS CLI
<a name="rds-proxy-endpoints.CreatingEndpoint.CLI"></a>

 Para criar um endpoint de proxy, use o comando da AWS CLI [create-db-proxy-endpoint](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-proxy-endpoint.html). 

 Inclua os seguintes parâmetros necessários: 
+  `--db-proxy-name value` 
+  `--db-proxy-endpoint-name value` 
+  `--vpc-subnet-ids list_of_ids`. Separe os IDs de sub-rede com espaços. Você não especifica o ID da própria VPC. 

 Você também pode incluir os seguintes parâmetros opcionais: 
+  `--target-role { READ_WRITE | READ_ONLY }`. Por padrão, esse parâmetro é `READ_WRITE`. Quando o proxy está associado a um cluster de banco de dados multi-AZ que contém apenas uma instância de banco de dados de gravador, não é possível especificar `READ_ONLY`. Para ter mais informações sobre o uso pretendido de endpoints somente leitura com cluster de banco de dados multi-AZ, consulte [Endpoints de leitor para clusters de banco de dados Multi-AZ](rds-proxy-endpoints.md#rds-proxy-endpoints-reader-stub). 
+  `--vpc-security-group-ids value`. Separe os IDs do grupo de segurança com espaços. Se você omitir esse parâmetro, o proxy do RDS usará o grupo de segurança padrão para a VPC. O proxy do RDS determina a VPC com base nos IDs de sub-rede que você especificar para o parâmetro `--vpc-subnet-ids`. 
+  `--endpoint-network-type { IPV4 | IPV6 | DUAL }`. Esse parâmetro especifica a versão do IP do endpoint de proxy. O padrão é “”. `IPV4`. Para usar `IPV6` ou `DUAL`, sua VPC e sub-redes devem ser configuradas para comportar o tipo de rede selecionado. 

**Example**  
 O exemplo a seguir cria um endpoint de proxy chamado `my-endpoint`.   
Para Linux, macOS ou Unix:  

```
aws rds create-db-proxy-endpoint \
  --db-proxy-name my-proxy \
  --db-proxy-endpoint-name my-endpoint \
  --vpc-subnet-ids subnet_id subnet_id subnet_id ... \
  --target-role READ_ONLY \
  --vpc-security-group-ids security_group_id \
  --endpoint-network-type DUAL
```
Para Windows:  

```
aws rds create-db-proxy-endpoint ^
  --db-proxy-name my-proxy ^
  --db-proxy-endpoint-name my-endpoint ^
  --vpc-subnet-ids subnet_id_1 subnet_id_2 subnet_id_3 ... ^
  --target-role READ_ONLY ^
  --vpc-security-group-ids security_group_id ^
  --endpoint-network-type DUAL
```

## API do RDS
<a name="rds-proxy-endpoints.CreatingEndpoint.API"></a>

 Para criar um endpoint de proxy, use a ação da API do RDS [CreateDBProxyEndpoint](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBProxyEndpoint.html). 

# Visualização dos endpoints de proxy
<a name="rds-proxy-endpoints.DescribingEndpoint"></a>

Para visualizar os endpoints de proxy existentes, siga estas instruções:

## Console
<a name="rds-proxy-endpoints.DescribingEndpoint.CON"></a>

**Para visualizar os detalhes de um endpoint de proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  No painel de navegação, escolha **Proxies**. 

1.  Na lista, escolha o proxy cujo endpoint você deseja visualizar. Clique no nome do proxy para visualizar sua página de detalhes. 

1.  Na seção **Proxy endpoints** (Endpoints de proxy), escolha o endpoint que você deseja visualizar. Clique no nome dele para ver a página de detalhes. 

1.  Examine os parâmetros cujos valores lhe interessam. Você pode verificar propriedades como as seguintes: 
   +  Se o endpoint é leitura/gravação ou somente leitura.
   +  O endereço do endpoint que você usa em uma string de conexão de banco de dados.
   +  A VPC, as sub-redes e os grupos de segurança associados a um endpoint.

## AWS CLI
<a name="rds-proxy-endpoints.DescribingEndpoint.CLI"></a>

 Para visualizar um ou mais endpoints de proxy, use o comando da AWS CLI [describe-db-proxy-endpoints](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-endpoints.html).

 Você pode incluir os seguintes parâmetros opcionais: 
+  `--db-proxy-endpoint-name` 
+  `--db-proxy-name` 

 O exemplo a seguir descreve o endpoint de proxy `my-endpoint`. 

**Example**  
Para Linux, macOS ou Unix:  

```
aws rds describe-db-proxy-endpoints \
  --db-proxy-endpoint-name my-endpoint
```
Para Windows:  

```
aws rds describe-db-proxy-endpoints ^
  --db-proxy-endpoint-name my-endpoint
```

## API do RDS
<a name="rds-proxy-endpoints.DescribingEndpoint.API"></a>

 Para descrever um ou mais endpoints de proxy, use a operação da API do RDS [DescribeDBProxyEndpoints](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBProxyEndpoints.html). 

# Modificação de um endpoint de proxy
<a name="rds-proxy-endpoints.ModifyingEndpoint"></a>

Para modificar os endpoints de proxy, siga estas instruções:

## Console
<a name="rds-proxy-endpoints.ModifyingEndpoint.CON"></a>

**Para modificar um ou mais endpoints de proxy**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  No painel de navegação, escolha **Proxies**. 

1. Na lista, escolha o proxy cujo endpoint você deseja modificar. Clique no nome do proxy para visualizar sua página de detalhes.

1.  Em **Proxy endpoints** (Endpoints de proxy), escolha o endpoint que você deseja modificar. Você pode selecioná-lo na lista ou clicar no nome dele para visualizar a página de detalhes. 

1.  Na página de detalhes do proxy, na seção **Proxy endpoints** (Endpoints de proxy), escolha **Edit** (Editar). Ou na página de detalhes do endpoint de proxy, em **Ações**, selecione **Editar**.

1.  Altere os valores dos parâmetros que você deseja modificar.

1.  Escolha **Save changes** (Salvar alterações). 

## AWS CLI
<a name="rds-proxy-endpoints.ModifyingEndpoint.CLI"></a>

 Para modificar um endpoint de proxy, use o comando da AWS CLI [modify-db-proxy-endpoint](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-endpoint.html) com os seguintes parâmetros obrigatórios: 
+  `--db-proxy-endpoint-name` 

 Especifique alterações nas propriedades do endpoint usando um ou mais dos seguintes parâmetros: 
+  `--new-db-proxy-endpoint-name` 
+  `--vpc-security-group-ids`. Separe os IDs do grupo de segurança com espaços. 

 O exemplo a seguir renomeia o endpoint de proxy `my-endpoint` para `new-endpoint-name`. 

**Example**  
Para Linux, macOS ou Unix:  

```
aws rds modify-db-proxy-endpoint \
  --db-proxy-endpoint-name my-endpoint \
  --new-db-proxy-endpoint-name new-endpoint-name
```
Para Windows:  

```
aws rds modify-db-proxy-endpoint ^
  --db-proxy-endpoint-name my-endpoint ^
  --new-db-proxy-endpoint-name new-endpoint-name
```

## API do RDS
<a name="rds-proxy-endpoints.ModifyingEndpoint.API"></a>

 Para modificar um endpoint de proxy, use a operação da API do RDS [ModifyDBProxyEndpoint](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyEndpoint.html). 

# Exclusão de um endpoint de proxy
<a name="rds-proxy-endpoints.DeletingEndpoint"></a>

 Para excluir um endpoint para o proxy, siga estas instruções: 

**nota**  
 Não é possível excluir o endpoint de proxy padrão que o RDS Proxy cria automaticamente para cada proxy.   
 Quando você exclui um proxy, o proxy do RDS exclui automaticamente todos os endpoints associados. 

## Console
<a name="rds-proxy-endpoints.DeleteEndpoint.console"></a>

**Para excluir um endpoint de proxy usando o Console de gerenciamento da AWS**

1.  No painel de navegação, escolha **Proxies**. 

1.  Na lista, escolha o proxy cujo endpoint você deseja endpoint. Clique no nome do proxy para visualizar sua página de detalhes. 

1.  Em **Proxy endpoints** (Endpoints de proxy), escolha o endpoint que você deseja excluir. Você pode selecionar um ou mais endpoints na lista ou clicar no nome de um único endpoint para visualizar a página de detalhes. 

1.  Na página de detalhes do proxy, na seção **Proxy endpoints** (Endpoints de proxy), escolha **Delete** (Excluir). Ou, na página de detalhes do endpoint de proxy, em **Ações**, selecione **Excluir**. 

## AWS CLI
<a name="rds-proxy-endpoints.DeleteEndpoint.cli"></a>

 Para excluir um endpoint de proxy, execute o comando [delete-db-proxy-endpoint](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-proxy-endpoint.html) com os seguintes parâmetros obrigatórios: 
+  `--db-proxy-endpoint-name` 

 O comando a seguir exclui o endpoint de proxy chamado `my-endpoint`. 

Para Linux, macOS ou Unix:

```
aws rds delete-db-proxy-endpoint \
  --db-proxy-endpoint-name my-endpoint
```

Para Windows:

```
aws rds delete-db-proxy-endpoint ^
  --db-proxy-endpoint-name my-endpoint
```

## API do RDS
<a name="rds-proxy-endpoints.DeleteEndpoint.api"></a>

 Para excluir um endpoint deproxy com a API do RDS, execute a operação [DeleteDBProxyEndpoint](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxyEndpoint.html). Especifique o nome do endpoint de proxy para o parâmetro `DBProxyEndpointName`. 

# Monitorar métricas do proxy do RDS com o Amazon CloudWatch
<a name="rds-proxy.monitoring"></a>

 É possível monitorar o proxy do RDS usando o Amazon CloudWatch O CloudWatch coleta e processa dados brutos dos proxies e os transforma em métricas legíveis quase em tempo real. Para localizar essas métricas no console do CloudWatch, escolha **Metrics (Métricas)** e escolha **RDS** e **Per Proxy Metrics (Métricas por Proxy)**. Para obter mais informações, consulte [Usando métricas do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) no Guia do usuário do Amazon CloudWatch. 

**nota**  
 O RDS publica essas métricas para cada instância subjacente do Amazon EC2 associada a um proxy. Um único proxy pode ser atendido por mais de uma instância do EC2. Use as estatísticas do CloudWatch para agregar os valores de um proxy em todas as instâncias associadas.   
 Algumas dessas métricas podem não ser visíveis até depois da primeira conexão bem-sucedida por um proxy. 

 Nos logs do RDS Proxy, cada entrada é prefixada com o nome do endpoint de proxy associado. Esse nome pode ser o nome especificado para um endpoint definido pelo usuário ou o nome especial `default` para o endpoint padrão de um proxy que realiza solicitações de leitura/gravação. 

 Todas as métricas do proxy do RDS estão no grupo `proxy`. 

 Cada endpoint de proxy tem suas próprias métricas do CloudWatch. Você pode monitorar o uso de cada endpoint de proxy de forma independente. Para obter mais informações sobre os endpoints do proxy, consulte [Como trabalhar com endpoints do proxy do Amazon RDS](rds-proxy-endpoints.md). 

 Você pode agregar os valores de cada métrica usando um dos seguintes conjuntos de dimensões. Por exemplo, usando o conjunto de dimensões `ProxyName` , você pode analisar todo o tráfego para um determinado proxy. Ao usar os outros conjuntos de dimensões, você pode dividir as métricas de maneiras diferentes. Você pode dividir as métricas com base nos diferentes endpoints ou bancos de dados de destino de cada proxy ou no tráfego de leitura/gravação e somente leitura para cada banco de dados. 
+  Conjunto de dimensões 1 : `ProxyName` 
+  Conjunto de dimensões 2 : `ProxyName`, `EndpointName` 
+  Conjunto de dimensões 3 :`ProxyName`,`TargetGroup`,`Target` 
+  Conjunto de dimensões 4 :`ProxyName`,`TargetGroup`,`TargetRole` 


|  Métrica  |  Descrição  |  Período válido  |  Conjunto de dimensões do CloudWatch  | 
| --- | --- | --- | --- | 
|  `AvailabilityPercentage`   |   O percentual de tempo para o qual o grupo de destino estava disponível na função indicada pela dimensão. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |  1 minuto  |  [Dimension set 4](#proxy-dimension-set-4)  | 
| ClientConnections  |   O número atual de conexões de cliente. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsClosed  |   O número de conexões de cliente fechadas. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsInSetup |  O número atual de conexões de cliente abertas, mas que não concluíram a configuração. Essa métrica é relatada a cada minuto. A estatística mais útil para esta métrica é Soma.  |  1 minuto  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
|  `ClientConnectionsNoTLS`   |  O número atual de conexões de cliente sem Transport Layer Security (TLS). Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é Sum.  |  1 minuto |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
|  `ClientConnectionsReceived`   |   O número de solicitações de conexão de cliente recebidas. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsSetupFailedAuth  |   O número de tentativas de conexão do cliente que falharam devido à configuração incorreta da autenticação ou do TLS. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsSetupSucceeded  |   O número de conexões de cliente estabelecido com êxito com qualquer mecanismo de autenticação com ou sem TLS. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| ClientConnectionsTLS  |  O número atual de conexões de cliente com TLS. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é Sum.  | 1 minuto |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| DatabaseConnectionRequests  |   O número de solicitações para criar uma conexão de banco de dados. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `DatabaseConnectionRequestsWithTLS`   |  O número de solicitações para criar uma conexão de banco de dados com TLS. A estatística mais útil para essa métrica é Sum.  |  1 minuto e acima  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnections  |   O número atual de conexões de banco de dados. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `DatabaseConnectionsBorrowLatency`   |  O tempo, em microssegundos, que leva para o proxy que está sendo monitorado obter uma conexão de banco de dados. A estatística mais útil para essa métrica é Sum.  |  1 minuto e acima  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| DatabaseConnectionsCurrentlyBorrowed  |   O número atual de conexões de banco de dados no estado de empréstimo. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsCurrentlyInTransaction  |   O número atual de conexões de banco de dados em uma transação. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsCurrentlySessionPinned  |   O número atual de conexões de banco de dados atualmente fixadas devido a operações em solicitações de cliente que alteram o estado da sessão. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsSetupFailed  |   O número de solicitações de conexão do banco de dados que falharam. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| DatabaseConnectionsSetupSucceeded  |   O número de conexões de banco de dados estabelecidas com êxito com ou sem TLS. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `DatabaseConnectionsWithTLS`   |  O número atual de conexões de banco de dados com TLS. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é Sum.  |  1 minuto  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| MaxDatabaseConnectionsAllowed  |   O número máximo de conexões de banco de dados permitidas. Essa métrica é relatada a cada minuto. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
|  `QueryDatabaseResponseLatency`   |  O tempo, em microssegundos, que o banco de dados levou para responder à consulta. A estatística mais útil para essa métrica é Average.  |  1 minuto e acima  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2), [Dimension set 3](#proxy-dimension-set-3), [Dimension set 4](#proxy-dimension-set-4)  | 
| QueryRequests  |   O número de consultas recebidas. Uma consulta incluindo várias instruções é contada como uma consulta. A estatística mais útil para essa métrica é `Sum`.   |   1 minuto e acima   |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| QueryRequestsNoTLS  |  O número de consultas recebidas de conexões não TLS. Uma consulta incluindo várias instruções é contada como uma consulta. A estatística mais útil para essa métrica é Sum.  |  1 minuto e acima  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
|  `QueryRequestsTLS`   |  O número de consultas recebidas de conexões TLS. Uma consulta incluindo várias instruções é contada como uma consulta. A estatística mais útil para essa métrica é Sum.  |  1 minuto e acima  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 
| QueryResponseLatency  |  O tempo, em microssegundos, entre a obtenção de uma solicitação de consulta e a resposta do proxy a ela. A estatística mais útil para essa métrica é Average.  |  1 minuto e acima  |  [Dimension set 1](#proxy-dimension-set-1), [Dimension set 2](#proxy-dimension-set-2)  | 

 Você pode encontrar os logs de atividades do proxy do RDS sob CloudWatch no Console de gerenciamento da AWS. Cada proxy tem uma entrada na página **Log groups (Grupos de logs)**. 

**Importante**  
 Esses logs são destinados ao consumo humano para fins de solução de problemas e não para acesso programático. O formato e o conteúdo dos logs estão sujeitos a alterações.   
 Em particular, os logs mais antigos não contêm nenhum prefixo indicando o endpoint para cada solicitação. Nos logs mais recentes, cada entrada é prefixada com o nome do endpoint do proxy associado. Esse nome pode ser o nome que você especificou para um endpoint definido pelo usuário ou o nome especial `default` para solicitações que usam o endpoint padrão de um proxy. 

# Trabalhar com eventos do RDS Proxy
<a name="rds-proxy.events"></a>

Um *evento* indica uma alteração em um ambiente, como um ambiente da AWS, um serviço ou uma aplicação de um parceiro de software como serviço (SaaS). Ou pode ser uma de suas próprias aplicações ou serviços personalizados. Por exemplo, o Amazon RDS gera um evento quando você cria ou modifica um RDS Proxy. O Amazon RDS entrega eventos ao Amazon EventBridge quase em tempo real. A seguir, você pode encontrar uma lista de eventos do proxy do RDS que você pode assinar e um exemplo de um evento do RDS Proxy. 

Para obter mais informações sobre como trabalhar com eventos, consulte o seguinte no:
+ Para obter instruções sobre como visualizar eventos usando o Console de gerenciamento da AWS, a AWS CLI ou a API do RDS, consulte [Visualizar eventos do Amazon RDS](USER_ListEvents.md).
+ Para saber como configurar o Amazon RDS para enviar eventos ao EventBridge, consulte [Criar uma regra que é acionada em um evento do Amazon RDS](rds-cloud-watch-events.md).

## Eventos do RDS Proxy
<a name="rds-proxy.events.list"></a>

As tabelas a seguir mostram a categoria de evento e uma lista de eventos quando um proxy do RDS é o tipo de fonte.


|  Categoria  | ID do evento do RDS |  Message  |  Observações  | 
| --- | --- | --- | --- | 
| alteração de configuração | RDS-EVENT-0204 |  Proxy de banco de dados *nome* modificado pelo RDS.  | Nenhum | 
| alteração de configuração | RDS-EVENT-0207 |  O RDS modificou o endpoint do proxy de banco de dados *nome*.  | Nenhum | 
| alteração de configuração | RDS-EVENT-0213 |  O RDS detectou a adição da instância de banco de dados e a adicionou automaticamente ao grupo de destino do *nome* do proxy de banco de dados.  | Nenhum | 
|  alteração de configuração  | RDS-EVENT-0214 |  O RDS detectou a exclusão da instância de banco de dados *nome* e a removeu automaticamente do grupo de destino *nome* do proxy de banco de dados *nome*.  | Nenhum | 
|  alteração de configuração  | RDS-EVENT-0215 |  O RDS detectou a exclusão do cluster de banco de dados *nome* e o removeu automaticamente do grupo de destino *nome* do proxy de banco de dados *nome*.  | Nenhum | 
|  criação  | RDS-EVENT-0203 |  O RDS criou o proxy de banco de dados *nome*.  | Nenhum | 
|  criação  | RDS-EVENT-0206 |  O RDS criou o endpoint para *nome* para o proxy do banco de dados *nome*.  | Nenhum | 
| exclusão | RDS-EVENT-0205 |  O RDS excluiu o proxy do banco de dados *nome*.  | Nenhum | 
|  exclusão  | RDS-EVENT-0208 |  O RDS excluiu o endpoint *nome* para o proxy do banco de dados *nome*.  | Nenhum | 
|  falha  | RDS-EVENT-0243 |  O RDS não conseguiu provisionar capacidade para o *nome* do proxy porque não há endereços IP suficientes disponíveis em suas sub-redes: *nome*. Para resolver o problema, as sub-redes devem ter o número mínimo de endereços IP não usados, conforme recomendado na documentação do proxy do RDS.  |  Para determinar o número recomendado para sua classe de instância, consulte [Planejar a capacidade de endereços IP](rds-proxy-network-prereqs.md#rds-proxy-network-prereqs.plan-ip-address).  | 
|  falha | RDS-EVENT-0275 |  O RDS limitou algumas conexões com o proxy de banco de dados *nome*. O número de solicitações de conexão simultâneas do cliente para o proxy excedeu o limite.  | Nenhum | 

Veja a seguir um exemplo de um evento proxy do RDS no formato JSON. O evento mostra que o RDS modificou o endpoint chamado `my-endpoint` do proxy do RDS chamado `my-rds-proxy`. O ID do evento é RDS-EVENT-0207.

```
{
  "version": "0",
  "id": "68f6e973-1a0c-d37b-f2f2-94a7f62ffd4e",
  "detail-type": "RDS DB Proxy Event",
  "source": "aws.rds",
  "account": "123456789012",
  "time": "2018-09-27T22:36:43Z",
  "region": "us-east-1",
  "resources": [
     "arn:aws:rds:us-east-1:123456789012:db-proxy:my-rds-proxy"
  ],
  "detail": {
    "EventCategories": [
      "configuration change"
    ],
    "SourceType": "DB_PROXY",
    "SourceArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:my-rds-proxy",
    "Date": "2018-09-27T22:36:43.292Z",
    "Message": "RDS modified endpoint my-endpoint of DB Proxy my-rds-proxy.",
    "SourceIdentifier": "my-endpoint",
    "EventID": "RDS-EVENT-0207"
  }
}
```

# Solução de problemas do RDS Proxy
<a name="rds-proxy.troubleshooting"></a>

 A seguir, é possível encontrar ideias de solução de problemas para alguns problemas comuns do proxy do RDS e informações sobre logs do CloudWatch para o RDS Proxy. 

 Nos logs do RDS Proxy, cada entrada é prefixada com o nome do endpoint de proxy associado. Esse nome pode ser o nome que você especificou para um endpoint definido pelo usuário. Ou pode ser o nome especial `default` para o endpoint padrão de um proxy que realiza solicitações de leitura/gravação. Para obter mais informações sobre os endpoints do proxy, consulte [Como trabalhar com endpoints do proxy do Amazon RDS](rds-proxy-endpoints.md). 

**Topics**
+ [

## Verificar a conectividade para um proxy
](#rds-proxy-verifying)
+ [

## Problemas e soluções comuns
](#rds-proxy-diagnosis)
+ [

## Solução de problemas do RDS Proxy com o RDS para MySQL
](#rds-proxy-MySQL-troubleshooting)
+ [

## Solução de problemas do RDS Proxy com o RDS para PostgreSQL
](#rds-proxy-PostgreSQL-troubleshooting)

## Verificar a conectividade para um proxy
<a name="rds-proxy-verifying"></a>

 É possível usar os comandos a seguir para verificar se todos os componentes, como proxy, banco de dados e instâncias de computação na conexão, podem se comunicar entre si. 

 Examine o próprio proxy usando o comando [describe-db-proxies](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). Examine também o grupo de destino associado usando o comando [describe-db-proxy-target-groups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-target-groups.html). Confira se os detalhes dos destinos correspondem à instância de banco de dados do RDS que você pretende associar ao proxy. Use comandos como os seguintes. 

```
aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME
aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME
```

 Para confirmar se o proxy pode se conectar ao banco de dados subjacente, examine os destinos especificados nos grupos de destino usando o comando [describe-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-targets.html). Use um comando como o seguinte. 

```
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME
```

 A saída do comando [describe-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxy-targets.html) inclui um campo `TargetHealth`. É possível examinar os campos `State`, `Reason` e `Description` dentro de `TargetHealth` para verificar se o proxy pode se comunicar com a instância de banco de dados subjacente. 
+  Um valor `State` de `AVAILABLE` indica que o proxy pode se conectar à instância de banco de dados. 
+  Um valor `State` de `UNAVAILABLE` indica um problema de conexão temporário ou permanente. Nesse caso, examine os campos `Reason` e `Description`. Por exemplo, se `Reason` tiver um valor de `PENDING_PROXY_CAPACITY`, tente se conectar novamente depois que o proxy terminar sua operação de escalabilidade. Se `Reason` tiver um valor de `UNREACHABLE`, `CONNECTION_FAILED` ou `AUTH_FAILURE`, use a explicação do campo `Description` para ajudá-lo a diagnosticar o problema. 
+  O campo `State` pode ter um valor de `REGISTERING` por um breve período antes de alterar para `AVAILABLE` ou `UNAVAILABLE`. 

 Se o comando do Netcat a seguir (`nc`) for bem-sucedido, você poderá acessar o endpoint do proxy na instância do EC2 ou em outro sistema em que esteja conectado. Esse comando relata uma falha se você não estiver na mesma VPC que o proxy e o banco de dados associado. Você pode fazer login diretamente no banco de dados sem estar na mesma VPC. No entanto, não é possível fazer login no proxy a menos que você esteja na mesma VPC. 

```
nc -zx MySQL_proxy_endpoint 3306

nc -zx PostgreSQL_proxy_endpoint 5432
```

 Você pode usar os comandos a seguir para garantir que sua instância do EC2 tenha as propriedades necessárias. Em particular, a VPC da instância do EC2 deve ser a mesma que a VPC da instância de banco de dados do RDS ou do cluster de bancos de dados Aurora ao qual o proxy se conecta. 

```
aws ec2 describe-instances --instance-ids your_ec2_instance_id
```

 Examine os segredos do Secrets Manager usados para o proxy. 

```
aws secretsmanager list-secrets
aws secretsmanager get-secret-value --secret-id your_secret_id
```

 O campo `SecretString` exibido por `get-secret-value` deve estar codificado como uma string JSON que inclua os campos `username` e `password`. O exemplo a seguir mostra o formato do campo `SecretString`. 

```
{
  "ARN": "some_arn",
  "Name": "some_name",
  "VersionId": "some_version_id",
  "SecretString": '{"username":"some_username","password":"some_password"}',
  "VersionStages": [ "some_stage" ],
  "CreatedDate": some_timestamp
}
```

Ao solucionar problemas de autenticação do IAM, verifique o seguinte:
+ O banco de dados tem a autenticação do IAM habilitada.
+ O proxy está configurado com o esquema de autenticação correto.
+ As políticas do IAM no perfil do IAM fornecido ao proxy concedem a permissão `rds-db:connect` necessária para o banco de dados apropriado e seu nome de usuário.
+ Para a autenticação de ponta a ponta do IAM, existem usuários de banco de dados que correspondem aos nomes de usuário ou perfil do IAM.
+ O SSL/TLS está habilitado para a conexão.

## Problemas e soluções comuns
<a name="rds-proxy-diagnosis"></a>

Esta seção descreve alguns problemas comuns e possíveis soluções ao usar o Proxy RDS.

Depois de executar o comando `aws rds describe-db-proxy-targets` da CLI, se a descrição de `TargetHealth` indicar `Proxy does not have any registered credentials`, verifique o seguinte:
+ Há credenciais registradas para que o usuário acesse o proxy.
+ O perfil do IAM para acessar o segredo do Secrets Manager usado pelo proxy é válido.

Você pode encontrar os eventos de RDS a seguir ao criar ou se conectar a um proxy de banco de dados.


| Categoria | ID do evento do RDS | Descrição | 
| --- | --- | --- | 
|  falha  | RDS-EVENT-0243 | O RDS não conseguiu provisionar capacidade para o proxy porque não há endereços IP suficientes disponíveis em suas sub-redes. Para resolver o problema, suas sub-redes devem ter o número mínimo de endereços IP não usados. Para determinar o número recomendado para sua classe de instância, consulte [Planejar a capacidade de endereços IP](rds-proxy-network-prereqs.md#rds-proxy-network-prereqs.plan-ip-address). | 
|  falha  | RDS-EVENT-0275 |  O RDS limitou algumas conexões com o proxy de banco de dados *nome*. O número de solicitações de conexão simultâneas do cliente para o proxy excedeu o limite.  | 

 Você pode encontrar os seguintes problemas ao criar um proxy ou ao se conectar a um proxy. 


|  Erro  |  Causas ou soluções alternativas  | 
| --- | --- | 
|   `403: The security token included in the request is invalid`   |  Selecione uma função existente do IAM em vez de optar por criar uma.  | 

## Solução de problemas do RDS Proxy com o RDS para MySQL
<a name="rds-proxy-MySQL-troubleshooting"></a>

 Você pode encontrar os problemas a seguir ao se conectar a um proxy do MySQL. 


|  Erro  |  Causas ou soluções alternativas  | 
| --- | --- | 
|  ERROR 1040 (HY000): Connections rate limit exceeded (limit\$1value)  |  A taxa de solicitações de conexão do cliente para o proxy excedeu o limite.  | 
|  ERROR 1040 (HY000): IAM authentication rate limit exceeded  |  O número de solicitações simultâneas com autenticação do IAM do cliente para o proxy excedeu o limite.  | 
|  ERROR 1040 (HY000): Number simultaneous connections exceeded (limit\$1value)  |  O número de solicitações de conexão simultâneas do cliente para o proxy excedeu o limite.  | 
|   `ERROR 1045 (28000): Access denied for user 'DB_USER'@'%' (using password: YES)`   |  O segredo do Secrets Manager usado pelo proxy não corresponde ao nome de usuário e à senha de um usuário de banco de dados existente. Atualize as credenciais no segredo do Secrets Manager ou verifique se o usuário do banco de dados existe e tem a mesma senha do segredo.  | 
|  ERROR 1105 (HY000): Unknown error  |  Ocorreu um erro desconhecido.  | 
|  ERROR 1231 (42000): Variable ''character\$1set\$1client'' can't be set to the value of value  |   O valor definido para o parâmetro `character_set_client` não é válido. Por exemplo, o valor `ucs2` não é válido porque ele pode travar o servidor do MySQL.   | 
|  ERROR 3159 (HY000): This RDS Proxy requires TLS connections.  |   Você habilitou a configuração **Exigir Transport Layer Security** no proxy, mas a conexão incluiu o parâmetro `ssl-mode=DISABLED` no cliente MySQL. Realize um dos procedimentos a seguir:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  ERROR 2026 (HY000): SSL connection error: Internal Server Error  |   Falha no handshake TLS para o proxy. Algumas razões possíveis incluem:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  ERROR 9501 (HY000): Timed-out waiting to acquire database connection  |   O tempo limite do proxy foi atingido enquanto aguardava para adquirir uma conexão de banco de dados. Algumas razões possíveis incluem:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 

## Solução de problemas do RDS Proxy com o RDS para PostgreSQL
<a name="rds-proxy-PostgreSQL-troubleshooting"></a>

 Você pode encontrar os problemas a seguir ao se conectar a um proxy do PostgreSQL. 


|  Erro  |  Causa  |  Solução  | 
| --- | --- | --- | 
|   `ERROR 28000: IAM authentication is allowed only with SSL connections.`   |   O usuário tentou se conectar ao banco de dados usando a autenticação do IAM com a configuração `sslmode=disable` no cliente do PostgreSQL.   |   O usuário precisa se conectar ao banco de dados usando a configuração mínima de `sslmode=require` no cliente do PostgreSQL. Para obter mais informações, consulte a documentação [PostgreSQL SSL Support](https://www.postgresql.org/docs/current/libpq-ssl.html).   | 
|  `ERROR 28000: This RDS proxy has no credentials for the role role_name. Check the credentials for this role and try again.`   |   Não há segredo do Secrets Manager para essa função.   |   Adicione um segredo do Secrets Manager para essa função. Para ter mais informações, consulte [Configurar a autenticação do IAM para o RDS Proxy](rds-proxy-iam-setup.md).  | 
|  `ERROR 28000: RDS supports only IAM, MD5, or SCRAM authentication.`   |   O cliente de banco de dados que está sendo usado para se conectar ao proxy está usando um mecanismo de autenticação que não é compatível proxy no momento.   |   Se você não estiver usando a autenticação do IAM, use a autenticação de senha MD5 ou SCRAM.   | 
|  `ERROR 28000: A user name is missing from the connection startup packet. Provide a user name for this connection.`   |   O cliente de banco de dados que está sendo usado para se conectar ao proxy não está enviando um nome de usuário ao tentar estabelecer uma conexão.   |   Defina um nome de usuário ao configurar uma conexão com o proxy usando o cliente PostgreSQL de sua escolha.   | 
|  `ERROR 28000: IAM is allowed only with SSL connections.`   |   Um cliente tentou se conectar usando a autenticação do IAM, mas o SSL não estava habilitado.   |   Habilite o SSL no cliente PostgreSQL.   | 
|  `ERROR 28000: This RDS Proxy requires TLS connections.`   |   O usuário habilitou a opção **Exigir Transport Layer Security**, mas tentou se conectar com `sslmode=disable` no cliente do PostgreSQL.   |   Para corrigir esse erro, execute um dos seguintes procedimentos:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  `ERROR 28P01: IAM authentication failed for user user_name. Check the IAM token for this user and try again.`   |   Esse erro pode ocorrer devido aos seguintes motivos:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  |   Para corrigir esse erro, faça o seguinte:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  `ERROR 28P01: The password that was provided for the role role_name is wrong.`   |   A senha para essa função não corresponde ao segredo do Secrets Manager.   |   Verifique o segredo dessa função no Secrets Manager para ver se a senha é a mesma que está sendo usada no cliente PostgreSQL.   | 
|  `ERROR 28P01: The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.`   |   Há um problema com o token do IAM usado para a autenticação do IAM.   |   Gere outro token de autenticação e use-o em uma nova conexão.   | 
|  `ERROR 0A000: Feature not supported: RDS Proxy supports only version 3.0 of the PostgreSQL messaging protocol.`   |   O cliente PostgreSQL usado para se conectar ao proxy usa um protocolo mais antigo que 3.0.   |   Use um cliente PostgreSQL mais recente que ofereça suporte ao protocolo de sistema de mensagens 3.0. Se você estiver usando a CLI `psql` do PostgreSQL, use uma versão posterior ou igual a 7.4.   | 
|  `ERROR 0A000: Feature not supported: RDS Proxy currently doesn't support streaming replication mode.`   |   O cliente PostgreSQL usado para se conectar ao proxy está tentando usar o modo de replicação de streaming, que não é compatível com o proxy do RDS no momento.   |   Desative o modo de replicação de streaming no cliente PostgreSQL que está sendo usado para estabelecer a conexão.   | 
|  `ERROR 0A000: Feature not supported: RDS Proxy currently doesn't support the option option_name.`   |   Pela mensagem de inicialização, o cliente PostgreSQL usado para se conectar ao proxy está solicitando uma opção que não é compatível com o proxy do RDS no momento.   |   Desative a opção que está sendo mostrada como não compatível na mensagem acima no cliente PostgreSQL que está sendo usado para se conectar.   | 
|  `ERROR 53300: The IAM authentication failed because of too many competing requests.`   |   O número de solicitações simultâneas com autenticação do IAM do cliente para o proxy excedeu o limite.   |   Reduza a taxa na qual as conexões que usam a autenticação do IAM de um cliente PostgreSQL são estabelecidas.   | 
|  `ERROR 53300: The maximum number of client connections to the proxy exceeded number_value.`   |   O número de solicitações de conexão simultâneas do cliente para o proxy excedeu o limite.   |   Reduza o número de conexões ativas de clientes PostgreSQL para esse proxy do RDS .   | 
|  `ERROR 53300: Rate of connection to proxy exceeded number_value.`   |   A taxa de solicitações de conexão do cliente para o proxy excedeu o limite.   |   Reduza a taxa na qual as conexões de um cliente PostgreSQL são estabelecidas.   | 
|  `ERROR XX000: Unknown error.`   |   Ocorreu um erro desconhecido.   |   Entre em contato com o AWS Support para investigar o problema.   | 
|  `ERROR 08000: Timed-out waiting to acquire database connection.`   |   O proxy atingiu o tempo limite enquanto aguardava para obter uma conexão de banco de dados dentro do período especificado pela configuração `ConnectionBorrowTimeout`. Algumas razões possíveis incluem:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  |   As possíveis soluções são as seguintes:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/rds-proxy.troubleshooting.html)  | 
|  `ERROR XX000: Request returned an error: database_error.`   |   A conexão de banco de dados estabelecida pelo proxy retornou um erro.   |   A solução depende do erro específico do banco de dados. Um exemplo é: `Request returned an error: database "your-database-name" does not exist`. Isso significa que o nome do banco de dados especificado não existe no servidor do banco de dados. Ou isso significa que o nome de usuário usado como um nome de banco de dados (se não for especificado um nome de banco de dados) não existe no servidor.   | 
|  `ERROR 53300: The IAM authentication failed because of too many competing requests.`  |  O número de solicitações simultâneas com autenticação do IAM do cliente para o proxy excedeu o limite.  |  Reduza a taxa na qual as conexões que usam a autenticação do IAM de um cliente PostgreSQL são estabelecidas.  | 
|  `ERROR 28000: Enable IAM authentication for the client connection to the proxy and try again.`  |  O RDS Proxy não pode se conectar ao banco de dados porque a autenticação do IAM não está habilitada para a conexão do cliente com o proxy. Isso ocorre quando o parâmetro `DefaultAuthScheme` do proxy está definido como `IAM_AUTH` com um usuário registrado, mas o cliente está usando a autenticação por senha em vez da autenticação do IAM.  |  Habilite a autenticação do IAM para a conexão do cliente com o proxy e tente novamente.  | 
|  `ERROR 28000: Configure IAM authentication as the DefaultAuthScheme in your proxy and try again.`  |  O RDS Proxy não consegue se conectar ao banco de dados porque `DefaultAuthScheme` não está definido como `IAM_AUTH`. O parâmetro `DefaultAuthScheme` do proxy está definido como `NONE`, mas o cliente está tentando usar a autenticação do IAM.  |  Defina `DefaultAuthScheme` como `IAM_AUTH` para seu proxy e tente novamente.  | 

### Solução de problemas de exclusão do banco de dados `postgres`
<a name="rds-proxy-PostgreSQL-troubleshooting.postgresDBDelete"></a>

Se você excluir acidentalmente o banco de dados `postgres` da sua instância, precisará restaurá-lo para restabelecer a conectividade com sua instância. Execute os seguintes comandos em sua instância de banco de dados:

```
CREATE DATABASE postgres;
GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;
```

# Usar o proxy do RDS com o AWS CloudFormation
<a name="rds-proxy-cfn"></a>

 É possível usar o proxy do RDS com o AWS CloudFormation. Isso ajuda a criar grupos de recursos relacionados. Esse grupo pode incluir um proxy que pode se conectar a uma instância de banco de dados do Amazon RDS ou a um cluster de bancos de dados do Aurora recém-criado. A compatibilidade do proxy do RDS no CloudFormation envolve dois novos tipos de registro: `DBProxy` e `DBProxyTargetGroup`. 

 A listagem a seguir mostra um modelo de exemplo do CloudFormation para o RDS Proxy. 

```
Resources:
 DBProxy:
   Type: AWS::RDS::DBProxy
   Properties:
     DBProxyName: CanaryProxy
     EngineFamily: MYSQL
     RoleArn:
      Fn::ImportValue: SecretReaderRoleArn
     Auth:
       - {AuthScheme: SECRETS, SecretArn: !ImportValue ProxySecret, IAMAuth: DISABLED}
     VpcSubnetIds:
       Fn::Split: [",", "Fn::ImportValue": SubnetIds]

 ProxyTargetGroup: 
   Type: AWS::RDS::DBProxyTargetGroup
   Properties:
     DBProxyName: CanaryProxy
     TargetGroupName: default
     DBInstanceIdentifiers: 
       - Fn::ImportValue: DBInstanceName
   DependsOn: DBProxy
```

 Para obter mais informações sobre os recursos neste exemplo, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxy.html) e [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html). 

 Para obter mais informações sobre os recursos do e do que você pode criar usando o , consulte Referência de tipo de recurso do RDS. 