Salta al contenuto

Come posso risolvere i problemi di ripristino dello snapshot del mio cluster di database Aurora compatibile con PostgreSQL?

8 minuti di lettura
0

Desidero risolvere gli errori di ripristino dello snapshot quando eseguo il ripristino dal mio snapshot del cluster di database Amazon Aurora compatibile con PostgreSQL.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Prima di risolvere gli errori di ripristino dello snapshot, verifica che lo snapshot sia compatibile con la configurazione di destinazione e di avere le autorizzazioni necessarie.

Verifica la compatibilità dello snapshot prima del ripristino

Prima di ripristinare uno snapshot, verifica la compatibilità della versione per evitare errori.

Verifica lo stato dello snapshot e la versione del motore

Puoi utilizzare la console o AWS CLI per verificare la compatibilità della versione prima di ripristinare uno snapshot.

Per utilizzare la console, completa i seguenti passaggi:

  1. Apri la console Amazon Relational Database Service (Amazon RDS).
  2. Scegli Snapshot.
  3. Seleziona lo snapshot.
  4. Scegli la scheda Dettagli, quindi verifica le seguenti configurazioni:<br id=hardline_break/> Verifica che il parametro Engine sia aurora-postgresql.<br id=hardline_break/> Verifica che la versione riportata in Versione motore sia compatibile con la versione di destinazione.<br id=hardline_break/> Assicurati che Stato sia impostato su Disponibile.

Per utilizzare AWS CLI per elencare tutte le versioni di Aurora compatibile con PostgreSQL disponibili, esegui questo comando describe-db-engine-versions:

aws rds describe-db-engine-versions \
    --engine aurora-postgresql \
    --query "DBEngineVersions[?EngineVersion=='your-snapshot-version'].ValidUpgradeTarget[*].EngineVersion" \
    --region your-region

Nota: sostituisci your-snapshot-version con la versione del motore del tuo snapshot e your-region con la tua Regione AWS.

Verifica le autorizzazioni IAM

Assicurati che l'utente o il ruolo AWS Identity and Access Management (AWS IAM) abbia le autorizzazioni necessarie per ripristinare uno snapshot.

Per verificare le autorizzazioni correnti, esegui questo comando AWS CLI get-user:

aws iam get-user --region your-region

Nota: sostituisci your-region con la tua Regione AWS.

Esempio di policy IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds:RestoreDBClusterFromSnapshot",
                "rds:CreateDBInstance",
                "rds:DescribeDBSnapshots",
                "rds:DescribeDBClusters",
                "rds:DescribeDBInstances"
            ],
            "Resource": "*"
        }
    ]
}

Risolvi gli errori di autorizzazione IAM

Se non hai le autorizzazioni per Amazon RDS richieste, ricevi il seguente messaggio di errore:

"User is not authorized to perform: rds:RestoreDBClusterFromSnapshot"

Per risolvere il problema, aggiungi alla policy IAM le autorizzazioni per Amazon RDS richieste. Completa i seguenti passaggi:

  1. Apri la console IAM.

  2. Quindi, nel pannello di navigazione, scegli Utenti o Ruoli.

  3. Seleziona il nome dell'utente o del ruolo.

  4. Scegli Aggiungi autorizzazioni.

  5. Scegli Crea policy inline o modifica una policy già associata all'entità IAM.

  6. Scegli la scheda JSON.

  7. Inserisci la policy che include le autorizzazioni necessarie per il ripristino dello snapshot:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "rds:RestoreDBClusterFromSnapshot",
                    "rds:CreateDBInstance",
                    "rds:DescribeDBSnapshots",
                    "rds:DescribeDBClusterSnapshots",
                    "rds:DescribeDBClusters",
                    "rds:DescribeDBInstances"
                ],
                "Resource": "*"
            }
        ]
    }
  8. Scegli Avanti.

  9. Inserisci un nome per la policy. Ad esempio, inserisci RDSSnapshotRestorePolicy.

  10. Scegli Crea policy.

Risolvi gli errori di autorizzazione della crittografia AWS KMS

Se tenti di ripristinare uno snapshot crittografato senza le autorizzazioni appropriate del Servizio AWS di gestione delle chiavi (AWS KMS), ricevi uno dei seguenti messaggi di errore:

"Unable to restore from encrypted snapshot"

"KMS key access denied"

Per risolvere il problema, controlla la chiave AWS KMS utilizzata dallo snapshot, quindi aggiungi alla policy IAM le autorizzazioni AWS KMS richieste.

Per verificare la chiave AWS KMS utilizzata dallo snapshot, esegui questo comando describe-db-cluster-snapshots:

aws rds describe-db-cluster-snapshots \
    --db-cluster-snapshot-identifier your-snapshot-id \
    --region your-region

Nota: sostituisci your-snapshot-id con l'identificatore del tuo snapshot e your-region con la tua Regione AWS.

Quindi aggiungi le autorizzazioni AWS KMS alla policy IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:CreateGrant",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:region:account-id:key/key-id"
        }
    ]
}

Nota: sostituisci region con la tua Regione AWS,account-id con l'ID del tuo account AWS e key-id con l'ID della tua chiave AWS KMS.

Risolvi gli errori di snapshot non trovato

Se tenti di eseguire il ripristino da uno snapshot inesistente o a cui non puoi accedere, ricevi il seguente messaggio di errore:

"DBClusterSnapshotNotFoundFault: DBClusterSnapshot snapshot-id not found"

