Configurar conexões de banco de dados compartilhadas

com o Amazon RDS Proxy

O Amazon RDS Proxy é um proxy de banco de dados totalmente gerenciado e altamente disponível para o Amazon Relational Database Service (Amazon RDS), que torna os aplicativos mais escaláveis, mais resistentes a falhas do banco de dados e mais seguros.

Muitos aplicativos, incluindo aqueles criados em arquiteturas modernas sem servidor que usam o AWS Lambda, podem ter um grande número de conexões abertas com o servidor de banco de dados e podem abrir e fechar conexões de banco de dados a uma taxa alta, esgotando a memória do banco de dados e os recursos computacionais. O Amazon RDS Proxy permite que aplicativos agrupem e compartilhem conexões estabelecidas com o banco de dados, melhorando a eficiência e a escalabilidade do aplicativo. Com o RDS Proxy, os tempos de failover dos bancos de dados Aurora e RDS são reduzidos em até 66% e as credenciais, a autenticação e o acesso ao banco de dados podem ser gerenciados por meio da integração com o AWS Secrets Manager e o AWS Identity and Access Management (IAM).

O Amazon RDS Proxy pode ser habilitado para a maioria dos aplicativos sem alteração de código e não é preciso provisionar nem gerenciar nenhuma infraestrutura adicional. A definição de preço é simples e previsível: você paga por vCPU da instância do banco de dados para a qual o proxy está habilitado. O Amazon RDS Proxy oferece suporte ao Amazon RDS for MySQL e Amazon Aurora com compatibilidade com o MySQL.

Neste tutorial, você aprende como criar um Amazon RDS Proxy e conectá-lo a um banco de dados MySQL existente do Amazon RDS. Você usa o cliente MySQL em uma instância do Amazon EC2 para fazer uma conexão com o banco de dados MySQL do RDS através do RDS Proxy. Esses conceitos também podem ser aplicados à arquitetura sem servidor com o Amazon RDS.

Pré-requisitos

O Amazon RDS Proxy exige que você tenha um conjunto de recursos de rede, como:

  • Um Amazon Virtual Private Cloud (Amazon VPC),
  • duas ou mais sub-redes em diferentes zonas de disponibilidade,
  • um banco de dados Amazon RDS e instâncias do Amazon EC2 na mesma VPC, e
  • um gateway da Internet

Se você conectou-se com êxito às instâncias existentes do banco de dados MySQL do RDS, já possui os recursos de rede necessários configurados. Este tutorial requer que sua conta seja configurada com uma instância do EC2 e uma instância do RDS MySQL na mesma VPC. Se você não tiver essas instâncias configuradas, poderá seguir as instruções do RDS e EC2 para provisionar as instâncias na VPC padrão.

Sobre este tutorial
Tempo 10 minutos      
Custo Menos de 1 USD
Caso de uso Bancos de dados
Produtos Amazon RDS, AWS Secrets Manager
Público Administradores de banco de dados, Desenvolvedores
Nível Intermediário
Data da última atualização 16 de março de 2020

Etapa 1: verificar grupos de segurança e conectividade do banco de dados

Para esta etapa, verifique as regras de entrada e saída de seus grupos de segurança e depois verifique a conectividade de uma instância do EC2 atual para uma instância existente do banco de dados do RDS.  

1.1 – Abra o painel do Amazon VPC e faça login com as credenciais da sua conta da AWS. Se você não possui uma conta da AWS, crie uma nova conta da AWS para começar.

1.2 – Escolha a lista suspensa Região e selecione a região da AWS onde suas instâncias RDS e EC2 existentes estão localizadas. Este tutorial usa a região Leste dos EUA (Ohio).

1.3 – No painel de navegação esquerdo, selecione Grupos de segurança.

Este tutorial usa dois grupos de segurança da VPC:

  • EC2-sg: Este grupo de segurança está conectado à instância do EC2 e permite apenas a conexão SSH de entrada para a instância do EC2 e qualquer conectividade de saída.
  • RDS-sg: Este grupo de segurança está conectado à instância do RDS e permite apenas a conexão TCP na porta 3306 da instância do EC2 (mostrada como EC2-sg) e qualquer conectividade de saída.

