通过 Gremlin 控制台使用 IAM 身份验证连接到 Amazon Neptune 数据库 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

通过 Gremlin 控制台使用 IAM 身份验证连接到 Amazon Neptune 数据库

使用带有签名版本 4 身份验证的 Gremlin 控制台连接 Amazon Neptune 有两个先决条件:

如果您使用的是临时凭证,则它们将在指定的间隔后过期,会话令牌也是如此,因此在请求新凭证时必须更新会话令牌。请参阅 IAM 用户指南中的使用临时安全证书请求 Amazon 资源访问权限

有关使用 SSL/TLS 帮助进行连接的帮助,请参阅SSL/TLS 配置

:remote命令用于创建从 Gremlin 控制台到 Neptune 的连接。您将使用将 Sigv4 签名者插入该requestInterceptor()连接,以便通过 IAM 对其进行身份验证。

请注意,这与 :remote 命令使用配置文件来形成连接的典型情况大不相同。配置文件方法不起作用,因为必须以编程方式设置 requestInterceptor(),并且无法从文件加载其配置。

使用 Sigv4 签名连接 Gremlin 主机
  1. 启动 Gremlin 控制台:

    $ bin/gremlin.sh
  2. 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)")
  3. 将处理签名所需的类导入到 requestInterceptor() 中:

    :import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
  4. 如果您使用的是临时凭证,则还需要按以下方式提供会话令牌:

    System.setProperty("aws.sessionToken","(your session token)")
  5. 如果您尚未以其它方式建立账户凭证,则可以按以下方式分配凭证:

    System.setProperty("aws.accessKeyId","(your access key)") System.setProperty("aws.secretKey","(your secret key)")
  6. 手动构造要连接到 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 端点

  7. 使用上一步中 Cluster 对象的变量名建立 :remote 连接:

    :remote connect tinkerpop.server cluster
  8. 输入以下命令以切换到远程模式。这会将所有 Gremlin 查询发送到远程连接:

    :remote console