Wie behebe ich Fehler, wenn ich Daten zwischen Amazon Aurora und Amazon S3 lade?
Ich möchte Fehler beheben, wenn ich Daten zwischen Amazon Aurora und Amazon Simple Storage Service (Amazon S3) lade.
Kurzbeschreibung
Um Daten als Textdatei zwischen Amazon Aurora und Amazon S3 zu laden, verwende den Befehl SELECT INTO OUTFILE S3 oder den Befehl LOAD DATA FROM S3. Wenn du einen der Befehle ausführst, erhältst du möglicherweise Fehler wie die folgenden:
- Error Code: 1871. Fehlende Anmeldeinformationen
- Falscher Befehl: fehlendes Schlüsselwort für Datei/Präfix/Manifest
- Fehlercode: 1045. Fehler „Zugriff verweigert“
- Fehlercode: 1815. Interner Fehler: Initialisierung nicht möglich
- Fehlercode: 1871. Die S3-API hat einen Fehler zurückgegeben: Zugriff verweigert
Lösung
Den Befehl SELECT INTO OUTFILE S3 oder LOAD DATA FROM S3 ausführen
Führe die folgenden Schritte aus:
-
Erstelle einen S3-Bucket und kopiere den ARN.
-
Erstelle eine AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Richtlinie mit Berechtigungen für den S3-Bucket. Gib den Bucket-ARN an und gewähre dann Berechtigungen für die Objekte innerhalb des Bucket-ARN. Wenn du keine FullS3Access-Richtlinie verwendest, führe eine benutzerdefinierte Richtlinie aus, die der folgenden ähnelt:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::<your_bucket_name>", "arn:aws:s3:::<your_bucket_name>/*" ] } ] }
-
Erstelle eine IAM-Rolle für den Amazon Relational Database Service (Amazon RDS)-Service. Füge dann die von dir erstellte IAM-Richtlinie an. Die Vertrauensbeziehung sieht ähnlich wie folgt aus:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Erstelle eine benutzerdefinierte DB-Cluster-Parametergruppe für Amazon Aurora. Bearbeite für Amazon Aurora MySQL-kompatible Edition-Version 1 oder 2 aurora_select_into_s3_role oder aws_default_s3_role auf den Wert des IAM-Rollen-ARN. Bearbeite für Aurora MySQL-kompatible Version 3 die aws_default_s3_role auf den Wert des IAM-Rollen-ARN.
-
Füge die IAM-Rolle an den DB-Cluster an, den du erstellt hast. Weitere Informationen findest du unter Zuordnen einer IAM-Rolle zu einem Amazon Aurora MySQL-DB-Cluster.
-
Führe den folgenden Befehl aus, um einen neuen Benutzer zu erstellen:
CREATE USER 'testsaveload'@'%' IDENTIFIED BY 'somepassword';show grants for 'testsaveload'@'%';
-
Führe den folgenden Befehl aus, um dem Benutzer Berechtigungen zu gewähren:
GRANT SELECT, CREATE, INSERT, DROP ON *.* TO 'testsaveload'@'%';
-
Verwende für Aurora MySQL Version 1 oder 2 die folgende Anweisung:
GRANT SELECT INTO S3 ON *.* TO 'testsaveload'@'%';GRANT LOAD FROM S3 ON *.* TO 'testsaveload'@'%';
-
Verwende für Aurora MySQL Version 3 die folgende Anweisung:
GRANT AWS_SELECT_S3_ACCESS TO 'testsaveload'@'%'GRANT AWS_LOAD_S3_ACCESS TO 'testsaveload'@'%';
Hinweis: Verwende in Aurora MySQL Version 3 den DB-Cluster-Parameter, um activate_all_roles_on_login zu aktivieren. Wenn ein Benutzer eine Verbindung zu einer DB-Instance herstellt, werden alle Rollen automatisch aktiviert. Weitere Informationen findest du unter Gewähren von Berechtigungen zum Laden von Daten in Amazon Aurora MySQL. Führe den Befehl SELECT INTO OUTFILE S3 oder LOAD DATA INTO S3 aus:
SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';LOAD DATA FROM S3 PREFIX 's3-us-east-1://tests3saveloadaurora/testfile1prefix.part_00000' INTO TABLE test3001; LOAD DATA FROM S3 's3-us-east-1://tests3saveloadaurora/prefix3.part_00000' INTO TABLE test3000;
Error Code: 1871. Fehlende Anmeldeinformationen
Wenn das Anfügen der IAM-Rolle an den DB-Cluster fehlt, lies Schritt 5 im Abschnitt „Den Befehl SELECT INTO OUTFILE S3 oder LOAD DATA FROM S3 ausführen“. Wenn der Rollen-ARN nicht angegeben ist und nur der Rollenname in der Parametergruppe aufgeführt ist, fahre mit Schritt 2 fort.
Incorrect Command: missing file/prefix/manifest keyword
Wenn du diesen Fehler erhältst, stelle sicher, dass das Befehlsschlüsselwort korrekt ist.
Error code: 1045. Access denied error
Wenn du einen falschen Befehl eingibst, erhältst du möglicherweise eine Fehlermeldung wie „1045: Access denied for user ''testsaveload'@'%';“. Beispielsweise ist der folgende Befehl falsch:
SELECT * from test1.test2034 INTO OUTFILE 's3://tests3saveloadaurora/testfile1prefix.part_00000';
Vergewissere dich, dass das Schlüsselwort S3 in die Abfrage eingegeben wurde, z. B. im folgenden Befehl:
SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';
Error code: 1815. Interner Fehler: Unable to initialize
Wenn du diese Fehlermeldung erhältst, führe die folgenden Schritte aus:
- Vergewissere dich, dass die Datei in deinem S3-Bucket vorhanden ist, und stelle dann sicher, dass der in deinem Skript angegebene Name mit dem Dateinamen übereinstimmt. Vergewissere dich, dass die S3-Bucket-, Ordner- und Objektnamen mit dem Ladebefehl übereinstimmen.
- Überprüfe Schritt 2 im Abschnitt „Den Befehl SELECT INTO OUTFILE S3 oder LOAD DATA FROM S3 ausführen“, um sicherzustellen, dass du die richtigen Berechtigungen festgelegt hast.
- Wenn das LOAD-Skript einen Syntaxfehler enthält, überprüfe das LOAD-Skript und führe den Befehl erneut aus.
- Wenn sich der S3-Bucket und der DB-Cluster in unterschiedlichen Regionen befinden und im Pfad zum S3-Bucket der Region-Wert fehlt, findest du weitere Informationen unter Amazon Simple Storage Service-Endpunkte und -Kontingente.
- Wenn die Netzwerkkonfiguration für die Leser- und Schreiber-Instances unterschiedlich ist, findest du weitere Informationen unter Amazon Aurora-Endpunktverbindungen.
Error Code: 1871. Die S3-API hat einen Fehler zurückgegeben: Access Denied
Möglicherweise erhältst du diesen Fehler, wenn der S3-Bucket verschlüsselt ist oder wenn sich im S3-Bucket eine verschlüsselte Datei befindet. Wenn ServerSideEncryptionConfigurationExists nicht falsch ist, füge kms:* zu der Richtlinie hinzu, die du an die IAM-Rolle angefügt hast, die für die Durchführung der LOAD-Operation verwendet wird.
Wenn du beispielsweise keine FULLS3Access-Richtlinie verwendest, verwende die folgende benutzerdefinierte Beispielrichtlinie:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*", "kms:*" ], "Resource": [ "arn:aws:s3:::<your_bucket_name>", "arn:aws:s3:::<your_bucket_name>/*" ] } ] }
Error: S3 API returned error: Resource Not Found: No response body.
Um diesen Fehler zu beheben, stelle sicher, dass der ARN und der Bucket-Name korrekt sind.
Ähnliche Informationen
Daten aus Textdateien in einem Amazon S3-Bucket in einen Amazon Aurora MySQL-DB-Cluster laden
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren