ホームページ >バックエンド開発 >Golang >IAM が有効な Neptune インスタンスに接続すると、Neptune が不正なハンドシェイク エラーをスローします

IAM が有効な Neptune インスタンスに接続すると、Neptune が不正なハンドシェイク エラーをスローします

王林
王林転載
2024-02-08 22:20:21681ブラウズ

连接到启用 IAM 的 Neptune 实例时,Neptune 抛出错误握手错误

IAM が有効な Neptune インスタンスに接続するときに、Neptune がハンドシェイク エラーをスローするのは一般的な問題です。 IAM (Identity and Access Management) は、AWS リソースへのアクセスを管理および制御するアマゾン ウェブ サービス (AWS) の機能です。ただし、IAM が有効な Neptune インスタンスに接続しようとすると、ハンドシェイク エラーが発生する可能性があります。このエラーは、IAM ロールの権限が間違っているか、Neptune インスタンスが正しく設定されていないことが原因である可能性があります。この問題に対応して、この記事では、このエラーを解決して IAM 対応の Neptune インスタンスにスムーズに接続する方法を詳しく紹介します。

質問内容

iam が有効になっている aws neptune インスタンスがあり、認証なしで CRUD 操作を実行できますが、認証を有効にするとハンドシェイク エラー ログにエラーがスローされます。

注: lambda 関数には完全な neptune 権限があります

リーリー ###エラーログ: 新しい接続をインスタンス化できません。接続ステータスをクローズに設定しています。 接続プールの新しい接続の作成中にエラーが発生しました: WebSocket: ハンドシェイク エラー 'e0104: 正常な接続を確立できません: websocket: ハンドシェイク エラー'

注: iam 認証が無効になっている場合でもクエリを実行できます。助けてください。

リクエストに署名しようとしましたが、認証に失敗しました。

回避策

必要な権限がすべて付与されている場合に neptune iam で動作させるには、コード内に修正が必要な問題がいくつかあります。

    neptune の iam 署名者のサービス名は、
  1. neptune ではなく、neptune-db である必要があります。
  2. タイプ
  3. *gremlingo.driverremoteconnectionsettings*gremlingo.driverremoteconnectionsettings である必要があります。
  4. settings.authinfo.header使用されるヘッダーは、実際には署名者によって返されたヘッダーではなく、元のリクエストのヘッダーであるため、settings.authinfo.header = req である必要があります。ヘッダ###。
  5. すべてをまとめると、
//署名リクエスト

の下のコード ブロックは次のようになります: リーリー 注意すべき点は、現時点では gremlin-go には認証トークンの自動更新を許可する方法がないということです。つまり、有効期限が切れた後に新しい接続を確立する必要があります。

### お役に立てれば。

以上がIAM が有効な Neptune インスタンスに接続すると、Neptune が不正なハンドシェイク エラーをスローしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。