翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Gremlin コンソールでの IAM 認証を使用した Amazon 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()
をプログラムで設定する必要があり、ファイルから設定を読み込むことができないため、機能しません。
Sig4 署名を使用して Gremlin コンソール (TinkerPop 3.4.11 以降) を接続する Sig4
-
Gremlin コンソールを起動します。
$ bin/gremlin.sh
-
gremlin>
プロンプトで、amazon-neptune-sigv4-signer
ライブラリをインストールします (これはコンソールで 1 回だけ行う必要があります)。:install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
このステップで問題が発生した場合は、Grape
設定に関する TinkerPop ドキュメント を参照すると便利です。 注記
HTTP プロキシを使用している場合、このステップで
:install
コマンドが完了しないというエラーが発生することがあります。この問題を解決するには、以下のコマンドを実行して、プロキシについてコンソールに通知します。System.setProperty("https.proxyHost", "
(the proxy IP address)
") System.setProperty("https.proxyPort", "(the proxy port)
") -
handshakeInterceptor()
へのサインインの処理に必要なクラスをインポートします。:import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
-
一時的な認証情報を使用する場合は、以下のようにセッショントークンも指定する必要があります。
System.setProperty("aws.sessionToken","(your session token)")
-
アカウント認証情報をまだ設定していない場合は、以下のように割り当てることができます。
System.setProperty("aws.accessKeyId","
") System.setProperty("aws.secretKey","(your access key)
(your secret key)
") -
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 エンドポイントに接続する」を参照してください。
-
前のステップの
Cluster
オブジェクトの変数名を使用して:remote
接続を確立します。:remote connect tinkerpop.server cluster
-
次のコマンドを入力して、リモートモードに切り替えます。これにより、すべての Gremlin クエリがリモート接続に送信されます。
:remote console
3.4.11 より前のバージョンの TinkerPop を使用して Sig4 署名で Neptune に接続する
以下に示すように、 TinkerPop 3.4.10 以前では、Neptune が提供するamazon-neptune-gremlin-java-sigv4
ライブラリを使用して、Sigv4 署名でコンソールを Neptune に接続します。
Sig4 署名を使用して Gremlin コンソール (3.4.11 より前のバージョンのTinkerPop ) を接続する
-
Gremlin コンソールを起動します。
$ bin/gremlin.sh
-
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)
")また、Grape
設定に関する TinkerPop ドキュメント を参照するのにも役立つ場合があります。 -
抽出されたディレクトリの
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 }} -
重要
リクエストに署名するには、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
変数は必要です。 -
.yaml
ファイルを使用して:remote
接続を確立します。:remote connect tinkerpop.server conf/neptune-remote.yaml
-
次のコマンドを入力してリモートモードに切り替え、すべての Gremlin クエリをリモート接続に送信します。
:remote console