使用 Neptune 图形笔记本快速入门 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Neptune 图形笔记本快速入门

您不必使用 Neptune 图形笔记本来处理 Neptune 图形,因此,如果您愿意,您可以继续使用 Amazon CloudFormation 模板立即创建一个新的 Neptune 数据库。

同时,无论您是图形新手并想学习和体验,还是经验丰富并想要完善查询,Neptune Workbench 都提供了一个交互式开发环境 (IDE),可以在您构建图形应用程序时提高工作效率。

Neptune 在开源 Neptune 图形JupyterLab笔记本项目和海王星工作台中提供 Jupyter GitHub 和笔记本。这些笔记本在交互式编码环境中提供示例应用程序教程和代码片段,您可以在此环境中学习图形技术和 Neptune。您可以使用它们在后端通过不同的查询语言、不同的数据集甚至不同的数据库来逐步设置、配置、填充和查询图形。

可以通过多种不同方式托管这些笔记本:

  • Nep tune 工作台允许您在托管在亚马逊的完全托管的环境中运行 Jupyter 笔记本 SageMaker,并自动为您加载最新版本的 Neptune 图形笔记本项目。创建新的 Neptune 数据库时,可以轻松地在 Neptune 控制台中设置工作台。

    注意

    创建 Neptune 笔记本实例时,您可以选择两个网络访问选项:通过 Amazon 直接访问 SageMaker (默认)和通过 VPC 进行访问。无论哪种选择,笔记本电脑都需要访问互联网才能获取安装Neptune工作台的软件包依赖关系。无法访问互联网将导致 Neptune 笔记本实例的创建失败。

  • 您也可以在本地安装 Jupyter。这使您可以从便携式电脑上运行笔记本,而便携式电脑连接到 Neptune 或其中一个开源图形数据库的本地实例。在后一种情况下,您可以随心所欲地尝试图形技术,而不必花一分钱。然后,准备就绪后,您可以顺利迁移到 Neptune 提供的托管式生产环境。

使用 Neptune Workbench 托管 Neptune 笔记本

Neptune 提供的 T3T4g 实例类型可供您入门,每小时不到 0.10 美元。您需要通过亚马逊 SageMaker为工作台资源付费,这与 Neptune 账单是分开的。请参阅 Neptune 定价页面。Jupyter 和在 Neptune 工作台上创建的 JupyterLab 笔记本都使用 Amazon Linux 2 和 3 环境。 JupyterLab 有关 JupyterLab 笔记本支持的更多信息,请参阅 Amazon SageMaker 文档

您可以通过以下两种方式使用 Neptune 工作台创建 Jupyter 或 JupyterLab 笔记本: Amazon Web Services Management Console

使用 “笔记本” 菜单创建 Jupyter 或 JupyterLab 笔记本
  1. 登录 Amazon 管理控制台,打开亚马逊 Neptune 控制台,网址为 https://console.aws.amazon.com/neptune/home。

  2. 在左侧的导航窗格中,选择 Notebooks (笔记本)

  3. 选择创建笔记本

  4. 集群列表中,选择您的 Neptune 数据库集群。如果您还没有数据库集群,请选择 Create cluster (创建集群) 以创建一个。

  5. 选择笔记本实例类型

  6. 为您的笔记本提供一个名称以及可选的描述。

  7. 除非您已经为笔记本创建了 Amazon Identity and Access Management (IAM) 角色,否则请选择创建 IAM 角色并输入 IAM 角色名称。

    注意

    如果您选择重用为之前的笔记本创建的 IAM 角色,则该角色策略必须包含访问您正在使用的 Neptune 数据库集群的正确权限。您可以通过检查资源 ARN 中 neptune-db:* 操作下的组件是否与该集群匹配来验证这一点。当您尝试运行笔记本魔术命令时,权限配置不正确会导致连接错误。

  8. 选择创建笔记本。在一切准备就绪之前,创建过程可能需要 5 到 10 分钟。

  9. 创建笔记本后,将其选中,然后选择 “打开 Jupyter” 或 “打开”。 JupyterLab

