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

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

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

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

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

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

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

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

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

使用 Neptune Workbench 托管 Neptune 笔记本

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

您可以在 Amazon Web Services Management Console中使用 Neptune Workbench 创建 Jupyter 或 JupyterLab 笔记本,方法有两种:

使用笔记本菜单创建 Jupyter 或 JupyterLab 笔记本
  1. 登录 Amazon 管理控制台并通过以下网址打开 Amazon Neptune 控制台:https://console.aws.amazon.com/neptune/home

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

  3. 选择 Create Notebook (创建笔记本)

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

  5. 选择笔记本实例类型

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

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

    注意

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

  8. 选择 Create Notebook (创建笔记本)。在一切准备就绪之前,创建过程可能需要 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

如果您已经安装了 Neptune 魔术命令,那么将笔记本连接到 Neptune 很容易,但是,即使您没有使用 Neptune 笔记本,也可以使用 Python 将 SageMaker 笔记本连接到 Neptune。

在 SageMaker 笔记本单元格中连接到 Neptune 需要采取的步骤
  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 日志

现在,默认情况下为 Neptune 笔记本启用 CloudWatch 日志。如果您的旧笔记本无法生成 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 中运行笔记本。从 SageMaker 连接到 Neptune 可能比在本地安装笔记本更方便,而且它可以让您更轻松地使用 Neptune ML

有关如何在 SageMaker 中设置笔记本的说明,请参阅使用 Amazon 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 服务器Blazegraph 数据库。

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

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

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

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

此外,还有一些步骤专门适用于将 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. 选择 Edit(编辑)。

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

  6. 选择更新笔记本设置

  7. 再次启动笔记本。

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