

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.

# Exportation des résultats de requêtes Gremlin vers Amazon S3
<a name="exporting-gremlin"></a>

 À partir de la version 1.4.3.0 du moteur, Amazon Neptune prend en charge l'exportation des résultats des requêtes Gremlin directement vers Amazon S3. Cette fonctionnalité vous permet de gérer efficacement les résultats de requêtes volumineux en les exportant vers un compartiment Amazon S3 au lieu de les renvoyer sous forme de réponse à une requête. 

 Pour exporter les résultats d'une requête vers Amazon S3, utilisez l'`call()`étape portant le nom du `neptune.query.exportToS3` service comme dernière étape de votre requête Gremlin. L'étape du terminal dans [les pilotes Tinkerpop utilisant le Bytecode](https://tinkerpop.apache.org/docs/current/reference/#terminal-steps) peut être ajoutée après l'étape. `call()` Les paramètres d'exportation doivent être fournis sous forme de chaînes de caractères. 

**Note**  
 La requête comportant l'`call()`étape `neptune.query.exportToS3` échouera si elle n'est pas utilisée comme étape finale. Les clients Gremlin utilisant le bytecode peuvent utiliser les étapes du terminal. Pour plus d'informations, consultez [les meilleures pratiques relatives à Gremlin](https://docs.aws.amazon.com//neptune/latest/userguide/best-practices-gremlin-java-bytecode.html) dans la documentation Amazon Neptune. 

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

