Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

1
resposta

[Projeto] Falha da aplicação ao tentar conectar-se ao DB Postgres

Olá,
Estou tentando fazer a formação de DevOps Integração Contínua e Entrega Contínua, porém os cursos estão desatualizados e isto impede a correta e tempestiva progressão nos vários cursos que estão encadeados.

O problema, agora, é a falha da aplicação ao tentar conectar-se ao DB Postgres. A escolha da versão do DB não pode ser a mesma utilizada pelo instrutor Leonardo Sartorello, pois ela não se encontrava mais disponível na AWS devido a obsolescência do curso. A versão requerida do Postgress era a PostgreSQL 13.7-R1 e a utilizada, versão mais próxima disponível hoje, foi a PostgreSQL 13.20.

Já vi, revi e recriei todos os parâmetros de conexão. Atualizei com máxima atenção todos os secrets do Github e eles estão corretos.

Analisando a ec2 da AWS, encontro as seguintes saídas dos arquivos nohup.err e nohup.out:

nohup.err:
2025/11/27 20:20:37 Erro ao conectar com banco de dados
panic: Erro ao conectar com banco de dados
goroutine 1 [running]:
log.Panic({0xc0004a5e70?, 0xc000117010?, 0x0?})
/opt/hostedtoolcache/go/1.24.10/x64/src/log/log.go:432 +0x5a
github.com/guilhermeonrails/api-go-gin/database.ConectaComBancoDeDados()
/home/runner/work/Curso_CI_3/Curso_CI_3/database/db.go:21 +0x2fd
main.main()
/home/runner/work/Curso_CI_3/Curso_CI_3/main.go:9 +0xf

nohup.out:
2025/11/27 20:20:37 ^[[35m/home/runner/work/Curso_CI_3/Curso_CI_3/database/db.go:19
^[[0m^[[31m[error] ^[[0mfailed to initialize database, got error failed to connect to `host=api-go-dev-db.c9a640y6a7op.us-east-2.rds.amazon>

O projeto pode ser encontrado em: https://github.com/jnadyr/Curso_CI_3.git

Algum amigo teria uma pista do que pode estar ocorrendo? A aplicação em Go não pode subir adequadamente sem a solução deste passo crucial!

Muitíssimo obrigado pela atenção, José Nadyr.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Olá José.
Olha nós aqui de novo.
Vou lhe dar algumas sugestões mas o ideal é sempre consultar a documentação oficial ou o suporte da AWS.
O problema que aparece nos seus logs não está relacionado à diferença entre PostgreSQL 13.7 e 13.20.
Essas versões são compatíveis e não causariam falha de conexão.
O erro indica que a aplicação Go não consegue nem estabelecer conexão TCP com o banco.
Isso normalmente ocorre por configuração incorreta de rede (Security Group, VPC) ou parâmetros de conexão incorretos (endpoint, porta, usuário, senha).
A causa mais frequente é que o security group do RDS não está permitindo conexões vindas da sua EC2.
No RDS, o security group associado ao banco precisa ter uma regra de entrada permitindo o tráfego na porta 5432 a partir do security group da EC2 ou do IP público da EC2.
Outra causa comum é a EC2 estar em uma VPC diferente da VPC em que o RDS foi criado. Basta verificar se a VPC ID da EC2 é a mesma que aparece nas configurações de conectividade do RDS. Se estiverem em VPCs diferentes, a conexão não é possível.
Também é preciso confirmar se o endpoint que está nos seus secrets do GitHub é exatamente igual ao endpoint exibido no painel da AWS.
O endpoint deve ser copiado do campo "Endpoint" em RDS - Database - Connectivity.
Ele tem o formato:

api-go-dev-db.c9a640y6a7op.us-east-2.rds.amazonaws.com

Sem https:// ou qualquer prefixo. O valor precisa estar em algum secret como DB_HOST.
A porta deve ser 5432. No curso há momentos em que aparece uma porta diferente, mas o RDS padrão usa 5432.
Usuário e senha também precisam ser exatamente os mesmos configurados no RDS. Isso pode ser testado diretamente mais tarde.
A string de conexão no Go geralmente está construída assim:

connection := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable", host, user, password, dbname, port)

O ideal é acessar a EC2 e confirmar se suas variáveis de ambiente foram realmente carregadas:

echo $DB_HOST
echo $DB_USER
echo $DB_PASSWORD
echo $DB_NAME
echo $DB_PORT

Esses valores vêm dos secrets do GitHub e podem ter sido configurados com erro de digitação.
Para confirmar definitivamente se o problema é de rede ou credencial, teste diretamente da EC2 usando psql.
Instale o cliente:

sudo amazon-linux-extras install postgresql14 -y

E teste a conexão:

psql "host=<ENDPOINT> user=<USUARIO> password=<SENHA> dbname=<NOME> port=5432"

Se esse comando falhar, o problema é rede ou segurança (security group, VPC, subnets, RDS unavailable).
Se conectar, então o problema é na aplicação Go ou nas variáveis de ambiente usadas nela.
Os três pontos que mais causam esse erro são: security group sem permissão de entrada, endpoint incorreto nos secrets e credenciais mal configuradas.
Avise alguma duvida.
Aguardo seu feedback.
Bons estudos.