Per risolvere il problema, verifica che lo snapshot esista e di avere le autorizzazioni di accesso.

Per elencare gli snapshot disponibili nell'account, esegui questo comando describe-db-cluster-snapshots:

aws rds describe-db-cluster-snapshots \
    --region your-region

Nota: sostituisci your-region con la tua Regione AWS.

Se lo snapshot è condiviso da un altro account AWS, verifica che sia stato condiviso con il tuo account e che tu abbia accettato la condivisione.

Risolvi gli errori di parametro non valido

Se specifichi una classe di istanza incompatibile durante il ripristino, ricevi il seguente messaggio di errore:

"InvalidParameterValue: Invalid DB Instance class"

Per risolvere il problema, scegli una classe di istanza valida per Aurora compatibile con PostgreSQL.

Per elencare le classi di istanza valide per la versione del motore di destinazione, esegui questo comando describe-orderable-db-instance-options:

aws rds describe-orderable-db-instance-options \
    --engine aurora-postgresql \
    --engine-version your-version \
    --region your-region

Nota: sostituisci your-version con la tua versione di PostgreSQL, ad esempio 15.4. Sostituisci your-region con la tua regione AWS.

Esamina l'output e scegli una classe di istanza che supporti la versione del motore di destinazione e le funzionalità richieste.

Risolvere gli errori dei gruppi di sottoreti

Se specifichi una sottorete non valida durante il ripristino, ricevi il seguente messaggio di errore:

"InvalidSubnet: The requested subnet is not valid"

Per risolvere il problema, verifica che il gruppo di sottoreti del database abbia sottoreti in più zone di disponibilità.

Per verificare la configurazione del gruppo di sottoreti, esegui questo comando describe-db-subnet-groups:

aws rds describe-db-subnet-groups \
    --db-subnet-group-name your-subnet-group \
    --region your-region

Nota: sostituisci your-subnet-group con il nome del gruppo di sottoreti del tuo database e your-region con la tua Regione AWS.

Verifica che il gruppo di sottoreti contenga sottoreti in almeno due zone di disponibilità. Se il gruppo di sottoreti non dispone di sottoreti in più zone di disponibilità, puoi modificarlo per aggiungere sottoreti in ulteriori zone di disponibilità.

Risolvi gli errori di accesso alle chiavi AWS KMS multi-account

Se tenti di ripristinare uno snapshot crittografato condiviso da un altro account AWS senza le autorizzazioni AWS KMS appropriate, ricevi il seguente messaggio di errore:

"AccessDenied: Cross-account pass role is not allowed"

Per risolvere il problema, assicurati che la policy della chiave AWS KMS consenta l'accesso multi-account e che il ruolo IAM abbia le autorizzazioni necessarie.

Per verificare la policy della chiave AWS KMS, esegui questo comando get-key-policy:

aws kms get-key-policy \
    --key-id your-key-id \
    --policy-name default \
    --region your-region

Nota: sostituisci your-key-id con l'ID della tua chiave AWS KMS e your-region con la tua Regione AWS.

Verifica che la policy della chiave includa un'istruzione che concede all'account AWS l'accesso per decrittografare e creare concessioni. Se non riesci ad aggiornare la policy della chiave AWS KMS, contatta il proprietario dello snapshot per farlo.

Per gli snapshot crittografati multi-account, non puoi eseguire il ripristino direttamente dallo snapshot condiviso. Utilizza invece la chiave AWS KMS per copiare lo snapshot condiviso nel tuo account e ripristinalo dalla copia. Per ulteriori informazioni, consulta Condivisione di snapshot crittografati.

Risolvi i problemi di compatibilità delle versioni del motore

Se tenti di ripristinare una versione del motore incompatibile, potresti ricevere un errore durante il processo di ripristino.

Per risolvere il problema, assicurati che la versione di destinazione sia uguale o superiore alla versione di PostgreSQL dello snapshot. Non puoi ripristinare una versione precedente.

Per verificare le versioni di Aurora compatibile con PostgreSQL disponibili, esegui questo comando describe-db-engine-versions:

aws rds describe-db-engine-versions \
    --engine aurora-postgresql \
    --region your-region

Nota: sostituisci your-region con la tua Regione AWS.

Esamina l'output per identificare le versioni del motore compatibili per la destinazione del ripristino.

Risolvi i problemi di compatibilità delle classi di istanza

Se selezioni una classe di istanza che non supporta la versione del motore di destinazione o le funzionalità richieste, il ripristino potrebbe non riuscire.

Per risolvere il problema, scegli una classe di istanza con lo storage e la memoria necessari per il carico di lavoro. Verifica che la classe di istanza supporti la versione di Aurora compatibile con PostgreSQL che stai ripristinando e che supporti funzionalità specifiche come Performance Insights.

Per verificare la compatibilità della classe di istanza, esegui il comando describe-orderable-db-instance-options:

aws rds describe-orderable-db-instance-options \
    --engine aurora-postgresql \
    --engine-version your-version \
    --region your-region

Nota: sostituisci your-version con la tua versione di PostgreSQL, ad esempio 15.4. Sostituisci your-region con la tua regione AWS.

Informazioni correlate

Ripristino dallo snapshot di un cluster di database

Condivisione dello snapshot di un cluster di database

Crittografia delle risorse Amazon Aurora

Elementi delle policy JSON AWS: Action

AWS UFFICIALEAggiornata 5 mesi fa