1.4 – Selecione o EC2-sg.

  • Escolha a guia Regras de entrada e verifique se o tipo é SSH.
  • Escolha a guia Regras de saída e verifique se o Tipo é Todo o tráfego.

1.5 – Selecione o RDS-sg.

  • Escolha a guia Regras de entrada e verifique se a Fonte é o EC2-sg.
  • Escolha a guia Regras de saída e verifique se o Tipo é Todo o tráfego.

1.6 – Navegue até o console do RDS, escolha Bancos de dados e, em seguida, escolha sua instância existente do RDS MySQL DB. Na guia Conectividade e segurança, anote o Endpoint da instância.

1.7 – Navegue até o console do EC2, escolha Instâncias em execução e depois escolha a instância do EC2 na qual deseja testar a conectividade com a instância do RDS DB. Escolha Conectar-se.

1.8 – Na caixa de diálogo Conectar-se à sua instância, escolha Conectar-se à instância do EC2 (conexão SSH baseada em navegador). Uma janela do navegador é aberta, exibindo a Interface de Linhas de Comando (ILC) da instância do EC2.

1.9 – Na ILC da instância do EC2, teste a conectividade com a instância do RDS DB usando o seguinte comando:

mysql -h <RDS DB endpoint> -P 3306 -u <username> -p

Quando solicitado, insira sua senha e pressione Enter.

A ILC retorna uma mensagem mostrando que você se conectou com êxito à instância do RDS DB. Se você não conseguir conectar-se da instância do EC2 à instância do RDS, verifique se as duas estão na mesma VPC e se os grupos de segurança estão configurados corretamente.

Etapa 2: armazenar credenciais de banco de dados no AWS Secrets Manager

Para esta etapa, armazene suas credenciais de banco de dados no AWS Secrets Manager Cada conta de usuário do banco de dados que o proxy acessa requer um segredo correspondente no AWS Secrets Manager. O Amazon RDS Proxy usa esses segredos para manter um grupo de conexões com o banco de dados.

2.1 – Navegue até a seção Secrets Manager do Console de Gerenciamento da AWS e escolha Armazenar um novo segredo.

2.2 – Na caixa Selecionar tipo de segredo, escolha Credenciais de banco de dados RDS. Digite o nome de usuário e a senha usados na criação do banco de dados.

2.3 – Selecione a DefaultEncryptionKey e, em seguida, escolha o banco de dados RDS correspondente para o que o segredo acesse. Escolha Avançar.  

2.4 – Na seção Nome e descrição do segredo, especifique um nome e uma descrição para o segredo, a fim de encontrá-lo depois mais facilmente. Escolha Avançar.

2.5 – O AWS Secrets Manager permite que você configure a mudança automática dos segredos. Essa é uma maneira fácil e inteligente de aumentar a segurança do aplicativo. Para obter mais informações, consulte Mudança de segredos no AWS Secrets Manager.

A configuração da mudança de segredos está fora do assunto deste tutorial. Por isso, você deve selecionar a opção Desabilitar mudança automática e, em seguida, Avançar.

2.6 – O console do Secrets Manager mostra as definições de configuração do seu segredo e uma amostra de código que demonstra como usá-lo. Role até a parte inferior da página e escolha Armazenar para salvar o segredo.

2.7 – Depois de criar o segredo, a página Secrets Manager exibirá os segredos criados. Escolha o seu tutorial-segredo.

Na caixa Secret details (Detalhes do segredo), é exibido o ARN do segredo. Copie esse valor, pois ele será necessário mais adiante neste tutorial.

Etapa 3: criar política e função do IAM

Nesta etapa, você cria a função e a política do AWS Identity and Access Management (IAM) que permitem ao RDS Proxy acessar os segredos que você criou no AWS Secrets Manager.

3.1 – Acesse o Painel do IAM no Console de Gerenciamento da AWS. No painel de navegação do painel do IAM, escolha Funções, e, em seguida, Criar função.

3.2 – Em Selecionar tipo de entidade confiável, escolha Serviço da AWS. Para Escolha um caso de uso, selecione RDS.

