

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

# Amazon S3로 Gremlin 쿼리 결과 내보내기
<a name="exporting-gremlin"></a>

 엔진 릴리스 1.4.3.0부터 Amazon Neptune은 Gremlin 쿼리 결과를 Amazon S3로 직접 내보내는 기능을 지원합니다. 이 기능을 사용하면 쿼리 응답으로 반환하는 대신 Amazon S3 버킷으로 내보내 대규모 쿼리 결과를 효율적으로 처리할 수 있습니다.

 쿼리 결과를 Amazon S3로 내보내려면 Gremlin 쿼리의 마지막 단계로 `call()` 단계를 사용하며, 서비스 이름으로 `neptune.query.exportToS3`를 지정합니다. [바이트코드를 사용하는 Tinkerpop 드라이버](https://tinkerpop.apache.org/docs/current/reference/#terminal-steps)의 터미널 단계는 `call()` 단계 후에 추가할 수 있습니다. 내보내기 파라미터는 문자열 값으로 입력되어야 합니다.

**참고**  
 `call()` 단계에 `neptune.query.exportToS3`가 포함된 쿼리는 최종 단계로 사용되지 않을 경우 실패합니다. 바이트코드를 사용하는 Gremlin 클라이언트는 터미널 단계를 사용할 수 있습니다. 자세한 내용은 Amazon Neptune 설명서의 [Gremlin 모범 사례](https://docs.aws.amazon.com//neptune/latest/userguide/best-practices-gremlin-java-bytecode.html)를 참조하세요.

```
g.V()
  ...
  .call('neptune.query.exportToS3', [
    'destination': 's3://your-bucket/path/result.json',
    'format': 'GraphSONv3',
    'kmskeyArn': 'optional-kms-key-arn'
  ])
```

**Parameters**
+  `destination`: 필수 항목 - 결과가 기록될 Amazon S3 URI입니다.
+  `format`: 필수 항목 - 출력 형식으로 현재 '[GraphSONv3](https://tinkerpop.apache.org/docs/3.7.3/dev/io/#graphson-3d0)'만 지원합니다.
+  `keyArn`: 선택 사항 - Amazon S3 [ 서버 측 암호화](https://docs.aws.amazon.com//AmazonS3/latest/userguide/serv-side-encryption.html)를 위한 AWS KMS키의 ARN입니다.

## 예제
<a name="exporting-gremlin-examples"></a>

 **쿼리 예** 

```
g.V().
    hasLabel('Comment').
    valueMap().
    call('neptune.query.exportToS3', [
    'destination': 's3://your-bucket/path/result.json',
    'format': 'GraphSONv3',
    'keyArn': 'optional-kms-key-arn'
  ])
```

 **쿼리 응답 예제** 

```
{
    "destination":"s3://your-bucket/path/result.json,
    "exportedResults": 100,
    "exportedBytes": 102400
}
```

## 사전 조건
<a name="exporting-gremlin-prerequisites"></a>
+  Neptune DB 인스턴스는 게이트웨이 유형의 VPC 엔드포인트를 통해 Amazon S3에 액세스할 수 있어야 합니다.
+  쿼리에서 사용자 지정 AWS KMS암호화를 사용하려면 Neptune이 통신할 수 있도록 하려면에 대한 인터페이스 유형 VPC 엔드포인트AWS KMS가 필요합니다AWS KMS.
+  Neptune에서 IAM 인증을 활성화하고 대상 Amazon S3 버킷에 쓸 수 있는 적절한 IAM 권한이 있어야 합니다. 이렇게 하지 않으면 '클러스터에 S3 내보내기에 대해 IAM 인증이 활성화되어 있어야 합니다'라는 400개의 잘못된 요청 오류가 발생합니다.
+  대상 Amazon S3 버킷: 
  +  대상 Amazon S3 버킷은 퍼블릭이 아니어야 합니다. `Block public access`이 활성화되어 있어야 합니다.
  +  대상 Amazon S3 대상은 비어 있어야 합니다.
  +  대상 Amazon S3 버킷에는 `Delete incomplete multipart uploads`를 사용하는 `Delete expired object delete markers or incomplete multipart uploads`에 대한 수명 주기 규칙이 있어야 합니다. 자세한 내용은 [Amazon S3 수명 주기 관리 업데이트 – 멀티파트 업로드 및 삭제 마커 지원](https://aws.amazon.com/blogs/aws/s3-lifecycle-management-update-support-for-multipart-uploads-and-delete-markers/)을 참조하세요.  
![\[수명 주기 규칙 작업을 보여주는 이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/neptune/latest/userguide/images/lifecycleRuleActions.png)
  +  대상 Amazon S3 버킷에는 쿼리 평가에 소요되는 시간보다 긴 값(예: 7일)으로 설정된 `Delete incomplete multipart uploads`를 사용하는 `Delete expired object delete markers or incomplete multipart uploads`에 대한 수명 주기 규칙이 있어야 합니다. 이는 Neptune(인스턴스/엔진 장애 등)에 의해 완료되지 않거나 중단될 수 있는 불완전 업로드(직접적으로 표시되지는 않지만 비용이 발생할 수 있음)를 삭제하기 위해 필요합니다. 자세한 내용은 [Amazon S3 수명 주기 관리 업데이트 – 멀티파트 업로드 및 삭제 마커 지원](https://aws.amazon.com/blogs/aws/s3-lifecycle-management-update-support-for-multipart-uploads-and-delete-markers/)을 참조하세요.  
![\[수명 주기 규칙 작업과 만료된 객체 삭제 마커를 보여주는 이미지입니다.\]](http://docs.aws.amazon.com/ko_kr/neptune/latest/userguide/images/lifecycleRuleActionsDelete.png)

**중요 고려 사항**
+  내보내기 단계는 Gremlin 쿼리의 마지막 단계여야 합니다.
+  지정된 Amazon S3 위치에 객체가 이미 있는 경우 쿼리가 실패합니다.
+  내보내기 쿼리의 최대 쿼리 실행 시간은 11시간 50분으로 제한됩니다. 이 특성은 [전달 액세스 세션](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_forward_access_sessions.html)을 사용합니다. 토큰 만료 문제를 방지하기 위해 현재 11시간 50분으로 제한됩니다.
**참고**  
 내보내기 쿼리는 여전히 쿼리 제한 시간을 준수합니다. 대규모 내보내기의 경우 적절한 쿼리 제한 시간을 사용해야 합니다.
+  Amazon S3에 새로 업로드되는 모든 객체는 자동으로 암호화됩니다.
+  오류 또는 충돌 발생 시 불완전 멀티파트 업로드로 인한 스토리지 비용을 방지하려면 Amazon S3 버킷에 `Delete incomplete multipart uploads` 수명 주기 규칙을 설정하는 것이 좋습니다.

## 응답 형식
<a name="exporting-gremlin-response"></a>

 쿼리는 쿼리 결과를 직접 반환하는 대신 상태 및 내보내기 세부 정보를 포함하여 내보내기 작업에 대한 메타데이터를 반환합니다. Amazon S3의 쿼리 결과는 [GraphSONv3](https://tinkerpop.apache.org/docs/3.7.3/dev/io/#graphson-3d0) 형식으로 제공됩니다.

```
{
  "data": {
    "@type": "g:List",
    "@value": [
      {
        "@type": "g:Map",
        "@value": [
          "browserUsed",
          {
            "@type": "g:List",
            "@value": [
              "Safari"
            ]
          },
          "length",
          {
            "@type": "g:List",
            "@value": [
              {
                "@type": "g:Int32",
                "@value": 7
              }
            ]
          },
          "locationIP",
          {
            "@type": "g:List",
            "@value": [
              "192.0.2.0/24"
            ]
          },
          "creationDate",
          {
            "@type": "g:List",
            "@value": [
              {
                "@type": "g:Date",
                "@value": 1348341961000
              }
            ]
          },
          "content",
          {
            "@type": "g:List",
            "@value": [
              "no way!"
            ]
          }
        ]
      },
      {
        "@type": "g:Map",
        "@value": [
          "browserUsed",
          {
            "@type": "g:List",
            "@value": [
              "Firefox"
            ]
          },
          "length",
          {
            "@type": "g:List",
            "@value": [
              {
                "@type": "g:Int32",
                "@value": 2
              }
            ]
          },
          "locationIP",
          {
            "@type": "g:List",
            "@value": [
              "203.0.113.0/24"
            ]
          },
          "creationDate",
          {
            "@type": "g:List",
            "@value": [
              {
                "@type": "g:Date",
                "@value": 1348352960000
              }
            ]
          },
          "content",
          {
            "@type": "g:List",
            "@value": [
              "ok"
            ]
          }
        ]
      },
      
      
      ...
      
      
    ]
  }
}
```

**보안**
+  Amazon S3로 전송되는 모든 데이터는 SSL을 사용하여 전송 중에 암호화됩니다.
+  내보낸 데이터의 서버 측 암호화를 위한 AWS KMS키를 지정할 수 있습니다. Amazon S3는 기본적으로 새 데이터를 암호화합니다. 버킷이 특정 AWS KMS키를 사용하도록 구성된 경우 해당 키가 사용됩니다.
+  Neptune은 내보내기를 시작하기 전에 대상 버킷이 퍼블릭 버킷이 아닌지 확인합니다.
+  교차 계정 및 교차 리전 내보내기는 지원되지 않습니다.

**오류 처리**
+  대상 Amazon S3 버킷이 퍼블릭 버킷입니다.
+  지정된 객체가 이미 있습니다.
+  Amazon S3 버킷에 대한 충분한 쓰기 권한이 없습니다.
+  쿼리 실행이 최대 시간 제한을 초과합니다.

**모범 사례**
+  Amazon S3 버킷 수명 주기 규칙을 사용하여 불완전 멀티파트 업로드를 정리합니다.
+  Neptune 로그 및 지표를 사용하여 내보내기 작업을 모니터링합니다. [Gremlin 상태 엔드포인트](https://docs.aws.amazon.com//neptune/latest/userguide/gremlin-api-status.html)를 확인하여 쿼리가 현재 실행 중인지 확인할 수 있습니다. 클라이언트가 응답을 받지 못한 한 쿼리는 실행 중인 것으로 간주됩니다.