Integration einer Amazon RDS for SQL Server-DB-Instance mit Amazon S3 - Amazon Relational Database Service

Integration einer Amazon RDS for SQL Server-DB-Instance mit Amazon S3

Sie können Dateien zwischen einer DB-Instance mit Amazon RDS for SQL Server und einem Amazon S3-Bucket übertragen. Dabei können Sie Amazon S3 mit SQL Server-Funktionen wie etwa BULK INSERT verwenden. Sie können beispielsweise .csv-, .xml-, .txt- und andere Dateien aus Amazon S3 zum Host der DB-Instance herunterladen und die Daten aus D:\S3\ in die Datenbank laden. Alle Dateien werden in D:\S3\ auf der DB-Instance gespeichert.

Die folgenden Einschränkungen gelten:

  • Dateien im D:\S3-Ordner werden nach einem Failover auf Multi-AZ-Instances auf dem Standby-Replikat gelöscht. Weitere Informationen finden Sie unter Multi-AZ-Einschränkungen für die S3-Integration.

  • Die DB-Instance und der S3-Bucket müssen sich in der gleichen AWS-Region befinden.

  • Wenn Sie mehr als eine S3-Integrationsaufgabe gleichzeitig ausführen, werden die Aufgaben sequenziell und nicht parallel ausgeführt.

    Anmerkung

    S3-Integrationsaufgaben verwenden dieselbe Warteschlange wie native Backup- und Wiederherstellungsaufgaben. Sie können maximal zwei Aufgaben gleichzeitig in dieser Warteschlange haben. Daher blockieren zwei laufende native Backup- und Wiederherstellungsaufgaben alle S3-Integrationsaufgaben.

  • Sie müssen die S3-Integrationsfunktion auf den wiederhergestellten Instances erneut aktivieren. Die S3-Integration wird nicht von der Quell-Instance auf die wiederhergestellte Instance übertragen. Dateien in D:\S3 werden auf einer wiederhergestellten Instance gelöscht.

  • Der Download auf die DB-Instance ist auf 100 Dateien begrenzt. Anders ausgedrückt: Es können sich nicht mehr als 100 Dateien in D:\S3\ befinden.

  • Es werden nur Dateien ohne Dateierweiterungen oder mit den folgenden Dateierweiterungen zum Download unterstützt: .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt und .xml.

    Anmerkung

    Dateien mit der Dateierweiterung „.ispac“ werden zum Download unterstützt, wenn SQL Server Integration Services aktiviert ist. Weitere Informationen zum Aktivieren von SSIS finden Sie unter SQL Server Integration Services.

    Dateien mit den folgenden Dateierweiterungen werden für den Download unterstützt, wenn SQL Server Analysis Services aktiviert ist: .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets und .xmla. Weitere Informationen zum Aktivieren von SSAS finden Sie unter SQL Server Analysis Services.

  • Der S3-Bucket muss denselben Eigentümer wie die zugehörige AWS Identity and Access Management- (IAM) Rolle haben. Daher wird die kontoübergreifende S3-Integration nicht unterstützt.

  • Der S3-Bucket kann nicht für die Öffentlichkeit zugänglich sein.

  • Die Dateigröße für Uploads ist auf 50 GB pro Datei begrenzt.

Weitere Informationen zum Arbeiten mit Dateien in Amazon S3 finden Sie unter Erste Schritte mit Amazon Simple Storage Service.

Voraussetzungen für die Integration von RDS SQL Server mit S3

Bevor Sie beginnen, suchen oder erstellen Sie den S3-Bucket, den Sie verwenden möchten. Fügen Sie weiterhin Berechtigungen hinzu, so dass die RDS DB-Instance auf den S3-Bucket zugreifen kann. Zur Konfiguration dieses Zugriffs erstellen Sie eine IAM-Richtlinie und eine IAM-Rolle.

