本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 Gremlin 控制台使用 IAM 身份验证连接到 Amazon Neptune 数据库
使用带有签名版本 4 身份验证的 Gremlin 控制台连接 Amazon Neptune 有两个先决条件:
您必须具有对请求进行签名所需的 IAM 凭证。请参阅《 Amazon SDK for Java 开发者指南》中的使用默认凭证提供商链。
您已安装的 Gremlin 控制台版本必须与数据库集群正在使用的 Neptune 引擎版本兼容。
如果您使用的是临时凭证,则它们将在指定的间隔后过期,会话令牌也是如此,因此在请求新凭证时必须更新会话令牌。请参阅 IAM 用户指南中的使用临时安全证书请求 Amazon 资源访问权限。
有关使用 SSL/TLS 帮助进行连接的帮助,请参阅SSL/TLS 配置。
该:remote命令用于创建从 Gremlin 控制台到 Neptune 的连接。您将使用将 Sigv4 签名者插入该requestInterceptor()连接,以便通过 IAM 对其进行身份验证。
请注意,这与 :remote 命令使用配置文件来形成连接的典型情况大不相同。配置文件方法不起作用,因为必须以编程方式设置 requestInterceptor(),并且无法从文件加载其配置。
使用 Sigv4 签名连接 Gremlin 主机
-
启动 Gremlin 控制台:
$ bin/gremlin.sh -
在
gremlin>提示符下,安装amazon-neptune-sigv4-signer库(对于控制台,此操作只需执行一次)::install com.amazonaws amazon-neptune-sigv4-signer 2.4.0如果您在此步骤中遇到问题,请参考有关 Gr ap
e 配置的TinkerPop 文档 可能会有所帮助。 注意
如果您使用的是 HTTP 代理,则在此步骤中可能会遇到
:install命令未完成的错误。要解决此问题,请运行以下命令来告知控制台有关代理的信息:System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)") -
将处理签名所需的类导入到
requestInterceptor()中::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对象:注意
以下示例已更新,加入了 requestInterceptor() 的使用。这是在 TinkerPop 3.6.6 中添加的。在 3.6.6 TinkerPop 版本之前,代码示例使用了 HandshakeInterceptor (),该版本已不推荐使用该版本。
cluster = Cluster.build("(host name)") \ .enableSsl(true) \ .requestInterceptor { 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