

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# HTTPS REST 엔드포인트를 사용하여 Neptune DB 인스턴스에 연결
<a name="access-graph-gremlin-rest"></a>

Amazon Neptune은 Gremlin 쿼리용 HTTPS 엔드포인트를 제공합니다. REST 인터페이스는 DB 클러스터가 사용하는 모든 Gremlin 버전과 호환됩니다. 지원하는 Gremlin 릴리스를 확인하려면 실행 중인 Neptune 엔진 버전의 [엔진 릴리스 페이지](engine-releases.md)를 참조하세요.

**참고**  
[SSL/HTTPS를 사용하여 Amazon Neptune 데이터베이스에 대한 연결 암호화](security-ssl.md)에서 설명한 것처럼 이제 Neptune에서는 HTTP 대신 HTTPS를 사용하여 연결해야 합니다. 또한 Neptune은 현재 REST API 요청에 대해 HTTP/2를 지원하지 않습니다. 클라이언트는 엔드포인트에 연결할 때 HTTP/1.1을 사용해야 합니다.

다음은 `curl` 명령과 HTTPS를 사용하여 Gremlin 엔드포인트에 연결하는 방법입니다. 사용자의 Neptune DB 인스턴스와 동일한 Virtual Private Cloud(VPC)에 있는 Amazon EC2 인스턴스에서 이러한 지침을 따라야 합니다.

Neptune DB 인스턴스의 Gremlin 쿼리용 HTTPS 엔드포인트는 `https://your-neptune-endpoint:port/gremlin`입니다.

**참고**  
사용자의 Neptune DB 인스턴스 호스트 이름을 찾는 방법은 [Amazon Neptune 엔드포인트에 연결](feature-overview-endpoints.md) 섹션을 참조하세요.

## HTTP REST 엔드포인트를 사용하여 Neptune에 연결하려면
<a name="access-graph-gremlin-rest-connect"></a>

다음 예에서는 **curl**을 사용하여 HTTP **POST**를 통해 Gremlin 쿼리를 제출합니다. 쿼리는 `gremlin` 속성으로 post 본문에서 JSON 형식으로 제출됩니다.

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

이 예제는 `g.V().limit(1)` 순회를 사용하여 그래프의 첫 번째 버텍스를 반환합니다. 이를 다른 Gremlin 순회로 대체하여 다른 항목을 쿼리할 수 있습니다.

**중요**  
기본적으로 REST 엔드포인트는 단일 JSON 결과 세트의 모든 결과를 반환합니다. 이 결과 세트가 너무 크면 Neptune DB 인스턴스에서 `OutOfMemoryError` 예외가 발생할 수 있습니다.  
청크 응답(결과가 일련의 개별 응답으로 반환됨)을 활성화하면 이를 방지할 수 있습니다. [선택적 HTTP 후행 헤더를 사용하여 여러 부분으로 구성된 Gremlin 응답 활성화](access-graph-gremlin-rest-trailing-headers.md)을(를) 참조하세요.

Gremlin 쿼리를 보낼 때는 HTTP **POST** 요청을 사용하는 것이 좋지만, HTTP **GET** 요청을 사용할 수도 있습니다.

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

**참고**  
Neptune은 `bindings` 속성을 지원하지 않습니다.

# 선택적 HTTP 후행 헤더를 사용하여 여러 부분으로 구성된 Gremlin 응답 활성화
<a name="access-graph-gremlin-rest-trailing-headers"></a>

기본적으로 Gremlin 쿼리에 대한 HTTP 응답은 단일 JSON 결과 세트로 반환됩니다. 결과 세트가 매우 큰 경우 이로 인해 DB 인스턴스에서 `OutOfMemoryError` 예외가 발생할 수 있습니다.

단, *청크* 응답(여러 부분으로 나누어 반환되는 응답)을 활성화할 수 있습니다. 요청에 전송 인코딩(TE) 후행 헤더(`te: trailers`)를 포함하면 됩니다. TE 헤더에 대한 자세한 내용은 [MDN 페이지(TE 요청 헤더에 관한 정보)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/TE)를 참조하세요.

응답이 여러 부분으로 나뉘어 반환되는 경우 첫 번째 부분이 HTTP 상태 코드 `200`(OK)으로 도착하기 때문에, 첫 번째 부분이 수신된 후 발생하는 문제를 진단하기 어려울 수 있습니다. 이후에 오류가 발생하면 일반적으로 메시지 본문에 손상된 응답이 포함되며, 이 메시지 본문의 끝에 Neptune이 오류 메시지를 추가합니다.

이러한 종류의 장애를 더 쉽게 감지하고 진단할 수 있도록 Neptune은 모든 응답 청크의 후행 헤더에 2개의 새로운 헤더 필드도 포함합니다.
+ `X-Neptune-Status`   –   응답 코드와 짧은 이름이 차례로 들어 있습니다. 예를 들어, 성공하면 후행 헤더는 `X-Neptune-Status: 200 OK`와 같습니다. 장애가 발생한 경우 응답 코드는 `X-Neptune-Status: 500 TimeLimitExceededException`과 같은 [Neptune 엔진 오류 코드](errors-engine-codes.md) 중 하나가 됩니다.
+ `X-Neptune-Detail`   –   요청이 성공하면 비어 있습니다. 오류가 발생한 경우 JSON 오류 메시지가 포함됩니다. HTTP 헤더 값에는 ASCII 문자만 사용할 수 있으므로, JSON 문자열은 URL로 인코딩됩니다.

**참고**  
Neptune은 현재 청크 응답의 `gzip` 압축을 지원하지 않습니다. 클라이언트가 청크 인코딩과 압축을 동시에 요청하는 경우 Neptune은 압축을 건너뜁니다.