So erstellen Sie eine IAM-Richtlinie für den Zugriff auf Amazon S3:

  1. Wählen Sie in der IAM Management-Konsole im Navigationsbereich Policies (Richtlinien).

  2. Erstellen Sie eine neue Richtlinie, und verwenden Sie die Registerkarte Visual editor für die folgenden Schritte.

  3. Geben Sie unter Service S3 ein, und wählen Sie dann den S3-Service.

  4. Wählen Sie unter Actions (Aktionen) Folgendes, um den Zugang zu gewähren, den Ihre DB-Instance benötigt.

    • ListAllMyBuckets – erforderlich

    • ListBucket – erforderlich

    • GetBucketACL – erforderlich

    • GetBucketLocation – erforderlich

    • GetObject – erforderlich für das Herunterladen von Dateien von S3 zu D:\S3\

    • PutObject – erforderlich für das Hochladen von Dateien von D:\S3\ zu S3

    • ListMultipartUploadParts – erforderlich für das Hochladen von Dateien von D:\S3\ zu S3

    • AbortMultipartUpload – erforderlich für das Hochladen von Dateien von D:\S3\ zu S3

  5. Für Resources (Ressourcen) hängen die angezeigten Optionen davon ab, welche Aktionen Sie im vorherigen Schritt ausgewählt haben. Möglicherweise sehen Sie Optionen für Bucket, Object (Objekt) oder beide. Geben Sie für beide den jeweiligen Amazon-Ressourcennamen (ARN) an.

    Geben Sie für Bucket den ARN für den Bucket an, den Sie verwenden möchten. Wenn Ihr Bucket beispielsweise den Namen example-bucket hat, setzen Sie den ARN auf arn:aws:s3:::example-bucket.

    Geben Sie für Object (Objekt) den ARN für den Bucket ein, und wählen Sie dann eine der folgenden Optionen:

    • Um Zugriff auf alle Dateien in dem angegebenen Bucket zu gewähren, wählen Sie Any (Beliebig) für Bucket name (Name des Buckets) und Object name (Name des Objekts).

    • Um Zugriff auf bestimmte Dateien oder Ordner in dem Bucket zu gewähren, geben Sie ARNs für die Buckets und Objekte an, auf die SQL Server zugreifen können soll.

  6. Befolgen Sie die Anweisungen in der Konsole, bis Sie die Richtlinie fertig erstellt haben.

    Vorstehendes ist eine verkürzte Anleitung zur Einrichtung einer Richtlinie. Ausführlichere Anweisungen zum Erstellen von IAM-Richtlinien finden Sie unter Erstellen von IAM-Richtlinien im IAM-Benutzerhandbuch.

So erstellen Sie eine IAM-Rolle, die die IAM-Richtlinie aus der vorherigen Prozedur verwendet:

  1. Wählen Sie in der IAM Management-Konsole im Navigationsbereich Roles (Rollen).

  2. Erstellen Sie eine neue IAM-Rolle, und wählen Sie die folgenden Optionen, wenn sie in der Konsole angezeigt werden:

    • AWS-Service

    • RDS

    • RDS – Add Role to Database (Rolle zu Datenbank hinzufügen)

    Wählen Sie dann unten Next permissions (Nächste Berechtigungen).

  3. Geben Sie für Attach permissions policies (Berechtigungsrichtlinien anfügen) den Namen der vorher erstellten IAM-Richtlinie ein. Wählen Sie dann eine Richtlinie aus der Liste aus.

  4. Befolgen Sie die Anweisungen in der Konsole, bis Sie die Rolle fertig erstellt haben.

    Vorstehendes ist eine verkürzte Anleitung zur Einrichtung einer Rolle. Wenn Sie eine ausführlichere Anleitung zum Erstellen einer Rolle wünschen, vgl. IAM-Rollen im IAM-Benutzerhandbuch.

