Risoluzione dei problemi per RDS Proxy - Amazon Aurora

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à.

Risoluzione dei problemi per RDS Proxy

Di seguito, sono disponibili idee per la risoluzione di alcuni problemi comuni relativi al proxy RDS e informazioni sui CloudWatch registri di RDS Proxy.

Nei log RDS Proxy, ogni voce è preceduta dal nome dell'endpoint proxy associato. Questo nome può essere quello specificato per un endpoint definito dall'utente. In alternativa, può essere il nome speciale dell'endpoint predefinito default di un proxy che esegue richieste di lettura/scrittura. Per ulteriori informazioni sugli endpoint proxy, consulta Utilizzo degli endpoint Amazon RDS Proxy.

Verifica della connettività a un proxy

È possibile utilizzare i seguenti comandi per verificare che tutti i componenti, ad esempio il proxy, il database e le istanze di calcolo presenti nella connessione, possano comunicare tra loro.

Esamina il proxy stesso usando il describe-db-proxiescomando. Esamina anche il gruppo target associato utilizzando il comando describe-db-proxy-target-groups. Verifica che i dettagli delle destinazioni corrispondano al cluster Aurora che intendi associare al proxy. Utilizzare comandi come i seguenti.

aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME

Per confermare che il proxy è in grado di connettersi al database sottostante, esamina le destinazioni specificate nei gruppi di destinazione utilizzando il describe-db-proxy-targetscomando. Utilizzare un comando come il seguente.

aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

L'output del describe-db-proxy-targetscomando include un TargetHealth campo. È possibile esaminare i campi State, Reason e Description all'interno di TargetHealth per verificare se il proxy può comunicare con l'istanza database sottostante.

  • Un valore State di AVAILABLE indica che il proxy può connettersi all'istanza database.

  • Un valore State di UNAVAILABLE indica un problema di connessione temporaneo o permanente. In questo caso, esaminare i campi Reason e Description. Ad esempio, se Reason ha un valore pari a PENDING_PROXY_CAPACITY, provare a connettersi nuovamente dopo che il proxy ha terminato l'operazione di ridimensionamento. Se Reason ha un valore di UNREACHABLE, CONNECTION_FAILED o AUTH_FAILURE, utilizzare la spiegazione del campo Description per facilitare la diagnosi del problema.

  • Il valore del campo State potrebbe essere REGISTERING per un breve periodo prima di passare a AVAILABLE o UNAVAILABLE.

Se il comando Netcat (nc) seguente segnala l'esito positivo, puoi accedere all'endpoint del proxy dall'istanza EC2 o da un altro sistema in cui hai eseguito l'accesso. Questo comando segnala un errore se non ti trovi nello stesso VPC del proxy e del database associato. Potresti essere in grado di accedere direttamente al database senza essere nello stesso VPC. Tuttavia, non puoi accedere al proxy a meno che non ti trovi nello stesso VPC.

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

Puoi utilizzare i seguenti comandi per assicurarti che l'istanza EC2 abbia le proprietà richieste. In particolare, il VPC per l'istanza EC2 deve essere uguale al VPC per l'istanza database RDS il cluster Aurora a cui il proxy si connette.

aws ec2 describe-instances --instance-ids your_ec2_instance_id

Esamina i segreti Secrets Manager utilizzati per il proxy.

aws secretsmanager list-secrets aws secretsmanager get-secret-value --secret-id your_secret_id

Assicurati che il SecretString campo visualizzato da get-secret-value sia codificato come una stringa JSON che include i campi username andpassword. Nell'esempio seguente viene illustrato il formato del campo SecretString.

{ "ARN": "some_arn", "Name": "some_name", "VersionId": "some_version_id", "SecretString": '{"username":"some_username","password":"some_password"}', "VersionStages": [ "some_stage" ], "CreatedDate": some_timestamp }

Problemi e soluzioni comuni

Questa sezione descrive alcuni problemi comuni e potenziali soluzioni quando si utilizza RDS Proxy.

Dopo aver eseguito il comando aws rds describe-db-proxy-targets CLI, se la TargetHealth descrizione indicaProxy does not have any registered credentials, verifica quanto segue:

  • Per l'accesso la proxy, l'utente dispone di credenziali registrate.

  • Il ruolo IAM per accedere al segreto di Secrets Manager utilizzato dal proxy è valido.

È possibile che si verifichino i seguenti eventi RDS durante la creazione di o la connessione a un proxy DB.

Categoria ID evento RDS Descrizione

errore

