使用带有签名版本 4 签名的 Java 和 Gremlin 连接到 Neptune - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用带有签名版本 4 签名的 Java 和 Gremlin 连接到 Neptune

使用 TinkerPop 3.4.11 或更高版本通过 Sig4 签名连接到Neptune

以下是使用 TinkerPop 3.4.11 或更高版本时如何使用带有 Sig4 签名的 Gremlin 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.build((your cluster name)) .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(),如上例所示。不要尝试与 channhandshakeInterceptor() ilizer (SigV4WebSocketChannelizer.class) 一起使用,因为它会产生错误。

使用 3.4.11 TinkerPop 之前的版本通过 Sig4 签名连接到Neptune

TinkerPop 之前的版本3.4.11不支持上一节中显示的handshakeInterceptor()配置,因此必须依赖该amazon-neptune-gremlin-java-sigv4软件包。这是一个包含该SigV4WebSocketChannelizer类的 Neptune 库,它将标准 TinkerPop Channelizer 替换为可以自动注入 SiGv4 签名的类。尽可能升级到 TinkerPop 3.4.11 或更高版本,因为该amazon-neptune-gremlin-java-sigv4库已过时。

以下是使用 3.4.11 之前的 TinkerPop 版本时如何使用带有 Sig4 签名的 Gremlin Java API 连接到 Neptune 的示例(它假定对如何使用 Maven 有一定的了解)。

首先,将依赖关系定义为pom.xml文件的一部分:

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

上面的依赖关系将包括 Gremlin 驱动程序版本3.4.10。尽管可以使用较新的 Gremlin 驱动程序版本(直到3.4.13),但3.4.10 之后的驱动程序升级应包括更改为使用上述handshakeInterceptor()模型。

然后,应按如下方式在 Java 代码中配置gremlin-driver集群对象:

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();