Подключитесь к Нептуну на AWS с локального компьютера

Я пытаюсь подключиться к базе данных Neptune в экземпляре AWS с локального компьютера в офисе, например, подключить RDS из офиса. Можно ли подключить базу данных Neptune с локального компьютера? Является ли Neptune db общедоступным. Есть ли способ, которым разработчик может подключить neptune db из офиса.

5 ответов

Neptune не поддерживает общедоступные конечные точки (конечные точки, доступные вне VPC). Однако существует несколько архитектурных опций, с помощью которых вы можете получить доступ к своему экземпляру Neptune вне вашего VPC. Все они имеют одну и ту же тему: настройте прокси (компьютер EC2, или ALB, или что-то подобное, или их комбинацию), который находится внутри вашего VPC, и сделайте этот прокси доступным вне вашего VPC.

Похоже, вы хотите общаться с вашим экземпляром исключительно в целях разработки. Самым простым вариантом для этого было бы раскрутить ALB и создать целевую группу, которая указывает на IP вашего экземпляра.

Краткие шаги (Это намеренно не подробно, пожалуйста, обратитесь к документации AWS для получения подробных инструкций):

  1. dig +short <your cluster endpoint>Это даст вам IP-адрес текущего мастера.

  2. Создайте ALB (см. Документацию AWS о том, как это сделать).

  3. Сделайте так, чтобы целевая группа вашего ALB указывала на IP-адрес, полученный на шаге 1. К концу этого шага вы должны прослушивать ALB PORT-A, что бы пересылать запросы IP:PORT, где IP IP вашей базы данных (из шага 1) и PORT порт вашей базы данных (по умолчанию 8182).
  4. Создайте группу безопасности, которая позволяет входящий трафик отовсюду. т.е. правило входящего TCP для 0.0.0.0 на PORT-A,
  5. Присоедините группу безопасности к вашему ALB

Теперь из ящиков разработчика вы можете подключиться к конечной точке ALB в PORT-A, которая внутренне перенаправит запрос вашему экземпляру Neptune.

Изучите документы ALB для получения подробной информации о том, как вы можете его создать, и о концепциях, которые к нему относятся. Если вы хотите, чтобы я разработал какой-либо из шагов, не стесняйтесь спрашивать.

ПРИМЕЧАНИЕ. Это не рекомендуемое решение для настройки производства. IP-адреса, используемые экземплярами Neptune, должны меняться в зависимости от отработки отказа и замены хоста. Используйте это решение только для тестирования. Если вы хотите подобную установку для производства, не стесняйтесь задавать вопрос, и мы можем обсудить варианты.

Ссылка: https://github.com/M-Thirumal/aws-cloud-tutorial/blob/main/neptune/connect_from_local.md

Подключитесь к AWS Neptune из локальной системы

Есть много способов подключиться к Amazon Neptune извне VPC, например, создание load balancer или VPC peering.

Кластеры Amazon Neptune DB можно создавать только в Amazon. Virtual Private Cloud (VPC). Один из способов подключения к Amazon Neptune извне VPC - настроить инстанс Amazon EC2 в качестве proxy serverв одном VPC. При таком подходе вы также захотите настроить SSH tunnel to securely forward traffic to the VPC.

Часть 1. Настройка прокси-сервера EC2.

Запустить Amazon EC2 instance расположен в same region как твой Neptune cluster. Что касается конфигурации, Ubuntuможет быть использован. Поскольку это прокси-сервер, вы можете выбрать самые низкие настройки ресурсов.

Убедитесь, что экземпляр EC2 находится в той же группе VPC, что и ваш кластер Neptune. Чтобы найти группу VPC для кластера Neptune, проверьте консоль в разделе Neptune > Subnet groups. Группа безопасности экземпляра должна иметь возможность отправлять и получать через порт 22 для SSH и порт 8182 для Neptune. Ниже приведен пример настройки группы безопасности.

