从本地计算机连接到 AWS 上的 Neptune
Connect to Neptune on AWS from local machine
我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB,就像从办公室连接到 RDS 一样。是否可以从本地计算机连接 Neptune 数据库? Neptune 数据库是否公开可用?开发人员可以通过任何方式从办公室连接 Neptune 数据库吗?
Neptune 不支持 public 端点(可从 VPC 外部访问的端点)。但是,您可以使用很少的架构选项来访问 VPC 外部的 Neptune 实例。它们都有相同的主题:设置驻留在您的 VPC 内的代理(EC2 机器或 ALB,或类似的东西,或这些的组合),并使该代理可从您的 VPC 外部访问。
您似乎纯粹出于开发目的与您的实例对话。最简单的选择是启动一个 ALB,并创建一个指向您实例 IP 的目标组。
简要步骤(有意不详细,请参阅 AWS 文档了解详细说明):
dig +short <your cluster endpoint>
这将为您提供当前主人的 IP 地址。
创建 ALB(有关如何执行此操作的信息,请参阅 AWS 文档)。
- 使您的 ALB 的目标组指向步骤 #1 中获得的 IP 地址。在此步骤结束时,您应该有一个 ALB 侦听
PORT-A
,它将请求转发到 IP:PORT
,其中 IP
是您的数据库 IP(来自步骤 1)和 PORT
是您的数据库端口(默认为 8182
)。
- 创建一个允许来自任何地方的入站流量的安全组。即
PORT-A
. 上 0.0.0.0
的入站 TCP 规则
- 将安全组附加到您的 ALB
现在,您可以从您的开发者盒子连接到 PORT-A 上的 ALB 端点,这会在内部将请求转发到您的 Neptune 实例。
查看 ALB 文档以了解有关如何创建它的详细信息以及围绕它的概念。如果您需要我详细说明任何步骤,请随时询问。
注意:这不是针对生产设置的推荐解决方案。 Neptune 实例使用的 IP 必然会随着故障转移和主机更换而改变。仅将此解决方案用于测试目的。如果您想要类似的生产设置,请随时提出问题,我们可以讨论选项。
您好,您可以在本地计算机上使用 gremlin 控制台连接 NeptuneDB。
USE THIS LINK 设置本地 gremlin 服务器,它适用于我的 gremlin 3.3.2 版本
只有您需要根据 url 和端口
更新 remote.yaml
如前所述,您无法在 VPC 外部直接访问。
以下 link 描述了另一种使用 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
有很多方法可以从 VPC
外部连接到 Amazon Neptune
,例如设置 load balancer
或 VPC peering
。
Amazon Neptune 数据库集群只能在 Amazon Virtual Private Cloud (VPC)
中创建。从 VPC 外部连接到 Amazon Neptune 的一种方法是在同一 VPC 内将 Amazon EC2 实例设置为 proxy server
。使用这种方法,您还需要设置一个 SSH tunnel to securely forward traffic to the VPC
.
第 1 部分:设置 EC2 代理服务器。
启动位于 same region
的 Amazon EC2 instance
作为您的 Neptune cluster
。在配置方面,可以使用Ubuntu
。由于这是代理服务器,您可以选择最低的资源设置。
确保 EC2 实例与您的 Neptune 集群位于同一 VPC 组中。要查找您的 Neptune 集群的 VPC 组,请查看 Neptune > Subnet groups
下的控制台。实例的安全组需要能够在 SSH
端口 22
和 Neptune
端口 8182
上发送和接收。请参阅下面的示例安全组设置。
最后,确保保存密钥对文件 (.pem) 并记下下一步要使用的目录。
第 2 部分:设置 SSH 隧道。
此步骤可能会有所不同,具体取决于您是 运行宁 Windows 还是 MacOS。
修改您的主机文件以将本地主机映射到您的 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 退出。
我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB,就像从办公室连接到 RDS 一样。是否可以从本地计算机连接 Neptune 数据库? Neptune 数据库是否公开可用?开发人员可以通过任何方式从办公室连接 Neptune 数据库吗?
Neptune 不支持 public 端点(可从 VPC 外部访问的端点)。但是,您可以使用很少的架构选项来访问 VPC 外部的 Neptune 实例。它们都有相同的主题:设置驻留在您的 VPC 内的代理(EC2 机器或 ALB,或类似的东西,或这些的组合),并使该代理可从您的 VPC 外部访问。
您似乎纯粹出于开发目的与您的实例对话。最简单的选择是启动一个 ALB,并创建一个指向您实例 IP 的目标组。
简要步骤(有意不详细,请参阅 AWS 文档了解详细说明):
dig +short <your cluster endpoint>
这将为您提供当前主人的 IP 地址。创建 ALB(有关如何执行此操作的信息,请参阅 AWS 文档)。
- 使您的 ALB 的目标组指向步骤 #1 中获得的 IP 地址。在此步骤结束时,您应该有一个 ALB 侦听
PORT-A
,它将请求转发到IP:PORT
,其中IP
是您的数据库 IP(来自步骤 1)和PORT
是您的数据库端口(默认为8182
)。 - 创建一个允许来自任何地方的入站流量的安全组。即
PORT-A
. 上 - 将安全组附加到您的 ALB
0.0.0.0
的入站 TCP 规则
现在,您可以从您的开发者盒子连接到 PORT-A 上的 ALB 端点,这会在内部将请求转发到您的 Neptune 实例。
查看 ALB 文档以了解有关如何创建它的详细信息以及围绕它的概念。如果您需要我详细说明任何步骤,请随时询问。
注意:这不是针对生产设置的推荐解决方案。 Neptune 实例使用的 IP 必然会随着故障转移和主机更换而改变。仅将此解决方案用于测试目的。如果您想要类似的生产设置,请随时提出问题,我们可以讨论选项。
您好,您可以在本地计算机上使用 gremlin 控制台连接 NeptuneDB。 USE THIS LINK 设置本地 gremlin 服务器,它适用于我的 gremlin 3.3.2 版本 只有您需要根据 url 和端口
更新 remote.yaml如前所述,您无法在 VPC 外部直接访问。
以下 link 描述了另一种使用 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
有很多方法可以从 VPC
外部连接到 Amazon Neptune
,例如设置 load balancer
或 VPC peering
。
Amazon Neptune 数据库集群只能在 Amazon Virtual Private Cloud (VPC)
中创建。从 VPC 外部连接到 Amazon Neptune 的一种方法是在同一 VPC 内将 Amazon EC2 实例设置为 proxy server
。使用这种方法,您还需要设置一个 SSH tunnel to securely forward traffic to the VPC
.
第 1 部分:设置 EC2 代理服务器。
启动位于 same region
的 Amazon EC2 instance
作为您的 Neptune cluster
。在配置方面,可以使用Ubuntu
。由于这是代理服务器,您可以选择最低的资源设置。
确保 EC2 实例与您的 Neptune 集群位于同一 VPC 组中。要查找您的 Neptune 集群的 VPC 组,请查看 Neptune > Subnet groups
下的控制台。实例的安全组需要能够在 SSH
端口 22
和 Neptune
端口 8182
上发送和接收。请参阅下面的示例安全组设置。
最后,确保保存密钥对文件 (.pem) 并记下下一步要使用的目录。
第 2 部分:设置 SSH 隧道。
此步骤可能会有所不同,具体取决于您是 运行宁 Windows 还是 MacOS。
修改您的主机文件以将本地主机映射到您的 Neptune 端点。
Windows: 以管理员身份打开hosts文件
(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" } }
关闭连接
当您准备好关闭连接时,使用 Ctrl+D 退出。