使用 Neptune 圖形筆記本快速開始 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Neptune 圖形筆記本快速開始

您不必使用 Neptune 圖形筆記本來處理 Neptune 圖形,因此,如果您想要的話,可以繼續使用 AWS CloudFormation 範本立即建立新的 Neptune 資料庫。

同時,無論您是圖形新手且想要學習和實驗,還是有經驗且想要完善查詢,Neptune 工作台都會提供一個互動式開發環境 (IDE),可在您建置圖形應用程式時提高生產力。

Neptune 在 GitHub 上的開放原始碼 Neptune 圖形筆記本專案中,以及在 Neptune 工作台中提供 JupyterJupyterLab 筆記本。這些筆記本會在互動式編碼環境中提供範例應用程式教學課程和程式碼片段,您可以在此了解圖形技術和 Neptune。您可以使用它們搭配不同的查詢語言、不同的資料集,甚至是後端的不同資料庫,來逐步完成設定、填入和查詢圖形。

您可以透過數種不同的方式託管這些筆記本:

  • Neptune 工作台可讓您在 Amazon SageMaker 中託管的全受管環境中執行 Jupyter 筆記本,並自動為您載入最新版本的 Neptune 圖形筆記本專案。建立新的 Neptune 資料庫時,可以在 Neptune 主控台中輕鬆設定工作台。

  • 您也可以在本機安裝 Jupyter。這可讓您從筆記型電腦執行筆記本,而此筆記型電腦已連線至 Neptune 或其中一個開放原始碼圖形資料庫的本機執行個體。在後一種情況下,您可以在花一分錢之前盡可能多嘗試圖形技術。然後,當您準備就緒時,就可以順利移至 Neptune 提供的受管生產環境。

使用 Neptune 工作台託管 Neptune 筆記本

Neptune 提供 T3T4g 執行個體類型,可讓您以每小時不到 $0.10 開始使用這些執行個體類型。工作台資源會透過 Amazon SageMaker 另行計費,與 Neptune 計費分開。請參閱 Neptune 定價頁面。在 Neptune 工作台上建立的 Jupyter 和 JupyterLab 筆記本全都使用 Amazon Linux 2 和 JupyterLab 3 環境。如需有關 JupyterLab 筆記本支援的詳細資訊,請參閱 Amazon SageMaker 文件

您可以透過以下兩種方式之一,在 AWS Management Console中使用 Neptune 工作台建立 Jupyter 或 JupyterLab 筆記本:

  • 建立新的 Neptune 資料庫叢集時,請使用筆記本組態功能表。若要執行此操作,請遵循 使用 AWS Management Console 啟動 Neptune 資料庫叢集 中概述的步驟。

  • 在建立了資料庫叢集之後,請使用左側導覽窗格中的筆記本功能表。若要執行此操作,請按以下步驟進行。

使用筆記本功能表建立 Jupyter 或 JupyterLab 筆記本
  1. 登入 AWS 管理主控台,然後開啟位於 https://console.aws.amazon.com/neptune/home 的 Amazon Neptune​ 主控台。

  2. 在左側的導覽窗格中,選擇 Notebooks (筆記本)

  3. 選擇 Create notebook (建立筆記本)

  4. 叢集清單中,選擇您的 Neptune 資料庫叢集。如果還沒有資料庫叢集,請選擇 Create cluster (建立叢集) 以建立叢集。

  5. 選取筆記本執行個體類型

  6. 為您的筆記本提供名稱,並選擇性提供描述。

  7. 除非您已經為筆記本建立 AWS Identity and Access Management (IAM) 角色,否則請選擇建立 IAM 角色,並輸入 IAM 角色名稱。

    注意

    如果您確實選擇重複使用已針對先前筆記本建立的 IAM 角色,則角色政策必須包含正確的許可,才能存取您正在使用的 Neptune 資料庫叢集。您可以透過檢查 neptune-db:* 動作下資源 ARN 中的元件是否符合該叢集來驗證此情況。當您嘗試執行筆記本魔術命令時,未正確設定的許可會導致連線錯誤。

  8. 選擇 Create notebook (建立筆記本)。建立程序可能需要 5 到 10 分鐘,一切才能準備就緒。

  9. 在建立您的筆記本之後,請選取它,然後選擇開啟 Jupyter開啟 JupyterLab

主控台可以為您的筆記本建立 AWS Identity and Access Management (IAM) 角色,您也可以自行建立。此角色的政策應包括下列各項:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::aws-neptune-notebook-(AWS region)", "arn:aws:s3:::aws-neptune-notebook-(AWS region)/*" ] }, { "Effect": "Allow", "Action": "neptune-db:*", "Resource": [ "arn:aws:neptune-db:(AWS region):(AWS 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 筆記本會為您安裝 Girmlin Python 用戶端,因此只有在您使用普通的 SageMaker 筆記本時,才需要此步驟。

  2. 撰寫如下的程式碼來連線並發出 Gemlin 查詢:

    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()
注意

如果您碰巧使用的 Gremlin Python 用戶端版本早於 3.5.0,則此行:

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

只會是:

connection = DriverRemoteConnection(endpoint,'g')

在 Neptune 筆記本上啟用 CloudWatch 日誌

根據預設,現在會針對 Neptune 筆記本啟用 CloudWatch 日誌。如果您有不是產生 CloudWatch 日誌的舊版筆記本,請遵循下列步驟手動啟用它們:

  1. 登入 AWS 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 資料庫。

若要使用 Girmlin 伺服器作為後端資料庫,請遵循下列資料夾中的指示:

若要使用 Blazegraph 的本機執行個體做為後端資料庫,請遵循下列指示:

將您的 Neptune 筆記本從 Jupyter 遷移至 JupyterLab 3

在 2022 年 12 月 21 日之前建立的 Neptune 筆記本使用 Amazon Linux 1 環境。您可以將在該日期之前建立的舊版 JupyterLab 筆記本遷移到新的 Amazon Linux 2 環境,方法是採取以下 AWS 部落格文章中所述的步驟:使用 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 筆記本執行個體上。它們會在 AWS Management Console的 Neptune 頁面上顯示以供存取和管理,您現在可以選取開啟 Jupyter開啟 JupyterLab,從之前離開的地方繼續工作。