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

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

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

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

このセクションでは、Gremlin コンソールで署名バージョン 4 認証を使用して、3.4.11 より前のバージョンの TinkerPop を使用している場合に、Amazon Neptune に接続する方法を示します。Neptune 時点でサポートしていたTinkerPop 3.4.11から始まるエンジンリリース 1.0.5.0では、TinkerPop ドライバーにコールバックを追加して WebSocket ハンドシェイクをインターセプトし、標準の Sig4 ライブラリを使用して署名を行うことができます。「」を参照してください。それを行う方法を示す例

注記

データベースインスタンスあたりの同時 WebSocket 接続数、および接続を開いたままにできる時間には制限があります。詳細については、「WebSocket の制限」を参照してください。

Prerequisites

  • Java 8 以上

  • Apache Maven 3.3 以上

    Amazon Linux を実行している EC2 インスタンスに前提条件となっているこれらのソフトウェアをインストールする方法については、「Amazon Linux EC2 の前提条件」を参照してください。

  • リクエストに署名するための IAM 認証情報。詳細については、「」を参照してください。デフォルトの認証情報プロバイダーチェーンの使用AWS SDK for Javaデベロッパーガイド

    注記

    一時的なセキュリティ認証情報を使用している場合は、セッショントークンを含めて、指定した期間が過ぎると失効します。

    新しい認証情報をリクエストするときは、セッショントークンを更新する必要があります。詳細については、IAM ユーザーガイドの「一時的なセキュリティ認証情報を使用して、AWS リソースへのアクセスをリクエストする」を参照してください。

  • 設定:SERVICE_REGION変数を次のいずれかに設定し、Neptune DB インスタンスのリージョンを指定します。

    • 米国東部 (バージニア北部):us-east-1

    • 米国東部 (オハイオ):us-east-2

    • 米国西部 (北カリフォルニア):us-west-1

    • 米国西部 (オレゴン):us-west-2

    • カナダ (中部):ca-central-1

    • 南米 (サンパウロ):sa-east-1

    • 欧州 (ストックホルム):eu-north-1

    • 欧州 (アイルランド):eu-west-1

    • 欧州 (ロンドン):eu-west-2

    • 欧州 (パリ):eu-west-3

    • 欧州 (フランクフルト):eu-central-1

    • 中東 (バーレーン):me-south-1

    • アジアパシフィック (香港):ap-east-1

    • アジアパシフィック (東京):ap-northeast-1

    • アジアパシフィック (ソウル):ap-northeast-2

    • アジアパシフィック (シンガポール):ap-southeast-1

    • アジアパシフィック (シドニー):ap-southeast-2

    • アジアパシフィック (ムンバイ):ap-south-1

    • 中国 (北京):cn-north-1

    • 中国 (寧夏):cn-northwest-1

    • AWSGovCloud (米国西部):us-gov-west-1

    • AWSGovCloud (米国東部):us-gov-east-1

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

  1. のダウンロードGremlin コンソール(バージョン 3.4.8 から 3.4.10) からApache Tinkerpop3Web サイトを EC2 インスタンスにアップロードします。

  2. Gremlin コンソール zip ファイルを解凍します。

    unzip apache-tinkerpop-gremlin-console-3.4.10-bin.zip
  3. GitHub からサンプルリポジトリを複製します。

    git clone https://github.com/aws/amazon-neptune-gremlin-java-sigv4.git
  4. ディレクトリを amazon-neptune-gremlin-java-sigv4 に変更します。

    cd amazon-neptune-gremlin-java-sigv4
  5. Sigv4 プロジェクトのバージョンを取得するには、TinkerPop バージョンに適切なブランチをチェックアウトします。これは、3.4.9より前のバージョンのTinkerPOPクライアントでは2.1.1になります。

    git checkout $(git describe --tags `git checkout v2.1.1`)

    TinkerPOPバージョン3.4.9以上では、バージョン2.1.2を入手してください:

    git checkout $(git describe --tags `git checkout v2.1.2`)
  6. プロジェクトの依存関係を構築、パッケージ化、取得します。

    mvn package dependency:copy-dependencies
  7. パッケージ jar とすべての依存関係 jar を Gremlin コンソールライブラリディレクトリにコピーします。

    cp target/{*.jar,dependency/*.jar} ../apache-tinkerpop-gremlin-console-3.4.8/lib
  8. Gremlin コンソールライブラリディレクトリの競合する依存関係 jar を削除します。

    rm ../apache-tinkerpop-gremlin-console-3.4.8/lib/netty-all-4.1.22.Final.jar
  9. ディレクトリを、解凍された Gremlin コンソールディレクトリに変更します。

    cd ../apache-tinkerpop-gremlin-console-3.4.8
  10. CA 証明書をダウンロードします。Gremlin コンソールには、リモート証明書を検証する証明書が必要です。

    wget https://www.amazontrust.com/repository/SFSRootCAG2.pem
  11. 抽出されたディレクトリにある conf サブディレクトリで、以下のテキストを含む neptune-remote.yaml という名前のファイルを作成します。置換ネプチューンエンドポイントに Neptune DB インスタンスのホスト名または IP アドレスで置き換えます。角括弧 ([ ]) が必要です。

    注記

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

    hosts: [your-neptune-endpoint] port: 8182 connectionPool: { channelizer: org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer, enableSsl: true, trustCertChainFile: "SFSRootCAG2.pem" } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}
  12. 重要

    リクエストに署名するために 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 eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-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 変数は必要です。

  13. ターミナルで Gremlin コンソールディレクトリ (apache-tinkerpop-gremlin-console-3.4.8) に移動します。その後以下のコマンドを入力して、Gremlin コンソールを実行します。

    bin/gremlin.sh

    次のような出力が表示されます。

    \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin>

    gremlin> プロンプトが表示されます。このプロンプトで残りのステップを入力します。

  14. gremlin>プロンプトで、次のように入力して Neptune DB インスタンスに接続します。

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  15. gremlin> プロンプトで、次のように入力してリモートモードに切り替えます。これにより、すべての Gremlin クエリがリモート接続に送信されます。

    :remote console

TinkerPop 3.4.11以上を使ってSig4署名でNeptune に接続する

TinkerPop 3.4.11 以降を使用している場合に、Gremlin コンソールで Sig4 署名を使用して Neptune に接続する方法の例を次に示します。

:install com.amazonaws amazon-neptune-sigv4-signer 2.4.0 :install com.amazonaws aws-java-sdk-core 1.12.9 // The lines above only need to be executed once to get the dependencies into the console import com.amazonaws.auth.DefaultAWSCredentialsProviderChain import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer System.setProperty("aws.accessKeyId","your-access-key") System.setProperty("aws.secretKey","your-secret-key") cluster = Cluster.build("your-cluster"). enableSsl(true).keyCertChainFile("SFSRootCAG2.pem"). handshakeInterceptor{ r -> def sigV4Signer = new NeptuneNettyHttpSigV4Signer("Amazon region", new DefaultAWSCredentialsProviderChain()) sigV4Signer.signRequest(r) return r }.create() client = cluster.connect() client.submit("g.V().has('code','IAD')").all().get()