Wie behebe ich Probleme mit dem UNLOAD-Befehl und dem S3-Zugriff in Amazon Redshift?
Wenn ich den Befehl UNLOAD in Amazon Redshift ausführe, erhalte ich eine Fehlermeldung.
Kurzbeschreibung
Wenn du UNLOAD-Befehle in Amazon Redshift ausführst, können aus den folgenden Gründen Fehler auftreten:
- Der Ziel-Bucket oder das Präfix von Amazon Simple Storage Service (Amazon S3) enthält vorhandene Objekte.
- Du hast die AWS Identity and Access Management (IAM)-Rolle nicht an das Amazon Redshift-Cluster angehängt.
- Die IAM-Rolle hat nicht die erforderlichen S3-Bucket-Berechtigungen.
- Der Datenbankbenutzer hat nicht die erforderlichen Tabellen- oder Schemaberechtigungen.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Objekte sind im S3-Bucket oder -Präfix vorhanden
Wenn Objekte bereits im Ziel-S3-Bucket oder -Präfix vorhanden sind, wird möglicherweise die folgende Fehlermeldung angezeigt:
„Specified unload destination on S3 is not empty. Consider using a different bucket / prefix, manually removing the target files in S3, or using the ALLOWOVERWRITE option.“
Führe den folgenden UNLOAD-Befehl mit dem Parameter ALLOWOVERWRITE aus, um den Fehler zu beheben:
UNLOAD ('<SELECT query>') TO 's3://S3 bucket or prefix' IAM_ROLE 'IAM Role' ALLOWOVERWRITE;
Hinweis: Ersetze S3-Bucket oder **Präfix ** durch den S3-Bucket oder -Präfix und IAM-Rolle durch die IAM-Rolle.
Weitere Informationen findest du unter Parameter.
Du hast die IAM-Rolle nicht mit dem Cluster verknüpft
Wenn du die im UNLOAD-Befehl angegebene IAM-Rolle nicht mit dem Amazon Redshift-Cluster verknüpft hast, wird die folgende Fehlermeldung angezeigt:
„UnauthorizedException, error type : 138, message: The requested role is not associated to cluster".
Um das Problem zu lösen, verknüpfe die IAM-Rolle mit deinem Amazon-Redshift-Cluster.
Führe die folgenden Schritte aus:
-
Öffne die Amazon Redshift-Konsole oder die AWS-CLI.
-
Führe einen der folgenden Befehle aus:
Führe für Amazon Redshift Provisioned den AWS-CLI-Befehl modify-cluster-iam-roles aus:## Redshift Provisioned aws redshift modify-cluster-iam-roles \ --cluster-identifier "Cluster Name" \ --add-iam-roles "IAM Role ARN"Hinweis: Ersetze den Cluster-Namen durch den Namen des Clusters und den IAM-Rollen-ARN durch den Amazon-Ressourcennamen (ARN) der IAM-Rolle.
Führe für Amazon Redshift Serverless den AWS-CLI-Befehl update-namespace aus:## Redshift Serverless aws redshift-serverless update-namespace \ --namespace-name Namespace Name \ --iam-roles "IAM Role ARN"Hinweis: Ersetze Namespace-Namen durch den Namen des Namespace und IAM-Rollen-ARN durch den ARN der IAM-Rolle.
Weitere Informationen findest du unter erwalten der IAM-Rollenzuordnung mit einem Cluster.
Die IAM-Rolle hat nicht die erforderlichen S3-Berechtigungen
Wenn die IAM-Rolle nicht über die erforderlichen S3-Berechtigungen verfügt, schlägt der UNLOAD-Befehl fehl und du erhältst die folgende Fehlermeldung:
„S3ServiceException:User: arn:aws:sts::<Account ID>:assumed-role/<IAM Role Name>RedshiftIamRoleSession is not authorized to perform: s3:PutObject on resource: “<S3 Object Path>„ because no identity-based policy“.
Stelle sicher, dass die IAM-Rolle über die erforderlichen IAM-Berechtigungen verfügt, um Daten erfolgreich in den Ziel-S3-Bucket zu entladen.
Der Datenbankbenutzer hat nicht die erforderlichen Tabellen- oder Schemaberechtigungen
Wenn der Datenbankbenutzer nicht über die erforderlichen Berechtigungen für die Tabelle oder das Schema verfügt, wird dem Benutzer möglicherweise eine der folgenden Fehlermeldungen angezeigt:
- „ERROR: permission denied for schema <Schema Name>“.
- „ERROR: permission denied for relation <Table Name>“.
Um dem Datenbankbenutzer die USAGE-Berechtigung für das Schema und die SELECT-Berechtigung für die Tabelle zu gewähren, führe einen der folgenden GRANT-Befehle aus:
GRANT USAGE ON SCHEMA Schema Name TO DB User Name;
GRANT SELECT ON TABLE Table Name TO DB User Name;
Hinweis: Ersetze in den vorherigen Befehlen den Schemanamen durch den Namen des Schemas, den Tabellennamen durch den Namen der Tabelle und den Benutzernamen durch den Benutzernamen des Benutzers.
Zusätzliche Problembehandlung
Informationen zur Identifizierung der Abfrage-ID und der Fehlermeldungen findest du unter STL_QUERY oder SYS_QUERY_HISTORY.
Weitere Informationen findest du unter STL_ERROR oder SYS_UNLOAD_HISTORY.
- Themen
- Analytics
- Tags
- Amazon Redshift
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 7 Monaten
AWS OFFICIALAktualisiert vor 6 Monaten
AWS OFFICIALAktualisiert vor 7 Monaten