从本地计算机连接到AWS上的Neptune

时间:2018-09-30 07:25:09

标签: amazon-web-services amazon-neptune

我试图从办公室的本地计算机连接到AWS Instance中的Neptune DB,就像从办公室连接RDS。是否可以从本地计算机连接Neptune db? Neptune db是否公开可用。开发人员可以通过任何方式从办公室连接neptune db。

5 个答案:

答案 0 :(得分:2)

如上所述,您不能直接在VPC外部访问。
以下链接描述了使用SSH隧道的另一种解决方案:connecting-to-aws-neptune-from-local-environment。 我发现测试和开发目的要容易得多。 您也可以使用Putty创建SSH隧道。

答案 1 :(得分:1)

Neptune不支持公共端点(可从VPC外部访问的端点)。但是,很少有体系结构选项可用来在VPC之外访问Neptune实例。它们都具有相同的主题:设置位于VPC内的代理(EC2计算机,ALB或类似的东西,或它们的组合),并使该代理可从VPC外部访问。

似乎您只是想出于开发目的而与您的实例对话。最简单的选择是启动ALB,并创建一个指向您实例IP的目标组。

简要步骤(有意不详细介绍,请参考AWS Docs了解详细说明)

  1. dig +short <your cluster endpoint> 这将为您提供当前主机的IP地址。

  2. 创建一个ALB(有关如何执行此操作,请参阅AWS Docs)。

  3. 使ALB的目标组指向第1步获得的IP地址。在此步骤结束时,您应该使ALB监听PORT-A,它将请求转发到IP:PORT,其中IP是您的数据库IP(来自步骤1),{{1 }}是您的数据库端口(默认为PORT)。
  4. 创建一个安全组,该安全组允许来自任何地方的入站流量。即81820.0.0.0的入站TCP规则。
  5. 将安全组附加到您的ALB

现在,从开发人员框中,您可以连接到PORT-A的ALB端点,该端点将在内部将请求转发到您的Neptune实例。

签出ALB文档,详细了解如何创建它以及围绕它的概念。如果您需要我详细说明任何步骤,请随时提问。

注意:对于生产设置,这不是推荐的解决方案。 Neptune实例使用的IP必然会随着故障转移和主机更换而发生变化。仅将此解决方案用于测试目的。如果您想要类似的生产设置,请随时提出问题,我们可以讨论选项。

答案 2 :(得分:0)

Neptune不允许您从本地计算机连接到数据库实例。您只能通过与Neptune(aws documentation)相同的VPC内的EC2连接到Neptune。

从本地访问海王星的步骤:

  1. 在与您的海王星群集相同的VPC中创建一个EC2实例。
  2. 允许您的IP访问EC2。
  3. 在EC2实例中下载apache gremlin控制台。
  4. 解压缩控制台文件夹并打开其中的neptune-remote.yaml文件。
  5. 将yaml文件中的主机名更改为您的海王星群集端点。
  6. 在Apache gremlin控制台的bin文件夹中运行gremlin.sh文件。
  7. 您现在位于gremlin控制台。使用以下命令远程连接到您的海王星群集- :远程连接tinkerpop.server conf / neptune-remote.yaml
  8. 使用命令:远程控制台远程访问您的海王星群集控制台。

所有gremlin命令现在都将直接在您的海王星图上运行。

AWS documentation for steps 3-8.

答案 3 :(得分:0)

嗨,您可以在本地计算机上使用gremlin控制台连接NeptuneDB。 USE THIS LINK设置您的本地gremlin服务器,它对我有用gremlin 3.3.2版本 只需根据URL和端口更新remote.yaml

答案 4 :(得分:0)

参考:https://github.com/M-Thirumal/aws-cloud-tutorial/blob/main/neptune/connect_from_local.md

从本地系统连接到 AWS Neptune

有多种方法可以从 Amazon Neptune 外部连接到 VPC,例如设置 load balancerVPC peering

Amazon Neptune 数据库集群只能在 Amazon Virtual Private Cloud (VPC) 中创建。从 VPC 外部连接到 Amazon Neptune 的一种方法是将 Amazon EC2 实例设置为同一 VPC 内的 proxy server。使用这种方法,您还需要设置一个 SSH tunnel to securely forward traffic to the VPC

第 1 部分:设置 EC2 代理服务器。

启动位于 Amazon EC2 instance 中的 same region 作为您的 Neptune cluster。在配置方面,可以使用Ubuntu。由于这是一个代理服务器,您可以选择最低的资源设置。

确保 EC2 实例与您的 Neptune 集群在同一个 VPC 组中。要查找 Neptune 集群的 VPC 组,请检查 Neptune > Subnet groups 下的控制台。实例的安全组需要能够在 22 的端口 SSH8182 的端口 Neptune 上发送和接收。请参阅下面的示例安全组设置。

enter image description here

最后,请确保保存密钥对文件 (.pem) 并记下在下一步中使用的目录。

第 2 部分:设置 SSH 隧道。

此步骤可能因您运行的是 Windows 还是 MacOS 而异。

  1. 修改您的主机文件以将 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,您可能需要从 C:\Users\YourUsername\

    运行 SSH

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

    -N 标志设置为阻止与 EC2 的交互式 bash 会话并仅转发端口。初始成功连接会询问您是否要继续连接?输入 yes 并回车。

    要测试本地图形笔记本与 Amazon Neptune 的连接是否成功,请打开浏览器并导航至:

    https://YourNeptuneEndpoint:8182/status

    您应该会看到一个报告,类似于下面的报告,表明您的特定集群的状态和详细信息:

     {
       "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 退出。