

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.

# Commande de chargeur Neptune
<a name="load-api-reference-load"></a>

Charge les données d'un compartiment Amazon S3 dans une instance de base de données Neptune.

Pour charger des données, vous devez envoyer une demande `POST` HTTP au point de terminaison `https://your-neptune-endpoint:port/loader`. Les paramètres de la demande `loader` peuvent être envoyés dans le corps `POST` ou en tant que paramètres encodés en URL.

**Important**  
Le type MIME doit être `application/json`.

Le compartiment Amazon S3 doit se trouver dans la même AWS région que le cluster.

**Note**  
Vous pouvez charger des données chiffrées à partir d'Amazon S3 si elles ont été chiffrées avec le mode `SSE-S3` d'Amazon S3. Dans ce cas, Neptune peut emprunter vos informations d'identification et émettre des appels `s3:getObject` en votre nom.  
Vous pouvez également charger les données chiffrées à l'aide du mode `SSE-KMS` à partir d'Amazon S3, à condition que votre rôle IAM implique les autorisations nécessaires pour accéder à AWS KMS. Sans AWS KMS autorisations appropriées, l'opération de chargement en bloc échoue et renvoie une `LOAD_FAILED` réponse.  
Neptune ne permet actuellement pas le chargement des données chiffrées Amazon S3 avec le mode `SSE-C`.

Il n'est pas nécessaire d'attendre la fin d'une tâche de chargement avant d'en commencer une autre. Neptune peut mettre en file d'attente jusqu'à 64 demandes de tâche à la fois, si leurs paramètres `queueRequest` sont définis sur `"TRUE"`. L'ordre de file d'attente des tâches sera first-in-first-out (FIFO). En revanche, si vous ne voulez pas qu'une tâche de chargement soit mise en file d'attente, vous pouvez définir son paramètre `queueRequest` sur `"FALSE"` (valeur par défaut), de sorte que la tâche de chargement échoue si une autre est déjà en cours.

Vous pouvez utiliser le paramètre `dependencies` pour mettre en file d'attente une tâche qui doit être exécutée uniquement une fois que les tâches précédentes spécifiées dans la file d'attente se sont achevées correctement. Si vous faites cela et que l'une des tâches spécifiées échoue, votre tâche ne sera pas exécutée et son statut sera défini sur `LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED`.

## Syntaxe des demandes du chargeur Neptune
<a name="load-api-reference-load-syntax"></a>

```
{
  "source" : "string",
  "format" : "string",
  "iamRoleArn" : "string",
  "mode": "NEW|RESUME|AUTO",
  "region" : "us-east-1",
  "failOnError" : "string",
  "parallelism" : "string",
  "parserConfiguration" : {
    "baseUri" : "http://base-uri-string",
    "namedGraphUri" : "http://named-graph-string"
  },
  "updateSingleCardinalityProperties" : "string",
  "queueRequest" : "TRUE",
  "dependencies" : ["load_A_id", "load_B_id"]
}
```

**edgeOnlyLoad Syntaxe**  
 Pour an`edgeOnlyLoad`, la syntaxe serait la suivante : 

```
{
"source" : "string",
"format" : "string",
"iamRoleArn" : "string",
"mode": "NEW|RESUME|AUTO",
"region" : "us-east-1",
"failOnError" : "string",
"parallelism" : "string",
"edgeOnlyLoad" : "string",
"parserConfiguration" : {
    "baseUri" : "http://base-uri-string",
    "namedGraphUri" : "http://named-graph-string"
},
"updateSingleCardinalityProperties" : "string",
"queueRequest" : "TRUE",
"dependencies" : ["load_A_id", "load_B_id"]
}
```

