Wie behebe ich Probleme, wenn ich Amazon RDS for Oracle mit Amazon S3 integriere?

Lesedauer: 7 Minute
0

Ich möchte Probleme und Fehler beheben, wenn ich Amazon Relational Database Service (Amazon RDS) for Oracle mit Amazon Simple Storage Service (Amazon S3) integriere.

Kurzbeschreibung

Wenn Sie Dateien zwischen einer Amazon RDS for Oracle DB-Instance und einem Amazon S3-Bucket übertragen, überprüfen Sie die folgenden Bedingungen:

  • Die DB-Instance und der S3-Bucket befinden sich in derselben AWS-Region.
  • Die DB-Instance hat den erforderlichen Zugriff auf den S3-Bucket.
  • Die DB-Instance ist einer Optionsgruppe zugeordnet, die die Option S3_INTEGRATION enthält.
  • Sie laden nur Dateien aus dem Oracle-Verzeichnisobjekt hoch. Dieses Verzeichnis kann ein vom Benutzer erstelltes Verzeichnis oder ein DATA_PUMP_DIR-Verzeichnis sein.
  • Für ein vom Benutzer erstelltes Verzeichnis muss der Benutzer, der den Upload und Download durchführt, über die erforderlichen Lese- und Schreibberechtigungen für das Verzeichnis verfügen. Weitere Informationen finden Sie unter Wie verwalte ich Benutzerberechtigungen und Rollen in meiner Amazon RDS for Oracle DB-Instance?
  • Wenn Sie Daten innerhalb von Unterverzeichnissen kopieren, geben Sie den Namen des Unterverzeichnisses explizit an, wenn Sie die rdsadmin-Pakete verwenden. Sie können die Option S3_INTEGRATION nicht verwenden, um Unterverzeichnisse zu kopieren.

Auflösung

Stellen Sie sicher, dass die DB-Instance den erforderlichen Zugriff auf den S3-Bucket hat

Prüfen Sie, ob Ihre DB-Instance über eine AWS Identity and Access Management (IAM)-Rolle mit den geringsten Rechten zum Hoch- und Runterladen von S3 verfügt:

  1. Öffnen Sie die Amazon-RDS-Konsole.
  2. Wählen Sie im Navigationsbereich Datenbanken aus.
  3. Wählen Sie die DB-Instance aus, die Sie überwachen möchten aus.
  4. Wählen Sie die Registerkarte Konnektivität und Sicherheit aus.
  5. Scrollen Sie nach unten zum Abschnitt Verwalten IAM-Rollen, um zu überprüfen, ob Sie über eine Aktiv IAM-Rolle mit den folgenden Rechten verfügen:
    S3:ListBucket
    S3:PutObject
    S3:GetObject

Sie können auch den AWS-CLI (AWS CLI) -Befehl Beschreiben-von-DB-Instancess verwenden, um zu überprüfen, ob Ihre DB-Instance über eine IAM-Rolle mit den folgenden geringsten Rechten verfügt:

aws rds describe-db-instances \
--db-instance-identifier example-db-instance \
--query 'DBInstances[*].[AssociatedRoles[*]]'

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Nachdem Sie überprüft haben, ob die IAM-Rolle existiert, führen Sie je nach Ihrem Ergebnis eine der folgenden Aktionen aus:

  • Wenn die IAM-Rolle vorhanden ist, aber nicht über die geringsten Rechte verfügt, ändern Sie die Rolle so, dass sie diese Berechtigungen enthält.
  • Wenn Sie keine IAM-Rolle mit den erforderlichen Berechtigungen haben, erstellen Sie eine IAM-Richtlinie. Erteilen Sie dieser Richtlinie die Berechtigungen, die Dateien aus dem S3-Bucket nach Amazon RDS zu übertragen. Achten Sie darauf, Buckets Berechtigungen auf Bucket-Ebene und Objekten Berechtigungen auf Objektebene hinzuzufügen, wenn Sie die IAM-Richtlinie erstellen.

