Svuotamento di un cluster database Amazon Neptune utilizzando l'API di ripristino rapido - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Svuotamento di un cluster database Amazon Neptune utilizzando l'API di ripristino rapido

La REST API di ripristino rapido Neptune consente di ripristinare un grafo Neptune in modo veloce e semplice, rimuovendo tutti i relativi dati.

Puoi farlo all'interno di un notebook Neptune usando il comando magic di riga %db_reset.

Nota

Questa funzionalità è disponibile a partire dalla versione 1.0.4.0 del motore Neptune.

  • Nella maggior parte dei casi, un'operazione di ripristino rapido viene completata entro un paio di minuti. La durata può variare leggermente a seconda del carico sul cluster al momento dell'avvio dell'operazione.

  • Un'operazione di ripristino rapido non comporta operazioni di I/O aggiuntive.

  • Le dimensioni del volume di archiviazione non si riducono dopo un ripristino rapido. Al contrario, l'archiviazione viene riutilizzata quando vengono inseriti nuovi dati. Ciò significa che le dimensioni del volume degli snapshot scattati prima e dopo un'operazione di ripristino rapido saranno le stesse. Anche le dimensioni dei volumi dei cluster ripristinati che utilizzano snapshot creati prima e dopo un'operazione di ripristino rapido saranno le stesse

  • Nell'ambito dell'operazione di ripristino, tutte le istanze nel cluster database vengono riavviate.

    Nota

    In casi rari, questi riavvii del server potrebbero anche causare il failover del cluster.

Importante

L'utilizzo del ripristino rapido può interrompere l'integrazione del cluster database Neptune con altri servizi. Per esempio:

  • Il ripristino rapido elimina tutti i dati dei flussi dal database e ripristina completamente i flussi. Ciò significa che i consumatori dei flussi potrebbero non funzionare più senza una nuova configurazione.

  • Il ripristino rapido rimuove tutti i metadati relativi alle risorse SageMaker AI utilizzate da Neptune ML, inclusi job ed endpoint. Continuano a esistere nell' SageMaker intelligenza artificiale e puoi continuare a utilizzare gli endpoint SageMaker AI esistenti per le query di inferenza di Neptune ML, ma la gestione di Neptune ML non funziona più con loro. APIs

  • Anche le integrazioni come l' full-text-searchintegrazione con ElasticSearch vengono eliminate dal ripristino rapido e devono essere ripristinate manualmente prima di poter essere riutilizzate.

Per eliminare tutti i dati da un cluster database Neptune utilizzando l'API
  1. Genera anzitutto un token da utilizzare successivamente per eseguire il ripristino del database. Questo passaggio ha lo scopo di impedire che qualcuno ripristini accidentalmente un database.

    A tale scopo, invia una richiesta HTTP POST all'endpoint /system sull'istanza di scrittura del cluster database per specificare l'azione initiateDatabaseReset.

    Il comando curl che utilizza il tipo di contenuto JSON sarebbe:

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

    Oppure, utilizzando il tipo di contenuto 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 richiesta initiateDatabaseReset restituisce il token di ripristino nella sua risposta JSON, ovvero:

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

    Il token rimane valido per un'ora (60 minuti) dopo l'emissione.

    Se invii la richiesta a un'istanza reader o all'endpoint dello stato, Neptune genererà un'eccezione ReadOnlyViolationException.

    Se invii più richieste initiateDatabaseReset, solo l'ultimo token generato sarà valido per il secondo passaggio, in cui eseguirai effettivamente il ripristino.

    Se il server si riavvia subito dopo la richiesta initiateDatabaseReset, il token generato non è più valido e devi inviare una nuova richiesta per ottenerne uno nuovo.

  2. Successivamente, devi inviare una richiesta performDatabaseReset con il token ricevuto da initiateDatabaseReset all'endpoint /system sull'istanza di scrittura del cluster database. In questo modo vengono eliminati tutti i dati dal cluster database.

    Il comando curl che utilizza il tipo di contenuto JSON è:

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

    Oppure, utilizzando il tipo di contenuto 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 richiesta restituisce una risposta JSON. Se la richiesta viene accettata, la risposta è:

    { "status" : "200 OK" }

    Se il token che hai inviato non corrisponde a quello emesso, la risposta è simile alla seguente:

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

    Se la richiesta viene accettata e il ripristino ha inizio, il server si riavvia ed elimina i dati. Non è possibile inviare altre richieste al cluster database durante il ripristino.

Utilizzo dell'API di ripristino rapido con IAM-Auth

Se hai abilitato IAM-Auth nel cluster database, puoi usare awscurl per inviare comandi di ripristino rapido autenticati mediante IAM-Auth:

Utilizzo di awscurl per inviare richieste di ripristino rapido con IAM-Auth
  1. Imposta correttamente le variabili di ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY (e anche AWS_SECURITY_TOKEN se stai usando credenziali temporanee).

  2. Una richiesta initiateDatabaseReset è simile a questa:

    awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
  3. Una richiesta performDatabaseReset è simile a questa:

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

Utilizzo del comando magic di riga %db_reset del workbench Neptune per ripristinare un cluster database

Il workbench Neptune supporta un comando magic di riga %db_reset che consente di eseguire un ripristino rapido del database in un notebook Neptune.

Se si richiama il comando magic senza alcun parametro, viene visualizzata una schermata in cui viene chiesto se si desidera eliminare tutti i dati del cluster. C'è anche una casella di controllo che richiedere di essere a conoscenza del fatto che i dati del cluster non saranno più disponibili dopo l'eliminazione. A quel punto, puoi scegliere di procedere con l'eliminazione dei dati o annullare l'operazione.

Un'opzione più rischiosa è richiamare %db_reset con l'opzione --yes o -y, in modo che l'eliminazione venga eseguita senza ulteriori richieste.

Puoi anche eseguire il ripristino in due passaggi, come con REST API:

%db_reset --generate-token

La risposta è:

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

Poi esegui:

%db_reset --token new_token_guid

La risposta è:

{ "status" : "200 OK" }

Codici di errore comuni per operazioni di ripristino rapido

Codice di errore Neptune Stato HTTP Messaggio Esempio

InvalidParameterException

400

Il parametro del comando di sistema 'action' ha un valore non supportato '' XXX

Parametro non valido

InvalidParameterException

400

Sono stati forniti troppi valori per: action

Una richiesta di ripristino rapido con più di un'azione inviata con l'intestazione 'Content-Type:Application/ 'x-www-form-urlencoded

InvalidParameterException

400

Campo 'action' duplicato

Una richiesta di ripristino rapido con più di un'azione inviata con l'intestazione 'Content-Type: application/json'

MethodNotAllowedException

400

Percorso errato:/bad_endpoint

Richiesta inviata a un endpoint errato

MissingParameterException

400

Parametri obbligatori mancanti: [action]

Una richiesta di ripristino rapido non contiene il parametro 'action' richiesto

ReadOnlyViolationException

400

Le scritture non sono consentite su un'istanza di replica di lettura

È stata inviata una richiesta di ripristino rapido endpoint di reader o di stato

AccessDeniedException

403

Token di autenticazione mancante

Una richiesta di ripristino rapido è stata inviata senza firme corrette a un endpoint di database in cui è abilitato IAM-Auth

ServerShutdownException

500

Il ripristino del database è in corso. Riprova a eseguire la query dopo che il cluster diventa disponibile.

Quando inizia il ripristino rapido, le query Gremlin/Sparql esistenti e in entrata non riescono.