

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

# Gremlin コンソールでの IAM 認証を使用した Amazon Neptune データベースへの接続
<a name="iam-auth-connecting-gremlin-console"></a>

署名バージョン 4 認証で Gremlin コンソールを使用して Amazon Neptune に接続するには、 `requestInterceptor()` を使用して SigV4 署名者を `:remote` コマンドによって確立された接続に接続します。そのためには、`Cluster`オブジェクトを手動で設定し、 `:remote` コマンドに渡す必要があります。

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

**注記**  
次の例では`requestInterceptor()`、TinkerPop 3.6.6 で導入された を使用します。3.6.6 より前の TinkerPop バージョン (ただし 3.5.5 以降) を使用している場合は、以下のコード例`requestInterceptor()`で `handshakeInterceptor()`の代わりに を使用します。

以下の前提条件が必要です。
+ リクエストに署名するために必要な IAM 認証情報を持っている必要があります。「 AWS SDK for Java デベロッパーガイド[」の「デフォルトの認証情報プロバイダーチェーン](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/credentials-chain.html)の使用」を参照してください。
+ DB クラスターで使用されている Neptune エンジンのバージョンと互換性のある Gremlin コンソールバージョンをインストールしておく必要があります。

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

SSL/TLS を使用して接続する方法については、「[SSL/TLS 設定](access-graph-gremlin-java.md#access-graph-gremlin-java-ssl)」を参照してください。

**Sig4 署名を使用して Gremlin コンソールを接続する**

1. Gremlin コンソールを起動します。

   ```
   $ bin/gremlin.sh
   ```

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

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

   このステップで問題が発生した場合は、[TinkerPop ドキュメント](https://tinkerpop.apache.org/docs/current/reference/#gremlin-applications)で [Grape](http://docs.groovy-lang.org/latest/html/documentation/grape.html) の設定を確認すると役立つ場合があります。
**注記**  
HTTP プロキシを使用している場合、このステップで `:install` コマンドが完了しないというエラーが発生することがあります。この問題を解決するには、以下のコマンドを実行して、プロキシについてコンソールに通知します。  

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

1. `requestInterceptor()` へのサインインの処理に必要なクラスをインポートします。

   ```
   :import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider
   :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
   ```

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

   ```
   System.setProperty("aws.sessionToken","(your session token)")
   ```

1. アカウント認証情報をまだ設定していない場合は、以下のように割り当てることができます。

   ```
   System.setProperty("aws.accessKeyId","{{{{(your access key)}}}}")
   System.setProperty("aws.secretKey","{{(your secret key)}}")
   ```

1. Neptune に接続するように、`Cluster` オブジェクトを手動で設定します。

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

   Neptune DB インスタンスのホスト名を見つける方法については、「[Amazon Neptune エンドポイントに接続する](feature-overview-endpoints.md)」を参照してください。

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

   ```
   :remote connect tinkerpop.server cluster
   ```

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

   ```
   :remote console
   ```