グラフノートブックでの Amazon Neptune の使用 - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

グラフノートブックでの Amazon Neptune の使用

Neptune グラフを操作するには、Neptune グラフノートブックを使用するか、 AWS CloudFormation テンプレート を使用して新しい Neptune データベースを作成できます。以下の操作も可能

Neptune ワークベンチは、グラフを初めて使用したり、学習や実験を行ったり、経験豊富でクエリを絞り込んだりする場合でも、グラフアプリケーションの構築時に生産性を高めるインタラクティブな開発環境 (IDE) を提供します。Workbench には、Neptune データベースの操作、クエリの記述、データの視覚化を行うための使いやすいインターフェイスが用意されています。

AWS CloudFormation テンプレートを使用して Neptune データベースをセットアップし、Workbench を使用してグラフアプリケーションを開発することで、追加のツールを使用せずに Neptune を迅速かつ効率的に開始できます。これにより、基盤となるインフラストラクチャを設定するのではなく、アプリケーションの構築に集中できます。

Neptune は、オープンソースの Neptune グラフJupyterLabノートブックプロジェクトで GitHub、Neptune ワークベンチで Jupyter とノートブックを提供します。 https://github.com/aws/graph-notebookこれらのノートブックには、グラフテクノロジーと Neptune について学ぶことができるインタラクティブなコーディング環境でサンプルアプリケーションチュートリアルとコードスニペットが用意されています。これらを使用して、異なるクエリ言語、異なるデータセット、およびバックエンド上の異なるデータベースを使用して、グラフの設定、構成、入力、およびクエリを実行できます。

これらのノートブックはいくつかの方法でホストできます。

  • Neptune ワークベンチを使用すると、Amazon でホストされているフルマネージド環境で Jupyter ノートブックを実行し SageMaker、Neptune グラフノートブックプロジェクトの最新リリースを自動的にロードできます。新しい Neptune データベースを作成するときに、Neptune コンソールでワークベンチを簡単にセットアップできます。

    注記

    Neptune ノートブックインスタンスを作成するときは、Amazon SageMaker (デフォルト) を介した直接アクセスと を介したアクセスの 2 つのネットワークアクセスオプションが用意されていますVPC。どちらのオプションでも、ノートブックは Neptune ワークベンチをインストールするためのパッケージの依存関係を取得するためにインターネットにアクセスする必要があります。インターネットアクセスがないと、Neptune ノートブックインスタンスの作成が失敗します。

  • Jupyter をローカルにインストールすることもできます。これにより、Neptune またはオープンソースのグラフデータベースのローカルインスタンスに接続されたラップトップからノートブックを実行することもできます。後者の場合、無料でグラフテクノロジーを好きなだけ試してみることができます。準備ができたら、Neptune が提供するマネージドプロダクション環境にスムーズに移行できます。

Neptune ワークベンチを使用して Neptune ノートブックをホストする

Neptune は、1 時間あたり 0.10 ドル未満で開始できる T3 および T4g インスタンスタイプを提供します。Neptune の請求とは別に SageMaker、Amazon を通じてワークベンチリソースに対して請求されます。Neptune の料金ページをご覧ください。Neptune ワークベンチで作成された Jupyter と JupyterLab ノートブックはすべて Amazon Linux 2 および JupyterLab 3 環境を使用します。 JupyterLab ノートブックのサポートの詳細については、「Amazon SageMaker ドキュメント」を参照してください。

Jupyter または JupyterLab ノートブックは、 AWS Management Console Neptune ワークベンチを使用して で 2 つの方法で作成できます。

  • 新しい Neptune DB クラスターを作成するときは、[ノートブック設定] メニューを使用してください。このためには、「AWS Management Console を使用して Neptune DB クラスターを起動する」のステップに従います。

  • DB クラスターが作成された後、左側のナビゲーションペインの [ノートブック] メニューを使用してください。そのためには、以下の手順を実行します。

