예제: Neptune DB 인스턴스에 데이터 로드 - Amazon Neptune

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

예제: Neptune DB 인스턴스에 데이터 로드

이 예는 데이터를 Amazon Neptune으로 로드하는 방법을 보여줍니다. 달리 명시되지 않는 한, Neptune DB 인스턴스와 동일한 Amazon Virtual Private Cloud(VPC)에 있는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 다음 단계를 수행해야 합니다.

데이터 로딩 예제의 사전 조건

시작하기 전에 다음을 완비해야 합니다.

  • Neptune DB 인스턴스.

    Neptune DB 인스턴스 실행에 대한 자세한 내용은 새 Neptune DB 클러스터 생성 섹션을 참조하세요.

  • 데이터 파일을 넣을 수 있는 Amazon Simple Storage Service(S3) 버킷.

    기존 버킷을 사용해도 됩니다. S3 버킷이 없는 경우 Amazon S3 시작 안내서버킷 생성을 참조하세요.

  • Neptune 로더가 지원하는 형식 중 하나로 로드할 그래프 데이터:

    Gremlin을 사용하여 그래프를 쿼리하는 경우 Neptune은 에 설명된 대로 데이터를 comma-separated-values (CSV) 형식으로 로드할 수 있습니다. Gremlin 로드 데이터 형식

    openCypher를 사용하여 그래프를 쿼리하는 경우 Neptune은 openCypher 데이터의 로드 형식에 설명된 대로 openCypher 전용 CSV 형식으로 데이터를 로드할 수도 있습니다.

    SPARQL을 사용하는 경우, RDF 로드 데이터 형식에 설명된 대로 Neptune에서는 여러 RDF 형식으로 데이터를 로드할 수 있습니다.

  • S3 버킷의 데이터 파일에 액세스하도록 허용하는 IAM 정책이 있다고 가정하는 Neptune DB 인스턴스의 IAM 역할. 이 정책은 읽기 및 목록 권한을 부여해야 합니다.

    Amazon S3에 대한 액세스 권한이 있는 역할을 생성하고 이를 Neptune 클러스터와 연결하는 방법은 사전 조건: IAM 역할 및 Amazon S3 액세스 섹션을 참조하세요.

    참고

    Neptune Load API는 데이터 파일에 대한 읽기 전용 액세스 권한이 있어야 합니다. IAM 정책에서 전체 버킷에 대한 액세스 또는 쓰기 액세스 권한을 허용할 필요는 없습니다.

  • Amazon S3 VPC 엔드포인트. 자세한 내용은 Amazon S3 VPC 엔드포인트 생성(을)를 참조하세요.

Amazon S3 VPC 엔드포인트 생성

Neptune 로더에는 Amazon S3용 VPC 엔드포인트가 필요합니다.

Amazon S3에 대한 액세스를 설정하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/vpc/ 에서 Amazon VPC 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 엔드포인트를 선택합니다.

  3. 엔드포인트 생성을 선택합니다.

  4. 서비스 이름 com.amazonaws.region.s3을 선택합니다.

    참고

    여기의 리전이 올바르지 않은 경우 콘솔 리전이 올바른지 확인하십시오.

  5. Neptune DB 인스턴스가 포함된 VPC를 선택합니다.

  6. 클러스터와 관련된 서브넷과 연결된 라우팅 테이블 옆에 있는 확인란을 선택합니다. 라우팅 테이블이 하나만 있는 경우에는 해당 확인란을 선택해야 합니다.

  7. 엔드포인트 생성을 선택합니다.

엔드포인트 생성에 대한 자세한 내용은 Amazon VPC 사용 설명서VPC 엔드포인트 섹션을 참조하세요. VPC 엔드포인트 제한에 대한 자세한 내용은 Amazon S3용 VPC 엔드포인트를 참조하세요.

