

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

# 使用 HTTPS REST 端点连接到 Neptune 数据库实例
<a name="access-graph-gremlin-rest"></a>

Amazon Neptune 为 Gremlin 查询提供 HTTPS 端点。REST 接口与您的数据库集群使用的任何 Gremlin 版本兼容（请参阅您正在运行的 Neptune 引擎版本的[引擎版本页面](engine-releases.md)，以确定它支持哪个 Gremlin 版本）。

**注意**  
如[使用 SSL/HTTPS 加密与 Amazon Neptune 数据库的连接](security-ssl.md)中所述，Neptune 现在要求您使用 HTTPS 而不是 HTTP 进行连接。此外，Neptune 目前不支持 HTTP/2 来处理 REST API 请求。客户端在连接到端点时必须使用 HTTP/1.1。

以下说明将带您演练使用 `curl` 命令和 HTTPS 连接到 Gremlin 终端节点。必须从与您的 Neptune 数据库实例位于同一虚拟私有云 (VPC) 中的 Amazon EC2 实例中按照这些说明操作。

针对 Neptune 数据库实例的 Gremlin 查询的 HTTPS 端点为 `https://your-neptune-endpoint:port/gremlin`。

**注意**  
有关查找 Neptune 数据库实例的主机名的信息，请参阅[连接到 Amazon Neptune 端点](feature-overview-endpoints.md)。

## 使用 HTTP REST 端点连接到 Neptune
<a name="access-graph-gremlin-rest-connect"></a>

以下示例展示了如何向 REST 端点提交 Gremlin 查询。您可以使用 S AWS DK AWS CLI、或**curl**。

------
#### [ AWS CLI ]

```
aws neptunedata execute-gremlin-query \
  --endpoint-url https://your-neptune-endpoint:port \
  --gremlin-query "g.V().limit(1)"
```

有关更多信息，请参阅《 AWS CLI 命令参考》[execute-gremlin-query](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/execute-gremlin-query.html)中的。

------
#### [ SDK ]

```
import boto3
import json
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://your-neptune-endpoint:port',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.execute_gremlin_query(
    gremlinQuery='g.V().limit(1)',
    serializer='application/vnd.gremlin-v3.0+json;types=false'
)

print(json.dumps(response['result'], indent=2))
```

有关其他语言（如 Java、.NET 等）的 AWS SDK 示例，请参阅[AWS SDK](access-graph-gremlin-sdk.md)。

------
#### [ awscurl ]

```
awscurl https://your-neptune-endpoint:port/gremlin \
  --region us-east-1 \
  --service neptune-db \
  -X POST \
  -d '{"gremlin":"g.V().limit(1)"}'
```

**注意**  
此示例假设您的 AWS 证书是在您的环境中配置的。*us-east-1*替换为 Neptune 集群的区域。

有关**awscurl**与 IAM 身份验证配合使用的更多信息，请参阅[将 `awscurl` 与临时凭证结合使用以安全地连接到启用了 IAM 身份验证的数据库集群](iam-auth-connect-command-line.md#iam-auth-connect-awscurl)。

------
#### [ curl ]

以下示例使用 **curl** 来通过 HTTP **POST** 提交 Gremlin 查询。该查询采用 JSON 格式在 POST 请求正文中提交为 `gremlin` 属性。

```
curl -X POST -d '{"gremlin":"g.V().limit(1)"}' https://your-neptune-endpoint:port/gremlin
```

尽管建议在发送 Gremlin 查询时使用 HTTP **POST** 请求，但也可以使用 HTTP **GET** 请求：

```
curl -G "https://your-neptune-endpoint:port?gremlin=g.V().count()"
```

------

这些示例使用`g.V().limit(1)`遍历返回图中的第一个顶点。您可以通过将它替换为另一个 Gremlin 遍历来查询其它内容。

**重要**  
默认情况下，REST 端点在单个 JSON 结果集中返回所有结果。如果此结果集太大，Neptune 数据库实例可能会出现 `OutOfMemoryError` 异常。  
您可以通过启用分块响应（在一系列单独的响应中返回的结果）来避免这种情况。请参阅[使用可选的 HTTP 尾随标头启用由多部分组成的 Gremlin 响应](access-graph-gremlin-rest-trailing-headers.md)。

**注意**  
Neptune 不支持 `bindings` 属性。