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

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

使用带有签名版本 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 及更高版本)
  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 文档可能会有所帮助。

  3. 将处理签名所需的类导入到handshakeInterceptor()

    :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对象:

    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 终端节点

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

    :remote connect tinkerpop.server cluster
  8. 输入以下命令以切换到远程模式。这会将所有 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 版本)
  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 文档可能会有所帮助。

  3. 在提取的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 }}
  4. 重要

    您必须提供 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 变量是必需的,即使在使用凭证文件时也是如此。

  5. 使用以下.yaml文件建立:remote连接:

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  6. 输入以下命令切换到远程模式,该模式将所有 Gremlin 查询发送到远程连接:

    :remote console