

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemple : chargement de données dans une instance de base de données Neptune
<a name="bulk-load-data"></a>

Cet exemple montre comment charger des données dans Amazon Neptune. Sauf indication contraire, vous devez suivre ces étapes à partir d'une instance Amazon Elastic Compute Cloud (Amazon EC2) située dans le même Amazon Virtual Private Cloud (VPC) que l'instance de base de données Neptune.

## Prérequis pour l'exemple de chargement de données
<a name="bulk-load-tutorial-prereqs"></a>

Avant de commencer, les prérequis suivants doivent être remplis :
+ Vous devez disposer d'une instance de base de données Neptune.

  Pour plus d'informations sur le lancement d'une instance de base de données Neptune, consultez [Création d'un cluster Amazon Neptune](get-started-create-cluster.md).
+ Vous devez disposer d'un compartiment Amazon Simple Storage Service (Amazon S3) dans lequel stocker les fichiers de données :

  Vous pouvez utiliser un compartiment existant. Si vous n'avez pas de compartiment S3, consultez [Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) dans le *[Guide de démarrage Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*.
+ Vous devez disposer des données de graphe à charger, dans un des formats compatibles avec le chargeur  :

  Si vous utilisez Gremlin pour interroger votre graphe, Neptune peut charger les données dans comma-separated-values un format `CSV` (), comme décrit dans. [Format de chargement de données Gremlin](bulk-load-tutorial-format-gremlin.md)

  Si vous utilisez openCypher pour interroger le graphe, Neptune peut également charger les données dans un format `CSV` spécifique à openCypher, comme décrit dans [Format de chargement des données openCypher](bulk-load-tutorial-format-opencypher.md).

  Si vous utilisez SPARQL, Neptune peut charger les données dans divers formats RDF, comme décrit dans [Formats de chargement de données RDF](bulk-load-tutorial-format-rdf.md).
+ Vous devez disposer d'un rôle IAM pour l'instance de base de données Neptune, avec une politique IAM qui autorise l'accès aux fichiers de données dans le compartiment S3. La stratégie doit accorder des autorisations de lecture et de type Liste.

   Pour plus d'informations sur la création d'un rôle ayant accès à Amazon S3 et sur son association à un cluster Neptune, consultez [Prérequis : rôle IAM et accès à Amazon S3](bulk-load-tutorial-IAM.md).
**Note**  
L'API `Load` Neptune nécessite un accès en lecture aux fichiers de données uniquement. La politique IAM n'a pas besoin d'autoriser un accès en écriture ou un accès au compartiment complet.
+ Vous devez disposer d'un point de terminaison de VPC Amazon S3. Pour plus d’informations, consultez la section [Création d'un point de terminaison de VPC Amazon S3](#bulk-load-prereqs-s3).

### Création d'un point de terminaison de VPC Amazon S3
<a name="bulk-load-prereqs-s3"></a>

Le chargeur Neptune a besoin d’un point de terminaison d’un VPC pour Amazon S3.

**Pour configurer l'accès à Amazon S3**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Dans le panneau de navigation de gauche, sélectionnez **Points de terminaison**.

1. Choisissez **Créer un point de terminaison**.

1. Pour **Nom du service**, choisissez `com.amazonaws.region.s3`.
**Note**  
Si la région dans ce champ est incorrecte, assurez-vous que la région de la console est correcte.

1. Choisissez le VPC qui contient votre instance de base de données Neptune.

1. Cochez la case en regard des tables de routage associées aux sous-réseaux liés à votre cluster. Si vous n'avez qu'une seule table de routage, vous devez cocher cette case.

1. Choisissez **Créer un point de terminaison**.

Pour plus d'informations sur la création du point de terminaison, consultez [Points de terminaison de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#create-vpc-endpoint) dans le *Guide de l'utilisateur Amazon VPC*. Pour plus d'informations sur les limites qui s'appliquent aux points de terminaison d'un VPC, consultez [Points de terminaisons de VPC pour Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html).

**Pour charger des données dans une instance de base de données Neptune**

1. Copiez les fichiers de données dans un compartiment Amazon S3. Le compartiment S3 doit se trouver dans la même AWS région que le cluster qui charge les données.

   Vous pouvez utiliser la AWS CLI commande suivante pour copier les fichiers dans le compartiment.
**Note**  
Cette commande n'a pas besoin d'être exécutée à partir de l'instance Amazon EC2.

   ```
   aws s3 cp data-file-name s3://bucket-name/object-key-name
   ```
**Note**  
Dans Amazon S3, le **nom de la clé d'objet** est le chemin d'accès complet d'un fichier, y compris le nom du fichier.  
*Exemple :* Dans la commande `aws s3 cp datafile.txt s3://examplebucket/mydirectory/datafile.txt`, le nom de la clé d'objet est **`mydirectory/datafile.txt`**.

   Vous pouvez également utiliser le AWS Management Console pour télécharger des fichiers dans le compartiment S3. Ouvrez la console Amazon S3 à [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)l'adresse et choisissez un compartiment. Dans le coin supérieur gauche, choisissez **Upload (Charger)** pour charger les fichiers.

1. Dans une fenêtre de ligne de commande, entrez ce qui suit pour exécuter le chargeur Neptune en utilisant les valeurs correctes pour votre point de terminaison, le chemin Amazon S3, le format et l'ARN du rôle IAM.

   Le paramètre `format` peut avoir l'une des valeurs suivantes : `csv` pour Gremlin, `opencypher` pour openCypher ou `ntriples`, `nquads`, `turtle`, et `rdfxml` pour RDF. Pour plus d'informations sur les autres paramètres, consultez [Commande de chargeur Neptune](load-api-reference-load.md).

   Consultez la section [Connexion aux points de terminaison Amazon Neptune](feature-overview-endpoints.md) pour découvrir comment trouver le nom d'hôte de votre instance de base de données Neptune.

   Le paramètre de région doit correspondre à la région du cluster et au compartiment S3.

Amazon Neptune est disponible dans les régions suivantes : AWS 
   + USA Est (Virginie du Nord) : `us-east-1`
   + USA Est (Ohio) : `us-east-2`
   + USA Ouest (Californie du Nord) : `us-west-1`
   + USA Ouest (Oregon) : `us-west-2`
   + Canada (Centre) : `ca-central-1`
   + Canada-Ouest (Calgary) : `ca-west-1`
   + Amérique du Sud (São Paulo) : `sa-east-1`
   + Europe (Stockholm) : `eu-north-1`
   + Europe (Espagne) : `eu-south-2`
   + Europe (Irlande) : `eu-west-1`
   + Europe (Londres) : `eu-west-2`
   + Europe (Paris) : `eu-west-3`
   + Europe (Francfort) : `eu-central-1`
   + Moyen-Orient (Bahreïn) : `me-south-1`
   + Moyen-Orient (EAU) : `me-central-1`
   + Israël (Tel Aviv) : `il-central-1`
   + Afrique (Le Cap) : `af-south-1`
   + Asie-Pacifique (Hong Kong) : `ap-east-1`
   + Asie-Pacifique (Tokyo) : `ap-northeast-1`
   + Asie-Pacifique (Séoul) : `ap-northeast-2`
   + Asie-Pacifique (Osaka) : `ap-northeast-3`
   + Asie-Pacifique (Singapour) : `ap-southeast-1`
   + Asie-Pacifique (Sydney) : `ap-southeast-2`
   + Asie-Pacifique (Jakarta) : `ap-southeast-3`
   + Asie-Pacifique (Melbourne) : `ap-southeast-4`
   + Asie-Pacifique (Malaisie) : `ap-southeast-5`
   + Asie-Pacifique (Mumbai) : `ap-south-1`
   + Asie-Pacifique (Hyderabad) : `ap-south-2`
   + Chine (Beijing) : `cn-north-1`
   + Chine (Ningxia) : `cn-northwest-1`
   + AWS GovCloud (USA Ouest) : `us-gov-west-1`
   + AWS GovCloud (USA Est) : `us-gov-east-1`

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

   ```
   aws neptunedata start-loader-job \
     --endpoint-url https://your-neptune-endpoint:port \
     --source "s3://bucket-name/object-key-name" \
     --format "format" \
     --iam-role-arn "arn:aws:iam::account-id:role/role-name" \
     --s3-bucket-region "region" \
     --no-fail-on-error \
     --parallelism "MEDIUM" \
     --no-update-single-cardinality-properties \
     --queue-request \
     --dependencies "load_A_id" "load_B_id"
   ```

   Pour plus d'informations, consultez [start-loader-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-loader-job.html)le manuel de référence des AWS CLI commandes.

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

   ```
   import boto3
   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.start_loader_job(
       source='s3://bucket-name/object-key-name',
       format='format',
       iamRoleArn='arn:aws:iam::account-id:role/role-name',
       s3BucketRegion='region',
       failOnError=False,
       parallelism='MEDIUM',
       updateSingleCardinalityProperties=False,
       queueRequest=True,
       dependencies=['load_A_id', 'load_B_id']
   )
   
   print(response)
   ```

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

   ```
   awscurl https://your-neptune-endpoint:port/loader \
     --region us-east-1 \
     --service neptune-db \
     -X POST \
     -H 'Content-Type: application/json' \
     -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"]
         }'
   ```

**Note**  
Cet exemple suppose que vos AWS informations d'identification sont configurées dans votre environnement. Remplacez *us-east-1* par la région de votre cluster Neptune.

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

   ```
   curl -X POST https://your-neptune-endpoint:port/loader \
     -H 'Content-Type: application/json' \
     -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"]
         }'
   ```

------

   Pour plus d'informations sur la création et l'association d'un rôle IAM à un cluster Neptune, consultez [Prérequis : rôle IAM et accès à Amazon S3](bulk-load-tutorial-IAM.md).
**Note**  
Pour de plus amples informations sur les paramètres de demande de chargement, veuillez consulter [Paramètres de demande du chargeur Neptune](load-api-reference-load.md#load-api-reference-load-parameters). En bref :  
Le paramètre `source` accepte un URI Amazon S3 qui pointe vers un seul fichier ou vers un dossier. Si vous spécifiez un dossier, Neptune y charge chaque fichier de données.  
Le dossier peut contenir plusieurs fichiers de sommet et plusieurs fichiers d'arc.  
L'URI peut être à l'un des formats suivants.  
`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`
Ce paramètre `format` peut être l'un des suivants :  
Format CSV Gremlin (`csv`) pour les graphes de propriétés Gremlin
Format CSV openCypher (`opencypher`) pour les graphes de propriétés openCypher
Format N -Triples (`ntriples`) pour RDF/SPARQL
Format N-Quads (`nquads`) pour RDF/SPARQL
Format RDF/XML (`rdfxml`) pour RDF/SPARQL
Format Turtle (`turtle`) pour RDF/SPARQL
Le paramètre facultatif `parallelism` vous permet de limiter le nombre de threads utilisés dans le processus de chargement en bloc. Il peut être défini sur `LOW`, `MEDIUM`, `HIGH` ou `OVERSUBSCRIBE`.  
Lorsque la valeur `updateSingleCardinalityProperties` est définie sur `"FALSE"`, le chargeur renvoie une erreur si plusieurs valeurs sont fournies dans un fichier source en cours de chargement pour une propriété de sommet d'une arête ou d'une seule cardinalité.  
Si `queueRequest` est défini sur `"TRUE"`, la demande de chargement est placée dans une file d'attente lorsqu'une tâche de chargement est déjà en cours d'exécution.  
Avec le paramètre `dependencies`, l'exécution de la demande de chargement dépend de la réussite d'une ou de plusieurs tâches de chargement qui ont déjà été placées dans la file d'attente.

1. Le chargeur Neptune renvoie un `id` de tâche qui vous permet de vérifier le statut ou d'annuler le processus de chargement, par exemple :

   ```
   {
       "status" : "200 OK",
       "payload" : {
           "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5"
       }
   }
   ```

1. Saisissez la commande suivante pour obtenir le statut du chargement avec le paramètre `loadId` de l'**étape 3** :

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

   ```
   aws neptunedata get-loader-job-status \
     --endpoint-url https://your-neptune-endpoint:port \
     --load-id ef478d76-d9da-4d94-8ff1-08d9d4863aa5
   ```

   Pour plus d'informations, consultez [get-loader-job-status](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/get-loader-job-status.html)le manuel de référence des AWS CLI commandes.

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

   ```
   import boto3
   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.get_loader_job_status(
       loadId='ef478d76-d9da-4d94-8ff1-08d9d4863aa5'
   )
   
   print(response)
   ```

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

   ```
   awscurl 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5' \
     --region us-east-1 \
     --service neptune-db
   ```

**Note**  
Cet exemple suppose que vos AWS informations d'identification sont configurées dans votre environnement. Remplacez *us-east-1* par la région de votre cluster Neptune.

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

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

------

   Si le statut du chargement signale une erreur, vous pouvez demander un statut plus détaillé et une liste des erreurs. Pour plus d’informations et d’exemples, consultez [API Neptune Loader Get-Status](load-api-reference-status.md).

1. (Facultatif) Annulez la tâche `Load`.

   Saisissez la commande suivante pour supprimer (`Delete`) la tâche de chargement (loader) avec l'`id` de tâche de l'**étape 3** :

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

   ```
   aws neptunedata cancel-loader-job \
     --endpoint-url https://your-neptune-endpoint:port \
     --load-id ef478d76-d9da-4d94-8ff1-08d9d4863aa5
   ```

   Pour plus d'informations, consultez [cancel-loader-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/cancel-loader-job.html)le manuel de référence des AWS CLI commandes.

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

   ```
   import boto3
   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.cancel_loader_job(
       loadId='ef478d76-d9da-4d94-8ff1-08d9d4863aa5'
   )
   
   print(response)
   ```

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

   ```
   awscurl 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5' \
     --region us-east-1 \
     --service neptune-db \
     -X DELETE
   ```

**Note**  
Cet exemple suppose que vos AWS informations d'identification sont configurées dans votre environnement. Remplacez *us-east-1* par la région de votre cluster Neptune.

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

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

------

   La commande `DELETE` renvoie le code HTTP `200 OK` lorsque l'annulation a réussi.

   Les données des fichiers de la tâche de chargement qui ont fini de se charger ne sont pas annulées. Les données restent dans l'instance de base de données Neptune.