Risoluzione dei problemi relativi al RDS proxy - Amazon Relational Database Service

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 relativi al RDS proxy

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

Nei registri del 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 default per l'endpoint predefinito 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 dell'istanza RDS DB 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 seguente comando Netcat (nc) ha esito positivo, puoi accedere all'endpoint proxy dall'EC2istanza o da un altro sistema a cui hai effettuato l'accesso. Questo comando segnala un errore se non siete nello stesso VPC ambiente del proxy e del database associato. Potresti essere in grado di accedere direttamente al database senza essere nello stessoVPC. Tuttavia, non puoi accedere al proxy a meno che tu non sia nello stessoVPC.

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

Puoi utilizzare i seguenti comandi per assicurarti che l'EC2istanza abbia le proprietà richieste. In particolare, il valore VPC per l'EC2istanza deve essere lo stesso del VPC dell' a cui si connette il proxy.

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 JSON stringa che include i campi username epassword. 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 aws rds describe-db-proxy-targets CLI comando, 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 IAM ruolo per accedere al segreto di Secrets Manager utilizzato dal proxy è valido.

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

Categoria ID evento RDS Descrizione

errore

RDS- EVENT -0243 RDSnon è stato possibile fornire capacità per il proxy perché non ci sono abbastanza 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- -0275 EVENT

RDSha limitato alcune connessioni al proxy DB name. 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 IAM ruolo esistente invece di scegliere di crearne uno nuovo.

Potresti riscontrare i seguenti problemi durante la connessione a un My SQL proxy.

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 IAM autenticazione 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 non ucs2 è valido perché può causare l'arresto anomalo del server MySQL.

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

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

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

  • Connect al database utilizzando l'impostazione minima di ssl-mode=REQUIRED in My SQL client.

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

La TLS stretta di mano al proxy non è riuscita. Alcuni possibili motivi includono quanto segue:

  • SSLè obbligatorio 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.

Potresti riscontrare i seguenti problemi durante la connessione a un proxy Postgre. SQL

Errore Causa Soluzione

ERROR 28000: IAM authentication is allowed only with SSL connections.

L'utente ha provato a connettersi al database utilizzando l'IAMautenticazione con l'impostazione sslmode=disable nel client SQL Postgre.

L'utente deve connettersi al database utilizzando l'impostazione minima del client sslmode=require SQL Postgre. Per ulteriori informazioni, consulta la documentazione di supporto di SQLSSLPostgre.

ERROR 28000: 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 dei criteri AWS Identity and Access Management (IAM) per RDS Proxy.

ERROR 28000: 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 stai usando IAM l'autenticazione, usa l'autenticazione MD5 o SCRAM tramite password.

ERROR 28000: 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.

Assicurati di definire un nome utente quando configuri una connessione al proxy utilizzando il SQL client Postgre di tua scelta.

ERROR 28000: IAM is allowed only with SSL connections.

Un client ha provato a connettersi tramite IAM l'autenticazione, ma non SSL è stato abilitato.

Abilita SSL nel client Postgre. SQL

ERROR 28000: This RDS Proxy requires TLS connections.

L'utente ha abilitato l'opzione Require Transport Layer Security ma ha provato a connettersi con il sslmode=disable client SQL Postgre.

Per risolvere questo errore, effettuare una delle seguenti operazioni:

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

  • Connect al database utilizzando l'impostazione minima di sslmode=allow nel client Postgre. SQL

ERROR 28P01: 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 IAM utente errato.

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

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

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

Per correggere questo errore, effettuare le seguenti operazioni:

  1. Conferma che l'IAMutente fornito esiste.

  2. Conferma che il token di IAM autorizzazione appartiene all'IAMutente fornito.

  3. Verifica che la IAM politica disponga delle autorizzazioni adeguate perRDS.

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

ERROR 28P01: 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 è la stessa utilizzata nel tuo client Postgre. SQL

ERROR 28P01: The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.

C'è un problema con il IAM token usato per IAM l'autenticazione.

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

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

Il SQL client Postgre utilizzato per connettersi al proxy utilizza un protocollo precedente al 3.0.

Usa un SQL client Postgre più recente che supporti il protocollo di messaggistica 3.0. Se usi Postgre SQL psqlCLI, usa una versione superiore o uguale alla 7.4.

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

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

Disattiva la modalità di replica in streaming nel client Postgre SQL utilizzato per la connessione.

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

Tramite il messaggio di avvio, il SQL client Postgre utilizzato per connettersi al proxy richiede un'opzione che attualmente non è supportata da Proxy. RDS

Disattiva l'opzione mostrata come non supportata nel messaggio precedente nel SQL client Postgre utilizzato per la connessione.

ERROR 53300: The IAM authentication failed because of too many competing requests.

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

Riduci la velocità con cui vengono stabilite le connessioni che utilizzano IAM l'autenticazione da un client Postgre. SQL

ERROR 53300: 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.

Riduci il numero di connessioni attive dai SQL client Postgre a questo proxy. RDS

ERROR 53300: Rate of connection to proxy exceeded number_value.

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

Riduci la velocità con cui vengono stabilite le connessioni da un client Postgre. SQL

ERROR XX000: Unknown error.

Si è verificato un errore sconosciuto.

Contatta l' AWS assistenza per esaminare il problema.

ERROR 08000: 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 lo stato del della destinazione dell' per vedere 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.

ERROR XX000: 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.