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 resolveu o problema.
Eu criei uma instância básica do PostgreSQL RDS de teste em uma VPC que tem 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. Eu devo estar sentindo falta de algo muito direto - mas estou bastante perdido nisso.
Aqui estão as configurações do banco de dados, observe que ele está marcado como Publicly Accessible
:
Aquiestãoasconfiguraçõesdogrupodesegurança,observequeeleestátotalmenteaberto(afirmadonasconfiguraçõesdoRDSacimapeladica"autorizada" verde ao lado do ponto de extremidade):
Aquiestáocomandoqueestoutentandousarparaconectar:
psql--host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com\--port=5432--username=masteruser--password--dbname=testdb
EesteéoresultadoqueestouobtendoaotentarseconectardeumYosemiteMacBookPro(notequeeleestáresolvendoparaumendereçoIP54.*):
psql:couldnotconnecttoserver:OperationtimedoutIstheserverrunningonhost"myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting
TCP/IP connections on port 5432?
Eu não tenho nenhum tipo de firewall habilitado e posso me conectar a instâncias públicas do PostgreSQL em outros provedores (por exemplo, Heroku).
Todas as dicas de solução de problemas serão muito bem-vindas, já que estou praticamente perdida aqui.
Atualizar
Por comentário, aqui estão as regras de entrada da ACL para o VPC padrão:
Estava enfrentando 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:
TemquedefinirointervalodeIPparaconteroseuIPouapenasselecionar"Qualquer lugar" na lista suspensa Fonte, para torná-lo acessível a partir do host local ou em qualquer lugar:
Só queria adicionar minhas descobertas para salvar alguém em algum momento. Essa solução descrita acima funcionou em uma instância dev ec2, mas depois que migrei para um novo servidor, ela parou de funcionar. Descobri que ambas as instâncias do RDS e do EC2 estavam no mesmo VPC, de modo que a instância do RDS não pôde ver o IP público que eu adicionei ao grupo de segurança. Para isso, é necessário 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.
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 Type of All Traffic e Source of Anywhere antes que eu pudesse me conectar. Não sou especialista em redes, mas é estranho não poder me conectar com meu próprio endereço IP como uma regra de entrada.