## Paramètres de demande du chargeur Neptune
<a name="load-api-reference-load-parameters"></a>
+ **`source`** : URI Amazon S3.

  Le paramètre `SOURCE` accepte un URI Amazon S3 qui identifie un seul fichier, plusieurs fichiers, un dossier ou plusieurs dossiers. Neptune charge tous les fichiers de données dans n'importe quel dossier spécifié.

  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`

  L'`object-key-name`élément de l'URI est équivalent au paramètre de [préfixe](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html#API_ListObjects_RequestParameters) dans un appel d'[ListObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)API Amazon S3. Il identifie tous les objets du compartiment Amazon S3 spécifié dont le nom commence par ce préfixe. Il peut s'agir d'un seul fichier ou dossier, ou de plusieurs and/or dossiers de fichiers.

  Le dossier spécifié peut contenir plusieurs fichiers de sommet et plusieurs fichiers d'arête.

   Par exemple, si vous aviez la structure de dossiers et les fichiers suivants dans un compartiment Amazon S3 nommé `bucket-name` : 

  ```
  s3://bucket-name/a/bc
  s3://bucket-name/ab/c
  s3://bucket-name/ade
  s3://bucket-name/bcd
  ```

   Si le paramètre source est spécifié comme`s3://bucket-name/a`, les trois premiers fichiers seront chargés. 

  ```
  s3://bucket-name/a/bc
  s3://bucket-name/ab/c
  s3://bucket-name/ade
  ```
+ **`format`** : format des données. Pour plus d'informations sur les formats de données pour la commande `Loader` Neptune, consultez [Utilisation du chargeur en vrac Amazon Neptune pour ingérer des données](bulk-load.md).