RDS-EVENT-0243 RDS non è stato in grado di allocare la capacità per il proxy perché non ci sono sufficienti indirizzi IP disponibili nelle sottoreti. Per risolvere il problema, assicurati che le sottoreti abbiano il numero minimo di indirizzi IP non utilizzati. Per determinare il numero consigliato per la classe di istanza, consulta Pianificazione della capacità degli indirizzi IP.

errore

RDS-EVENT-0275

RDS ha limitato alcune connessioni al nome del proxy DB. Il numero di richieste di connessione simultanee dal client al proxy ha superato il limite.

È possibile che si verifichino i seguenti problemi durante la creazione di un nuovo proxy o la connessione a un proxy.

Errore Cause o soluzioni alternative

403: The security token included in the request is invalid

Seleziona un ruolo IAM esistente invece di crearne uno nuovo.

È possibile che si verifichino i seguenti problemi durante la connessione a un proxy MySQL.

Errore Cause o soluzioni alternative
ERROR 1040 (HY000): Connections rate limit exceeded (limit_value) La velocità di richieste di connessione dal client al proxy ha superato il limite.
ERROR 1040 (HY000): IAM authentication rate limit exceeded Il numero di richieste simultanee con autenticazione IAM dal client al proxy ha superato il limite.
ERROR 1040 (HY000): Number simultaneous connections exceeded (limit_value) Il numero di richieste di connessione simultanee dal client al proxy ha superato il limite.

ERROR 1045 (28000): Access denied for user 'DB_USER'@'%' (using password: YES)

Il segreto Secrets Manager utilizzato dal proxy non corrisponde al nome utente e alla password di un utente di database esistente. Aggiorna le credenziali nel segreto Secrets Manager o assicurati che l'utente del database esista e disponga della stessa password del segreto.
ERROR 1105 (HY000): Unknown error Si è verificato un errore sconosciuto.
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of value

Il valore impostato per il parametro character_set_client non è valido. Ad esempio, il valore ucs2 non è valido perché può provocare un arresto anomalo del server MySQL.

ERROR 3159 (HY000): This RDS Proxy requires TLS connections.

Hai abilitato l'impostazione Richiedi Transport Layer Security nel proxy ma la tua connessione includeva il parametro ssl-mode=DISABLED nel client MySQL. Eseguire una delle operazioni seguenti:

  • Disattivare l'impostazione Richiedi Transport Layer Security per il proxy.

  • Connettersi al database utilizzando l'impostazione minima di ssl-mode=REQUIRED nel client MySQL.

ERROR 2026 (HY000): SSL connection error: Internal Server Error

L'handshake TLS con il proxy non è riuscito. Alcuni possibili motivi includono quanto segue:

  • SSL è richiesto ma il server non lo supporta.

  • Si è verificato un errore interno del server.

  • Si è verificato un handshake non valido.

ERROR 9501 (HY000): Timed-out waiting to acquire database connection

Il proxy è in attesa di acquisire una connessione al database. Alcuni possibili motivi includono quanto segue:

  • Il proxy non è in grado di stabilire una connessione al database perché sono state raggiunte le connessioni massime.

  • Il proxy non è in grado di stabilire una connessione al database perché il database non è disponibile.

È possibile che si verifichino i seguenti problemi durante la connessione a un proxy PostgreSQL.

Errore Causa Soluzione

IAM authentication is allowed only with SSL connections.

L'utente ha tentato di connettersi al database utilizzando l'autenticazione IAM con l'impostazione sslmode=disable nel client PostgreSQL.

L'utente deve connettersi al database utilizzando l'impostazione minima di sslmode=require nel client PostgreSQL. Per ulteriori informazioni, consulta la documentazione Supporto SSL PostgreSQL.

This RDS Proxy requires TLS connections.

L'utente ha abilitato l'impostazione Richiedi Transport Layer Security ma ha tentato di connettersi con sslmode=disable nel client PostgreSQL.

Per risolvere questo errore, effettuare una delle seguenti operazioni:

  • Disattivare l'impostazione Richiedi Transport Layer Security del proxy.

  • Connettersi al database utilizzando l'impostazione minima di sslmode=allow nel client PostgreSQL.

IAM authentication failed for user user_name. Check the IAM token for this user and try again.

Questo errore potrebbe essere dovuto ai seguenti fattori:

  • Il client ha fornito il nome utente IAM non corretto.

  • Il client ha fornito un token di autorizzazione IAM non corretto per l'utente

  • Il client utilizza una policy IAM che non dispone delle autorizzazioni necessarie.

  • Il client ha fornito un token di autorizzazione IAM scaduto per l'utente.

Per correggere questo errore, effettuare le seguenti operazioni:

  1. Verificare che l'utente IAM fornito esista.

  2. Verificare che il token di autorizzazione IAM appartenga all'utente IAM fornito.

  3. Verificare che la policy IAM disponga di autorizzazioni adeguate per RDS.

  4. Verificare la validità del token di autorizzazione IAM utilizzato.