Notebooks メニューを使用して Jupyter または JupyterLab ノートブックを作成するには
  1. AWS マネジメントコンソールにサインインし、Amazon Neptune コンソールをhttps://console.aws.amazon.com/neptune/ホーム で開きます。

  2. 左側のナビゲーションペインで、[Notebooks (ノートブック)] を選択します。

  3. [Create notebook (ノートブックの作成)] を選択します。

  4. [Cluster] (クラスター) リストで、Neptune DB クラスターを選択します。DB クラスターをまだ作成していない場合は、[Create cluster (クラスターの作成)] を選択して作成します。

  5. [ノートブックインスタンスタイプ] を選択します。

  6. ノートブックに名前を付け、必要に応じて説明を入力します。

  7. ノートブックの AWS Identity and Access Management (IAM) ロールをまだ作成していない場合は、IAMロールの作成 を選択し、IAMロール名を入力します。

    注記

    以前のノートブック用に作成されたIAMロール ;を再利用することを選択した場合、ロールポリシーには、使用している Neptune DB クラスターにアクセスするための正しいアクセス許可が含まれている必要があります。これを確認するには、 neptune-db:*アクションARNの下にあるリソース内のコンポーネントが、そのクラスターと一致していることを確認します。アクセス許可の設定を誤ると、notebook magic コマンドを実行しようとすると接続エラーが発生します。

  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)/*" ] } ] }

上記のポリシーの 2 番目のステートメントには、1 つ以上の Neptune クラスターリソース IDsがリストされていることに注意してください。

また、ロールは次の信頼関係を確立する必要があります。

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

繰り返しますが、すべての準備ができるまで、5 ~ 10 分かかることがあります。

Neptune ML 用の Neptune ノートブックの手動設定」で説明されているように、新しいノートブックを Neptune ML と連携するように設定できます。

Python を使用して汎用 SageMaker ノートブックを Neptune に接続する

Neptune マジックをインストールしている場合、ノートブックを Neptune に接続するのは簡単ですが、Neptune SageMaker ノートブックを使用していない場合でも、Python を使用してノートブックを 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 Notebooks での CloudWatch ログの有効化

CloudWatch ログが Neptune Notebooks でデフォルトで有効になりました。 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 DB クラスター、またはオープンソースのグラフデータベースのローカルインスタンスまたはリモートインスタンスに接続できます。

Neptune ノートブックを Neptune クラスターで使用する

バックエンドで Neptune クラスターに接続する場合は、Amazon でノートブックを実行することをお勧めします SageMaker。から Neptune に接続する SageMaker と、ノートブックのローカルインストールよりも便利になり、Neptune ML をより簡単に使用できるようになります。

でノートブックを設定する方法については SageMaker、「Amazon を使用したグラフノートブックの起動 SageMaker」を参照してください。

Neptune 自体の設定およびセットアップ方法については、Amazon Neptune のセットアップ を参照してください。

Neptune ノートブックのローカルインストールを Neptune DB クラスターに接続することもできます。Amazon Neptune DB クラスターは Amazon Virtual Private Cloud (VPC) でのみ作成できるため、これはやや複雑になる可能性があります。これは、設計上、外部から分離されています。外部VPCから に接続する方法はいくつかあります。1 つは、ロードバランサーを使用することです。もう 1 つは、VPCピアリングを使用する方法です (Amazon Virtual Private Cloud ピアリングガイド を参照)。

ただし、ほとんどのユーザーにとって最も便利な方法は、 内で Amazon EC2プロキシサーバーをセットアップしVPC、SSHトンネリング (ポート転送とも呼ばれます) を使用して接続することです。グラフノートブックを Amazon Neptune にローカルに接続する で を設定する方法については、グラフノートブック GitHub プロジェクトの additional-databases/neptuneフォルダを参照してください。

Neptune ノートブックをオープンソースのグラフデータベースで使用する

グラフテクノロジーを無償で開始するには、バックエンドでさまざまなオープンソースデータベースを備えた Neptune ノートブックを使用することもできます。例としては、 TinkerPop Gremlin サーバー Blazegraph データベースがあります。

Gremlin Server をバックエンドデータベースとして使用するには、次の手順に従います。

Blazegraph のローカルインスタンスをバックエンドデータベースとして使用するには、次の手順に従います。

ローカル Blazegraph インスタンスを実行したら、グラフベースのデータおよびクエリのバックエンドデータベースとしてアプリケーションと統合できます。アプリケーションを Blazegraph インスタンスに接続する方法については、グラフノートブックリポジトリにあるドキュメントとサンプルコードを参照してください。

Neptune ノートブックを Jupyter から JupyterLab 3 に移行する

2022 年 12 月 21 日より前に作成された Neptune ノートブックは Amazon Linux 1 環境を使用しています。この AWS ブログ記事で説明されているステップを実行すると、その日付より前に作成された古い 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 から) バックアップを復元するための 2 つ目のライフサイクル設定スクリプトを作成する場合、ライフサイクル名は 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 ノートブックインスタンスに移行する必要があります。これらは の Neptune ページにアクセスおよび管理するために表示され AWS Management Console、Open Jupyter または Open JupyterLabを選択して、中断した場所から作業を続行できるようになりました。