Neste tutorial, veremos como configurar uma instância do Amazon RDS dentro de uma sub-rede VPC privada e conectar-se a ela usando um túnel SSH.
Um túnel SSH reverso faz uma conexão criptografada de saída de dentro de sua VPC para os servidores do Chartio. Isso permite que você conecte o Chartio a um banco de dados em sua sub-rede VPC privada sem modificar sua tabela de rotas ou grupos de segurança.
Visão geral
O diagrama a seguir mostra como será nossa arquitetura final. Criaremos uma VPC com 2 sub-redes na região us-west-1; 1 sub-rede pública na zona de disponibilidade us-west-1a e 1 sub-rede privada na zona de disponibilidade us-west-1b. A VPC terá um gateway da Internet anexado, porém a tabela de rotas principal conterá apenas uma única rota local que permite a comunicação dentro da VPC. A sub-rede pública terá uma tabela de rotas personalizada que inclui a rota local, bem como uma rota direcionando todos os outros tráfegos pelo gateway da Internet. Uma instância do Postgres RDS será provisionada na sub-rede privada com um grupo de segurança anexado que permite apenas tráfego de entrada na porta 5432 da sub-rede pública. Uma instância do EC2 será provisionada na sub-rede pública com um grupo de segurança anexado que permite apenas o tráfego SSH de entrada do seu IP local e todo o tráfego de saída. Por fim, faremos o SSH na instância do EC2, instalaremos o cliente Postgres
psql
, crie uma tabela na instância do RDS e instale e configure um túnel SSH. 
Criar uma VPC
Navegue até o VPC Dashboard no AWS Management Console e crie uma nova VPC.

Criar e anexar um gateway de Internet
Na guia Gateways da Internet do Painel da VPC, crie um novo gateway da Internet.

Anexe o gateway à VPC recém-criada.

Criar uma tabela de rotas personalizada
Na guia Route Tables do VPC Dashboard, crie uma nova tabela de rotas.

Adicione uma rota à tabela de rotas para o gateway da Internet.

Criar sub-redes públicas e privadas
Crie uma sub-rede na zona de disponibilidade us-west-1a.

Altere a tabela de rotas da sub-rede criada anteriormente da tabela de rotas principal para a tabela de rotas personalizada.

Crie uma sub-rede na zona de disponibilidade us-west-1b.

Criar grupos de segurança
Crie um grupo de segurança para a instância do EC2 a ser provisionada na sub-rede pública us-west-1a.

Autorize o tráfego SSH de entrada do seu endereço IP local. As regras de saída padrão devem estar bem.

Crie um grupo de segurança para a instância do Postgres RDS a ser provisionada na sub-rede privada us-west-1b.

Autorize o tráfego de entrada da sub-rede pública pela porta 5432.

Remova todas as regras de saída para o grupo de segurança RDS.

Provisionar uma instância do EC2
Provisione uma instância do EC2 na sub-rede pública us-west-1a. Certifique-se de que um IP público seja atribuído.


Atribua o grupo de segurança criado anteriormente.

Provisionar uma instância Postgres RDS
Provisione uma instância do Postgres RDS na sub-rede privada us-west-1b. Certifique-se de que um IP público NÃO seja atribuído.



Instale e configure um túnel SSH
SSH na instância do EC2 e execute os comandos a seguir.
# Substitute 54.153.81.83 with your instance's public IP.
ssh [email protected]
# Create a table so Chartio has something to reflect.
# Substitute chartio.cacziwncd30i.us-west-1.rds.amazonaws.com with your instance's endpoint.
sudo apt-get update
sudo apt-get install postgresql-client
psql -h chartio.cacziwncd30i.us-west-1.rds.amazonaws.com -p 5432 -d chartio -U chartio -c "CREATE TABLE foo(id int);"
Instale o autossh (ou gerenciador de túnel SSH de sua escolha) e configure uma conexão de túnel usando as instruções.
Verifique o editor de esquema do Chartio para garantir que o esquema da instância do RDS foi refletido. Se não tiver, tente clicar no botão “Atualizar esquema”.
