Fehlersuche für RDS Proxy - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlersuche für RDS Proxy

Im Folgenden finden Sie Tipps zur Fehlerbehebung für einige häufige Probleme mit RDS Proxy und Informationen zu CloudWatch Protokollen für RDS Proxy.

In den RDS Proxy-Protokollen wird jedem Eintrag der Name des zugehörigen Proxy-Endpunkts vorangestellt. Dieser Name kann derjenige sein, den Sie für einen benutzerdefinierten Endpunkt angegeben haben. Oder es kann der spezielle Name default für den Standardendpunkt eines Proxys sein, der Lese-/Schreibanforderungen ausführt. Weitere Informationen zu den Proxy-Endpunkten finden Sie unter Arbeiten mit Amazon RDS Proxy-Endpunkten.

Überprüfen der Konnektivität für einen Proxy

Sie können die folgenden Befehle verwenden, um zu überprüfen, ob alle Komponenten wie Proxy, Datenbank und Rechen-Instances in der Verbindung miteinander kommunizieren können.

Untersuchen Sie den Proxy selbst mit dem describe-db-proxies Befehl . Überprüfen Sie auch die zugehörige Zielgruppe mit dem Befehl describe-db-proxy-target-groups. Überprüfen Sie, ob die Details der Ziele mit der RDS-DB-Instance übereinstimmen, die Sie dem Proxy zuordnen möchten. Verwenden Sie Befehle wie die folgenden.

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

Um zu bestätigen, dass der Proxy eine Verbindung mit der zugrunde liegenden Datenbank herstellen kann, überprüfen Sie mit dem describe-db-proxy-targets Befehl die in den Zielgruppen angegebenen Ziele. Verwenden Sie einen Befehl wie den folgenden.

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

Die Ausgabe des describe-db-proxy-targets Befehls enthält ein -TargetHealthFeld. Sie können die Felder State, Reason und Description in TargetHealth überprüfen, um festzustellen, ob der Proxy mit der zugrunde liegenden DB-Instance kommunizieren kann.

  • Der Wert State für AVAILABLE gibt an, dass der Proxy eine Verbindung mit der DB-Instance herstellen kann.

  • Der Wert State für UNAVAILABLE weist auf ein temporäres oder dauerhaftes Verbindungsproblem hin. Überprüfen Sie in diesem Fall die Felder Reason und Description. Wenn beispielsweise der Reason den Wert PENDING_PROXY_CAPACITY hat, versuchen Sie erneut , eine Verbindung herzustellen, nachdem der Proxy seinen Skalierungsvorgang beendet hat. Wenn Reason den Wert UNREACHABLE, CONNECTION_FAILED oder AUTH_FAILURE hat, verwenden Sie die Erläuterung aus dem Feld Description, um das Problem leichter zu diagnostizieren.

  • Das Feld State hat möglicherweise für kurze Zeit einen Wert von REGISTERING, bevor Sie zu AVAILABLE oder UNAVAILABLE wechseln.

Wenn der folgende Netcat-Befehl (nc) erfolgreich ist, können Sie über die EC2-Instance oder ein anderes System, auf dem Sie angemeldet sind, auf den Proxy-Endpunkt zugreifen. Dieser Befehl meldet einen Fehler, wenn Sie sich nicht in derselben VPC wie der Proxy und die zugehörige Datenbank befinden. Möglicherweise können Sie sich direkt bei der Datenbank anmelden, ohne sich in derselben VPC zu befinden. Sie können sich jedoch nur am Proxy anmelden, wenn Sie sich in derselben VPC befinden.

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

Sie können die folgenden Befehle verwenden, um sicherzustellen, dass Ihre EC2-Instance über die erforderlichen Eigenschaften verfügt. Insbesondere muss die VPC für die EC2-Instance mit der VPC für der Proxy eine Verbindung herstellt.

aws ec2 describe-instances --instance-ids your_ec2_instance_id

Untersuchen Sie die für den Proxy verwendeten Secrets Manager-Secrets.

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