3.3. Em Selecione seu caso de uso, escolha RDS – Adicionar Função ao Banco de Dados e escolha Avançar: permissões.

3.4 – Escolha Criar política e selecione a guia JSON. Excluir as declarações de política existentes.

3.5 – Adicione a nova instrução de política a seguir, substituindo o valor secreto do ARN pelo exemplo listado abaixo. Escolha Revisar política.

(Esta declaração de política é descrita em Configurando políticas do AWS Identity and Access Management (IAM) no Guia do usuário do Amazon RDS).

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword",
                "secretsmanager:CreateSecret",
                "secretsmanager:ListSecrets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": [
                     "your_secret_ARN"
            ]
        }
    ]
}

3.6 – Na seção Revisar política, especifique um nome e uma descrição para a política, a fim de encontrá-la depois mais facilmente. Selecione Criar política.

3.7 – Escolha Funções e Atualizar.

3.8 – Na caixa Pesquisar, digite tutorial e selecione tutorial-policy. Selecione Próximo: marcações.

3.9 – Pule a seção de marcação e escolha Próximo: revisão.

3.10 – Na seção Revisão, especifique um nome e uma descrição para a função, a fim de encontrá-la depois mais facilmente. Selecione Criar função.

3.11 – Confirme que a função foi criada.

Etapa 4: criar um RDS Proxy

Nesta etapa, você cria um RDS Proxy e configura o proxy para o grupo de segurança verificado na Etapa 1, o segredo criado na Etapa 2 e a função criada na Etapa 3.

4.1 – Acessar o console do RDS. No painel de navegação do RDS, escolha Proxies e, em seguida, Criar proxy.

4.2 – Na seção Proxy configuration (Configuração do proxy), faça o seguinte:

  • Para o Identificador de proxy, atribua ao proxy um nome facilmente identificável.
  • Desmarque a caixa de seleção Exigir Transport Layer Security.
  • Deixe o Tempo limite da conexão inativa do cliente como o padrão 30 minutos.

4.3 – Na seção Configuração do grupo-alvo, para Banco de Dados, escolha a instância do RDS MySQL DB a ser associada a este Proxy RDS. (Esta instância do banco de dados RDS é a mesma instância com a qual você verificou a conectividade na Etapa 1). Para o Número máximo de conexões do grupo de conexões, mantenha o valor padrão 100.

4.4 – Na seção Conectividade, faça o seguinte:

  • Em Segredo do Secrets Manager, escolha o segredo que você criou na Etapa 2.
  • Em função do IAM, escolha a função que você criou na Etapa 3.
  • Para a Autenticação IAM, mantenha a configuração padrão de Desativado. (Este tutorial usa credenciais de banco de dados para se conectar ao RDS Proxy, para que a autenticação do IAM não seja usada).
  • Para Sub-redes, escolha no mínimo duas sub-redes em diferentes zonas de disponibilidade.
  • Expanda a Configuração de conectividade adicional e, para o Grupo de segurança da VPC, escolha o grupo de segurança RDS-sg existente.

4.5 – Na seção Configuração avançada, mantenha a seleção padrão para Registro aprimorado. Marque a caixa de seleção contrato de serviço e escolha Criar proxy.

4.6 – Aguarde o status do proxy mudar de Criando para Disponível e, depois, selecione o proxy.

4.7 – Na seção Configurações do proxy, anote o Endpoint do proxy e confirme se todos os outros parâmetros estão corretos.

Etapa 5: conectar-se ao RDS DB através do RDS Proxy

Nesta etapa, você se conecta à instância do RDS DB a partir da sua instância do EC2. No entanto, em vez de conectar-se diretamente, a instância do EC2 conecta-se à instância do RDS DB através do seu Proxy RDS.

5.1 – Acessar o console do EC2. No painel de navegação do EC2, escolha Executando instâncias e depois selecione a instância do EC2 da qual você testou a conectividade na Etapa 1. Escolha Conectar-se.

5.2 – Na caixa de diálogo Conectar-se à sua instância, escolha Conectar-se à instância do EC2 (conexão SSH baseada em navegador), e depois escolha Conectar-se.