데이터를 Neptune DB 인스턴스로 로드하려면
  1. 데이터 파일을 Amazon S3 버킷에 복사합니다. S3 버킷은 데이터를 로드하는 클러스터와 동일한 AWS 지역에 있어야 합니다.

    다음 AWS CLI 명령을 사용하여 파일을 버킷에 복사할 수 있습니다.

    참고

    이 명령을 Amazon EC2 인스턴스에서 실행할 필요는 없습니다.

    aws s3 cp data-file-name s3://bucket-name/object-key-name
    참고

    Amazon S3에서 객체 키 이름은 파일 이름을 포함한 파일의 전체 경로입니다.

    예: 명령 aws s3 cp datafile.txt s3://examplebucket/mydirectory/datafile.txt에서 객체 키 이름은 mydirectory/datafile.txt입니다.

    또는 를 사용하여 S3 AWS Management Console 버킷에 파일을 업로드할 수 있습니다. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열고 버킷을 선택합니다. 왼쪽 상단 모서리에서 업로드를 선택하여 파일을 업로드합니다.

  2. 명령줄 창에서 다음을 입력하여 엔드포인트, Amazon S3 경로, 형식 및 IAM 역할 ARN에 대한 올바른 값을 사용하여 Neptune 로더를 실행합니다.

    format 파라미터는 Gremlin의 경우 csv, openCypher의 경우 opencypher, RDF의 경우 ntriples, nquads, turtle, rdfxml 중 하나일 수 있습니다. 기타 파라미터에 대한 자세한 내용은 Neptune 로더 명령 단원을 참조하십시오.

    사용자의 Neptune DB 인스턴스 호스트 이름을 찾는 방법은 Amazon Neptune 엔드포인트에 연결 섹션을 참조하세요.

    리전 파라미터는 클러스터 및 S3 버킷의 리전과 일치해야 합니다.

    Amazon Neptune을 사용할 수 있는 지역은 다음과 같습니다. AWS

    • 미국 동부(버지니아 북부):   us-east-1

    • 미국 동부(오하이오):   us-east-2

    • 미국 서부(캘리포니아 북부):   us-west-1

    • 미국 서부(오레곤):   us-west-2

    • 캐나다(중부):   ca-central-1

    • 남아메리카(상파울루):   sa-east-1

    • 유럽(스톡홀름):   eu-north-1

    • 유럽(아일랜드):   eu-west-1

    • 유럽(런던):   eu-west-2

    • 유럽(파리):   eu-west-3

    • 유럽(프랑크푸르트):   eu-central-1

    • 중동(바레인):   me-south-1

    • 중동(UAE):   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-south-1

    • 중국(베이징):   cn-north-1

    • 중국(닝샤):   cn-northwest-1

    • AWS GovCloud (미국 서부): us-gov-west-1

    • AWS GovCloud (미국 동부): us-gov-east-1

    curl -X POST \ -H 'Content-Type: application/json' \ https://your-neptune-endpoint:port/loader -d ' { "source" : "s3://bucket-name/object-key-name", "format" : "format", "iamRoleArn" : "arn:aws:iam::account-id:role/role-name", "region" : "region", "failOnError" : "FALSE", "parallelism" : "MEDIUM", "updateSingleCardinalityProperties" : "FALSE", "queueRequest" : "TRUE", "dependencies" : ["load_A_id", "load_B_id"] }'

    IAM 역할을 생성하고 Neptune 클러스터와 연결하는 방법은 사전 조건: IAM 역할 및 Amazon S3 액세스 섹션을 참조하세요.

    참고

    로드 요청 파라미터에 대한 자세한 내용은 Neptune 로더 요청 파라미터를 참조하십시오. 간략 설명:

    source 파라미터는 단일 파일 또는 폴더를 가리키는 Amazon S3 URI를 허용합니다. 폴더를 지정하면 Neptune이 폴더에서 모든 데이터 파일을 로드합니다.

    폴더에는 여러 버텍스 파일 및 여러 엣지 파일이 포함될 수 있습니다.

    URI 형식은 다음 중 하나가 될 수 있습니다.

    • s3://bucket_name/object-key-name

    • https://s3.amazonaws.com/bucket_name/object-key-name

    • https://s3-us-east-1.amazonaws.com/bucket_name/object-key-name

    format 파라미터는 다음 값 중 하나일 수 있습니다.

    • Gremlin 속성 그래프용 Gremlin CSV 형식(csv)

    • openCypher 속성 그래프용 openCypher CSV 형식(opencypher)

    • RDF / SPARQL용 N -Triple(ntriples) 형식

    • RDF / SPARQL용 N-Quad(nquads) 형식

    • RDF / SPARQL용 RDF/XML(rdfxml) 형식

    • RDF/SPARQL용 Turtle(turtle) 형식

    선택적 parallelism 파라미터를 통해 벌크 로드 프로세스에 사용되는 스레드 수를 제한할 수 있습니다. 이 파라미터는 LOW, MEDIUM, HIGH 또는 OVERSUBSCRIBE로 설정할 수 있습니다.

    updateSingleCardinalityProperties"FALSE"로 설정하면 에지 또는 단일 카디널리티 버텍스 속성에 대해 로드되는 소스 파일에 둘 이상의 값이 제공된 경우 로더는 오류를 반환합니다.

    queueRequest"TRUE"로 설정하면 로드 작업이 이미 실행 중인 경우 로드 요청이 대기열에 배치됩니다.

    dependencies 파라미터는 로드 요청의 실행이 대기열에 이미 배치된 하나 이상의 로드 작업이 성공적으로 완료되는 것에 의존하게 합니다.

  3. Neptune 로더는 상태를 확인하거나 로드 프로세스를 취소할 수 있는 작업 id를 반환합니다. 예를 들면 다음과 같습니다.

    { "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }
  4. 3단계에서 loadId와 함께 로그 상태를 가져오려면 다음을 입력하세요.

    curl -G 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5'

    로드 상태에 오류가 있는 경우에는 보다 자세한 상태 및 오류 목록을 요청할 수 있습니다. 자세한 정보와 지침은 Neptune 로더 Get-Status API 섹션을 참조하세요.

  5. (선택 사항) Load 작업을 취소합니다.

    3단계에서 작업 Delete와 함께 로더 작업을 id하려면 다음을 입력하세요.

    curl -X DELETE 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5'

    DELETE 명령은 취소 성공 시 HTTP 코드 200 OK를 반환합니다.

    로드가 완료된 로드 작업에서 파일의 데이터는 롤백되지 않습니다. 데이터는 Neptune DB 인스턴스에 남아 있습니다.