【发布时间】:2021-08-09 01:14:11
【问题描述】:
我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB,例如从办公室连接 RDS。是否可以从本地计算机连接 Neptune db? Neptune db 是否公开可用。开发人员有什么方法可以从办公室连接 neptune db。
【问题讨论】:
标签: amazon-web-services amazon-neptune
我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB,例如从办公室连接 RDS。是否可以从本地计算机连接 Neptune db? Neptune db 是否公开可用。开发人员有什么方法可以从办公室连接 neptune db。
【问题讨论】:
标签: amazon-web-services amazon-neptune
Neptune 不支持公共端点(可从 VPC 外部访问的端点)。但是,很少有架构选项可用于访问 VPC 外部的 Neptune 实例。它们都具有相同的主题:设置驻留在您的 VPC 内部的代理(EC2 机器或 ALB,或类似的东西,或这些的组合),并使该代理可从您的 VPC 外部访问。
您似乎想与您的实例交谈纯粹是出于开发目的。最简单的选择是启动 ALB,并创建一个指向您的实例 IP 的目标组。
简要步骤(这些是故意不详细的,请参阅 AWS Docs 以获得详细说明):
dig +short <your cluster endpoint>
这将为您提供当前主服务器的 IP 地址。
创建 ALB(有关如何执行此操作的信息,请参阅 AWS 文档)。
PORT-A 的 ALB,它将请求转发到 IP:PORT,其中 IP 是您的数据库 IP(来自步骤 1),PORT 是您的数据库端口(默认是8182)。 0.0.0.0 上的入站 TCP 规则 PORT-A。现在,您可以通过您的开发人员框连接到位于 PORT-A 的 ALB 端点,该端点会在内部将请求转发到您的 Neptune 实例。
请查看 ALB 文档,了解有关如何创建它以及围绕它的概念的详细信息。如果您需要我详细说明任何步骤,请随时询问。
注意:这不是生产设置的推荐解决方案。 Neptune 实例使用的 IP 必然会随着故障转移和主机更换而改变。仅将此解决方案用于测试目的。如果您想要类似的生产设置,请随时提出问题,我们可以讨论选项。
【讨论】:
/?gremlin=g.V%28%29.count%28%29(/?gremlin=g.V().count() 的 URL 编码版本)来恢复它
如前所述,您无法直接在 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
有很多方法可以从VPC 外部连接到Amazon Neptune,例如设置load balancer 或VPC 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。
启动位于same region 中的Amazon EC2 instance 作为您的Neptune cluster。在配置方面,可以使用Ubuntu。由于这是代理服务器,您可以选择最低的资源设置。
确保 EC2 实例与您的 Neptune 集群位于同一 VPC 组中。要查找 Neptune 集群的 VPC 组,请检查Neptune > Subnet groups 下的控制台。实例的安全组需要能够在端口22 上发送和接收SSH 和端口8182 上Neptune。请参阅下面的示例安全组设置。
最后,确保保存密钥对文件 (.pem) 并记下目录以供下一步使用。
此步骤可能会有所不同,具体取决于您运行的是 Windows 还是 MacOS。
修改您的主机文件以将 localhost 映射到您的 Neptune 端点。
Windows:以管理员身份打开 hosts 文件 (C:\Windows\System32\drivers\etc\hosts)
MacOS:打开终端并输入命令:sudo nano /etc/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 退出。
【讨论】:
access denied吗?或在此处使用屏幕截图创建问题以帮助github.com/M-Thirumal/aws-cloud-tutorial/blob/main/neptune/…
您好,您可以在本地计算机上使用 gremlin 控制台连接 NeptuneDB。 USE THIS LINK 设置你的本地 gremlin 服务器,它适用于我 gremlin 3.3.2 版本 只有你必须根据你的 url 和端口更新 remote.yaml
【讨论】: