署名バージョン 4 で署名された Gremlin コンソールを使用して Neptune に接続する - Amazon Neptune

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

署名バージョン 4 で署名された Gremlin コンソールを使用して Neptune に接続する

Signature Version 4 認証で Gremlin コンソールを使用して Amazon Neptune に接続する方法は、 TinkerPop バージョン 3.4.11 以降を使用しているか、以前のバージョンを使用しているかによって異なります。いずれの場合も、以下の前提条件が必要です。

  • リクエストに署名するために必要な IAM 認証情報を持っている必要があります。「AWS SDK for Java デベロッパーガイド」の「デフォルトの認証情報プロバイダーチェーンの使用」を参照してください。

  • DB クラスターで使用されている Neptune エンジンのバージョンと互換性のある Gremlin コンソールバージョンをインストールしておく必要があります。

一時的な認証情報を使用している場合、セッショントークンと同様に、指定した間隔が過ぎると有効期限が切れるため、新しい認証情報をリクエストするときはセッショントークンを更新する必要があります。「IAM ユーザーガイド」の「AWS リソースへのアクセスを要求するための一時的なセキュリティ認証情報の使用」を参照してください。

SSL/TLS を使用して接続する方法については、「SSL/TLS 設定」を参照してください。

TinkerPop 3.4.11 以降を使用して Sig4 署名で Neptune に接続する

TinkerPop 3.4.11 以降では、 コマンドによって確立された接続に Sigv4 署名者をプラグインする方法handshakeInterceptor()を提供する を使用します:remote。Java で使用されている方法と同様に、Cluster オブジェクトを手動で設定して、それを :remote コマンドに渡す必要があります。

これは、:remote コマンドが設定ファイルを使用して接続を形成する一般的な状況とはかなり異なる点に注意してください。設定ファイルによるアプローチでは、handshakeInterceptor() をプログラムで設定する必要があり、ファイルから設定を読み込むことができないため、機能しません。

Gremlin コンソール (TinkerPop 3.4.11 以降) を Sig4 署名に接続する
  1. Gremlin コンソールを起動します。

    $ bin/gremlin.sh
  2. gremlin> プロンプトで、amazon-neptune-sigv4-signer ライブラリをインストールします (これはコンソールで 1 回だけ行う必要があります)。

    :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0

    このステップで問題が発生した場合は、Grap 設定に関するTinkerPop ドキュメントを参照してください。

    注記

    HTTP プロキシを使用している場合、このステップで :install コマンドが完了しないというエラーが発生することがあります。この問題を解決するには、以下のコマンドを実行して、プロキシについてコンソールに通知します。

    System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)")
  3. handshakeInterceptor() へのサインインの処理に必要なクラスをインポートします。

    :import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
  4. 一時的な認証情報を使用する場合は、以下のようにセッショントークンも指定する必要があります。

    System.setProperty("aws.sessionToken","(your session token)")
  5. アカウント認証情報をまだ設定していない場合は、以下のように割り当てることができます。

    System.setProperty("aws.accessKeyId","(your access key)") System.setProperty("aws.secretKey","(your secret key)")
  6. Neptune に接続するように、Cluster オブジェクトを手動で設定します。

    cluster = Cluster.build("(host name)") \ .enableSsl(true) \ .handshakeInterceptor { r -> \ def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)", \ new DefaultAWSCredentialsProviderChain()); \ sigV4Signer.signRequest(r); \ return r; } \ .create()

    Neptune DB インスタンスのホスト名を見つける方法については、「Amazon Neptune エンドポイントに接続する」を参照してください。

  7. 前のステップの Cluster オブジェクトの変数名を使用して :remote 接続を確立します。

    :remote connect tinkerpop.server cluster
  8. 次のコマンドを入力して、リモートモードに切り替えます。これにより、すべての Gremlin クエリがリモート接続に送信されます。

    :remote console

3.4.11 より前のバージョンの TinkerPop を使用して Sig4 署名で Neptune に接続する

TinkerPop 3.4.10 以前では、以下で説明するように、Neptune が提供するamazon-neptune-gremlin-java-sigv4ライブラリを使用して Sigv4 署名でコンソールを Neptune に接続します。

Gremlin コンソール (3.4.11 より前のTinkerPop バージョン) を Sig4 署名に接続する
  1. Gremlin コンソールを起動します。

    $ bin/gremlin.sh
  2. gremlin> プロンプトで、amazon-neptune-sigv4-signer ライブラリをインストールします (これはコンソールで 1 回だけ行う必要があります)。

    :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
    注記

    HTTP プロキシを使用している場合、このステップで :install コマンドが完了しないというエラーが発生することがあります。この問題を解決するには、以下のコマンドを実行して、プロキシについてコンソールに通知します。

    System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)")

    また、G scrap 設定に関するTinkerPop ドキュメントを参照するのにも役立つ場合があります。

  3. 抽出されたディレクトリの conf サブディレクトリに、neptune-remote.yaml という名前のファイルを作成します。

    AWS CloudFormation テンプレートを使用して Neptune DB クラスターを作成した場合、neptune-remote.yaml ファイルは既に存在しています。その場合、しなければならないことは、既存のファイルを編集して、以下に示すチャネライザー設定を含めることだけです。

    それ以外の場合は、次のテキストをファイルにコピーし、(host name) を Neptune DB インスタンスのホスト名または IP アドレスに置き換えます。ホスト名を囲む角括弧 ([]) は必須であることに注意してください。

    hosts: [(host name)] port: 8182 connectionPool: { channelizer: org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer, enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
  4. 重要

    リクエストに署名するために IAM の認証情報を指定する必要があります。認証情報を環境変数として設定するには、次のコマンドを入力して該当する項目を認証情報に置き換えます。

    export AWS_ACCESS_KEY_ID=access_key_id export AWS_SECRET_ACCESS_KEY=secret_access_key export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or sa-east-1 or eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or ap-northeast-1 or ap-northeast-2 or ap-southeast-1 or ap-southeast-2 or ap-south-1 or cn-north-1 or cn-northwest-1 or us-gov-east-1 or us-gov-west-1

    Neptune バージョン 4 署名者はデフォルトの認証情報プロバイダチェーンを使用します。認証情報の提供の追加メソッドについては、AWS SDK for Java ディベロッパーガイドデフォルトの認証情報プロバイダーチェーンの使用を参照してください。

    認証情報ファイルを使用する場合でも、SERVICE_REGION 変数は必要です。

  5. .yaml ファイルを使用して :remote 接続を確立します。

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  6. 次のコマンドを入力してリモートモードに切り替え、すべての Gremlin クエリをリモート接続に送信します。

    :remote console