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

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

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

要使用带有签名版本 4 身份验证的 Gremlin 控制台连接到 Amazon Neptune,您需要在命令建立的连接中插入 Sigv4 签名器。requestInterceptor() :remote这需要您手动配置Cluster对象,然后将其传递给:remote命令。

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

注意

以下示例使用requestInterceptor()了 TinkerPop 3.6.6 中引入的。如果您使用的是早于 3.6.6 的 TinkerPop 版本(但是 3.5.5 或更高版本),请在下面的代码示例requestInterceptor()中使用handshakeInterceptor()代替。

以下先决条件是必要的:

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

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

使用 Sig4 签名连接 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 software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider :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 对象:

    cluster = Cluster.build("(host name)") \ .enableSsl(true) \ .requestInterceptor { r -> \ def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)", \ DefaultCredentialsProvider.create()); \ sigV4Signer.signRequest(r); \ return r; } \ .create()

    有关查找 Neptune 数据库实例的主机名的帮助,请参阅连接到 Amazon Neptune 端点

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

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

    :remote console