5.3 – Na ILC da instância do EC2, use o seguinte comando para conectar-se à instância do RDS através do endpoint do RDS Proxy:

mysql -h <proxy endpoint> -P 3306 -u <username> -p

Quando solicitado, insira sua senha e pressione Enter.

A ILC retorna uma mensagem mostrando que você se conectou com êxito à instância do RDS DB através do endpoint do RDS Proxy.

Etapa 6: monitorar a conexão do Proxy RDS

Nesta etapa, use o Amazon CloudWatch para monitorar métricas de proxy, como conexões de clientes e bancos de dados.

6.1 – Acesse o CloudWatch console. No painel de navegação do CloudWatch, escolha Métricas e, em seguida, RDS, Métricas por proxy.  

6.2 – Na caixa Pesquisar, digite o nome do seu proxy.

6.3 – Na lista de métricas, escolha ClientConnections e DatabaseConnections. Para a opção de exibição, escolha Número.

A métrica ClientConnections mostra o número atual de conexões do cliente com o RDS Proxy relatadas a cada minuto. A métrica DatabaseConnections mostra o número atual de conexões de banco de dados do RDS Proxy relatadas a cada minuto. Para detalhes sobre todas as métricas, consulte Monitoramento do RDS Proxy.

O gráfico resultante mostra que há uma conexão de cliente (EC2 para RDS Proxy) e uma conexão de banco de dados (RDS Proxy para a instância RDS DB). Esses dados confirmam a conexão feita na Etapa 5.

Etapa 7: limpeza

Nas próximas etapas, limpamos os recursos que criamos neste tutorial.

Excluir RDS Proxy

7.1 – Navegue até o console RDS e, no painel esquerdo, escolha Proxies.

7.2 – Escolha o proxy do tutorial.

7.3 – Selecione Ações e Excluir.

7.4 – Na caixa de diálogo, digite Exclua-me e selecione Excluir.

O status do proxy é alterado para Excluindo. Quando concluído, o proxy é removido da lista.

Excluir segredo

7.5 – Acesse o Console do Secrets Manager.

7.6 – Escolha o segredo do tutorial.

7.7 – Selecione Ações e depois Excluir segredo.

7.8 – Por questões de segurança, o Secrets Manager requer um período de espera até o segredo ser permanentemente excluído. Use o período padrão de 30 dias e escolha Programar exclusão.

Excluir política e função do IAM

7.9 – Acesse o console do IAM e, no painel de navegação, escolha Funções.

7.10 – Procure tutorial-role e marque a caixa de seleção ao lado da função.

7.11 – Na parte superior da página, escolha Excluir função.

7.12 – Na caixa de diálogo de confirmação, selecione Sim, excluir.  

7.12 – No painel de navegação, selecione Políticas.

7.13 – Procure tutorial-policy e marque a caixa de seleção ao lado da política.  

7.14 – Escolha Ações de política e depois Excluir.

7.15 – Confirme que deseja excluir a política e escolha Excluir.

Exclua outros recursos

Se você criou uma nova instância do EC2, nova instância do RDS e grupos de segurança correspondentes para este tutorial, exclua esses recursos também.

Parabéns

Você criou um Amazon RDS Proxy para agrupar e compartilhar conexões de banco de dados, monitorou as métricas de proxy e verificou a atividade de conexão do proxy.

Este tutorial foi útil para você?

Agradecemos a sua atenção
Gostaríamos de saber do que você gostou.
Fechar
Desculpe por ter desapontado
Encontrou algo desatualizado, confuso ou incorreto? Envie seus comentários para nos ajudar a melhorar este tutorial.
Fechar

Saiba mais sobre os recursos do Amazon RDS

Saiba mais sobre os recursos do Amazon RDS no Guia do usuário do Amazon RDS.

Melhores práticas com o Amazon RDS

Saiba sobre as melhores práticas gerais e opções para trabalhar com o Amazon RDS.

Saiba mais sobre o Amazon RDS Proxy

Se você quiser saber mais, leia a postagem do blog Usando o Amazon RDS Proxy com o AWS Lambda e consulte Gerenciando conexões com o Amazon RDS Proxy.