Наконец, убедитесь, что вы сохранили файл пары ключей (.pem) и запишите каталог для использования на следующем шаге.

Часть 2: Настройка SSH-туннеля.

Этот шаг может отличаться в зависимости от того, используете ли вы Windows или MacOS.

  1. Измените файл hosts, чтобы сопоставить localhost с конечной точкой Neptune.

    Windows: откройте файл hosts от имени администратора. (C:\Windows\System32\drivers\etc\hosts)

    MacOS: откройте терминал и введите команду: sudo nano /etc/hosts

    Добавьте следующую строку в файл hosts, заменив текст адресом конечной точки Neptune.

    127.0.0.1 localhost YourNeptuneEndpoint

    Откройте командную строку от имени администратора для Windows или терминала для MacOS и выполните следующую команду. Для Windows вам может потребоваться запустить SSH из C:\Users\YourUsername\

    ssh -i path/to/keypairfilename.pem ec2-user@yourec2instanceendpoint -N -L 8182:YourNeptuneEndpoint:8182

    В -Nустановлен флаг для предотвращения интерактивного сеанса bash с EC2 и для пересылки только портов. При первом успешном подключении вас спросят, хотите ли вы продолжить подключение? Введите да и введите.

    Чтобы проверить успешность подключения локальной графической записной книжки к Amazon Neptune, откройте браузер и перейдите к:

    https: // YourNeptuneEndpoint:8182 / статус

    Вы должны увидеть отчет, подобный представленному ниже, с указанием статуса и деталей вашего конкретного кластера:

             {
       "status": "healthy",
       "startTime": "Wed Nov 04 23:24:44 UTC 2020",
       "dbEngineVersion": "1.0.3.0.R1",
       "role": "writer",
       "gremlin": {
         "version": "tinkerpop-3.4.3"
       },
       "sparql": {
         "version": "sparql-1.1"
       },
       "labMode": {
         "ObjectIndex": "disabled",
         "DFEQueryEngine": "disabled",
         "ReadWriteConflictDetection": "enabled"
       }
     }
    

Закрыть соединение

Когда вы будете готовы закрыть соединение, используйте Ctrl+D для выхода.

Как уже упоминалось, вы не можете получить доступ напрямую за пределы своего VPC.
В следующей ссылке описывается другое решение с использованием туннеля SSH: подключение к aws-neptune-from-local-environment. Мне это намного проще для тестирования и разработки. Вы также можете создать туннель SSH с помощью Putty.

Нептун не позволяет вам подключаться к экземпляру БД с вашего локального компьютера. Вы можете подключиться к Neptune только через EC2 внутри того же VPC, что и Neptune ( документация aws).

Шаги для доступа к Нептуну из местных:

  1. Создайте экземпляр EC2 в том же VPC, что и ваш кластер Нептун.
  2. Разрешить доступ к EC2 по вашему IP.
  3. Загрузите консоль Apache Gremlin в экземпляре EC2.
  4. Разархивируйте консольную папку и откройте файл neptune-remote.yaml внутри.
  5. Измените имя хоста в файле yaml на конечную точку кластера Нептуна.
  6. Запустите файл gremlin.sh в папке b in консоли apache gremlin.
  7. Теперь вы на консоли Гремлина. Удаленное подключение к кластеру Neptune с помощью следующей команды::remote connect tinkerpop.server conf / neptune-remote.yaml
  8. используйте команду: удаленная консоль для удаленного доступа к консоли кластера neptune.

Все команды gremlin теперь будут выполняться непосредственно на вашем графике Нептуна.

Документация AWS для шагов 3-8.

Привет, вы можете подключить NeptuneDB с помощью консоли gremlin на вашем локальном компьютере. ИСПОЛЬЗУЙТЕ ЭТУ ССЫЛКУ, чтобы настроить свой локальный сервер gremlin, он работает для меня версия gremlin 3.3.2 Только вы должны обновить файл remote.yaml в соответствии с вашим URL и портом

Другие вопросы по тегам