Vider un cluster de bases de données Amazon Neptune à l'aide de l'API de réinitialisation rapide - Amazon Neptune

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.

Vider un cluster de bases de données Amazon Neptune à l'aide de l'API de réinitialisation rapide

L'API REST de réinitialisation rapide Neptune vous permet de réinitialiser un graphe Neptune rapidement et facilement en supprimant toutes ses données.

Pour ce faire, utilisez la magie linéaire %db_reset dans un bloc-notes Neptune.

Note

Cette fonctionnalité est disponible à partir de la version 1.0.4.0 du moteur Neptune.

  • Dans la plupart des cas, une opération de réinitialisation rapide se termine en quelques minutes. La durée peut varier légèrement en fonction de la charge exécutée sur le cluster au lancement de l'opération.

  • Une opération de réinitialisation rapide n'entraîne pas d'E/S supplémentaires.

  • La taille du volume de stockage ne diminue pas après une réinitialisation rapide. Au lieu de cela, le stockage est réutilisé à mesure que de nouvelles données sont insérées. Par conséquent, les tailles de volume des instantanés créés avant et après une opération de réinitialisation rapide sont les mêmes. Les tailles de volume des clusters restaurés à l'aide des instantanés créés avant et après une opération de réinitialisation rapide sont également les mêmes

  • Dans le cadre de l'opération de réinitialisation, toutes les instances du cluster de bases de donnes sont redémarrées.

    Note

    Dans de rares cas, ces redémarrages de serveur peuvent également entraîner un basculement du cluster.

Important

L'utilisation de la réinitialisation rapide peut interrompre l'intégration de votre cluster de bases de données Neptune avec d'autres services. Par exemple :

  • La réinitialisation rapide supprime toutes les données de flux de votre base de données et réinitialise complètement les flux. En d'autres termes, les consommateurs de flux risquent de ne plus fonctionner sans une nouvelle configuration.

  • La réinitialisation rapide supprime toutes les métadonnées relatives aux ressources SageMaker utilisées par Neptune ML, y compris les tâches et les points de terminaison. Elles existent toujours dans SageMaker, et vous pouvez continuer à utiliser les points de terminaison SageMaker existants pour les requêtes d'inférence Neptune ML, mais les API de gestion Neptune ML ne fonctionnent plus avec elles.

  • Les intégrations telles que l'intégration de la recherche en texte intégral avec ElasticSearch sont également annulées par une réinitialisation rapide et devront être rétablies manuellement avant de pouvoir être réutilisées.

Pour supprimer toutes les données d'un cluster de bases de données Neptune à l'aide de l'API
  1. Tout d'abord, générez un jeton que vous pourrez ensuite utiliser pour réinitialiser la base de données. Cette étape vise à empêcher quiconque de réinitialiser accidentellement une base de données.

    Pour ce faire, envoyez une demande HTTP POST au point de terminaison /system de l'instance d'enregistreur du cluster de bases de données afin de spécifier l'action initiateDatabaseReset.

    Voici la commande curl qui utilise le type de contenu JSON :

    curl -X POST \ -H 'Content-Type: application/json' \ https://your_writer_instance_endpoint:8182/system \ -d '{ "action" : "initiateDatabaseReset" }'

    Ou celle qui utilise le type de contenu x-www-form-urlencoded :

    curl -X POST \ -H 'Content-Type: application/x-www-form-urlencoded' \ https://your_writer_instance_endpoint:8182/system \ -d 'action=initiateDatabaseReset '

    La demande initiateDatabaseReset renvoie le jeton de réinitialisation dans sa réponse JSON, comme suit :

    { "status" : "200 OK", "payload" : { "token" : "new_token_guid" } }

    Le jeton reste valide pendant une heure (60 minutes) après son émission.

    Si vous envoyez la demande à une instance de lecteur ou au point de terminaison de statut, Neptune génère une exception ReadOnlyViolationException.

    Si vous envoyez plusieurs demandes initiateDatabaseReset, seul le dernier jeton généré est valide pour la deuxième étape, étape au cours de laquelle vous effectuez réellement la réinitialisation.

    Si le serveur redémarre juste après la demande initiateDatabaseReset, le jeton généré n'est plus valide, et vous devez envoyer une nouvelle demande pour obtenir un nouveau jeton.

  2. Ensuite, envoyez une demande performDatabaseReset avec le jeton que vous avez obtenu via initiateDatabaseReset au point de terminaison /system de l'instance d'enregistreur du cluster de bases de données. Cette action supprime toutes les données du cluster de bases de données.

    Voici la commande curl qui utilise le type de contenu JSON :

    curl -X POST \ -H 'Content-Type: application/json' \ https://your_writer_instance_endpoint:8182/system \ -d '{ "action" : "performDatabaseReset", "token" : "token_guid" }'

    Ou celle qui utilise le type de contenu x-www-form-urlencoded :

    curl -X POST \ -H 'Content-Type: application/x-www-form-urlencoded' \ https://your_writer_instance_endpoint:8182/system \ -d 'action=performDatabaseReset&token=token_guid'

    La demande renvoie une réponse JSON. Si la demande est acceptée, la réponse est la suivante :

    { "status" : "200 OK" }

    Si le jeton que vous avez envoyé ne correspond pas à celui qui a été émis, la réponse est la suivante :

    { "code" : "InvalidParameterException", "requestId":"token_guid", "detailedMessage" : "System command parameter 'token' : 'token_guid' does not match database reset token" }

    Si la demande est acceptée et que la réinitialisation commence, le serveur redémarre et supprime les données. Vous ne pouvez pas envoyer d'autres demandes au cluster de bases de données pendant sa réinitialisation.

