Criei uma instância RDS do PostgreSQL de teste básico em uma VPC que possui uma única sub-rede pública e que deve estar disponível para conexão pela Internet pública. Ele usa o grupo de segurança padrão, que está aberto para a porta 5432. Quando tento conectar, ele falha. Devo estar perdendo algo muito direto - mas estou muito perdido nisso.
Aqui estão as configurações do banco de dados, observe que está marcado como Publicly Accessible
:
Aqui estão as configurações do grupo de segurança, observe que está totalmente aberto (afirmado nas configurações do RDS acima pela dica verde "autorizada" ao lado do endpoint):
Aqui está o comando que estou tentando usar para conectar:
psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
--port=5432
--username=masteruser
--password
--dbname=testdb
E este é o resultado que estou obtendo ao tentar conectar de um Yosemite MacBook Pro (observe, está resolvendo para um endereço IP 54.*):
psql: could not connect to server: Operation timed out
Is the server running on host "myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting
TCP/IP connections on port 5432?
Não tenho nenhum tipo de firewall ativado e consigo me conectar a instâncias públicas do PostgreSQL em outros provedores (por exemplo, Heroku).
Qualquer dica de solução de problemas seria muito apreciada, já que estou bastante perdido aqui.
Atualizar
Por comentário, aqui estão as regras de ACL de entrada para a VPC padrão:
O problema era que a regra de entrada no grupo de segurança especificava um grupo de segurança como a origem. Alterá-lo para um CIDR que incluía meu endereço IP corrigiu o problema.
Abra o grupo de segurança do banco de dados na AWS; e escolha "Editar regras de entrada"; "Adicionar regra". Existe uma opção "Meu IP" no menu suspenso; selecione essa opção para preencher automaticamente com o endereço IP público do seu computador na notação CIDR
Estava enfrentando um problema semelhante e foi assim que resolvi:
Clique no security group da instância RDS e verifique as regras de entrada. Você pode ver algo assim:
É necessário definir o intervalo de IP para conter seu IP ou apenas selecionar "Anywhere" no menu suspenso Source, para torná-lo acessível a partir do host local ou de qualquer lugar:
Eu tive um problema semelhante ao conectar-me ao postgres. Embora eu tenha acessado publicamente true , não consegui me conectar.
Eu adicionei uma regra de entrada de regra no grupo de segurança e agora está funcionando perfeitamente bem.
Só queria adicionar minhas descobertas para economizar algum tempo de alguém. Esta solução descrita acima funcionou em uma instância dev ec2, mas depois que migrei para um novo servidor, ela parou de funcionar. Acontece que minha instância do RDS e a instância do EC2 estavam no mesmo VPC, portanto, a instância do RDS não pôde ver o IP público que adicionei ao seu grupo de segurança. Para fazer isso funcionar, você precisa adicionar ao grupo de segurança das instâncias RDS, o ip privado da instância EC2 que você pode encontrar em detalhes.