Wenn Sie immer noch ein Problem mit den Bucket-Berechtigungen haben, ändern Sie die IAM-Rolle, um vollen Zugriff auf den S3-Bucket zu gewähren:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/*",
        "arn:aws:s3:::example-bucket"
      ]
    }
  ]
}

Wichtig: Dadurch wird die IAM-Rolle dahingehend geändert, dass sie vollen Zugriff nur gewährt, um zu testen, ob das Problem auf IAM-Rechte zurückzuführen ist. Nachdem Sie das Problem behoben haben, passen Sie die benutzerdefinierten Rechte nach Bedarf an.

Um Dateien in einen bestimmten Ordner in S3 hochzuladen, verwenden Sie den Parameter p_s3_prefix in der Prozedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, bevor Sie die Dateien hochladen.

Um beispielsweise Dateien in den Ordner Beispiel-Ordner in den S3-Bucket Beispiel-Bucket hochzuladen, fügen Sie die folgende IAM-Richtlinie hinzu:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket/example-folder/*"
      ]
    }
  ]
}

Stellen Sie sicher, dass die DB-Instance mit einer Optionsgruppe verknüpft ist, die die Option S3_INTEGRATION enthält

Prüfen Sie, ob Ihrer RDS-DB-Instance eine Optionsgruppe zugeordnet ist:

  1. Öffnen Sie die Amazon-RDS-Konsole.
  2. Wählen Sie im Navigationsbereich Datenbanken aus.
  3. Wählen Sie die DB-Instance aus, die Sie überwachen möchten aus.
  4. Wählen Sie die Registerkarte Konfiguration.
  5. Beachten Sie den Parameter Optionsgruppen.

Wenn sich diese Optionsgruppe nicht im Status Synchronisiert befindet und Sie die Option S3_INTEGRATION hinzufügen, wird die Option nicht erfolgreich hinzugefügt. Stellen Sie daher sicher, dass sich die Optionsgruppe im synchronisierten Zustand befindet.

Um zu überprüfen, ob sich diese Optionsgruppe im synchronisierten Status befindet, führen Sie den folgenden AWS-CLI-Befehl aus:

aws rds describe-db-instances \
--db-instance-identifier example-db-instance \
--query 'DBInstances[*].[OptionGroupMemberships[*]]'

Wenn sich die Optionsgruppe nicht im Status Synchronisiert befindet, wählen Sie die Registerkarte Protokolle und Ereignisse für Ihre Datenbank und scrollen Sie dann nach unten zum Abschnitt Aktuelle Ereignisse. Identifizieren Sie die Komponente, die verhindert, dass die Optionsgruppe synchronisiert ist, und entfernen Sie diese Komponente aus der Datenbank.

Wenn sich die Optionsgruppe im Status synchronisiert befindet, überprüfen Sie, ob die Option S3\ _INTEGRATION in der Optionsgruppe enthalten ist. Weitere Informationen finden Sie unter Auflisten der Optionen und Optionseinstellungen für eine Optionsgruppe. Wenn die Option S3_INTEGRATION nicht in der Optionsgruppe enthalten ist, fügen Sie die Option hinzu. Weitere Informationen finden Sie unter Hinzufügen der Amazon S3-Integrationsoption.

Hinweis: Wenn die Option S3_INTEGRATION nicht zu Ihrer DB-Instance hinzugefügt wird, erhalten Sie den Fehler ORA-00904: „RDSADMIN“. „RDSADMIN_S3_AUFGABEN“. „UPLOAD_TO_S3": Ungültiger Bezeichner“. Dieser Fehler weist darauf hin, dass die erforderlichen Verfahren zum Hochladen und Herunterladen nicht auf der DB-Instance erstellt wurden.

Das Hinzufügen der Option S3_INTEGRATION zu Amazon RDS führt nicht zu Ausfallzeiten. Wenn Sie die Option Sofort anwenden verwenden möchten, stellen Sie sicher, dass keine Wartungsaktionen ausstehen. Wenn ausstehende Aktionen vorhanden sind, werden diese Aktionen mit der Amazon S3-Integration wirksam. Weitere Informationen finden Sie unter Wartung einer DB-Instance.

Stellen Sie sicher, dass Sie Dateien nur aus dem vom Benutzer erstellten Oracle-Verzeichnisobjekt oder dem Verzeichnis DATA_PUMP_DIR hochladen/runterladen

Sie können nicht direkt in der Datenbank-Instance auf die S3-Dateien zugreifen. Um auf diese Dateien zuzugreifen, müssen Sie die Dateien in ein Verzeichnis auf dem RDS-Host kopieren, um darauf zugreifen zu können. Gehen Sie wie folgt vor, um Dateien von der DB-Instance in einen S3-Bucket hoch- oder runterzuladen:

  1. Um die Exportdateien in Amazon RDS nach S3 zu kopieren, erstellen Sie zunächst die Dumpdateien. Verwenden Sie dazu den Befehl expdp oder die API dbms_datapump im Verzeichnis DATA_DUMP_DIR oder im benutzerdefinierten Verzeichnis. Verwenden Sie dann die Prozedur rdsadmin.rdsadmin_s3_tasks.upload_to_s3, um Dateien auf S3 hochzuladen. Informationen zu den Parametern dieses Verfahrens und Beispielabfragen für das Hochladen von Dateien finden Sie unter Dateien aus einer Oracle-DB-Instance in einen Amazon S3-Bucket hochladen.
  2. Verwenden Sie die Prozedur rdsadmin. rdsadmin_s3_tasks.download_from_s3, um Dateien aus dem S3-Bucket in den Ordner DATA_PUMP_DIR oder ein beliebiges vom Benutzer erstelltes Verzeichnis herunterzuladen. Informationen zu den Parametern dieses Verfahrens und Beispielabfragen für Download-Dateien finden Sie unter Dateien aus einem Amazon S3-Bucket in eine Oracle-DB-Instance herunterladen.

Um den Status der Dateiübertragung zu überwachen, sehen Sie sich das Protokoll an, das generiert wird, wenn Sie das Verfahren zum Hoch- oder Herunterladen der rdsadmin-Pakete ausführen:

  1. Öffnen Sie die Amazon-RDS-Konsole.
  2. Wählen Sie im Navigationsbereich Datenbanken aus.
  3. Wählen Sie die DB-Instance aus, für die Sie die Protokolle anzeigen möchten.
  4. Wählen Sie die REegisterkarte Protokolle & Ereignisse aus.
  5. Geben Sie im Abschnitt Protokolle die Aufgaben-ID, die von der Prozedur zurückgegeben wurde, in den Suchfilter ein.
  6. Wählen Sie die zurückgegebene Datei aus.
  7. Wählen Sie Ansehen, um die Protokolle anzusehen.
    -oder-
    Wählen Sie Herunterladen, um die Protokolle herunterzuladen.

Sie können auch den folgenden Befehl ausführen, um die während des Upload- oder Download-Vorgangs generierte Protokolldatei zu lesen:

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

**Hinweis:**Ersetzen Sie task-id durch die Task-ID, die von der Prozedur zurückgegeben wurde.

Ähnliche Informationen

Amazon S3-Integration

Warum verwendet meine Amazon RDS für Oracle DB-Instance mehr Speicher als erwartet?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten