As instâncias RDS for PostgreSQL operam em uma Virtual Private Cloud (VPC) e não acessam a Internet pública diretamente. Este tópico explica como configurar um NAT gateway da Internet e uma entrada de Source Network Address Translation (SNAT) para permitir que sua instância RDS for PostgreSQL se conecte a um banco de dados externo — MySQL, SQL Server, PostgreSQL ou Redis — pela Internet usando a extensão foreign data wrapper (FDW).
A entrada SNAT concede acesso de saída à Internet para a instância. Redes externas não conseguem alcançar a instância por meio do NAT gateway.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância RDS for PostgreSQL. Consulte Quickly create an RDS for PostgreSQL instance.
Um banco de dados de destino (MySQL, SQL Server, PostgreSQL ou Redis) acessível pela Internet com um endereço IP público.
-
A extensão FDW compatível com a versão do seu RDS for PostgreSQL. Verifique em Extensions supported by RDS for PostgreSQL a extensão necessária para cada tipo de banco de dados:
MySQL:
mysql_fdwSQL Server:
tds_fdwPostgreSQL:
postgres_fdwRedis:
redis_fdw
Uma conta na instância RDS for PostgreSQL. Consulte Create an account.
Uma conta no banco de dados de destino e um banco de dados com dados.
Antes de configurar o FDW, reúna as seguintes informações do banco de dados de destino:
Endereço IP público ou nome do host.
Número da porta (padrão:
3306para MySQL).Nome do banco de dados.
Nome de usuário e senha para a conexão FDW.
Configurar um NAT gateway da Internet
Etapa 1: Criar um NAT gateway
Faça login no console do NAT Gateway.
Na página Internet NAT Gateway, clique em Create Internet NAT Gateway.
(Opcional) Se esta for a primeira vez que você usa o NAT Gateway, clique em Create Service-linked Role na seção Service-linked Role Creation. O botão aparece na página Internet NAT Gateway.
-
Na página Create Internet NAT Gateway, defina os parâmetros a seguir e clique em Buy Now.
A tabela abaixo lista apenas os principais parâmetros. Para visualizar todos os parâmetros, consulte Use the SNAT feature of an Internet NAT gateway to access the Internet .
Parâmetro
Descrição
Region
Selecione a mesma região da sua instância RDS for PostgreSQL.
Network And Zone
Escolha a VPC e o vSwitch da sua instância RDS for PostgreSQL. Para localizar a VPC, acesse a página Database Connection no console RDS.
Network Type
Selecione Internet NAT Gateway.
EIP
Escolha Configure Later.
Na página Confirm, revise a configuração e clique em Activate Now.
Após a criação, o gateway aparece na página Internet NAT Gateway.

Etapa 2: Associar um Elastic IP Address (EIP)
No console do NAT Gateway, clique no ID da instância do NAT gateway criado.
Na aba Associated EIP, clique em Associate EIP.
-
Na caixa de diálogo Associate EIP, selecione Purchase and Associate EIP.

Clique em OK.
O EIP aparece na seção Associated EIP.

Etapa 3: Criar uma entrada SNAT
No console do NAT Gateway, clique no ID da instância do NAT gateway criado.
Na aba SNAT, clique em Create SNAT Entry.
-
Configure os parâmetros a seguir e clique em OK.
Parâmetro
Descrição
SNAT Entry
Selecione vSwitch Granularity. Todas as instâncias no vSwitch usam o EIP para acessar a Internet.
Select vSwitch
Escolha o vSwitch da sua instância RDS for PostgreSQL.
Select EIP
Selecione o EIP associado na etapa anterior.
A entrada SNAT aparece na SNAT Entry List.

Configurar o banco de dados de destino
Adicione o EIP à lista de permissões ou às regras de firewall do banco de dados de destino para que ele aceite conexões da sua instância RDS.
MySQL: Consulte Privilégios fornecidos pelo MySQL.
PostgreSQL: Consulte O arquivo pg_hba.conf.
SQL Server: Consulte Configurar o firewall do Windows para permitir acesso ao SQL Server.
-
Redis: Use um firewall para permitir tráfego do EIP na porta do Redis. Por exemplo, no CentOS com iptables:
iptables -A INPUT -s <EIP_associated_with_the_Internet_NAT_gateway> -p tcp --dport <Redis_port_number> -j ACCEPT
Configurar a instância RDS for PostgreSQL
Os passos a seguir usam um banco de dados MySQL como exemplo. A extensão mysql_fdw é usada em todo o processo. Substitua o nome da extensão e as opções FDW pelos valores adequados ao tipo do seu banco de dados de destino.
Etapa 1: Conectar-se à instância RDS
Conecte-se à sua instância RDS for PostgreSQL. Consulte Connect to a PostgreSQL instance.
Etapa 2: Instalar a extensão FDW
Execute o seguinte comando:
CREATE EXTENSION mysql_fdw;
Etapa 3: Criar uma definição de servidor
Crie uma definição de servidor que aponte para o banco de dados de destino. Substitua os espaços reservados pelos valores reais:
CREATE SERVER <server_name>
FOREIGN DATA WRAPPER mysql_fdw OPTIONS (
host '<public_IP_of_the_target_database>',
port '<port_of_the_target_database>'
);
Exemplo para um banco de dados MySQL:
CREATE SERVER mysql_server80
FOREIGN DATA WRAPPER mysql_fdw OPTIONS (
host 'XX.XX.XX.XX',
port '3306'
);
Saída esperada:
CREATE SERVER
Etapa 4: Criar um mapeamento de usuário
Mapeie a definição de servidor para um usuário na instância RDS. Isso permite que o usuário se autentique no banco de dados MySQL de destino:
CREATE USER MAPPING
FOR <RDS_for_PostgreSQL_username> SERVER <created_server_name> OPTIONS (
username '<username_for_the_target_database>',
password '<password_for_the_target_database>'
);
Exemplo:
CREATE USER MAPPING
FOR pg_client SERVER mysql_server80 OPTIONS (
username 'testuser',
password 'U123456!'
);
Saída esperada:
CREATE USER MAPPING
Etapa 5: Criar uma tabela externa
Crie uma tabela externa que faça referência a uma tabela no banco de dados de destino. Os nomes e tipos das colunas devem corresponder aos da tabela remota:
CREATE FOREIGN TABLE <foreign_table_name> (
id int,
name varchar(10)
)
SERVER <created_server_name> OPTIONS (
dbname '<database_name_of_the_target_database>',
table_name '<table_name_of_the_target_database>'
);
Exemplo:
CREATE FOREIGN TABLE mysql_fdw_test (
id int,
name varchar(10)
)
SERVER mysql_server80 OPTIONS (
dbname 'testdb',
table_name 'test'
);
Saída esperada:
CREATE FOREIGN TABLE
Etapa 6: Verificar a conexão
Consulte a tabela externa para confirmar se os dados retornam do banco de dados MySQL de destino:
SELECT * FROM mysql_fdw_test;
Se a consulta retornar linhas do banco de dados de destino, a configuração estará concluída.
Próximos passos
Para acessar outro tipo de banco de dados externo, repita as etapas acima com a extensão FDW correspondente (
tds_fdwpara SQL Server,postgres_fdwpara PostgreSQL,redis_fdwpara Redis).Para gerenciar as configurações do seu NAT gateway, consulte Use the SNAT feature of an Internet NAT gateway to access the Internet.