Stellen Sie sicher, dass das von angezeigte SecretString Feld als JSON-Zeichenfolge codiert get-secret-value ist, die die password Felder username und enthält. Das folgende Beispiel zeigt das Format des SecretString-Feldes.

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

Häufige Probleme und Lösungen

In diesem Abschnitt werden einige häufige Probleme und potenzielle Lösungen bei der Verwendung von RDS Proxy beschrieben.

Wenn die TargetHealth Beschreibung nach dem Ausführen des aws rds describe-db-proxy-targets CLI-Befehls lautetProxy does not have any registered credentials, überprüfen Sie Folgendes:

  • Es sind Anmeldeinformationen registriert, damit der Benutzer auf den Proxy zugreifen kann.

  • Die IAM-Rolle für den Zugriff auf das Secrets-Manager-Secret, das vom Proxy verwendet wird, ist gültig.

Beim Erstellen eines DB-Proxys oder beim Herstellen einer Verbindung mit einem DB-Proxy können die folgenden RDS-Ereignisse auftreten.

Kategorie RDS-Ereignis-ID Beschreibung

Ausfall

RDS-EVENT-0243 RDS konnte keine Kapazität für den Proxy bereitstellen, da in Ihren Subnetzen nicht genügend IP-Adressen verfügbar sind. Stellen Sie sicher, dass Ihre Subnetze die Mindestanzahl unbenutzter IP-Adressen aufweisen, um das Problem zu lösen. Informationen zur Bestimmung der empfohlenen Anzahl für Ihre Instance-Klasse finden Sie unter Planen der Kapazität von IP-Adressen.

Ausfall

RDS-EVENT-0275

RDS hat einige Verbindungen zum DB-Proxy-Namen gedrosselt. Die Anzahl gleichzeitiger Verbindungsanforderungen vom Client zum Proxy hat das Limit überschritten.

Beim Erstellen eines neuen Proxys oder beim Herstellen einer Verbindung mit einem Proxy können die folgenden Probleme auftreten.

Fehler Ursachen oder Problemumgehungen

403: The security token included in the request is invalid

Wählen Sie eine vorhandene IAM-Rolle aus, anstatt eine neue zu erstellen.

Beim Herstellen einer Verbindung mit einem MySQL-Proxy können die folgenden Probleme auftreten.

Fehler Ursachen oder Problemumgehungen
ERROR 1040 (HY000): Connections rate limit exceeded (limit_value) Die Rate der Verbindungsanforderungen vom Client zum Proxy hat den Grenzwert überschritten.
ERROR 1040 (HY000): IAM authentication rate limit exceeded Die Anzahl der gleichzeitigen Anforderungen mit IAM-Authentifizierung vom Client an den Proxy hat den Grenzwert überschritten.
ERROR 1040 (HY000): Number simultaneous connections exceeded (limit_value) Die Anzahl der gleichzeitigen Verbindungsanforderungen vom Client zum Proxy hat den Grenzwert überschritten.

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

Das vom Proxy verwendete Secrets Manager-Geheimnis stimmt nicht mit dem Benutzernamen und dem Passwort eines vorhandenen Datenbankbenutzers überein. Aktualisieren Sie entweder die Anmeldeinformationen im Secrets Manager-Geheimnis oder stellen Sie sicher, dass der Datenbankbenutzer vorhanden ist und über das gleiche Passwort wie im Geheimnis verfügt.
ERROR 1105 (HY000): Unknown error Es ist ein unbekannter Fehler aufgetreten.
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of value

Der für den character_set_client-Parameter gesetzte Wert ist ungültig. Beispielsweise ist der Wert ucs2 ungültig, da er den MySQL-Server zum Absturz bringen kann.

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

Sie haben die Einstellung Transport Layer Security erfordern im Proxy aktiviert, aber Ihre Verbindung enthielt den Parameter ssl-mode=DISABLED im MySQL-Client. Führen Sie eine der folgenden Aufgaben aus:

  • Deaktivieren Sie die Einstellung Transport Layer Security erfordern.

  • Stellen Sie eine Verbindung mit der Datenbank mit der Mindesteinstellung ssl-mode=REQUIRED im MySQL-Client her.

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