控制台可以为您的笔记本创建 Amazon Identity and Access Management (IAM) 角色,您也可以自己创建一个角色。此角色的策略应包括以下内容:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::aws-neptune-notebook-(Amazon region)", "arn:aws:s3:::aws-neptune-notebook-(Amazon region)/*" ] }, { "Effect": "Allow", "Action": "neptune-db:*", "Resource": [ "arn:aws:neptune-db:(Amazon region):(Amazon account ID):(Neptune resource ID)/*" ] } ] }

请注意,上述策略中的第二条语句列出了一个或多个 Neptune 集群资源 ID

此外,角色应建立以下信任关系:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

再说一遍,一切准备就绪可能需要 5 至 10 分钟。

您可以将新笔记本配置为与 Neptune ML 结合使用,如手动为 Neptune ML 配置 Neptune 笔记本中所述。

使用 Python 将通用 SageMaker 笔记本连接到 Neptune

如果你已经安装了海王星魔法,那么将笔记本电脑连接到海王星很容易,但是即使你没有使用 SageMaker 海王星笔记本电脑,也可以使用 Python 将笔记本连接到海王星。

在笔记本电脑手机中连接到 Neptune 需要采取的步骤 SageMaker
  1. 安装 Gremlin Python 客户端:

    !pip install gremlinpython

    Neptune 笔记本会为你安装 Gremlin Python 客户端,因此只有在你使用普通笔记本时才需要执行此步骤。 SageMaker

  2. 编写如下代码来连接和发出 Gremlin 查询:

    from gremlin_python import statics from gremlin_python.structure.graph import Graph from gremlin_python.process.graph_traversal import __ from gremlin_python.process.strategies import * from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection from gremlin_python.driver.aiohttp.transport import AiohttpTransport from gremlin_python.process.traversal import * import os port = 8182 server = '(your server endpoint)' endpoint = f'wss://{server}:{port}/gremlin' graph=Graph() connection = DriverRemoteConnection(endpoint,'g', transport_factory=lambda:AiohttpTransport(call_from_event_loop=True)) g = graph.traversal().withRemote(connection) results = (g.V().hasLabel('airport') .sample(10) .order() .by('code') .local(__.values('code','city').fold()) .toList()) # Print the results in a tabular form with a row index for i,c in enumerate(results,1): print("%3d %4s %s" % (i,c[0],c[1])) connection.close()
注意

如果您碰巧使用的是早于 3.5.0 的 Gremlin Python 客户端,那么这行:

connection = DriverRemoteConnection(endpoint,'g', transport_factory=lambda:AiohttpTransport(call_from_event_loop=True))

只会是:

connection = DriverRemoteConnection(endpoint,'g')

在 Neptune 笔记本电脑上启用 CloudWatch 日志

CloudWatch Neptune 笔记本现在默认启用日志。如果您的旧笔记本无法生成 CloudWatch 日志,请按照以下步骤手动启用日志:

  1. 登录 Amazon Web Services Management Console 并打开SageMaker 控制台

  2. 在左侧的导航窗格上,选择笔记本,然后选择笔记本实例。查找要为其启用日志的 Neptune 笔记本的名称。

  3. 选择该笔记本实例的名称,进入详细信息页面。

  4. 如果笔记本实例正在运行,请选择笔记本详细信息页面右上角的停止按钮。

  5. 权限和加密下,有一个对应于 IAM 角色 ARN 的字段。选择此字段中的链接可转到运行此笔记本实例的 IAM 角色。

  6. 创建以下策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DeleteLogDelivery", "logs:Describe*", "logs:GetLogDelivery", "logs:GetLogEvents", "logs:ListLogDeliveries", "logs:PutLogEvents", "logs:PutResourcePolicy", "logs:UpdateLogDelivery" ], "Resource": "*" } ] }
  7. 保存此新策略并将其附加到在步骤 4 中找到的 IAM 角色。

  8. 点击 SageMaker 笔记本实例详细信息页面右上角的 “启动”。

  9. 日志开始流动后,您应该会在详细信息页面笔记本实例设置部分的左下角附近标有生命周期配置的字段下方看到查看日志链接。

如果笔记本无法启动,则 SageMaker 主机上的笔记本详细信息页面上会显示一条消息,说明笔记本实例花了 5 分钟才启动。 CloudWatch 可以在以下名称下找到与此问题相关的日志:

(your-notebook-name)/LifecycleConfigOnStart

在本地计算机上设置图形笔记本

图形笔记本项目包含有关在本地计算机上设置 Neptune 笔记本的说明:

您可以将本地笔记本连接到 Neptune 数据库集群,也可以连接到开源图形数据库的本地或远程实例。

将 Neptune 笔记本与 Neptune 集群结合使用

如果您在后端连接到 Neptune 集群,则可能需要在 Amazon 中运行笔记本电脑。 SageMaker从连接到 Neptune 比从本地安装笔记本电脑更方便,而且它 SageMaker 可以让你更轻松地使用 Neptune ML。

有关如何在中 SageMaker设置笔记本的说明,请参阅使用 Amazon 启动 graph-not ebook。 SageMaker

有关如何设置和配置 Neptune 本身的说明,请参阅设置 Neptune

您也可以将本地安装的 Neptune 笔记本连接到 Neptune 数据库集群。这可能稍微复杂一些,因为 Amazon Neptune 数据库集群只能在设计上与外界隔离的 Amazon Virtual Private Cloud (VPC) 中创建。有多种方法可以从 VPC 外部连接到 VPC。一种是使用负载均衡器。另一种方法是使用 VPC 对等连接(请参阅 Amazon Virtual Private Cloud 对等连接指南)。

但是,对于大多数人来说,最便捷的方法是进行连接以在 VPC 中设置 Amazon EC2 代理服务器,然后使用 SSH 隧道(也称为端口转发)来连接到它。你可以在图形 GitHub 笔记本项目的additional-databases/neptune文件夹中将绘图笔记本本地连接到 Amazon Neptune 中找到有关如何设置的说明。

使用带有开源图形数据库的 Neptune 笔记本

要免费开始使用图形技术,还可以在后端使用带有各种开源数据库的 Neptune 笔记本。例如 TinkerPop Gremlin 服务器Blaz egraph 数据库。

要使用 Gremlin 服务器作为后端数据库,请按照以下说明进行操作:

要使用 Blazegraph 的本地实例作为后端数据库,请按照以下说明进行操作:

将你的 Neptune 笔记本从 Jupyter 迁移到 3 JupyterLab

2022 年 12 月 21 日之前创建的 Neptune 笔记本使用 Amazon Linux 1 环境。您可以按照以下 Amazon 博客文章中描述的步骤,将在此日期之前创建的较旧的 Jupyter 笔记本迁移到新的 Amazon Linux 2 环境 JupyterLab 3:使用亚马逊 Linux 2 将您的工作迁移到带有 Amazon Linux 2 的亚马逊 SageMaker 笔记本实例 2。

此外,还有一些步骤专门适用于将 Neptune 笔记本迁移到新环境:

Neptune 特定的先决条件

在源 Neptune 笔记本的 IAM 角色中,添加以下所有权限:

{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:CreateBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::(your ebs backup bucket name)", "arn:aws:s3:::(your ebs backup bucket name)/*" ] }, { "Effect": "Allow", "Action": [ "sagemaker:ListTags" ], "Resource": [ "*" ] }

请务必为要用于备份的 S3 桶指定正确的 ARN。

特定于 Neptune 的生命周期配置

按博客文章中所述创建第二个生命周期配置脚本以恢复备份(从 on-create.sh)时,生命周期名称必须遵循 aws-neptune-* 格式,例如 aws-neptune-sync-from-s3。这样可以确保在 Neptune 控制台中创建笔记本时可以选择 LCC。

从快照到新实例的 Neptune 特定同步

在博客文章中描述的从快照同步到新实例的步骤中,以下是特定于 Neptune 的更改:

  • 在步骤 4 中,选择 notebook-al2-v2

  • 在步骤 5 中,重用源 Neptune 笔记本中的 IAM 角色。

  • 在步骤 7 和 8 之间:

    • 笔记本实例设置中,设置使用 aws-neptune-* 格式的名称。

    • 打开网络设置手风琴式折叠组件,选择与源笔记本中相同的 VPC、子网和安全组。

创建新笔记本后 Neptune 特定的步骤

  1. 选择笔记本的打开 Jupyter 按钮。一旦 SYNC_COMPLETE 文件出现在主目录中,请继续执行下一步。

  2. 前往 SageMaker 控制台中的笔记本实例页面。

  3. 停止笔记本。

  4. 选择编辑

  5. 在笔记本实例设置中,通过选择源 Neptune 笔记本的原始生命周期来编辑生命周期配置字段。请注意,这不是 EBS 备份生命周期。

  6. 选择更新笔记本设置

  7. 再次启动笔记本。

通过对博客文章中概述的步骤进行此处描述的修改,您的图形笔记本现在应该迁移到使用 Amazon Linux 2 和 JupyterLab 3 环境的新 Neptune 笔记本实例上。它们将显示在的 Neptune 页面上以供访问和管理,现在 Amazon Web Services Management Console,你可以选择 “打开 Jupyter” 或 “打开”,从上次停下来的地方继续工作。 JupyterLab