Résolution des problèmes liés au RDS proxy - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés au RDS proxy

Vous trouverez ci-dessous des idées pour résoudre certains problèmes courants liés au RDS proxy et des informations sur CloudWatch les journaux du RDS proxy.

Dans les journaux du RDS proxy, chaque entrée est précédée du nom du point de terminaison du proxy associé. Ce nom peut être celui que vous avez spécifié pour un point de terminaison défini par l'utilisateur. Il peut également s'agir du nom spécial du point default de terminaison par défaut d'un proxy qui exécute des demandes de lecture/écriture. Pour plus d'informations sur les points de terminaison proxy, veuillez consulter Utilisation des points de terminaison Amazon RDS Proxy.

Vérification de la connectivité pour un proxy

Vous pouvez utiliser les commandes suivantes pour vérifier que tous les composants tels que le proxy, la base de données et les instances de calcul de la connexion peuvent communiquer entre eux.

Examinez le proxy lui-même à l'aide de la describe-db-proxiescommande. Examinez également le groupe cible associé à l'aide de la commande describe-db-proxy-target-groups. Vérifiez que les détails des cibles correspondent au de l'instance de RDS base de données que vous souhaitez associer au proxy. Utilisez des commandes telles que les suivantes.

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

Pour vérifier que le proxy peut se connecter à la base de données sous-jacente, examinez les cibles spécifiées dans les groupes cibles à l'aide de la describe-db-proxy-targetscommande. Utilisez une commande telle que la suivante.

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

La sortie de la describe-db-proxy-targetscommande inclut un TargetHealth champ. Vous pouvez examiner les champs State, Reason et Description dans TargetHealth pour vérifier si le proxy peut communiquer avec l'instance de base de données sous-jacente.

  • Si la valeur State est AVAILABLE, cela indique que le proxy peut se connecter à l'instance de base de données.

  • Si la valeur State est UNAVAILABLE, cela signale un problème de connexion temporaire ou permanent. Dans ce cas, examinez les champs Reason et Description. Par exemple, si Reason a une valeur PENDING_PROXY_CAPACITY, essayez de vous connecter à nouveau une fois que le proxy a terminé son opération de mise à l'échelle. Si Reason a une valeur UNREACHABLE, CONNECTION_FAILED ou AUTH_FAILURE, utilisez l'explication du champ Description pour vous aider à diagnostiquer le problème.

  • Le champ State peut avoir une valeur REGISTERING pendant une courte période avant de passer à AVAILABLE ou UNAVAILABLE.

Si la commande Netcat (nc) suivante aboutit, vous pouvez accéder au point de terminaison du proxy depuis l'EC2instance ou un autre système sur lequel vous êtes connecté. Cette commande signale un échec si vous n'êtes pas dans la même position VPC que le proxy et la base de données associée. Vous pouvez peut-être vous connecter directement à la base de données sans y être connectéVPC. Cependant, vous ne pouvez pas vous connecter au proxy si vous n'êtes pas connectéVPC.

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

Vous pouvez utiliser les commandes suivantes pour vous assurer que votre EC2 instance possède les propriétés requises. En particulier, le code VPC pour l'EC2instance doit être le même que VPC pour le de l' de base de données auquel le proxy se connecte.

aws ec2 describe-instances --instance-ids your_ec2_instance_id

Examinez les secrets Secrets Manager utilisés pour le proxy.

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

Assurez-vous que le SecretString champ affiché par get-secret-value est codé sous la JSON forme d'une chaîne incluant les password champs username et. L'exemple suivant illustre le format du champ SecretString.

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

Problèmes courants et solutions correspondantes

Cette section décrit certains problèmes courants et les solutions potentielles lors de l'utilisation du RDS proxy.

Après avoir exécuté la aws rds describe-db-proxy-targets CLI commande, si la TargetHealth description l'indiqueProxy does not have any registered credentials, vérifiez les points suivants :

  • Des informations d'identification sont enregistrées pour permettre à l'utilisateur d'accéder au proxy.

  • Le IAM rôle permettant d'accéder au secret Secrets Manager utilisé par le proxy est valide.

Vous pouvez rencontrer les RDS événements suivants lors de la création ou de la connexion à un proxy de base de données.

Catégorie ID d'événement RDS Description

échec

RDS- EVENT -0243 RDSImpossible de fournir de la capacité pour le proxy car il n'y a pas assez d'adresses IP disponibles dans vos sous-réseaux. Pour résoudre ce problème, veillez à ce que vos sous-réseaux aient le nombre minimum d'adresses IP inutilisées. Pour déterminer le nombre recommandé pour votre classe d'instances, consultez Planification de la capacité des adresses IP.

