기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
RDF 데이터에 대한 기본 내보내기
Neptune 내보내기 API를 사용하면 Neptune 데이터베이스에서 Amazon S3로 데이터를 내보낼 수 있습니다. RDF 데이터를 N-Triples 또는 N-Quads 형식으로 내보낼 수 있습니다.
네이티브 내보내기 작동 방식
네이티브 내보내기는 Neptune 클러스터의 라이터 인스턴스에서 실행되며 멀티파트 업로드를 사용하여 내보낸 데이터를 Amazon S3에 씁니다. 내보내기는 라이터 인스턴스의 컴퓨팅 리소스를 사용하므로 프로덕션 워크로드에 영향을 주지 않도록 복제된 클러스터에 대해 내보내기를 실행하는 것이 좋습니다. 자세한 내용은 권장 사항을 참조하세요.
내보내기 처리량
내보내기 처리량은 인스턴스 크기에 따라 대략 선형적으로 최대 까지 확장됩니다r7i.16xlarge. 보수적인 계획 추정치로 vCPU당 초당 약 50,000개의 문을 예상합니다.
이 공식을 사용하여 내보내기 기간을 추정합니다.
export_seconds = total_statements / (vCPUs × 50,000)
실제 처리량은 조건자 카디널리티, 문 복잡성 및 클러스터 크기를 포함한 데이터 세트 특성에 따라 달라집니다.
사전 조건
내보내기 API를 사용하기 전에 다음을 수행해야 합니다.
버전 1.4.6.0 이상(
exportFilter지원을 위해 버전 1.4.8.0 이상)을 실행하는 Neptune 데이터베이스 클러스터 보유
권장 사항
프로덕션 성능에 영향을 주지 않도록 읽기/쓰기 워크로드 없이 복제된 클러스터에서 내보내기 작업을 실행하는 것이 좋습니다.
최적의 price-to-performance 비율을 얻으려면 내보내기 작업에 16xlarge 인스턴스를 사용하는 것이 좋습니다. 이 인스턴스 유형은 다음을 제공합니다.
성능 저하 없이 대규모 데이터 세트를 처리할 수 있는 충분한 메모리
동시 내보내기 처리를 위한 최적의 CPU 리소스
내보내기 워크로드를 위한 최상의 비용 효율성
IAM 권한
내보내기 기능에는 두 개의 개별 IAM 역할이 포함됩니다.
호출자의 IAM 역할 - 내보내기 API 엔드포인트로 요청을 보내는 IAM 보안 주체(사용자 또는 역할)입니다. 이 역할에는 Neptune 데이터 액세스 권한이 필요합니다.
S3 액세스 IAM 역할 - Neptune이 내보낸 데이터를 Amazon S3에 쓰기 위해 수임하는 역할입니다. 내보내기 요청의
iamRoleArn파라미터에이 역할의 ARN을 전달하며 Neptune 클러스터와 연결되어야 합니다.
발신자 권한(Neptune 데이터 액세스 작업)
내보내기 API를 호출하는 IAM 보안 주체는 IAM 정책에 다음과 같은 Neptune 데이터 액세스 작업이 있어야 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowNeptuneExportActions", "Effect": "Allow", "Action": [ "neptune-db:StartExportJob", "neptune-db:GetExportJobStatus", "neptune-db:ListExportJobs", "neptune-db:CancelExportJob" ], "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-resource-id/*" } ] }
자세한 내용은 IAM 데이터 액세스 정책 설명 사용을 참조하세요.
S3 액세스 역할 권한
iamRoleArn 요청 파라미터에 전달된 IAM 역할은 Neptune 클러스터와 연결되어야 하며 대상 S3 버킷에 쓸 수 있는 권한을 Neptune에 부여해야 합니다. IAM 역할을 생성하고 클러스터와 연결하는 단계는 Neptune이 Amazon S3에 액세스할 수 있도록 허용하는 IAM 역할 생성을 참조하세요.
참고
내보내기 API에는 읽기 액세스만 필요한 대량 로더와 달리 S3에 대한 쓰기 권한이 필요합니다. 해당 페이지에 설명된 AmazonS3ReadOnlyAccess 관리형 정책 대신 다음 권한 정책을 사용합니다.
S3 액세스 역할에 다음 권한 정책을 연결합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3WriteForNeptuneExport", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:GetBucketPublicAccessBlock" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
선택적 KMS 권한
내보내기 요청kmsKeyIdentifier에서를 지정하는 경우 S3 액세스 역할에 다음 권한을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSForNeptuneExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id" } ] }
엔드포인트 내보내기
데이터를 내보내려면 HTTP 요청을 https://your-neptune-endpoint:port/export 엔드포인트로 보냅니다.
내보내기 요청 구문
POST https://your-neptune-endpoint:port/export
요청 헤더
Content-Type: application/json
요청 본문
{ "destination": "string", "format": "string", "iamRoleArn": "string", "region": "string", "compression": "string", "kmsKeyIdentifier": "string", "exportFilter": { "namedGraphUris": ["string"] } }
요청 파라미터
- 대상(문자열)
필수 사항입니다. 내보낸 데이터가 저장될 S3 URI입니다.
s3://bucket-name/optional-prefix/형식이어야 합니다.- 형식(문자열)
-
필수 사항입니다. 내보낸 데이터의 형식입니다. 유효한 값:
ntriples- N-Triples 형식으로 데이터 내보내기nquads- N-Quads 형식으로 데이터 내보내기
- iamRoleArn(문자열)
필수 사항입니다. Neptune이 S3 버킷에 액세스하기 위해 수임하는 IAM 역할의 Amazon 리소스 이름(ARN)입니다.
- region(문자열)
필수 사항입니다. S3 버킷 AWS 리전 의 입니다. Neptune 클러스터와 동일한 리전이어야 합니다.
- 압축(문자열)
-
선택 사항. 내보낸 파일의 압축 형식입니다. 유효한 값:
gz- .gz 형식으로 파일 압축
- kmsKeyIdentifier(문자열)
선택 사항. 내보낸 데이터를 암호화하는 데 사용할 AWS KMS 키의 ARN입니다.
- exportFilter(객체)
선택 사항. RDF 데이터의 하위 집합을 선택적으로 내보내도록 필터링합니다. 엔진 버전 1.4.8.0 이상에서 사용할 수 있습니다.
- namedGraphUris(문자열 배열)
내보낼 명명된 그래프 URIs(최대 100개). 지정된 그래프의 데이터만 내보냅니다. 지정된 그래프가 비어 있으면 내보내기가 성공하고 결과가 비어 있습니다. 잘못된 URIs에서 실패합니다
InvalidParameterException.
응답 구문
{ "status": "string", "payload": { "exportId": "string" } }
- 상태(문자열)
요청의 HTTP 상태입니다.
- exportId(문자열)
내보내기 작업의 고유 식별자입니다.
내보내기 상태 엔드포인트
내보내기 작업의 상태를 확인하려면 내보내기 ID를 사용하여 내보내기 엔드포인트에 HTTP GET 요청을 보냅니다.
GET https://your-neptune-endpoint:port/export?exportId=export-id
요청 파라미터
- exportId(문자열)
필수 사항입니다. 내보내기 작업의 고유 식별자입니다.
응답 구문
{ "status": "string", "payload": { "exportId": "string", "destination": "string", "status": "string", "statusReason": "string", "format": "string", "iamRoleArn": "string", "kmsKeyIdentifier": "string", "exportFilter": { "namedGraphUris": ["string"] }, "exportTaskDetails": { "timeElapsedSeconds": number, "startTime": number, "numRecordsWritten": number, "progressPercentage": number } } }
- exportId(문자열)
내보내기 작업의 고유 식별자입니다.
- 대상(문자열)
데이터를 내보내는 S3 URI입니다.
- 상태(문자열)
-
내보내기 작업의 현재 상태입니다. 유효한 값:
EXPORT_NOT_STARTED- 내보내기가 대기열에 있지만 시작되지 않았습니다.EXPORT_IN_PROGRESS- 내보내기가 현재 실행 중입니다.EXPORT_COMPLETED- 내보내기가 성공적으로 완료되었습니다.EXPORT_CANCELLING- 내보내기가 취소되고 있습니다.EXPORT_CANCELLED_BY_USER- 사용자가 내보내기를 취소했습니다.EXPORT_S3_ERROR- S3 액세스 오류로 인해 내보내기에 실패했습니다.EXPORT_FAILED- 다른 오류로 인해 내보내기가 실패했습니다.
- statusReason(문자열)
내보내기 상태에 대한 추가 정보입니다.
- 형식(문자열)
내보내진 데이터의 형식입니다.
- iamRoleArn(문자열)
S3 액세스에 사용되는 IAM 역할의 ARN입니다.
- kmsKeyIdentifier(문자열)
지정된 경우 암호화에 사용되는 KMS 키의 ARN입니다.
- exportFilter(객체)
요청에 지정된 경우 적용된 내보내기 필터입니다.
namedGraphUris(문자열 배열) - 내보내기를 필터링하는 데 사용되는 명명된 그래프 URIs입니다.
- exportTaskDetails(객체)
-
내보내기 작업 진행 상황에 대한 세부 정보:
timeElapsedSeconds(숫자) - 내보내기 시작 이후 경과된 시간
startTime(숫자) - 내보내기가 시작된 Epoch 시간
numRecordsWritten(숫자) - S3에 기록된 레코드 수
progressPercentage(숫자) - 내보내기 완료 비율
내보내기 엔드포인트 나열
모든 내보내기 작업을 나열하려면 HTTP GET 요청을 내보내기 엔드포인트로 보냅니다.
GET https://your-neptune-endpoint:port/export
응답 구문
{ "status": "string", "payload": [ "string" ] }
- 페이로드(배열)
모든 내보내기 작업에 대한 내보내기 IDs.
내보내기 엔드포인트 취소
내보내기 작업을 취소하려면 내보내기 ID를 사용하여 내보내기 엔드포인트에 HTTP DELETE 요청을 보냅니다.
DELETE https://your-neptune-endpoint:port/export?exportId=export-id
요청 파라미터
- exportId(문자열)
필수 사항입니다. 취소할 내보내기 작업의 고유 식별자입니다.
응답 구문
{ "status": "string", "payload": { "message": "string" } }
출력 형식 내보내기
S3 디렉터리 구조
내보낸 데이터는 S3 버킷에 다음과 같이 구성됩니다.
s3://your-bucket/export-id/ ├── data/ │ ├── part-00000.nt │ ├── part-00001.nt │ └── ... └── export_status.json
- 데이터/ 디렉터리
내보낸 그래프 데이터 파일을 지정된 형식으로 포함합니다.
- export_status.json 파일
내보내기 작업에 대한 메타데이터를 포함합니다.
오류 응답
일반적인 오류 코드
- BadRequestException
요청에 잘못된 파라미터가 포함되어 있거나 내보내기가 이미 진행 중입니다.
- AccessDeniedException
IAM 역할에는 S3 또는 KMS 액세스에 필요한 권한이 없습니다.
오류 응답 예
{ "code": "BadRequestException", "requestId": "request-id", "message": "Export already in progress with ID 'existing-id'. Please wait or cancel it first.", "detailedMessage": "Detailed error description" }
예제
내보내기 시작
curl -X POST https://your-cluster-endpoint:8182/export \ -H "Content-Type: application/json" \ -d '{ "destination": "s3://my-bucket/exports/", "format": "ntriples", "iamRoleArn": "arn:aws:iam::123456789012:role/neptune-export-role", "region": "us-west-2" }'
필터링된 내보내기 시작(명명된 그래프)
curl -X POST https://your-cluster-endpoint:8182/export \ -H "Content-Type: application/json" \ -d '{ "destination": "s3://my-bucket/exports/", "format": "nquads", "iamRoleArn": "arn:aws:iam::123456789012:role/neptune-export-role", "region": "us-west-2", "exportFilter": { "namedGraphUris": [ "http://example.com/graph1", "http://example.com/graph2" ] } }'
내보내기 상태 확인
curl -X GET "https://your-cluster-endpoint:8182/export?exportId=<id>"
내보내기 취소
curl -X DELETE "https://your-cluster-endpoint:8182/export?exportId=<id>"
제한 사항
네이티브 내보내기에는 다음과 같은 제한 사항이 있습니다.
인스턴스 지원 - Neptune Serverless 인스턴스 또는 읽기 전용 복제본에서는 기본 내보내기가 지원되지 않습니다. 내보내기는 항상 프로비저닝된 클러스터의 라이터 인스턴스에서 실행됩니다.
클러스터당 하나의 내보내기 - 클러스터에서 한 번에 하나의 내보내기만 활성화할 수 있습니다. 다른 내보내기가 진행되는 동안 새 내보내기 요청을 제출하면 요청이 실패합니다.
자동 재개 없음 - 내보내기 중에 엔진이 다시 시작되면 내보내기가 실패하고 처음부터 다시 시작해야 합니다. 엔진 재시작 중에는 내보내기 진행 상황이 유지되지 않습니다.
엔진 이벤트 후 상태 가용성 - 엔진이 충돌하면 상태 API를 통해 내보내기 상태를 검색할 수 없습니다.
쓰기 중 일관성 - 클러스터가 내보내기 중에 쓰기 트래픽을 처리하는 경우 내보낸 데이터는 그래프의 일부 또는 일관되지 않은 보기를 반영할 수 있습니다. 일관된 내보내기를 보장하려면 복제된 클러스터에 대해 내보내기를 실행합니다.