**Valeurs autorisées**
  + **`csv`** pour le [format de données CSV Gremlin](bulk-load-tutorial-format-gremlin.md).
  + **`opencypher`** pour le [format de données CSV openCypher](bulk-load-tutorial-format-opencypher.md).
  + **`ntriples`** pour le [format de données N-Triples RDF](https://www.w3.org/TR/n-triples/).
  + **`nquads`** pour le [format de données N-Quads RDF](https://www.w3.org/TR/n-quads/).
  + **`rdfxml`** pour le [format de données RDF RDF/XML](https://www.w3.org/TR/rdf-syntax-grammar/).
  + **`turtle`** pour le [format de données RDF Turtle](https://www.w3.org/TR/turtle/).
+ **`iamRoleArn`** : Amazon Resource Name (ARN) d'un rôle IAM qui doit être endossé par l'instance de base de données Neptune pour accéder au compartiment S3. 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).

  À partir de la [version 1.2.1.0.R3 du moteur](engine-releases-1.2.1.0.R3.md), vous pouvez également enchaîner plusieurs rôles IAM si l'instance de base de données Neptune et le compartiment Amazon S3 se trouvent dans des comptes différents. AWS Dans ce cas, `iamRoleArn` contient une liste de rôles séparés par des virgules ARNs, comme décrit dans. [Chaînage des rôles IAM dans Amazon Neptune](bulk-load-tutorial-chain-roles.md) Par exemple :

  ```
  curl -X POST https://localhost:8182/loader \
    -H 'Content-Type: application/json' \
    -d '{
          "source" : "s3://(the target bucket name)/(the target date file name)",
          "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)",
          "format" : "csv",
          "region" : "us-east-1"
        }'
  ```
+ **`region`**— Le `region` paramètre doit correspondre à la AWS région du cluster et au compartiment S3.

  Amazon Neptune est disponible dans les régions suivantes :
  + 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 (US-Ouest) : `us-gov-west-1`
  + AWS GovCloud (USA Est) : `us-gov-east-1`
+ **`mode`** : mode de la tâche de chargement.

  *Valeurs autorisées* : `RESUME`, `NEW`, `AUTO`

  *Valeur par défaut* : `AUTO`

****
  + `RESUME` : en mode REPRISE, le chargeur recherche un chargement précédent à partir de cette source et, s'il en trouve un, reprend cette tâche de chargement. Si aucune tâche de chargement précédente n'est trouvée, le chargeur s'arrête.

    Le chargeur évite de recharger les fichiers qui ont été chargés avec succès lors d'une tâche précédente. Il essaie uniquement de traiter les fichiers ayant échoué. Si vous aviez supprimé des données précédemment chargées à partir de votre cluster Neptune, ces données ne sont pas rechargées dans ce mode. Si une tâche de chargement précédente a chargé tous les fichiers de la même source avec succès, rien n'est rechargé, et le chargeur renvoie une réussite.
  + `NEW` : le mode NOUVEAU crée une autre demande de chargement sans tenir compte des chargements précédents. Vous pouvez utiliser ce mode pour recharger toutes les données d'une source après la suppression de données précédemment chargées à partir de votre cluster Neptune ou pour charger de nouvelles données disponibles sur la même source.
  + `AUTO` : en mode AUTO, le chargeur recherche une tâche de chargement précédente à partir de la même source, et s'il en trouve une, reprend cette tâche, exactement comme en mode `RESUME`.

    Si le chargeur ne trouve pas de tâche de chargement précédente à partir de la même source, il charge toutes les données de la source, exactement comme en mode `NEW`.
+  **`edgeOnlyLoad`**— Un drapeau qui contrôle l'ordre de traitement des fichiers lors du chargement en masse. 

  *Valeurs autorisées* : `"TRUE"`, `"FALSE"`.

  *Valeur par défaut* : `"FALSE"`.

   Lorsque ce paramètre est défini sur « FALSE », le chargeur charge automatiquement les fichiers de sommets en premier, puis les fichiers de bords. Pour ce faire, il analyse d'abord tous les fichiers pour déterminer leur contenu (sommets ou arêtes). Lorsque ce paramètre est défini sur « TRUE », le chargeur ignore la phase de numérisation initiale et charge immédiatement tous les fichiers dans l'ordre dans lequel ils apparaissent. Pour plus d'informations, voir [Optimisation du chargement en vrac](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-optimize.html). 
+ **`failOnError`** : indicateur permettant d'activer un arrêt complet au niveau d'une erreur.

  *Valeurs autorisées* : `"TRUE"`, `"FALSE"`.

  *Valeur par défaut* : `"TRUE"`.

  Lorsque ce paramètre est défini sur `"FALSE"`, le chargeur essaie de charger toutes les données à l'emplacement spécifié, en ignorant les entrées contenant des erreurs.

  Lorsque ce paramètre est défini sur `"TRUE"`, le chargeur s'arrête dès qu'il rencontre une erreur. Les données chargées jusqu'à ce point persistent.
+ **`parallelism`** : paramètre facultatif qui peut être défini de façon à réduire le nombre de threads utilisés par le processus de chargement en bloc.

  *Valeurs autorisées* :
  + `LOW`— Le nombre de threads utilisés est le nombre de v disponibles CPUs divisé par 8.
  + `MEDIUM`— Le nombre de threads utilisés est le nombre de v disponibles CPUs divisé par 2.
  + `HIGH`— Le nombre de threads utilisés est identique au nombre de v disponiblesCPUs.
  + `OVERSUBSCRIBE`— Le nombre de threads utilisés est le nombre de v disponibles CPUs multiplié par 2. Si cette valeur est utilisée, le chargeur en bloc accepte toutes les ressources disponibles.

    Cela ne signifie toutefois pas que le paramètre `OVERSUBSCRIBE` entraîne une utilisation du CPU à 100 %. L'opération de chargement étant limitée, I/O l'utilisation maximale du processeur à laquelle on peut s'attendre se situe entre 60 % et 70 %.

  *Valeur par défaut* : `HIGH`

  Le paramètre `parallelism` peut parfois entraîner un blocage entre les threads lors du chargement des données openCypher. Lorsque cela se produit, Neptune renvoie le message d'erreur `LOAD_DATA_DEADLOCK`. Vous pouvez généralement résoudre le problème en définissant un paramètre `parallelism` inférieur et en soumettant la commande de chargement à une nouvelle tentative.
+ **`parserConfiguration`** : objet facultatif avec des valeurs de configuration d'analyseur supplémentaires. Chacun des paramètres enfants est également facultatif :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/neptune/latest/userguide/load-api-reference-load.html)

  Pour de plus amples informations, veuillez consulter [Graphe par défaut SPARQL et graphes nommés](feature-sparql-compliance.md#sparql-default-graph).
+ **`updateSingleCardinalityProperties`** : paramètre facultatif qui contrôle la façon dont le chargeur en bloc traite une nouvelle valeur pour les propriétés de sommet ou d'arête à cardinalité unique. Il n'est pas pris en charge pour le chargement de données openCypher (voir [Chargement de données openCypher](#load-api-reference-load-parameters-opencypher)).

  *Valeurs autorisées* : `"TRUE"`, `"FALSE"`.

  *Valeur par défaut* : `"FALSE"`.

  Par défaut, ou lorsque `updateSingleCardinalityProperties` est explicitement défini sur `"FALSE"`, le chargeur traite une nouvelle valeur comme une erreur, car elle ne respecte pas la cardinalité unique.

  En revanche, lorsque `updateSingleCardinalityProperties` est défini sur `"TRUE"`, le chargeur en bloc remplace la valeur existante par la nouvelle. Si plusieurs valeurs de propriété de sommet à cardinalité unique ou d'arête sont fournies dans le ou les fichiers source en cours de chargement, la valeur finale à l'issue du chargement en bloc peut être une de ces nouvelles valeurs. Le chargeur garantit uniquement que la valeur existante a été remplacée par une des nouvelles.
+ **`queueRequest`** : paramètre d'indicateur facultatif qui indique si la demande de chargement peut être mise en file d'attente ou non. 

  Vous n'avez pas besoin d'attendre qu'une tâche de chargement soit terminée avant d'émettre la suivante, car Neptune peut mettre en file d'attente jusqu'à 64 tâches à la fois, si leurs paramètres `queueRequest` sont tous définis sur `"TRUE"`. L'ordre de file d'attente des tâches sera first-in-first-out (FIFO). 

  Si le paramètre `queueRequest` est omis ou défini sur `"FALSE"`, la demande de chargement échouera si une autre tâche de chargement est déjà en cours d'exécution.

  *Valeurs autorisées* : `"TRUE"`, `"FALSE"`.

  *Valeur par défaut* : `"FALSE"`.
+ **`dependencies`** : paramètre facultatif qui peut subordonner une demande de chargement en file d'attente à la réussite d'une ou de plusieurs tâches précédentes dans la file d'attente.

  Neptune peut mettre en file d'attente jusqu'à 64 requêtes de chargement à la fois, si leurs paramètres `queueRequest` sont définis sur `"TRUE"`. Le paramètre `dependencies` vous permet de rendre l'exécution d'une telle requête en file d'attente dépendante de la réussite d'une ou de plusieurs requêtes précédentes spécifiées dans la file d'attente.

  Par exemple, si les charges `Job-A` et `Job-B` sont indépendantes l'une de l'autre, mais que la charge `Job-C` a besoin que `Job-A` et `Job-B` soient terminées avant de commencer, procédez comme suit :

  1. Soumettez `load-job-A` et `load-job-B` l'une après l'autre dans n'importe quel ordre, et enregistrez leurs ID de chargement.

  1. Soumettez `load-job-C` avec les ID de chargement des deux tâches dans son domaine `dependencies` :

  ```
    "dependencies" : ["job_A_load_id", "job_B_load_id"]
  ```

  En raison du paramètre `dependencies`, le chargeur en bloc ne démarrera pas `Job-C` avant que `Job-A` et `Job-B` soient terminées avec succès. Si l'une des d'eux échoue, Job-C ne sera pas exécuté et son statut sera défini sur `LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED`.

  Vous pouvez configurer plusieurs niveaux de dépendance de cette façon, de sorte que l'échec d'une tâche entraîne l'annulation de toutes les demandes qui en dépendent directement ou indirectement.
+ **`userProvidedEdgeIds`**— Ce paramètre est obligatoire uniquement lors du chargement de données OpenCypher contenant une relation. IDs Il doit être inclus et défini `True` lorsque les relations OpenCypher IDs sont explicitement fournies dans les données de chargement (recommandé).

  Quand `userProvidedEdgeIds` est absent ou défini sur `True`, une colonne `:ID` doit être présente dans chaque fichier de relations inclus dans le chargement.

  Quand `userProvidedEdgeIds` est présent et défini sur `False`, les fichiers de relations inclus dans le chargement **ne doivent pas** contenir de colonne `:ID`. Au lieu de cela, le chargeur Neptune génère automatiquement un ID pour chaque relation.

  Il est utile de fournir une relation de IDs manière explicite afin que le chargeur puisse reprendre le chargement après correction d'une erreur dans les données CSV, sans avoir à recharger les relations déjà chargées. Si aucune relation IDs n'a été explicitement attribuée, le chargeur ne peut pas reprendre un chargement défaillant si un fichier de relations a dû être corrigé, et doit à la place recharger toutes les relations.
+ `accessKey` : **[obsolète]** ID de clé d'accès d'un rôle IAM avec un accès au compartiment S3 et aux fichiers de données.

  Le paramètre `iamRoleArn` est recommandé à la place. 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).

  Pour plus d'informations, consultez [Clés d'accès (ID de clé d'accès et clé d'accès secrète)](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).
+ `secretKey` : **[obsolète]** le paramètre `iamRoleArn` est recommandé à la place. 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).

  Pour plus d'informations, consultez [Clés d'accès (ID de clé d'accès et clé d'accès secrète)](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).

### Considérations spéciales relatives au chargement de données openCypher
<a name="load-api-reference-load-parameters-opencypher"></a>
+ Lorsque vous chargez des données openCypher au format CSV, le paramètre de format doit être défini sur `opencypher`.
+ Le paramètre `updateSingleCardinalityProperties` n'est pas pris en charge pour les chargements openCypher, car toutes les propriétés openCypher ont une cardinalité unique. Le format de chargement openCypher ne prend pas en charge les tableaux, et si une valeur d'ID apparaît plusieurs fois, elle est traitée comme un doublon ou comme une erreur d'insertion (voir ci-dessous).
+ Le chargeur Neptune gère les doublons qu'il trouve dans les données openCypher de la manière suivante :
  + Si le chargeur identifie plusieurs lignes avec le même ID de nœud, elles sont fusionnées selon la règle suivante :
    + Toutes les étiquettes des lignes sont ajoutées au nœud.
    + Pour chaque propriété, une seule des valeurs de propriété est chargée. Le choix de celle à charger n'est pas déterministe.
  + Si le chargeur identifie plusieurs lignes avec le même ID de relation, une seule d'entre elles est chargée. Le choix de celle à charger n'est pas déterministe.
  + Le chargeur ne met jamais à jour les valeurs des propriétés d'un nœud ou d'une relation dans la base de données s'il trouve des données de chargement avec l'ID de ce nœud ou de cette relation. Cependant, il charge les étiquettes et les propriétés des nœuds qui ne se trouvent pas dans le nœud ou la relation existants. 
+ Bien que vous n'ayez pas à assigner IDs aux relations, c'est généralement une bonne idée (voir le `userProvidedEdgeIds` paramètre ci-dessus). En l'absence de relation explicite IDs, le chargeur doit recharger toutes les relations en cas d'erreur dans un fichier de relations, plutôt que de reprendre le chargement là où il a échoué.

  De plus, si les données de chargement ne contiennent pas de relation explicite IDs, le chargeur n'a aucun moyen de détecter les relations dupliquées.

Voici un exemple de commande de chargement openCypher :

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

La réponse du chargeur est la même que d'habitude. Par exemple :

```
{
  "status" : "200 OK",
  "payload" : {
    "loadId" : "guid_as_string"
  }
}
```

## Syntaxe de la réponse du chargeur Neptune
<a name="load-api-reference-load-return"></a>

```
{
    "status" : "200 OK",
    "payload" : {
        "loadId" : "guid_as_string"
    }
}
```

**200 OK**  
Une tâche de chargement démarrée avec succès renvoie un code `200`.