Come posso risolvere i problemi relativi al ripristino del cluster ElastiCache da S3?

Ultimo aggiornamento: 05/08/2022

Quando eseguo il ripristino del backup di Amazon ElastiCache per Redis da Amazon Simple Storage Service (Amazon S3), la creazione del cluster non riesce. Visualizzo il messaggio di errore "Creazione non riuscita" o "Autorizzazione negata". Come posso risolvere il problema?

Breve descrizione

Di seguito sono riportati i motivi comuni per cui il ripristino di un backup ElastiCache da Amazon S3 non riesce:

  • Stai tentando di ripristinare un backup al di fuori dei vincoli di backup.
  • ElastiCache non è riuscito a recuperare il file da Amazon S3.
  • Il file di backup ElastiCache si trova in un bucket Amazon S3 in un'altra regione.
  • Stai ripristinando un file .rdb contenente più database in un cluster ElastiCache (modalità cluster abilitata).

Risoluzione

Stai tentando di ripristinare un backup al di fuori dei vincoli di backup

Quando si ripristina un backup ElastiCache per Redis, è importante tenere presente i seguenti vincoli di backup:

  • Non è possibile eseguire il ripristino da un backup creato utilizzando un cluster Redis (modalità cluster abilitata) a un cluster Redis (modalità cluster disabilitata).
    • Quando si ripristina un backup eseguito da un cluster ElastiCache (modalità cluster abilitata), non è possibile selezionare l'opzione modalità cluster disabilitata nella console ElastiCache. È disponibile solo l'opzione modalità cluster abilitata.
    • Quando esporti un backup del cluster ElastiCache (modalità cluster abilitata) in Amazon S3, vengono creati più file .rdb (uno per ogni partizione). Se tenti di effettuare il seeding del backup da Amazon S3, puoi fare riferimento a un solo backup (.rdb). Ciò comporta il seeding delle chiavi di una singola partizione. Il tentativo di aggirare questo problema includendo un carattere jolly genera il seguente errore:
      Errore: l'oggetto o il bucket non esiste per l'oggetto S3: examplebucket/cluster-mode-enabled-*.rdb.
  • Non è possibile ripristinare un backup da un cluster che utilizza la suddivisione in livelli dei dati. Ad esempio, non è possibile ripristinare un nodo r6gd in un cluster che non utilizza la suddivisione in livelli dei dati, come un nodo r6g.
  • Non è possibile eseguire il ripristino da un cluster Redis (modalità cluster disabilitata) a un cluster Redis (modalità cluster abilitata) se il file .rdb fa riferimento a più di un database. Se tenti di eseguire questa operazione, si verifica il seguente errore:
    Errore: per ripristinare uno snapshot in modalità cluster, tutte le chiavi nel file RDB devono risiedere in DB 0.

ElastiCache non è riuscito a recuperare il file da Amazon S3

Questo errore si verifica quando ElastiCache non dispone delle autorizzazioni necessarie per accedere al backup ElastiCache archiviato nel bucket S3. Puoi confermare il problema delle autorizzazioni esaminando gli eventi ElastiCache.

L'evento ElastiCache di esempio seguente mostra che la creazione di "test" del gruppo di replica Redis non è riuscita perché ElastiCache non è riuscito a recuperare il file di backup da S3:

Restore from snapshot failed for node group 0001 in replication group test. Failed to retrieve file from S3

Dopo aver determinato che la causa dell'errore è che ElastiCache non è riuscito a recuperare il file da Amazon S3, verifica che la tua regione sia una delle seguenti:

Una regione scelta richiede una policy di bucket che consenta a ElastiCache di recuperare il file di backup da Amazon S3.

Se il bucket S3 si trova in una delle seguenti regioni, è necessario consentire al servizio ElastiCache l'accesso al file di backup in S3:

Nota: l'ID canonico delle regioni Cina (Pechino), Cina (Ningxia) e AWS GovCloud (Stati Uniti-Ovest) è diverso dalle regioni AWS predefinite:

Cina (Pechino), Cina (Ningxia)

Canonical ID: b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

Regione AWS GovCloud (Stati Uniti-Ovest)

Canonical ID: 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

Regioni AWS predefinite

Canonical ID: 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

Dopo aver concesso a ElastiCache l'accesso all'oggetto di backup .rdb in Amazon S3 utilizzando un ID canonico o una policy di bucket, ripristina il cluster Redis.

Il file di backup ElastiCache si trova in un bucket Amazon S3 in un'altra regione

Il seguente messaggio di errore indica che il backup ElastiCache che stai cercando di ripristinare si trova in un bucket Amazon S3 all'interno di un'altra regione:

"Autorizzazione di accesso all'oggetto S3 negata. Utilizzare l'oggetto S3 nella stessa regione."

Per risolvere il problema, effettua la seguente operazione:

1.    Copia il backup (.rdb) dal bucket S3 che contiene il backup in un bucket S3 che si trova nella regione in cui viene ripristinato il cluster Redis.

Di seguito è riportato un esempio di comando di interfaccia della linea di comando AWS (AWS CLI) che puoi utilizzare per copiare da bucket Amazon S3 in diverse regioni:

aws s3 cp s3://SourceBucketName/BackupName.rdb s3://DestinationBucketName/BackupName.rdb --acl bucket-owner-full-control --source-region SourceRegionName --region DestinationRegionName

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione di AWS CLI più recente.

2.    Una volta completata la copia, verifica che all'oggetto di backup (.rdb) siano assegnate le autorizzazioni corrette sotto forma di ID canonico o policy di bucket. Consulta la sezione precedente per gli ID canonici corretti.

Ora che l'oggetto di backup è stato copiato nella regione corretta e sono state applicate le autorizzazioni corrette, puoi continuare a ripristinare il cluster.

Stai ripristinando un file .rdb contenente più database in un cluster ElastiCache (modalità cluster abilitata)

Non è possibile ripristinare un file di backup (.rdb) contenente più database in un cluster ElastiCache (modalità cluster abilitata). ElastiCache (modalità cluster abilitata) non supporta più database. Tutte le chiavi devono trovarsi in DB0. Puoi verificare se è questa la causa dell'errore di ripristino esaminando gli eventi ElastiCache.

Il seguente esempio di evento ElastiCache mostra che la creazione del gruppo di replica Redis "test" non è riuscita perché il file .rdb contiene più database.

Restore from snapshot failed for node group 0001 in replication group test. To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0. Snapshot ID: arn:aws:s3:::example-bucket/multidb.rdb

Per risolvere questo problema, procedi come segue:

1.    Assicurati che tutte le chiavi vengano migrate in un singolo database.

Nota: se il database di origine si trova su ElastiCache Redis, il comando di migrazione non è supportato.

2.    Quando tutte le chiavi si trovano nello stesso database, puoi creare un backup locale del tuo database Redis, caricarlo su Amazon S3 e continuare a ripristinare in un cluster ElastiCache (modalità cluster abilitata).


Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?