Criei uma instância básica do PostgreSQL RDS de teste 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, aberto para a porta 5432. Quando tento conectar, ele falha. Eu devo estar perdendo algo muito direto - mas estou bem 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 "autorizada" verde ao lado do terminal):
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 é esse o resultado que estou obtendo ao tentar conectar-me a partir de um MacBook Pro da Yosemite (observe que está sendo resolvido 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 conectar-me a instâncias públicas do PostgreSQL em outros provedores (por exemplo, Heroku).
Todas as dicas de solução de problemas seriam muito apreciadas, já que estou bastante perdido aqui.
Atualizar
Por comentário, aqui estão as regras de ACL de entrada para a VPC padrão:
fonte
Respostas:
O problema foi que a regra de entrada no grupo de segurança especificou um grupo de segurança como a origem. Alterá-lo para um CIDR que incluía meu endereço IP corrigiu o problema.
fonte
Estava enfrentando um problema semelhante, e foi assim que resolvi:
Clique no grupo de segurança da instância do RDS e verifique as regras de entrada. Você pode ver algo assim:
É necessário definir o intervalo de IP para conter o seu IP ou simplesmente selecionar "Em qualquer lugar" no menu suspenso Origem, para torná-lo acessível a partir do host local ou de qualquer lugar:
fonte
Eu tive um problema semelhante ao me conectar ao postgres. Mesmo que eu tivesse acesso publicamente true, não consegui me conectar.
Adicionei uma regra de entrada de regra no grupo de segurança e agora está funcionando perfeitamente.
fonte
Só queria adicionar minhas descobertas para poupar alguém algum tempo. Esta solução descrita acima funcionou em uma instância do dev ec2, mas após a migração para um novo servidor, ele parou de funcionar. Aconteceu que minha instância RDS e EC2 estavam na mesma VPC, portanto, a instância RDS não pôde ver o IP público que eu havia adicionado ao seu grupo de segurança. Para que isso funcione, você precisa adicionar ao grupo de segurança de instâncias do RDS, o ip privado da instância do EC2 que você pode encontrar em detalhes.
fonte
Depois de criar minha instância do Postgres, meu grupo de segurança padrão (rds-launch-wizard) listou apenas meu endereço IP, então tive que adicionar um Tipo de Todo o Tráfego e Origem de Qualquer Lugar antes de poder conectar-me. Não sou especialista em redes, mas é estranho não ter conseguido me conectar ao meu próprio endereço IP como regra de entrada.
fonte