So gewähren Sie Amazon RDS Zugriff auf einen Amazon S3-Bucket

  1. Erstellen Sie eine IAM-Richtlinie, die Amazon RDS Zugriff auf einen S3-Bucket gewährt.

    Schließen Sie die jeweiligen Aktionen ein, um den Zugriff zu gewähren, den Ihre DB-Instance erfordert:

    • ListAllMyBuckets – erforderlich

    • ListBucket – erforderlich

    • GetBucketACL – erforderlich

    • GetBucketLocation – erforderlich

    • GetObject – erforderlich für das Herunterladen von Dateien von S3 zu D:\S3\

    • PutObject – erforderlich für das Hochladen von Dateien von D:\S3\ zu S3

    • ListMultipartUploadParts – erforderlich für das Hochladen von Dateien von D:\S3\ zu S3

    • AbortMultipartUpload – erforderlich für das Hochladen von Dateien von D:\S3\ zu S3

    Der folgende AWS CLI-Befehl erstellt eine IAM-Richtlinie mit dem Namen rds-s3-integration-policy mit diesen Optionen. Sie gewährt Zugriff auf einen Bucket mit dem Namen your-s3-bucket-arn.

    Beispiel

    Für Linux, macOS oder Unix:

    aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/key_prefix/*" } ] }'

    Für Windows:

    Achten Sie darauf, dass Sie die Zeilenenden so ändern, dass Ihre Schnittstelle sie unterstützt (^ anstelle von \). Unter Windows müssen Sie dazu alle doppelten Anführungszeichen mit dem Escape-Zeichen \ versehen. Um dies für alle Anführungszeichen in JSON zu vermeiden, können Sie sie stattdessen in eine Datei speichern und als Parameter einführen.

    Erstellen Sie zuerst die policy.json-Datei mit der folgenden Berechtigungsrichtlinie:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/key_prefix/*" } ] }

    Verwenden Sie dann den folgenden Befehl, um die Richtlinie zu erstellen:

    aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document file://policy_file_path
  2. Notieren Sie nach dem Erstellen der Richtlinie den Amazon-Ressourcennamen (ARN) der Richtlinie. Sie benötigen den ARN bei einem späteren Schritt.

  3. Erstellen Sie eine IAM-Rolle, die Amazon RDS in Ihrem Auftrag annehmen kann, um auf Ihre S3-Buckets zuzugreifen.

    Der folgende AWS CLI-Befehl erstellt zu diesem Zweck die Rolle rds-s3-integration-role.

    Beispiel

    Für Linux, macOS oder Unix:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Für Windows:

    Achten Sie darauf, dass Sie die Zeilenenden so ändern, dass Ihre Schnittstelle sie unterstützt (^ anstelle von \). Unter Windows müssen Sie dazu alle doppelten Anführungszeichen mit dem Escape-Zeichen \ versehen. Um dies für alle Anführungszeichen in JSON zu vermeiden, können Sie sie stattdessen in eine Datei speichern und als Parameter einführen.

    Erstellen Sie zuerst die assume_role_policy.json-Datei mit der folgenden Richtlinie:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    Verwenden Sie anschließend den folgenden Befehl zum Erstellen der IAM-Rolle:

    aws iam create-role ^ --role-name rds-s3-integration-role ^ --assume-role-policy-document file://assume_role_policy_file_path

    Weitere Informationen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer im IAM-Benutzerhandbuch.

  4. Notieren Sie nach dem Erstellen der IAM-Rolle den ARN der Rolle. Sie benötigen den ARN bei einem späteren Schritt.

  5. Fügen Sie die erstellte IAM-Richtlinie der IAM-Rolle an, die Sie erstellt haben.

    Der folgende AWS CLI-Befehl fügt die Richtlinie an die Rolle rds-s3-integration-role an.

    Beispiel

    Für Linux, macOS oder Unix:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-integration-role

    Für Windows:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-integration-role

    Ersetzen Sie your-policy-arn durch den Richtlinien-ARN, den Sie im vorherigen Schritt notiert haben.

Aktivieren der RDS SQL Server-Integration mit S3

Im folgenden Abschnitt erfahren Sie, wie Sie die Amazon S3-Integration mit Amazon RDS for SQL Server aktivieren. Zur Arbeit mit der S3-Integration muss Ihre DB-Instance mit der IAM-Rolle verbunden sein, die Sie vorher erstellt haben, bevor Sie den Funktionsnamenparameter S3_INTEGRATION verwenden.

Anmerkung

Um eine IAM-Rolle zu einer DB-Instance hinzufügen zu können, muss der Status der DB-Instance available (verfügbar) sein.

So ordnen Sie Ihre IAM-Rolle Ihrer DB-Instance zu

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie den Namen der RDS SQL Server-DB-Instance, um ihre Details anzuzeigen.

  3. Wählen Sie auf der Registerkarte Connectivity & security (Konnektivität und Sicherheit) im Bereich Manage IAM roles (IAM-Rollen verwalten) die IAM-Rolle aus, die unter Add IAM roles to this instance (IAM-Rollen zu dieser Instance hinzufügen) hinzugefügt werden soll.

  4. Wählen Sie unter Feature (Funktion) die Option S3_INTEGRATION aus.

    
								Hinzufügen der S3_INTEGRATION-Rolle
  5. Wählen Sie Rolle hinzufügen.

So fügen Sie die IAM-Rolle der RDS SQL Server-DB-Instance hinzu:

  • Der folgende AWS CLI-Befehl fügt Ihre IAM-Rolle einer RDS SQL Server-DB-Instance mit der Bezeichnung mydbinstance hinzu.

    Beispiel

    Für Linux, macOS oder Unix:

    aws rds add-role-to-db-instance \ --db-instance-identifier mydbinstance \ --feature-name S3_INTEGRATION \ --role-arn your-role-arn

    Für Windows:

    aws rds add-role-to-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name S3_INTEGRATION ^ --role-arn your-role-arn

    Ersetzen Sie your-role-arn durch den Rollen-ARN, den Sie im vorherigen Schritt notiert haben. Für die Option --feature-name muss S3_INTEGRATION angegeben werden.

Übertragen von Dateien zwischen RDS SQL Server und einem S3-Bucket

Sie können gespeicherte Amazon RDS-Prozeduren zum Herunterladen und Hochladen von Dateien zwischen S3 und Ihrer RDS DB-Instance verwenden. Sie können auch gespeicherte Amazon RDS-Prozeduren zum Auflisten und Löschen von Dateien auf der RDS-Instance verwenden.

Die Dateien, die Sie von Amazon S3 herunter- und dazu hochladen, werden im Ordner D:\S3 gespeichert. Dies ist der einzige Ordner, den Sie zum Zugriff auf Ihre Dateien verwenden können. Sie können Ihre Dateien in Unterordnern organisieren, die für Sie erstellt werden, wenn Sie beim Download den Zielordner einschließen.

Einige der gespeicherten Prozeduren verlangen, dass Sie einen Amazon-Ressourcennamen (ARN) für Ihren Amazon S3-Bucket und die Datei angeben. Das Format für Ihren ARN lautet arn:aws:s3:::bucket_name/file_name. Amazon S3 benötigt keine Kontonummer oder AWS-Region in ARNs.

S3-Integrationsaufgaben werden sequenziell ausgeführt und nutzen dieselbe Warteschlange wie native Sicherungs- und Wiederherstellungsaufgaben. Sie können maximal zwei Aufgaben gleichzeitig in dieser Warteschlange haben. Der Verarbeitungsbeginn für jede Aufgabe kann bis zu fünf Minuten in Anspruch nehmen.

Herunterladen von Dateien aus einem Amazon S3-Bucket zu einer SQL Server-DB-Instance

Verwenden Sie zum Herunterladen von Dateien aus einem S3-Bucket zu einer RDS SQL Server-DB-Instance die gespeicherte Prozedur Amazon RDS msdb.dbo.rds_download_from_s3 mit den folgenden Parametern.

Parametername Datentyp Standard Erforderlich Beschreibung

@s3_arn_of_file

NVARCHAR

Erforderlich

Der S3-ARN der herunterzuladenden Datei, zum Beispiel: arn:aws:s3:::bucket_name/mydata.csv.

@rds_file_path

NVARCHAR

Optional

Der Dateipfad für die RDS-Instance. Wenn nichts angegeben ist, ist der Dateipfad D:\S3\<filename in s3>. RDS unterstützt absolute und relative Pfade. Wenn Sie einen Unterordner erstellen möchten, schließen Sie ihn in den Dateipfad ein.

@overwrite_file

INT

0

Optional

Die vorhandene Datei überschreiben:

0 = Nicht überschreiben

1 = Überschreiben

Sie können Dateien ohne Dateierweiterung und Dateien mit den folgenden Dateierweiterungen herunterladen: .bcp, .csv, .dat, .fmt, .info, .lst, .tbl, .txt und .xml.

Anmerkung

Dateien mit der Dateierweiterung „.ispac“ werden zum Download unterstützt, wenn SQL Server Integration Services aktiviert ist. Weitere Informationen zum Aktivieren von SSIS finden Sie unter SQL Server Integration Services.

Dateien mit den folgenden Dateierweiterungen werden für den Download unterstützt, wenn SQL Server Analysis Services aktiviert ist: .abf, .asdatabase, .configsettings, .deploymentoptions, .deploymenttargets und .xmla. Weitere Informationen zum Aktivieren von SSAS finden Sie unter SQL Server Analysis Services.

Das folgende Beispiel zeigt die gespeicherte Prozedur für den Download von Dateien von S3.

exec msdb.dbo.rds_download_from_s3 @s3_arn_of_file='arn:aws:s3:::bucket_name/bulk_data.csv', @rds_file_path='D:\S3\seed_data\data.csv', @overwrite_file=1;

Die Beispieloperation rds_download_from_s3 erstellt einen Ordner mit der Bezeichnung seed_data in D:\S3\, wenn der Ordner noch nicht vorhanden ist. Dann lädt das Beispiel die Quelldatei bulk_data.csv von S3 zu einer neuen Datei mit der Bezeichnung data.csv auf der DB-Instance herunter. Wenn die Datei bereits vorhanden war, wird sie überschrieben, da der Parameter @overwrite_file auf 1 gesetzt ist.

Hochladen von Dateien von einer SQL Server-DB-Instance zu einem Amazon S3-Bucket

Verwenden Sie zum Hochladen von Dateien aus einer RDS SQL Server-DB-Instance zu einem S3-Bucket die gespeicherte Prozedur Amazon RDS msdb.dbo.rds_upload_to_s3 mit den folgenden Parametern.

Parametername Datentyp Standard Erforderlich Beschreibung

@s3_arn_of_file

NVARCHAR

Erforderlich

Der S3-ARN der in S3 zu erstellenden Datei, zum Beispiel: arn:aws:s3:::bucket_name/mydata.csv

@rds_file_path

NVARCHAR

Erforderlich

Der Dateipfad der zu S3 hochzuladenden Datei. Es werden absolute und relative Pfade unterstützt.

@overwrite_file

INT

Optional

Die vorhandene Datei überschreiben:

0 = Nicht überschreiben

1 = Überschreiben

Das folgende Beispiel lädt die Datei mit der Bezeichnung data.csv von dem angegebenen Speicherort in D:\S3\seed_data\ zu einer Datei new_data.csv in dem von dem ARN angegebenen S3-Bucket hoch.

exec msdb.dbo.rds_upload_to_s3 @rds_file_path='D:\S3\seed_data\data.csv', @s3_arn_of_file='arn:aws:s3:::bucket_name/new_data.csv', @overwrite_file=1;

Wenn die Datei in S3 bereits vorhanden war, wird sie überschrieben, da der Parameter @overwrite_file auf 1 gesetzt ist.

Auflisten von Dateien auf der RDS DB-Instance

Verwenden Sie zum Auflisten der auf der DB-Instance verfügbaren Dateien eine gespeicherte Prozedur und eine Funktion. Führen Sie zunächst die folgende gespeicherte Prozedur aus, um Dateidetails von den Dateien in D:\S3\ zu erfassen.

exec msdb.dbo.rds_gather_file_details;

Die gespeicherte Prozedur gibt die ID der Aufgabe zurück. Wie andere Aufgaben wird diese gespeicherte Prozedur asynchron ausgeführt. Sobald der Status der Aufgabe SUCCESS ist, können Sie die Aufgaben-ID in der rds_fn_list_file_details-Funktion verwenden, um die vorhandenen Dateien und Verzeichnisse in D:\S3\ wie nachfolgend gezeigt aufzulisten.

SELECT * FROM msdb.dbo.rds_fn_list_file_details(TASK_ID);

Die rds_fn_list_file_details-Funktion gibt eine Tabelle mit den folgenden Spalten zurück:

Ausgabeparameter Beschreibung
filepath Absoluter Pfad der Datei (zum Beispiel D:\S3\mydata.csv)
size_in_bytes Dateigröße (in Bytes)
last_modified_utc Letztes Änderungsdatum/-uhrzeit im UTC-Format
is_directory Option, die angibt, ob es sich bei dem Element um ein Verzeichnis handelt (true/false).

Löschen von Dateien auf der RDS-Instance

Verwenden Sie zum Löschen der auf der DB-Instance verfügbaren Dateien die gespeicherte Prozedur Amazon RDS msdb.dbo.rds_delete_from_filesystem mit den folgenden Parametern.

Parametername Datentyp Standard Erforderlich Beschreibung

@rds_file_path

NVARCHAR

Erforderlich

Der Dateipfad der zu löschenden Datei. Es werden absolute und relative Pfade unterstützt.

@force_delete

INT

0

Optional

Zum Löschen eines Verzeichnisses muss diese Markierung eingeschlossen und auf 1 gesetzt werden.

1 = Löschen eines Verzeichnisses

Dieser Parameter wird ignoriert, wenn Sie eine Datei löschen.

Zum Löschen eines Verzeichnisses muss @rds_file_path mit einem umgekehrten Schrägstrich (\) enden, und @force_delete muss auf 1 gesetzt sein.

Im folgenden Beispiel wird die Datei D:\S3\delete_me.txt gelöscht.

exec msdb.dbo.rds_delete_from_filesystem @rds_file_path='D:\S3\delete_me.txt';

Im folgenden Beispiel wird das Verzeichnis D:\S3\example_folder\ gelöscht.

exec msdb.dbo.rds_delete_from_filesystem @rds_file_path='D:\S3\example_folder\', @force_delete=1;

Überwachung des Status einer Dateiübertragungsaufgabe

Rufen Sie zum Nachverfolgen des Status Ihrer S3-Integrationsaufgabe die rds_fn_task_status-Funktion auf. Dazu sind zwei Parameter erforderlich. Der erste Parameter sollte immer NULL sein, da er sich nicht auf die S3-Integration bezieht. Der zweite Parameter akzeptiert eine Aufgaben-ID. Setzen Sie den zweiten Parameter auf 0, um Ergebnisse für alle aufgaben zu erhalten.

Um eine Liste aller Aufgaben anzuzeigen, setzen Sie den ersten Parameter auf NULL und den zweiten Parameter auf 0, wie im folgenden Beispiel gezeigt.

SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,0);

Um eine bestimmte Aufgabe zu erhalten, setzen Sie den ersten Parameter auf NULL und den zweiten Parameter auf die Aufgaben-ID, wie im folgenden Beispiel gezeigt,

SELECT * FROM msdb.dbo.rds_fn_task_status(NULL,42);

Die rds_fn_task_status-Funktion gibt die folgenden Informationen zurück.

Ausgabeparameter

Beschreibung

task_id

Die ID der Aufgabe.

task_type

Für die S3-Integration können Aufgaben die folgenden Aufgabentypen haben:

  • DOWNLOAD_FROM_S3

  • UPLOAD_TO_S3

  • LIST_FILES_ON_DISK

  • DELETE_FILES_ON_DISK

database_name

Nicht verwendbar für S3-Integrationsaufgaben.

% complete

Verlauf der Aufgabe als Prozentwert.

duration(mins)

Zeitdauer für die Ausführung der Aufgabe (in Minuten).

lifecycle

Der Status der Aufgabe. Die folgenden Status sind möglich:

  • CREATED – Nach dem Aufruf einer der gespeicherten Prozeduren für die S3-Integration wird eine Aufgabe erstellt, und der Status wird auf CREATED gesetzt.

  • IN_PROGRESS – Nach dem Start einer Aufgabe wird der Status auf IN_PROGRESS gesetzt. Es kann bis zu fünf Minuten dauern, bis sich der Status von CREATED zu IN_PROGRESS ändert.

  • SUCCESS – Nach dem Abschluss einer Aufgabe wird der Status auf SUCCESS gesetzt.

  • ERROR – Wenn eine Aufgabe fehlschlägt, wird der Status auf ERROR gesetzt. Weitere Informationen über den Fehler können Sie der Spalte task_info entnehmen.

  • CANCEL_REQUESTED – Sobald Sie rds_cancel_task aufrufen, wird der Status der Aufgabe auf CANCEL_REQUESTED gesetzt.

  • CANCELLED: Nachdem die Aufgabe abgebrochen wurde, wird der Status der Aufgabe auf CANCELLED gesetzt.

task_info

Zusätzliche Informationen über die Aufgabe. Wenn bei der Verarbeitung ein Fehler auftritt, enthält diese Spalte Informationen zu dem Fehler.

last_updated

Datum und Uhrzeit der letzten Aktualisierung des Aufgabenstatus.

created_at

Datum und Uhrzeit, an denen die Aufgabe angelegt wurde.

S3_object_arn

Der ARN des S3-Objekts, von dem der Download oder zu dem der Upload stattfand.

overwrite_S3_backup_file

Nicht verwendbar für S3-Integrationsaufgaben.

KMS_master_key_arn

Nicht verwendbar für S3-Integrationsaufgaben.

filepath

Der Dateipfad auf der RDS DB-Instance.

overwrite_file

Eine Option, die anzeigt, ob eine bestehende Datei überschrieben wird.

task_metadata

Nicht verwendbar für S3-Integrationsaufgaben.

Abbrechen einer Aufgabe

Verwenden Sie zum Abbrechen von S3-Integrationsaufgaben die gespeicherte msdb.dbo.rds_cancel_task-Prozedur mit dem Parameter task_id. Laufende Lösch- und Auflistungsaufgaben können nicht abgebrochen werden. Das folgende Beispiel zeigt eine Anforderung zum Abbrechen einer Aufgabe.

exec msdb.dbo.rds_cancel_task @task_id = 1234;

Verwenden Sie für die Anzeige einer Übersicht über alle Aufgaben und ihre Aufgaben-IDs die rds_fn_task_status-Funktion wie in Überwachung des Status einer Dateiübertragungsaufgabe beschrieben.

Multi-AZ-Einschränkungen für die S3-Integration

Bei Multi-AZ-Instances werden Dateien im D:\S3-Ordner nach einem Failover auf dem Standby-Replikat gelöscht. Ein Failover kann beispielsweise bei Änderungen der DB-Instance geplant werden, z. B. beim Ändern der Instance-Klasse oder beim Aktualisieren der Engine-Version. Oder ein Failover kann während eines Ausfalls der primären Instance ungeplant sein.

Anmerkung

Es wird nicht empfohlen, den D:\S3-Ordner für die Dateispeicherung zu verwenden. Die bewährte Methode besteht darin, erstellte Dateien in Amazon S3 hochzuladen, um sie beständig zu machen, und Dateien herunterzuladen, wenn Sie Daten importieren müssen.

Um die letzte Failover-Zeit zu bestimmen, können Sie das gespeicherte msdb.dbo.rds_failover_time-Verfahren verwenden. Weitere Informationen finden Sie unter Ermitteln der letzten Failover-Zeit.

Beispiel Kein Failover in letzter Zeit

Dieses Beispiel zeigt die Ausgabe, wenn in den Fehlerprotokollen kein aktuelles Failover vorhanden ist. Seit 2020-04-29 23:59:00.01 ist kein Failover aufgetreten.

Daher sind alle nach dieser Zeit heruntergeladenen Dateien, die nicht mit dem gespeicherten rds_delete_from_filesystem-Verfahren gelöscht wurden, weiterhin auf dem aktuellen Host verfügbar. Dateien, die vor diesem Zeitpunkt heruntergeladen wurden, sind möglicherweise ebenfalls verfügbar.

errorlog_available_from recent_failover_time

2020-04-29 23:59:00.0100000

Null

Beispiel Failover in letzter Zeit

Dieses Beispiel zeigt die Ausgabe, wenn ein Failover in den Fehlerprotokollen vorliegt. Das letzte Failover erfolgte am 2020-05-05 18:57:51.89.

Auf alle nach dieser Zeit heruntergeladenen Dateien, die nicht mit dem gespeicherten rds_delete_from_filesystem-Verfahren gelöscht wurden, kann auf dem aktuellen Host weiterhin zugegriffen werden.

errorlog_available_from recent_failover_time

2020-04-29 23:59:00.0100000

2020-05-05 18:57:51.8900000

Deaktivieren der RDS SQL Server-Integration mit S3

Nachfolgend erfahren Sie, wie Sie die Amazon S3-Integration mit Amazon RDS for SQL Server deaktivieren. Dateien in D:\S3\ werden nicht gelöscht, wenn die S3-Integration deaktiviert wird.

Anmerkung

Um eine IAM-Rolle von einer DB-Instance löschen zu können, muss der Status der DB-Instance available sein.

So entfernen Sie die Zuweisung Ihrer IAM-Rolle zu DB-Instance:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon RDS-Konsole unter https://console.aws.amazon.com/rds/.

  2. Wählen Sie den Namen der RDS SQL Server-DB-Instance, um ihre Details anzuzeigen.

  3. Wählen Sie auf der Registerkarte Connectivity & security (Konnektivität und Sicherheit) im Bereich Manage IAM roles (IAM-Rollen verwalten) die IAM-Rolle aus, die entfernt werden soll.

  4. Wählen Sie Delete.

So entfernen Sie die IAM-Rolle von der RDS SQL Server-DB-Instance:

  • Der folgende AWS CLI-Befehl entfernt die IAM-Rolle von einer RDS SQL Server-DB-Instance mit der Bezeichnung mydbinstance.

    Für Linux, macOS oder Unix:

    aws rds remove-role-from-db-instance \ --db-instance-identifier mydbinstance \ --feature-name S3_INTEGRATION \ --role-arn your-role-arn

    Für Windows:

    aws rds remove-role-from-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name S3_INTEGRATION ^ --role-arn your-role-arn

    Ersetzen Sie your-role-arn durch den jeweiligen ARN der IAM-Rolle für die Option --feature-name.