我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB,例如从办公室连接 RDS。是否可以从本地计算机连接 Neptune db?Neptune db 是否公开可用。开发人员有什么方法可以从办公室连接 neptune db。
4 回答
Neptune 不支持公共终端节点(可从 VPC 外部访问的终端节点)。但是,很少有架构选项可用于访问 VPC 外部的 Neptune 实例。它们都具有相同的主题:设置驻留在您的 VPC 内的代理(EC2 机器或 ALB,或类似的东西,或这些的组合),并使该代理可从您的 VPC 外部访问。
似乎您只想出于开发目的与您的实例交谈。最简单的选择是启动 ALB,并创建一个指向您的实例 IP 的目标组。
简要步骤(这些是故意不详细的,请参阅 AWS Docs 以获取详细说明):
dig +short <your cluster endpoint>
这将为您提供当前主服务器的 IP 地址。创建 ALB(有关如何执行此操作,请参阅 AWS 文档)。
- 使 ALB 的目标组指向为第 1 步获得的 IP 地址。在此步骤结束时,您应该有一个 ALB 正在侦听
PORT-A
,它将请求转发到IP:PORT
您IP
的数据库 IP(来自步骤 1)和PORT
您的数据库端口(默认为8182
)。 - 创建一个允许来自任何地方的入站流量的安全组。
0.0.0.0
即on 的入站 TCP 规则PORT-A
。 - 将安全组附加到 ALB
现在,您可以从您的开发人员框中连接到位于 PORT-A 的 ALB 端点,该端点会在内部将请求转发到您的 Neptune 实例。
请查看 ALB 文档以获取有关如何创建它以及围绕它的概念的详细信息。如果您需要我详细说明任何步骤,请随时询问。
注意:这不是生产设置的推荐解决方案。Neptune 实例使用的 IP 必然会随着故障转移和主机更换而改变。仅将此解决方案用于测试目的。如果您想要类似的生产设置,请随时提出问题,我们可以讨论选项。
如前所述,您无法直接在 VPC 外部访问。
以下链接描述了使用 SSH 隧道的另一种解决方案:connecting-to-aws-neptune-from-local-environment。我发现它更容易用于测试和开发目的。您也可以使用 Putty 创建 SSH 隧道。
参考: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 数据库集群只能在 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
. 实例的安全组需要能够在 port 22
forSSH
和 port 8182
for上发送和接收Neptune
。请参阅下面的示例安全组设置。
最后,确保保存密钥对文件 (.pem) 并记下该目录以供下一步使用。
第 2 部分:设置 SSH 隧道。
此步骤可能会有所不同,具体取决于您运行的是 Windows 还是 MacOS。
修改您的主机文件以将 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 -i path/to/keypairfilename.pem ec2-user@yourec2instanceendpoint -N -L 8182:YourNeptuneEndpoint:8182
该
-N
标志设置为阻止与 EC2 的交互式 bash 会话并仅转发端口。初始成功连接会询问您是否要继续连接?键入是并输入。要测试本地图形笔记本与 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 退出。
您好,您可以在本地计算机上使用 gremlin 控制台连接 NeptuneDB。 使用此链接设置您的本地 gremlin 服务器,它适用于我 gremlin 3.3.2 版本只有您必须根据您的 url 和端口更新 remote.yaml