搭配 Signature 第 4 版簽署,使用 Java 和 Gremlin 連線到 Neptune - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 Signature 第 4 版簽署,使用 Java 和 Gremlin 連線到 Neptune

使用 TinkerPop 3.4.11 或更高版本通過 Sig4 簽名連接到 Neptune

以下是一個示例,說明如何在使用 TinkerPop 3.4.11 或更高版本時使用帶有 Sig4 簽名的小鬼 Java API 連接到 Neptune(它假定有關使用 Maven 的一般知識)。首先,將相依性定義為 pom.xml 檔案的一部分:

<dependency> <groupId>com.amazonaws</groupId> <artifactId>amazon-neptune-sigv4-signer</artifactId> <version>2.4.0</version> </dependency>

然後,使用如下程式碼:

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain; import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer; import com.amazonaws.neptune.auth.NeptuneSigV4SignerException; ... System.setProperty("aws.accessKeyId","your-access-key"); System.setProperty("aws.secretKey","your-secret-key"); ... Cluster cluster = Cluster.build((your cluster)) .enableSsl(true) .handshakeInterceptor( r -> { try { NeptuneNettyHttpSigV4Signer sigV4Signer = new NeptuneNettyHttpSigV4Signer("(your region)", new DefaultAWSCredentialsProviderChain()); sigV4Signer.signRequest(r); } catch (NeptuneSigV4SignerException e) { throw new RuntimeException("Exception occurred while signing the request", e); } return r; } ).create(); try { Client client = cluster.connect(); client.submit("g.V().has('code','IAD')").all().get(); } catch (Exception e) { throw new RuntimeException("Exception occurred while connecting to cluster", e); }
注意

如果您要從 3.4.11 升級,請移除對 amazon-neptune-gremlin-java-sigv4 程式庫的參考。如上面範例所示,使用 handshakeInterceptor() 時它不再是必要的。不要嘗試搭配通道分離器 (SigV4WebSocketChannelizer.class) 使用 handshakeInterceptor(),因為它會產生錯誤。

使用 3.4.11 之 TinkerPop前的版本通過 Sig4 簽名連接到 Neptune

TinkerPop 之前的版本3.4.11不支援上一節所示的handshakeInterceptor()組態,因此必須依賴amazon-neptune-gremlin-java-sigv4套件。這是一個包含該SigV4WebSocketChannelizer類的 Neptune 庫,它將標準 TinkerPop 通道器替換為可以自動注入 Sigv4 簽名的通道器。在可能的情況下,升級到 TinkerPop 3.4.11 或更高版本,因為該amazon-neptune-gremlin-java-sigv4庫已被棄用。

以下是使用 3.4.11 之前的 TinkerPop 版本(假設有關如何使用 Maven 的一般知識)時,如何使用具有 Sig4 簽名的 Gremlin Java API 連接到 Neptune 的示例。

首先,將相依性定義為 pom.xml 檔案的一部分:

<dependency> <groupId>com.amazonaws</groupId> <artifactId>amazon-neptune-gremlin-java-sigv4</artifactId> <version>2.4.0</version> </dependency>

上述相依性將包括 Gremlin 驅動程式版本3.4.10。雖然可以使用較新的 Gemlin 驅動程式版本 (直到 3.4.13),但是升級到 3.4.10 以後的驅動程式應該包含使用上述 handshakeInterceptor() 模型的變更。

然後,gremlin-driver 叢集物件應該在 Java 程式碼中設定,如下所示:

import org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer; ... Cluster cluster = Cluster.build(your cluster) .enableSsl(true) .channelizer(SigV4WebSocketChannelizer.class) .create(); Client client = cluster.connect(); client.submit("g.V().has('code','IAD')").all().get();