Подключение к Aurora Serverless удаленно

У меня есть Aurora Serverless db кластер под управлением MySQL. Я пытаюсь написать приложение, которое берет строку из скрипта и помещает ее в базу данных.

Я смог успешно подключиться к кластеру, используя мой ec2 в PuTTY, программу узла на ec2 и MySQL Workbench, но я не смог с моим собственным кодом. Я пытаюсь использовать узлы модулей ssh2 и mysql2.

var mysql = require('mysql2');
var Client = require('ssh2').Client;

var ssh = new Client();
ssh.on('ready', function() {
  ssh.forwardOut(
    '127.0.0.1',
    12345,
    '127.0.0.1',
    3306,
    function (err, stream) {
      if (err) throw err;
      var sql = mysql.createConnection({
        host: 'my db endpoint',  
        user: 'root',
        password: 'pass',
        database: 'testdb',
        stream: stream
      //sql stuff
  });
}).connect({
    host: 'ec2-publicdns',
    port: '22',
    username: 'ec2-user',
    privateKey: require('fs').readFileSync('pkeyssh') //pem key converted to openssh using PuTTYgen
});

Когда я запускаю это, я получаю: Error: (SSH) Channel open failure: Connection refused

Кроме того, является ли Aurora serverless правильным решением для меня? Кажется, что нет способа по-настоящему поговорить с ним, не пройдя через ec2. Должен ли я искать другой хост базы данных?

2 ответа

При создании базы данных Aurora Serverless вы настраиваете группу безопасности VPC, которая определяет правила, из которых можно открывать соединения (блок CIDR и порт). Затем вы можете предоставить доступ из этой группы безопасности другим по имени или просто запустить свой сервер приложений из той же группы безопасности, которая предоставит ему доступ. Вы не должны требовать переадресации порта SSH для подключения к БД, даже в контексте тестирования.

Здесь есть хорошее руководство: https://aws.amazon.com/getting-started/tutorials/configure-connect-serverless-mysql-database-aurora, а для получения дополнительной информации о группах безопасности баз данных, пожалуйста, обратитесь к https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html.

Aurora Serverless размещается в Amazon VPC. Согласно документации AWS , к нему можно получить доступ только изнутри VPC (то есть из EC2/ Lambda, который находится в том же VPC, что и кластер Aurora). Вот почему вы можете получить к нему доступ из EC2.

У вас есть три варианта:

  1. Доступ к бессерверному кластеру изнутри VPC с помощью EC2 или Lambda.
  2. Используйте размещенную Aurora вместо бессерверной, к которой можно получить публичный доступ.
  3. Используйте недавно запущенный API данных для создания безопасных HTTP-соединений с бессерверным кластером извне VPC!
Другие вопросы по тегам