本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用带有签名版本 4 签名的 Gremlin 控制台连接到 Neptune
如何使用具有 Signature 版本 4 身份验证的 Gremlin 控制台连接到 Amazon Neptune 取决于您使用的是 TinkerPop 版本3.4.11
还是更高版本,还是更早的版本。无论哪种情况,都必须满足以下先决条件:
您必须拥有签署请求所需的 IAM 证书。请参阅Amazon SDK for Java开发者指南中的使用默认凭证提供者链。
您必须安装与数据库集群正在使用的 Neptune 引擎版本兼容的 Gremlin 控制台版本。
如果您使用的是临时证书,它们会在指定的间隔后过期,会话令牌也是如此,因此在请求新证书时必须更新会话令牌。请参阅 IM 用户指南中的使用临时安全凭证以请求对Amazon资源的访问权限。
有关使用 SSL/TLS 进行连接的帮助,请参阅SSL/TLS 配置。
使用 TinkerPop 3.4.11 或更高版本通过 Sig4 签名连接到Neptune
在 TinkerPop 3.4.11 或更高版本中handshakeInterceptor()
,您将使用,它提供了一种将 Sigv4 签名者插入:remote
命令建立的连接的方法。与用于 Java 的方法一样,它要求您手动配置Cluster
对象,然后将其传递给:remote
命令。
请注意,这与:remote
命令使用配置文件形成连接的典型情况有很大不同。配置文件方法不起作用,因为handshakeInterceptor()
必须以编程方式进行设置,并且无法从文件加载其配置。
使用 Sig4 签名Connect Gremlin 控制台(TinkerPop 3.4.11 及更高版本)
-
启动 Gremlin 控制台:
$ bin/gremlin.sh
-
在
gremlin>
提示符处,安装amazon-neptune-sigv4-signer
库(控制台只需要完成一次)::install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
如果您在此步骤中遇到问题,查阅有关 Gr ap
e 配置的TinkerPop 文档 可能会有所帮助。 -
将处理签名所需的类导入到
handshakeInterceptor()
::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
对象:cluster = Cluster.build("
(host name)
") \ .enableSsl(true) \ .handshakeInterceptor { r -> \ def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)
", \ new DefaultAWSCredentialsProviderChain()); \ sigV4Signer.signRequest(r); \ return r; } \ .create()要帮助查找 Neptune 数据库实例的主机名,请参阅连接到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,如下所述:
使用 Sig4 签名Connect Gremlin 控制台(3.4.11 之前的TinkerPop 版本)
-
启动 Gremlin 控制台:
$ bin/gremlin.sh
-
在
gremlin>
提示符处,安装amazon-neptune-sigv4-signer
库(控制台只需要完成一次)::install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
如果您在此步骤中遇到问题,查阅有关 Gr ap
e 配置的TinkerPop 文档 可能会有所帮助。 -
在提取的
conf
目录的子目录中,创建一个名为的文件neptune-remote.yaml
。如果您使用Amazon CloudFormation模板创建 Neptune 数据库集群,则
neptune-remote.yaml
文件将已经存在。在这种情况下,你所要做的就是编辑现有文件以包括如下所示的channilizer设置。否则,将以下文本复制到文件中,将
(主机名)
替换为 Neptune 数据库实例的主机名或 IP 地址。请注意,必须使用方括号 ([]) 括住主机名。hosts: [
(host name)
] port:8182
connectionPool: { 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_id
export AWS_SECRET_ACCESS_KEY=secret_access_key
export 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 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-1
Neptune 4 Signer 版本的 Signer 会使用默认凭证提供程序链。有关提供证书的其他方法,请参阅Amazon SDK for Java开发者指南中的使用默认凭证提供者链。
SERVICE_REGION
变量是必需的,即使在使用凭证文件时也是如此。 -
使用以下
.yaml
文件建立:remote
连接::remote connect tinkerpop.server conf/neptune-remote.yaml
-
输入以下命令切换到远程模式,该模式将所有 Gremlin 查询发送到远程连接:
:remote console