échec

RDS- EVENT -0275

RDSlimité certaines connexions au proxy de base de données name. Le nombre de demandes de connexion simultanées du client au proxy a dépassé la limite.

Vous pouvez rencontrer les problèmes suivants lors de la création d'un proxy ou de la connexion à un proxy.

Erreur Causes ou solutions de contournement

403: The security token included in the request is invalid

Sélectionnez un IAM rôle existant au lieu de choisir d'en créer un nouveau.

Vous pouvez rencontrer les problèmes suivants lors de la connexion à un My SQL proxy.

Erreur Causes ou solutions de contournement
ERROR 1040 (HY000): Connections rate limit exceeded (limit_value) Le taux de demandes de connexion du client au proxy a dépassé la limite.
ERROR 1040 (HY000): IAM authentication rate limit exceeded Le nombre de demandes simultanées avec IAM authentification du client auprès du proxy a dépassé la limite.
ERROR 1040 (HY000): Number simultaneous connections exceeded (limit_value) Le nombre de demandes de connexion simultanée du client au proxy a dépassé la limite.

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

Le secret Secrets Manager utilisé par le proxy ne correspond pas au nom d'utilisateur et au mot de passe d'un utilisateur de base de données existant. Mettez à jour les informations d'identification dans le secret Secrets Manager ou assurez-vous que l'utilisateur de base de données existe et possède le même mot de passe que celui du secret.
ERROR 1105 (HY000): Unknown error Une erreur inconnue s'est produite.
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of value

La valeur définie pour le paramètre character_set_client n'est pas valide. Par exemple, la valeur n'ucs2est pas valide car elle peut faire planter My SQL server.

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

Vous avez activé le paramètre Require Transport Layer Security dans le proxy, mais votre connexion l'a inclus ssl-mode=DISABLED dans Mon SQL client. Effectuez l'une des actions suivantes :

  • Désactivez le paramètre Exiger la sécurité de la couche de transport pour le proxy.

  • Connectez-vous à la base de données en utilisant le paramètre minimum de ssl-mode=REQUIRED dans Mon SQL client.

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

La prise TLS de contact avec le proxy a échoué. Les causes possibles sont notamment les suivantes :

  • SSLest obligatoire mais le serveur ne le prend pas en charge.

  • Une erreur interne du serveur s'est produite.

  • Une mauvaise négociation s'est produite.

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

Le proxy a expiré en attendant l'obtention d'une connexion à la base de données. Les causes possibles sont notamment les suivantes :

  • Le proxy n'est pas en mesure d'établir une connexion à la base de données, car le nombre maximal de connexions a été atteint.

  • Le proxy n'est pas en mesure d'établir une connexion à la base de données, car la base de données n'est pas disponible.

Vous pouvez rencontrer les problèmes suivants lors de la connexion à un SQL proxy Postgre.

Erreur Cause Solution

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

L'utilisateur a essayé de se connecter à la base de données en utilisant l'IAMauthentification avec le paramètre sslmode=disable du SQL client Postgre.

L'utilisateur doit se connecter à la base de données en utilisant le paramètre minimum de sslmode=require dans le SQL client Postgre. Pour plus d'informations, consultez la documentation de SQLSSLsupport de Postgre.

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

Il n'y a pas de secret Secrets Manager pour ce rôle.

Ajoutez un secret Secrets Manager pour ce rôle. Pour de plus amples informations, veuillez consulter Configuration des politiques AWS Identity and Access Management (IAM) pour le RDS proxy.

ERROR 28000: RDS supports only IAM, MD5, or SCRAM authentication.

Le client de base de données utilisé pour se connecter au proxy utilise un mécanisme d'authentification qui n'est actuellement pas pris en charge par le proxy.

Si vous n'utilisez pas l'IAMauthentification, utilisez l'authentification par SCRAM mot de passe MD5 ou.

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

Le client de base de données utilisé pour la connexion au proxy n'envoie pas de nom d'utilisateur lorsqu'il tente d'établir une connexion.

Assurez-vous de définir un nom d'utilisateur lorsque vous configurez une connexion au proxy à l'aide du SQL client Postgre de votre choix.

ERROR 28000: IAM is allowed only with SSL connections.

Un client a essayé de se connecter à l'aide de IAM l'authentification, mais cela SSL n'a pas été activé.

Activez SSL dans le SQL client Postgre.

ERROR 28000: This RDS Proxy requires TLS connections.