Der TLS-Handshake an den Proxy ist fehlgeschlagen. Einige mögliche Gründe sind:

  • SSL ist erforderlich, aber der Server unterstützt dies nicht.

  • Es ist ein interner Serverfehler aufgetreten.

  • Es ist ein fehlerhafter Handshake aufgetreten.

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

Auf dem Proxy ist beim Herstellen einer Datenbankverbindung eine Zeitüberschreitung aufgetreten. Einige mögliche Gründe sind:

  • Der Proxy kann keine Datenbankverbindung herstellen, da die maximale Anzahl an Verbindungen erreicht wurde.

  • Der Proxy kann keine Datenbankverbindung herstellen, da die Datenbank nicht verfügbar ist.

Beim Herstellen einer Verbindung mit einem PostgreSQL-Proxy können die folgenden Probleme auftreten.

Fehler Ursache Lösung

IAM authentication is allowed only with SSL connections.

Der Benutzer hat versucht, mithilfe der IAM-Authentifizierung mit der Einstellung sslmode=disable im PostgreSQL-Client eine Verbindung zur Datenbank herzustellen.

Der Benutzer muss eine Verbindung mit der Datenbank mit der Mindesteinstellung sslmode=require im PostgreSQL-Client herstellen. Weitere Informationen finden Sie in der PostgreSQL SSL Support-Dokumentation.

This RDS Proxy requires TLS connections.

Der Benutzer hat die Option Transport Layer Security erfordern aktiviert, hat aber versucht, auf dem PostgreSQL-Client eine Verbindung mit sslmode=disable herzustellen.

Führen Sie einen der folgenden Schritte aus, um diesen Fehler zu beheben:

  • Deaktivieren Sie die Option Transport Layer Security erfordern des Proxys.

  • Herstellen einer Verbindung mit der Datenbank mit der Mindesteinstellung sslmode=allow im PostgreSQL-Client.

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

Dies kann folgende Ursachen haben:

  • Der Client hat den falschen IAM-Benutzernamen angegeben.

  • Der Client hat ein falsches IAM-Autorisierungstoken für den Benutzer angegeben.

  • Der Client verwendet eine IAM-Richtlinie, die nicht über die erforderlichen Berechtigungen verfügt.

  • Der Client hat ein abgelaufenes IAM-Autorisierungstoken für den Benutzer bereitgestellt.

Gehen Sie folgendermaßen vor, um diesen Fehler zu beheben:

  1. Bestätigen Sie, dass der bereitgestellte IAM-Benutzer vorhanden ist.

  2. Vergewissern Sie sich, dass das IAM-Autorisierungstoken dem bereitgestellten IAM-Benutzer gehört.

  3. Bestätigen Sie, dass die IAM-Richtlinie über ausreichende Berechtigungen für RDS verfügt.

  4. Überprüfen Sie die Gültigkeit des verwendeten IAM-Autorisierungstokens.

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

Es gibt kein Secrets Manager-Secret für diese Rolle.

Fügen Sie ein Secrets Manager-Secret diese Rolle hinzu. Weitere Informationen finden Sie unter Richtlinien AWS Identity and Access Management (IAM) für RDS Proxy einrichten.

RDS supports only IAM, MD5, or SCRAM authentication.

Der Datenbank-Client, der für die Verbindung mit dem Proxy verwendet wird, nutzt einen Authentifizierungsmechanismus, der derzeit vom Proxy nicht unterstützt wird.

Wenn Sie keine IAM-Authentifizierung verwenden, verwenden Sie die MD5- oder SCRAM-Passwortauthentifizierung.

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

Der Datenbankclient, der zum Herstellen einer Verbindung mit dem Proxy verwendet wird, sendet beim Versuch, eine Verbindung herzustellen, keinen Benutzernamen.

Stellen Sie sicher, dass Sie beim Einrichten einer Verbindung zum Proxy mit dem PostgreSQL-Client Ihrer Wahl einen Benutzernamen definieren.

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

Der PostgreSQL-Client, mit dem eine Verbindung zum Proxy hergestellt wird, verwendet ein Protokoll, das älter als 3.0 ist.

