1

I am working on a nodejs and postgres application. Both are deployed in google. I have my postgres in google cloud sql and nodejs is deployed in google app engine. I am trying to connect to postgres from nodejs, but it throws it cannot connect to cloud postgres. I have updated app.yml file and i am using regular pg client and not knex. Can anyone help me. My config as below

const client = new Client({
  user: 'postgres',
  host:'xx.xx.xx.xx',
  socketpath: '/cloudsql/proj-name:us-central1:app-name',
  database: 'xxxxx',
  password: 'xxxx',
  port: 5432,
  ssl: true,
});
client.connect();

I tried without socket path and host. Nothing works. All this works fine from my local machine, i have whitelisted my local public ip.Any help would be much appreciated.

Error i get

(node:16) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: connect ETIMEDOUT xx.xx.xx.xx:5432
  • are the Cloud SQL instance and App Engine app hosted on different GCP projects? If so, you need to grant access to the GAE service account on the other project as explained [here](https://cloud.google.com/appengine/docs/flexible/nodejs/using-cloud-sql#granting_access_to_gae_name_short). In any case, you'll also find more instructions on that link that could help. – Guillem Xercavins Mar 24 '18 at 12:28
  • no both are in same project. – Meiyappan Kannappa Mar 24 '18 at 14:11

1 Answers1

1

Changing to below configuration worked.

  const client = new Client({
      user: 'postgres',
      host: '/cloudsql/proj-name:us-central1:app-name',
      database: 'xxxxx',
      password: 'xxxx',
      port: 5432
    });

client.connect();