This RDS proxy has no credentials for the role role_name. Check the credentials for this role and try again.

Non c'è un Secrets Manager segreto per questo ruolo.

Aggiungere un Secrets Manager segreto per questo ruolo. Per ulteriori informazioni, consulta Configurazione delle politiche AWS Identity and Access Management (IAM).

RDS supports only IAM, MD5, or SCRAM authentication.

Il client di database utilizzato per connettersi al proxy utilizza un meccanismo di autenticazione non attualmente supportato dal proxy.

Se non utilizzi l'autenticazione IAM, usa l'autenticazione della password MD5 o SCRAM.

A user name is missing from the connection startup packet. Provide a user name for this connection.

Il client di database utilizzato per connettersi al proxy non invia un nome utente quando si tenta di stabilire una connessione.

Assicurarsi di definire un nome utente quando si imposta una connessione al proxy utilizzando il client PostgreSQL di propria scelta.

Feature not supported: RDS Proxy supports only version 3.0 of the PostgreSQL messaging protocol.

Il client PostgreSQL utilizzato per connettersi al proxy utilizza un protocollo precedente a 3.0.

Utilizzare un client PostgreSQL più recente che supporti il protocollo di messaggistica 3.0. Se si utilizza la CLI psql di PostgreSQL, utilizzare una versione maggiore o uguale a 7.4.

Feature not supported: RDS Proxy currently doesn't support streaming replication mode.

Il client PostgreSQL utilizzato per connettersi al proxy sta tentando di utilizzare la modalità di replica in streaming, che non è attualmente supportata dal proxy RDS.

Disattivare la modalità di replica in streaming nel client PostgreSQL utilizzato per la connessione.

Feature not supported: RDS Proxy currently doesn't support the option option_name.

Tramite il messaggio di avvio, il client PostgreSQL utilizzato per connettersi al proxy richiede un'opzione che non è attualmente supportata dal proxy RDS.

Disattivare l'opzione visualizzata come non supportata dal messaggio precedente nel client PostgreSQL utilizzato per connettersi.

The IAM authentication failed because of too many competing requests.

Il numero di richieste simultanee con autenticazione IAM dal client al proxy ha superato il limite.

Ridurre la velocità con cui vengono stabilite le connessioni che utilizzano l'autenticazione IAM da un client PostgreSQL.

The maximum number of client connections to the proxy exceeded number_value.

Il numero di richieste di connessione simultanee dal client al proxy ha superato il limite.

Ridurre il numero di connessioni attive dai client PostgreSQL a questo proxy RDS.

Rate of connection to proxy exceeded number_value.

La velocità di richieste di connessione dal client al proxy ha superato il limite.

Ridurre la velocità con cui vengono stabilite le connessioni da un client PostgreSQL.

The password that was provided for the role role_name is wrong.

La password per questo ruolo non corrisponde al segreto Secrets Manager.

Controlla il segreto per questo ruolo in Secrets Manager per vedere se la password è uguale a quella utilizzata nel client PostgreSQL.

The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.

Si è verificato un problema con il token IAM utilizzato per l'autenticazione IAM.

Generare un nuovo token di autenticazione e utilizzarlo in una nuova connessione.

IAM is allowed only with SSL connections.

Un client ha tentato di connettersi utilizzando l'autenticazione IAM, ma SSL non è stato abilitato.

Abilitare SSL nel client PostgreSQL.

Unknown error.

Si è verificato un errore sconosciuto.

Contatta il supporto di AWS per indagare sul problema.

Timed-out waiting to acquire database connection.

Il proxy è in attesa di acquisire una connessione al database. Alcuni possibili motivi includono quanto segue:

  • Il proxy non può stabilire una connessione al database perché sono state raggiunte le connessioni massime.

  • Il proxy non può stabilire una connessione al database perché il database non è disponibile.

Le possibili soluzioni sono le seguenti:

  • Controlla la destinazione dello stato dell'istanza database RDS del cluster Aurora per verificare se non è disponibile.

  • Controllare se sono presenti transazioni e/o query di lunga durata in esecuzione. È possibile utilizzare le connessioni al database dal connection pool per un lungo periodo di tempo.

Request returned an error: database_error.

La connessione al database stabilita dal proxy ha restituito un errore.

La soluzione dipende dall'errore specifico del database. Un esempio : Request returned an error: database "your-database-name" does not exist. Ciò significa che il nome del database specificato non esiste nel server di database oppure che il nome utente utilizzato come nome del database (se non è specificato un nome del database) non esiste nel server.