Подключитесь к прокси Amazon RDS PostgresQL с учетными данными IAM с помощью TypeORM - PullRequest
4 голосов
/ 04 августа 2020

Я пытаюсь выяснить, как подключиться к прокси-серверу RDS PG в лямбда-функции с помощью TypeORM (чтобы не было проблем с установкой соединений). Я могу успешно подключиться к экземпляру RDS с помощью функции Lambda, однако, когда я указываю информацию на прокси-сервере (меняю переменные среды в функции Lambda), я получаю следующую ошибку:

{
    "errorType": "Error",
    "errorMessage": "read ECONNRESET",
    "code": "ECONNRESET",
    "errno": "ECONNRESET",
    "syscall": "read",
    "stack": [
        "Error: read ECONNRESET",
        "    at TCP.onStreamRead (internal/stream_base_commons.js:205:27)"
    ]
}

Вот код, используемый для создания соединения с TypeORM:

const config = getDBConfig();
connection = await createConnection(config);

// Retrieve database connection options
const getDBConfig = (): ConnectionOptions => {
  // Use IAM-based authentication to connect
  const signer = new RDS.Signer({
    region: "us-east-1",
    username: process.env.USERNAME,
    hostname: process.env.HOSTNAME,
    port: 5432,
  });

  // Retrieve password dynamically from RDS
  const token = signer.getAuthToken({
    username: process.env.USERNAME,
  });

  // Return configuration object
  return {
    username: process.env.USERNAME,
    host: process.env.HOSTNAME,
    port: 5432,
    password: token,
    ssl: {
      ca: fs.readFileSync("./config/rds-ca-2019-root.pem").toString(),
    },
    type: "postgres",
    database: "postgres",
    synchronize: false,
    entities: [],
  };
};

С точки зрения двух переменных среды HOSTNAME равно URL-адресу, предоставленному прокси RDS, а USERNAME - это имя пользователя, назначенное в секрет прокси RDS. И функция Lambda, и прокси-сервер RDS получили доступ администратора, чтобы убедиться, что там нет никакого вмешательства (я знаю, что это ужасно, уменьшу привилегии, как только я заработаю!). Для прокси-сервера установлена ​​необходимая проверка подлинности IAM.

Обновление 14.08.2020

В этой статье объясняется, как подключить прокси-сервер RDS MySQL к TypeORM, до сих пор не понял, как подключиться к прокси-серверу RDS PG.

https://dev.to/vikasgarghb/rds-proxy-via-sam-15gn

...