Neptune グラフノートブックを使用して、すぐに使用を開始する - Amazon Neptune

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

Neptune グラフノートブックを使用して、すぐに使用を開始する

Neptune グラフを操作するために Neptune グラフノートブックを使用する必要はなく、必要な場合は、AWS CloudFormation テンプレートを使用して新しい Neptune データベースをすぐに作成できます。

同時に、グラフを初めて使用する場合や、学習して試してみたい場合、または、経験豊富でクエリを改良したい場合にも、Neptune ワークベンチは、グラフアプリケーションを構築する際の生産性を向上させるインタラクティブ開発環境 (IDE) を提供します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. ノートブックのAWS Identity and Access Management (IAM) ロールをまだ作成していない場合は、[Create an IAM role] (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 クラスターリソース ID がリストされていることに注意してください。

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

{ "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 Magics をインストールしていればノートブックを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. 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 でノートブックを実行することをお勧めします。SageMaker から Neptune への接続は、ノートブックのローカルインストールよりも便利で、Neptune ML を使えば、より簡単に作業できます。。

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

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

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

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

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

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

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

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

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

2022 年 12 月 21 日より前に作成された Neptune ノートブックは Amazon Linux 1 環境を使用しています。それ以前に作成された古い Jupyter ノートブックを JupyterLab 3 の新しい 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 から) バックアップを復元するための 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 ノートブックインスタンスに移行されるはずです。これらは、AWS Management Console の Neptune ページに、アクセスと管理のために表示され、[Jupyter を開く] または [JupyterLab を開く] を選択して、中断したところから作業を続けることができます。