L'utilisateur a activé l'option Require Transport Layer Security mais a essayé de se connecter sslmode=disable au SQL client Postgre.

Pour corriger cette erreur, effectuez l'une des opérations suivantes :

  • Désactivez l'option Exiger la sécurité de la couche de transport du proxy.

  • Connectez-vous à la base de données en utilisant le paramètre minimum de sslmode=allow dans le SQL client Postgre.

ERROR 28P01: IAM authentication failed for user user_name. Check the IAM token for this user and try again.

Cette erreur peut être due aux raisons suivantes :

  • Le client a fourni un nom IAM d'utilisateur incorrect.

  • Le client a fourni un jeton IAM d'autorisation incorrect pour l'utilisateur.

  • Le client utilise une IAM politique qui ne dispose pas des autorisations nécessaires.

  • Le client a fourni un jeton IAM d'autorisation expiré pour l'utilisateur.

Pour corriger cette erreur, procédez comme suit :

  1. Vérifiez que l'IAMutilisateur indiqué existe.

  2. Vérifiez que le jeton IAM d'autorisation appartient à l'IAMutilisateur fourni.

  3. Vérifiez que la IAM politique dispose des autorisations adéquates pourRDS.

  4. Vérifiez la validité du jeton IAM d'autorisation utilisé.

ERROR 28P01: The password that was provided for the role role_name is wrong.

Le mot de passe de ce rôle ne correspond pas au secret Secrets Manager.

Vérifiez le secret de ce rôle dans Secrets Manager pour voir si le mot de passe est le même que celui utilisé dans votre SQL client Postgre.

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

Le IAM jeton utilisé pour l'IAMauthentification présente un problème.

Générez un nouveau jeton d'authentification et utilisez-le dans une nouvelle connexion.

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

Le SQL client Postgre utilisé pour se connecter au proxy utilise un protocole antérieur à la version 3.0.

Utilisez un SQL client Postgre plus récent qui prend en charge le protocole de messagerie 3.0. Si vous utilisez le Postgre SQL psqlCLI, utilisez une version supérieure ou égale à 7.4.

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

Le SQL client Postgre utilisé pour se connecter au proxy essaie d'utiliser le mode de réplication en continu, qui n'est actuellement pas pris en charge par le RDS proxy.

Désactivez le mode de réplication en continu dans le SQL client Postgre utilisé pour la connexion.

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

Par le biais du message de démarrage, le SQL client Postgre utilisé pour se connecter au proxy demande une option qui n'est actuellement pas prise en charge par le RDS proxy.

Désactivez l'option indiquée comme non prise en charge dans le message ci-dessus dans le SQL client Postgre utilisé pour la connexion.

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

Le nombre de demandes simultanées avec IAM authentification du client auprès du proxy a dépassé la limite.

Réduisez le taux d'établissement des connexions utilisant l'IAMauthentification d'un SQL client Postgre.

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

Le nombre de demandes de connexion simultanée du client au proxy a dépassé la limite.

Réduisez le nombre de connexions actives entre les SQL clients Postgre et ce RDS proxy.

ERROR 53300: Rate of connection to proxy exceeded number_value.

Le taux de demandes de connexion du client au proxy a dépassé la limite.

Réduisez le taux d'établissement des connexions depuis un SQL client Postgre.

ERROR XX000: Unknown error.

Une erreur inconnue s'est produite.

Contactez le AWS Support pour étudier le problème.

ERROR 08000: Timed-out waiting to acquire database connection.

Le proxy a expiré en attendant l'obtention d'une connexion à la base de données. Les causes possibles sont notamment les suivantes :

  • Le proxy ne peut pas établir une connexion à la base de données, car le nombre maximal de connexions a été atteint.

  • Le proxy ne peut pas établir une connexion à la base de données, car la base de données n'est pas disponible.

Les solutions possibles sont les suivantes :

  • Vérifiez la cible de l'état du de l' de données pour voir si elle n'est pas disponible.

  • Vérifiez s'il y a des transactions et/ou des requêtes de longue durée en cours d'exécution. Elles peuvent utiliser les connexions de base de données à partir du groupe de connexions pendant une longue période.

ERROR XX000: Request returned an error: database_error.

La connexion à la base de données établie à partir du proxy a renvoyé une erreur.

La solution dépend de l'erreur de base de données spécifique. Par exemple : Request returned an error: database "your-database-name" does not exist. Cela signifie que le nom de base de données spécifié n'existe pas sur le serveur de base de données. Ou cela signifie que le nom d'utilisateur utilisé comme nom de base de données (si un nom de base de données n'est pas spécifié) n'existe pas sur le serveur.