Utilisation de l'API de réinitialisation rapide avec l'authentification IAM

Si l'authentification IAM est activée sur le cluster de bases de données, vous pouvez utiliser awscurl pour envoyer des commandes de réinitialisation rapide authentifiées à l'aide de ce mode d'authentification :

Utilisation d'awscurl pour envoyer des demandes de réinitialisation rapide avec l'authentification IAM
  1. Définissez correctement les variables d'environnement AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY (ainsi qu'AWS_SECURITY_TOKEN si vous utilisez des informations d'identification temporaires).

  2. Une demande initiateDatabaseReset se présente comme suit :

    awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
  3. Une demande performDatabaseReset se présente comme suit :

    awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "performDatabaseReset" }'

Utilisation de la magie linéaire %db_reset du workbench Neptune pour réinitialiser un cluster de bases de données

Le workbench Neptune intègre une magie linéaire %db_reset qui vous permet de réinitialiser rapidement la base de données dans un bloc-notes Neptune.

Si vous invoquez la magie sans aucun paramètre, un écran vous demande si vous souhaitez supprimer toutes les données du cluster. Vous devez également cocher une case afin de confirmer que vous comprenez que les données du cluster ne seront plus disponibles une fois que vous les aurez supprimées. À ce stade, vous pouvez choisir de continuer et de supprimer les données, ou d'annuler l'opération.

Une option plus risquée consiste à invoquer %db_reset avec l'option --yes ou -y, ce qui entraîne la suppression sans invite supplémentaire.

Vous pouvez également effectuer la réinitialisation en deux étapes, tout comme avec l'API REST :

%db_reset --generate-token

La réponse est :

{ "status" : "200 OK", "payload" : { "token" : "new_token_guid" } }

Continuez avec :

%db_reset --token new_token_guid

La réponse est :

{ "status" : "200 OK" }

Codes d'erreur courants pour les opérations de réinitialisation rapide

Code d'erreur Neptune Statut HTTP Message Exemple

InvalidParameterException

400

Le paramètre de commande système « action » a une valeur « XXX » non prise en charge

Paramètre non valide

InvalidParameterException

400

Trop de valeurs fournies pour : action

Demande de réinitialisation rapide avec plusieurs actions, envoyée avec l'en-tête 'Content-Type:Application/X-WWW-Form-URLEncoded'

InvalidParameterException

400

Champ 'action' en double

Demande de réinitialisation rapide avec plusieurs actions, envoyée avec l'en-tête 'Content-Type: application/json'

MethodNotAllowedException

400

Route incorrecte : /bad_endpoint

Demande envoyée à un point de terminaison incorrect

MissingParameterException

400

Paramètres obligatoires manquants : [action]

Une demande de réinitialisation rapide ne contient pas le paramètre 'action' obligatoire

ReadOnlyViolationException

400

Les écritures ne sont pas autorisées sur une instance de réplica en lecture

Une demande de réinitialisation rapide a été envoyée à un point de terminaison de lecteur ou de statut

AccessDeniedException

403

Jeton d'authentification manquant

Une demande de réinitialisation rapide a été envoyée sans les signatures correctes à un point de terminaison de base de données sur lequel l'authentification IAM est activée

ServerShutdownException

500

La réinitialisation de la base de données est en cours. Réessayez la requête une fois que le cluster sera disponible.

Lorsque la réinitialisation rapide commence, les requêtes Gremlin/Sparql existantes et entrantes échouent.