

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

# 通过 Java 和 SPARQL 使用 IAM 身份验证连接到 Amazon Neptune 数据库
<a name="iam-auth-connecting-sparql-java"></a>

本节介绍如何使用带有签名版本 4 身份验证的 RDF4 J 或 Apache Jena 连接到 Neptune。

**先决条件**
+ Java 8 或更高版本。
+ Apache Maven 3.3 或更高版本。

  有关在运行 Amazon Linux 的 EC2 实例上安装这些先决条件的信息，请参阅 [使用 IAM 身份验证连接 Amazon Neptune 数据库的先决条件](iam-auth-connect-prerq.md)。
+ 用于对请求进行签名的 IAM 凭证。有关更多信息，请参阅《适用于 Java 的 AWS SDK 开发人员指南》**中的[使用默认凭证提供程序链](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default)。
**注意**  
如果您使用的是临时凭证，这些凭证（*包括会话令牌*）将在指定时间间隔后到期。  
在请求新凭证时，您必须更新您的会话令牌。有关更多信息，请参阅 *IAM 用户指南*中的[使用临时安全证书请求 AWS 资源访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。
+ 将 `SERVICE_REGION` 变量设置为以下内容之一，以指示 Neptune 数据库实例的区域：
  + 美国东部（弗吉尼亚州北部）：`us-east-1`
  + 美国东部（俄亥俄州）：`us-east-2`
  + 美国西部（北加利福尼亚）：`us-west-1`
  + 美国西部（俄勒冈州）：`us-west-2`
  + 加拿大（中部）：`ca-central-1`
  + 加拿大西部（卡尔加里）：`ca-west-1`
  + 南美洲（圣保罗）：`sa-east-1`
  + 欧洲地区（斯德哥尔摩）：`eu-north-1`
  + 欧洲（西班牙）：`eu-south-2`
  + 欧洲地区（爱尔兰）：`eu-west-1`
  + 欧洲地区（伦敦）：`eu-west-2`
  + 欧洲地区（巴黎）：`eu-west-3`
  + 欧洲地区（法兰克福）：`eu-central-1`
  + 中东（巴林）：`me-south-1`
  + 中东（阿联酋）：`me-central-1`
  + 以色列（特拉维夫）：`il-central-1`
  + 非洲（开普敦）：`af-south-1`
  + 亚太地区（香港）：`ap-east-1`
  + 亚太地区（东京）：`ap-northeast-1`
  + 亚太地区（首尔）：`ap-northeast-2`
  + 亚太地区（大阪）：`ap-northeast-3`
  + 亚太地区（新加坡）：`ap-southeast-1`
  + 亚太地区（悉尼）：`ap-southeast-2`
  + 亚太地区（雅加达）：`ap-southeast-3`
  + 亚太地区（墨尔本）：`ap-southeast-4`
  + 亚太地区（马来西亚）：`ap-southeast-5`
  + 亚太地区（孟买）：`ap-south-1`
  + 亚太地区（海得拉巴）：`ap-south-2`
  + 中国（北京）：`cn-north-1`
  + 中国（宁夏）：`cn-northwest-1`
  + AWS GovCloud （美国西部）：`us-gov-west-1`
  + AWS GovCloud （美国东部）：`us-gov-east-1`

**使用签名版本 4 签名的 RDF4 J 或 Apache Jena 连接到 Neptune**

1. 从中克隆示例存储库 GitHub。

   ```
   git clone https://github.com/aws/amazon-neptune-sparql-java-sigv4.git
   ```

1. 更改到克隆的目录中。

   ```
   cd amazon-neptune-sparql-java-sigv4
   ```

1. 通过检出具有最新标签的分支获取项目的最新版本。

   ```
   git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
   ```

1. 输入以下命令之一以编译和运行示例代码。

   *your-neptune-endpoint*替换为您的 Neptune 数据库实例的主机名或 IP 地址。默认端口为 8182。
**注意**  
有关查找 Neptune 数据库实例的主机名的信息，请参阅[连接到 Amazon Neptune 端点](feature-overview-endpoints.md)部分。

**Eclipse J RDF4**  
输入以下内容以运行 RDF4 J 示例。

   ```
   mvn compile exec:java \
       -Dexec.mainClass="com.amazonaws.neptune.client.rdf4j.NeptuneRdf4JSigV4Example" \
       -Dexec.args="https://your-neptune-endpoint:portsparql region-name"
   ```

**Apache Jena**  
输入以下内容以运行 Apache Jena 示例。

   ```
   mvn compile exec:java \
       -Dexec.mainClass="com.amazonaws.neptune.client.jena.NeptuneJenaSigV4Example" \
       -Dexec.args="https://your-neptune-endpoint:port"
   ```

1. 要查看示例的源代码，请参阅 `src/main/java/com/amazonaws/neptune/client/` 目录中的示例。

要在您自己的 Java 应用程序中使用 SigV4 签名驱动程序，请将 `amazon-neptune-sigv4-signer` Maven 程序包添加到 `pom.xml` 的 `<dependencies>` 部分。我们建议您从示例开始着手。