Verwenden Sie einen neueren PostgreSQL-Client, der das 3.0-Messaging-Protokoll unterstützt. Wenn Sie die psql PostgreSQL-CLI verwenden, verwenden Sie Version 7.4 oder höher.

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

Der PostgreSQL-Client, der für die Verbindung mit dem Proxy verwendet wird, versucht, den Streaming-Replikationsmodus zu verwenden, der derzeit vom RDS-Proxy nicht unterstützt wird.

Deaktivieren Sie den Streaming-Replikationsmodus im PostgreSQL-Client, der für die Verbindung verwendet wird.

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

Über die Startmeldung fordert der PostgreSQL-Client, der für die Verbindung mit dem Proxy verwendet wird, eine Option an, die derzeit vom RDS-Proxy nicht unterstützt wird.

Deaktivieren Sie die Option, die in der obigen Nachricht als nicht unterstützt angezeigt wird, in dem PostgreSQL-Client, der für die Verbindung verwendet wird.

The IAM authentication failed because of too many competing requests.

Die Anzahl der gleichzeitigen Anforderungen mit IAM-Authentifizierung vom Client an den Proxy hat den Grenzwert überschritten.

Reduzieren Sie die Rate, mit der Verbindungen mit IAM-Authentifizierung von einem PostgreSQL-Client hergestellt werden.

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

Die Anzahl der gleichzeitigen Verbindungsanforderungen vom Client zum Proxy hat den Grenzwert überschritten.

Reduzieren Sie die Anzahl der aktiven Verbindungen von PostgreSQL-Clients zu diesem RDS-Proxy.

Rate of connection to proxy exceeded number_value.

Die Rate der Verbindungsanforderungen vom Client zum Proxy hat den Grenzwert überschritten.

Reduzieren Sie die Rate, mit der Verbindungen von einem PostgreSQL-Client hergestellt werden.

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

Das Passwort für diese Rolle stimmt nicht mit dem Secrets Manager-Secret überein.

Überprüfen Sie den Schlüssel für diese Rolle in Secrets Manager, um festzustellen, ob das Passwort mit dem in Ihrem PostgreSQL-Client verwendeten Passwort übereinstimmt.

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

Es gibt ein Problem mit dem IAM-Token, das für die IAM-Authentifizierung verwendet wird.

Generieren Sie ein neues Authentifizierungstoken und verwenden Sie es in einer neuen Verbindung.

IAM is allowed only with SSL connections.

Ein Client hat versucht, eine Verbindung über die IAM-Authentifizierung herzustellen, aber SSL war nicht aktiviert.

Aktivieren Sie SSL im PostgreSQL-Client.

Unknown error.

Es ist ein unbekannter Fehler aufgetreten.

Wenden Sie sich an den AWS Support, um das Problem zu untersuchen.

Timed-out waiting to acquire database connection.

Auf dem Proxy ist beim Herstellen einer Datenbankverbindung eine Zeitüberschreitung aufgetreten. Einige mögliche Gründe sind:

  • Der Proxy kann keine Datenbankverbindung herstellen, da die maximale Anzahl an Verbindungen erreicht wurde.

  • Der Proxy kann keine Datenbankverbindung herstellen, da die Datenbank nicht verfügbar ist.

Folgende Lösungen sind möglich:

  • Überprüfen Sie den Status des Ziels , um festzustellen, ob dies nicht verfügbar ist.

  • Prüfen Sie, ob lang andauernde Transaktionen und/oder Abfragen ausgeführt werden. Diese können Datenbankverbindungen aus dem Verbindungspool für eine lange Zeit belegen.

Request returned an error: database_error.

Die vom Proxy hergestellte Datenbankverbindung hat einen Fehler zurückgegeben.

Die Lösung hängt vom spezifischen Datenbankfehler ab. Ein Beispiel is: Request returned an error: database "your-database-name" does not exist. Das bedeutet, dass der angegebene Datenbankname nicht auf dem Datenbankserver existiert. Oder es bedeutet, dass der als Datenbankname verwendete Benutzername (wenn kein Datenbankname angegeben ist) auf dem Server nicht vorhanden ist.