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

Sre*_*u V 8 amazon-web-services amazon-neptune

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

big*_*g-K 7

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)和PORT您的数据库端口(默认为8182)。
  4. 创建一个安全组,该安全组允许来自任何地方的入站流量。即0.0.0.0on的入站TCP规则PORT-A
  5. 将安全组附加到您的ALB

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

请查看ALB文档,以获取有关如何创建它以及围绕它的概念的详细信息。如果您需要我详细说明任何步骤,请随时提问。

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

  • 我对推荐的生产设置@big-K 感兴趣。 (2认同)

Thi*_*mal 6

参考: 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 实例设置为proxy server同一 VPC 内的实例。通过这种方法,您还需要设置一个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。实例的安全组需要能够在端口22forSSH和 端口8182for上发送和接收Neptune。请参阅下面的安全组设置示例。

在此输入图像描述

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

第 2 部分:设置 SSH 隧道。

此步骤可能会有所不同,具体取决于您运行的是 Windows 还是 MacOS。

  1. 修改您的主机文件以将 localhost 映射到您的 Neptune 端点。

    Windows:以管理员身份打开主机文件(C:\Windows\System32\drivers\etc\hosts)

    MacOS:打开终端并输入命令:sudo nano /etc/hosts

    将以下行添加到主机文件中,并将文本替换为您的 Neptune 端点地址。

    127.0.0.1 localhost YourNeptuneEndpoint

    以管理员身份(Windows)或终端(MacOS)打开命令提示符并运行以下命令。对于 Windows,您可能需要从以下位置运行 SSHC:\Users\YourUsername\

    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"
       }
     }
    
    Run Code Online (Sandbox Code Playgroud)

关闭连接

当您准备好关闭连接时,请使用 Ctrl+D 退出。


Avn*_*evy 5

正如已经提到的,您无法直接访问 VPC 外部。
以下链接描述了使用 SSH 隧道的另一种解决方案:connecting-to-aws-neptune-from-local-environment。我发现它对于测试和开发目的来说更容易。您也可以使用 Putty 创建 SSH 隧道。