**Parameters**
+  `destination`: obligatoire - L'URI Amazon S3 dans lequel les résultats seront écrits. 
+  `format`: obligatoire - Le format de sortie ne prend actuellement en charge que « [Graph SONv3](https://tinkerpop.apache.org/docs/3.7.3/dev/io/#graphson-3d0) ». 
+  `keyArn`: facultatif - L'ARN d'une AWS KMS clé pour le chiffrement [côté serveur](https://docs.aws.amazon.com//AmazonS3/latest/userguide/serv-side-encryption.html) Amazon S3. 

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

 **Exemple de requête** 

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

 **Exemple de réponse à une requête** 

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

## Conditions préalables
<a name="exporting-gremlin-prerequisites"></a>
+  Votre instance de base de données Neptune doit avoir accès à Amazon S3 via un point de terminaison VPC de type passerelle. 
+  Pour utiliser un AWS KMS chiffrement personnalisé dans la requête, un point de terminaison VPC de type interface est requis AWS KMS pour permettre à Neptune de communiquer avec. AWS KMS 
+  Vous devez activer l'authentification IAM sur Neptune et disposer des autorisations IAM appropriées pour écrire dans le compartiment Amazon S3 cible. Le fait de ne pas le faire provoquera une erreur de 400 demandes erronées « Le cluster doit avoir l'authentification IAM activée pour S3 Export ». 
+  Le compartiment Amazon S3 cible : 
  +  Le compartiment Amazon S3 cible ne doit pas être public. `Block public access`doit être activé. 
  +  La destination Amazon S3 cible doit être vide. 
  +  Le compartiment Amazon S3 cible doit être doté d'une règle de cycle de vie `Delete expired object delete markers or incomplete multipart uploads` activée`Delete incomplete multipart uploads`. Consultez la [mise à jour sur la gestion du cycle de vie d'Amazon S3 : prise en charge des téléchargements partitionnés et des marqueurs de suppression](https://aws.amazon.com/blogs/aws/s3-lifecycle-management-update-support-for-multipart-uploads-and-delete-markers/) pour plus d'informations.   
![\[Image illustrant les actions des règles du cycle de vie.\]](http://docs.aws.amazon.com/fr_fr/neptune/latest/userguide/images/lifecycleRuleActions.png)
  +  Le compartiment Amazon S3 cible doit être doté d'une règle de cycle de vie `Delete incomplete multipart uploads` définie sur `Delete expired object delete markers or incomplete multipart uploads` une valeur supérieure à celle que prendra l'évaluation de la requête (par exemple, 7 jours). Cela est nécessaire pour supprimer les téléchargements incomplets (qui ne sont pas directement visibles mais qui entraîneraient des coûts) au cas où Neptune ne pourrait pas les terminer ou les annuler (par exemple, en raison d'échecs). instance/engine Consultez la [mise à jour sur la gestion du cycle de vie d'Amazon S3 : prise en charge des téléchargements partitionnés et des marqueurs de suppression](https://aws.amazon.com/blogs/aws/s3-lifecycle-management-update-support-for-multipart-uploads-and-delete-markers/) pour plus d'informations.   
![\[Image illustrant les actions des règles du cycle de vie et les marqueurs de suppression des objets expirés.\]](http://docs.aws.amazon.com/fr_fr/neptune/latest/userguide/images/lifecycleRuleActionsDelete.png)

**Considérations importantes**
+  L'étape d'exportation doit être la dernière étape de votre requête Gremlin. 
+  Si un objet existe déjà à l'emplacement Amazon S3 spécifié, la requête échouera. 
+  La durée maximale d'exécution des requêtes d'exportation est limitée à 11 heures et 50 minutes. Cette fonctionnalité utilise des [sessions d'accès direct](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_forward_access_sessions.html). Il est actuellement limité à 11 heures et 50 minutes afin d'éviter les problèmes d'expiration des jetons. 
**Note**  
 La requête d'exportation respecte toujours le délai d'expiration de la requête. Pour les exportations volumineuses, vous devez utiliser un délai d'attente de requête approprié. 
+  Tous les nouveaux téléchargements d'objets vers Amazon S3 sont automatiquement chiffrés. 
+  Pour éviter les coûts de stockage liés à des chargements partitionnés incomplets en cas d'erreur ou de panne, nous vous recommandons de configurer une règle de cycle de vie pour votre `Delete incomplete multipart uploads` compartiment Amazon S3. 

## Format de la réponse
<a name="exporting-gremlin-response"></a>

 Plutôt que de renvoyer directement les résultats de la requête, celle-ci renvoie des métadonnées relatives à l'opération d'exportation, notamment le statut et les détails de l'exportation. Les résultats de la requête dans Amazon S3 seront au SONv3 format [graphique](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"
            ]
          }
        ]
      },
      
      
      ...
      
      
    ]
  }
}
```

**Sécurité**
+  Toutes les données transférées vers Amazon S3 sont cryptées en transit à l'aide du protocole SSL. 
+  Vous pouvez spécifier une AWS KMS clé pour le chiffrement côté serveur des données exportées. Amazon S3 chiffre les nouvelles données par défaut. Si le bucket est configuré pour utiliser une AWS KMS clé spécifique, c'est cette clé qui est utilisée. 
+  Neptune vérifie que le compartiment cible n'est pas public avant de commencer l'exportation. 
+  Les exportations entre comptes et entre régions ne sont pas prises en charge. 

**Gestion des erreurs**
+  Le compartiment Amazon S3 cible est public. 
+  L'objet spécifié existe déjà. 
+  Vous ne disposez pas des autorisations suffisantes pour écrire dans le compartiment Amazon S3. 
+  L'exécution de la requête dépasse la limite de temps maximale. 

**Bonnes pratiques**
+  Utilisez les règles du cycle de vie des compartiments Amazon S3 pour nettoyer les téléchargements partitionnés incomplets. 
+  Surveillez vos opérations d'exportation à l'aide des journaux et des indicateurs de Neptune. Vous pouvez vérifier le point de [terminaison d'état de Gremlin](https://docs.aws.amazon.com//neptune/latest/userguide/gremlin-api-status.html) pour voir si une requête est en cours d'exécution. Tant que le client n'a pas reçu de réponse, la requête sera considérée comme étant en cours d'exécution. 

# Octroi de l'accès à la fonctionnalité d'exportation Amazon S3 de Gremlin
<a name="granting-access-gremlin"></a>

 **Politiques IAM requises** 

1.  **Accès en lecture aux requêtes Neptune** 

   ```
   {
     "Sid": "NeptuneQueryRead",
     "Effect": "Allow",
     "Action": ["neptune-db:Read*"],
     "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-ABCD12/*"
   }
   ```

    **Pourquoi c'est nécessaire :** cette autorisation permet de lire les données des bases de données Neptune, ce qui est nécessaire pour exécuter les requêtes Gremlin qui seront exportées. L'exemple précédent autorise les requêtes de lecture. Pour une read/write requête, write/delete des autorisations sont requises. 

1.  **Autorisations d'exportation Amazon S3** 

   ```
   {
     "Sid": "NeptuneS3Export",
     "Effect": "Allow",
     "Action": [
       "s3:ListBucket",
       "s3:PutObject",
       "s3:AbortMultipartUpload",
       "s3:GetBucketPublicAccessBlock"
     ],
     "Resource": "arn:aws:s3:::neptune-export-bucket/*"
   }
   ```

    **Pourquoi chaque autorisation est nécessaire :** 
   +  `s3:ListBucket`: obligatoire pour vérifier l'existence du bucket et le contenu de la liste. 
   +  `s3:PutObject`: Nécessaire pour écrire les données exportées sur Amazon S3. 
   +  `s3:AbortMultipartUpload`: Nécessaire pour nettoyer les téléchargements partitionnés incomplets en cas d'échec de l'exportation. 
   +  `s3:GetBucketPublicAccessBlock`: Nécessaire comme mesure de sécurité pour vérifier que le bucket n'est pas public avant d'exporter des données. 

1.  **AWS KMSautorisations - facultatives**. Nécessaire uniquement si vous utilisez un AWS KMS chiffrement personnalisé. 

   ```
   {
     "Sid": "NeptuneS3ExportKMS",
     "Effect": "Allow",
     "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKey",
       "kms:DescribeKey"
     ],
     "Resource": "arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/mrk-48971c37"
       "Condition": {
       "StringEquals": {
         "kms:ViaService": [
           "s3.<REGION>.amazonaws.com",
           "rds.<REGION>.amazonaws.com"
         ]
       }
     }
   }
   ```

    **Pourquoi chaque autorisation est nécessaire :** 
   +  `kms:Decrypt`: Nécessaire pour déchiffrer la AWS KMS clé pour le chiffrement des données. 
   +  `kms:GenerateDataKey`: Nécessaire pour générer des clés de données afin de chiffrer les données exportées. 
   +  `kms:DescribeKey`: Nécessaire pour vérifier et récupérer les informations relatives à la AWS KMS clé. 
   +  `kms:ViaService`: augmente la sécurité en faisant en sorte que la clé ne soit pas utilisable par ce rôle pour aucun autre AWS service. 

**Conditions préalables importantes**
+  **Authentification IAM :** doit être activée sur le cluster Neptune pour appliquer ces autorisations. 
+  **Point de terminaison VPC :** 
  +  Un point de terminaison VPC de type Gateway pour Amazon S3 est nécessaire pour permettre à Neptune de communiquer avec Amazon S3. 
  +  Pour utiliser un AWS KMS chiffrement personnalisé dans la requête, un point de terminaison VPC de type interface est requis AWS KMS pour permettre à Neptune de communiquer avec. AWS KMS 
+  **Configuration du compartiment Amazon S3 :** 
  +  Ne doit pas être public. 
  +  Devrait avoir une règle de cycle de vie pour nettoyer les téléchargements partitionnés incomplets. 
  +  Chiffrera automatiquement les nouveaux objets. 

 Ces autorisations et conditions préalables garantissent une exportation sûre et fiable des résultats des requêtes Gremlin tout en maintenant des contrôles d'accès et des mesures de protection des données appropriés. 