翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続
署名バージョン 4 認証で Gremlin コンソールを使用して Amazon Neptune に接続する方法は、TinkerPop バージョン 3.4.11 以上を使用しているか、それ以前のバージョンを使用しているかによって異なります。いずれの場合も、以下の前提条件が必要です。
リクエストに署名するために必要な IAM 認証情報を持っている必要があります。「 AWS SDK for Java デベロッパーガイド」の「デフォルトの認証情報プロバイダーチェーンの使用」を参照してください。
DB クラスターで使用されている Neptune エンジンのバージョンと互換性のある Gremlin コンソールバージョンをインストールしておく必要があります。
一時的な認証情報を使用している場合、セッショントークンと同様に、指定した間隔が過ぎると有効期限が切れるため、新しい認証情報をリクエストするときはセッショントークンを更新する必要があります。IAM ユーザーガイドの「一時的なセキュリティ認証情報を使用して AWS リソースへのアクセスをリクエストする」を参照してください。
SSL/TLS を使用して接続する方法については、「SSL/TLS 設定」を参照してください。
3.4.11 以降のバージョンの TinkerPop を使用して Sig4 署名で Neptune に接続する
TinkerPop 3.6.6 以降ではrequestInterceptor()、 コマンドによって確立された接続に Sigv4 署名者を接続する方法を提供する を使用します:remote。Java で使用されている方法と同様に、Cluster オブジェクトを手動で設定して、それを :remote コマンドに渡す必要があります。
これは、:remote コマンドが設定ファイルを使用して接続を形成する一般的な状況とはかなり異なる点に注意してください。設定ファイルによるアプローチでは、requestInterceptor() をプログラムで設定する必要があり、ファイルから設定を読み込むことができないため、機能しません。
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このステップで問題が発生した場合は、TinkerPop ドキュメント
で Grape の設定を確認すると役立つ場合があります。 注記
HTTP プロキシを使用している場合、このステップで
:installコマンドが完了しないというエラーが発生することがあります。この問題を解決するには、以下のコマンドを実行して、プロキシについてコンソールに通知します。System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)") -
requestInterceptor()へのサインインの処理に必要なクラスをインポートします。: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オブジェクトを手動で設定します。注記
次の例は、requestInterceptor() の使用を含むように更新されました。これは TinkerPop 3.6.6 で追加されました。TinkerPop バージョン 3.6.6 以前は、コード例では handshakeInterceptor() を使用していましたが、このリリースでは廃止されました。
cluster = Cluster.build("(host name)") \ .enableSsl(true) \ .requestInterceptor { 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 に接続します。
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注記
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:8182connectionPool: { 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_idexport AWS_SECRET_ACCESS_KEY=secret_access_keyexport 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-1Neptune バージョン 4 署名者はデフォルトの認証情報プロバイダチェーンを使用します。認証情報の提供の追加メソッドについては、AWS SDK for Java ディベロッパーガイドのデフォルトの認証情報プロバイダーチェーンの使用を参照してください。
認証情報ファイルを使用する場合でも、
SERVICE_REGION変数は必要です。 -
.yamlファイルを使用して:remote接続を確立します。:remote connect tinkerpop.server conf/neptune-remote.yaml -
次のコマンドを入力してリモートモードに切り替え、すべての Gremlin クエリをリモート接続に送信します。
:remote console