View a markdown version of this page

SQL Server-Setup - AWS Transformieren

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.

SQL Server-Setup

Führen Sie diese Schritte in Ihrer SQL Server-Umgebung aus, um die AWS Transform-Modernisierung zu aktivieren.

Einrichtung und Konfiguration der Datenbank

Schritt 1: Erstellen Sie einen Datenbankbenutzer mit den erforderlichen Berechtigungen

Erstellen Sie einen dedizierten Datenbankbenutzer für AWS Transform mit den erforderlichen Berechtigungen. Wenn Sie bereits einen Benutzer für DMS Schema Conversion haben, können Sie ihn wiederverwenden.

Connect zu Ihrer SQL Server-Instanz her und führen Sie die folgenden Befehle aus:

-- Create the login in master database USE master; CREATE LOGIN [atx_user] WITH PASSWORD = 'YourStrongPassword123!'; -- Switch to your application database USE [YourDatabaseName]; CREATE USER [atx_user] FOR LOGIN [atx_user]; -- Grant required permissions GRANT VIEW DEFINITION TO [atx_user]; GRANT VIEW DATABASE STATE TO [atx_user]; ALTER ROLE [db_datareader] ADD MEMBER [atx_user]; -- Grant master database permissions USE master; GRANT VIEW SERVER STATE TO [atx_user]; GRANT VIEW ANY DEFINITION TO [atx_user];
Anmerkung

Wiederholen Sie die datenbankspezifischen Befehle (USE, CREATE USER, GRANT) für jede Datenbank, die Sie modernisieren möchten.

Die Rolle db_datareader ist nur für die Datenmigration erforderlich, nicht nur für die Schemakonvertierung.

  • Die Rolle db_datareader gewährt Lesezugriff auf alle Tabellen in der Datenbank

  • Diese Rolle ist NUR bei der Durchführung einer Datenmigration erforderlich.

  • Nur für die Schemakonvertierung (ohne Datenmigration) ist die Rolle db_datareader NICHT erforderlich

  • Die anderen Berechtigungen (VIEW DEFINITION, VIEW DATABASE STATE usw.) reichen für die Schemakonvertierung aus

Schritt 2: Speichern Sie die Anmeldeinformationen in AWS Secrets Manager

Speichern Sie Ihre Datenbankanmeldedaten sicher in AWS Secrets Manager. Überspringen Sie diesen Schritt, wenn Sie bereits ein Geheimnis für DMS erstellt haben.

  1. Navigieren Sie in der Konsole zu AWS Secrets Manager

  2. Wählen Sie Neues Geheimnis speichern

  3. Konfigurieren Sie das Geheimnis:

    • Geheimtyp: Anmeldeinformationen für eine andere Datenbank

    • Datenbank: Microsoft SQL Server

    • Benutzername: atx_user (oder der von Ihnen gewählte Benutzername)

    • Passwort: Das Passwort, das Sie erstellt haben

    • Servername: Ihr SQL Server-Endpunkt

    • Datenbankname: Ihr Datenbankname

    • Port: 1433 (oder Ihr benutzerdefinierter Port)

  4. Wählen Sie Weiter

  5. Geben Sie den geheimen Namen ein: atx-db-modernization-sqlserver

  6. Fügen Sie die erforderlichen Tags hinzu (diese Tags sind verpflichtend):

    • Schlüssel: Projekt, Wert: atx-db-modernization

    • Schlüssel: Besitzer, Wert: database-connector

  7. Wählen Sie in den verbleibenden Bildschirmen Weiter

  8. Wähle Store

  9. Notieren Sie sich den geheimen ARN zur Verwendung im nächsten Schritt

Wichtig

Datenbankkennwörter dürfen nur druckbare ASCII-Zeichen enthalten, ausgenommen '/', '@', '"' und Leerzeichen. Geheimnisse, die gelöscht werden sollen, können zu Transformationsfehlern führen.

Schritt 3: Erstellen Sie die erforderlichen DMS-Rollen

AWS Transform erfordert spezielle IAM-Rollen für DMS-Operationen. Stellen Sie diese Rollen mithilfe der folgenden CloudFormation Vorlage bereit.

Anmerkung

Wenn in Ihrem AWS Konto bereits DMS-related Rollen vorhanden sind, ändern Sie diese Vorlage, um diese Ressourcen wiederzuverwenden, anstatt Duplikate zu erstellen.

Erstellen Sie eine Datei mit dem Namen dms-roles.yaml mit dem folgenden Inhalt:

AWSTemplateFormatVersion: '2010-09-09' Description: 'DMS Service Roles for AWS Transform SQL Server Modernization' Resources: DMSCloudWatchLogsRole: Type: AWS::IAM::Role Properties: RoleName: dms-cloudwatch-logs-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole DMSS3AccessRole: Type: AWS::IAM::Role Properties: RoleName: dms-s3-access-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: S3TaggedAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - s3:GetBucketLocation - s3:GetBucketVersioning - s3:PutObject - s3:PutBucketVersioning - s3:GetObject - s3:GetObjectVersion - s3:ListBucket - s3:DeleteObject Resource: arn:aws:s3:::atx-db-modernization-* Condition: StringEquals: aws:ResourceAccount: !Ref AWS::AccountId DMSSecretsManagerRole: Type: AWS::IAM::Role Properties: RoleName: dms-secrets-manager-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: SecretsManagerTaggedAccess PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue - secretsmanager:DescribeSecret Resource: '*' Condition: StringEquals: secretsmanager:ResourceTag/Project: atx-db-modernization secretsmanager:ResourceTag/Owner: database-connector DMSVPCRole: Type: AWS::IAM::Role Properties: RoleName: dms-vpc-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - dms.amazonaws.com - schema-conversion.dms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole DMSServerlessRole: Type: AWS::IAM::ServiceLinkedRole Properties: AWSServiceName: dms.amazonaws.com Description: 'Service Linked Role for AWS DMS Serverless' Outputs: DMSCloudWatchLogsRoleArn: Description: ARN of the DMS CloudWatch Logs Role Value: !GetAtt DMSCloudWatchLogsRole.Arn DMSS3AccessRoleArn: Description: ARN of the DMS S3 Access Role Value: !GetAtt DMSS3AccessRole.Arn DMSSecretsManagerRoleArn: Description: ARN of the DMS Secrets Manager Role Value: !GetAtt DMSSecretsManagerRole.Arn DMSVPCRoleArn: Description: ARN of the DMS VPC Role Value: !GetAtt DMSVPCRole.Arn Export: Name: !Sub ${AWS::StackName}-VPCRole DMSServerlessRoleArn: Description: ARN of the DMS Serverless Role Value: !Sub 'arn:aws:iam::${AWS::AccountId}:role/aws-service-role/dms.amazonaws.com/AWSServiceRoleForDMSServerless' Export: Name: !Sub ${AWS::StackName}-ServerlessRole

Stellen Sie den CloudFormation Stack mit AWS CLI bereit:

aws cloudformation create-stack \ --stack-name dms-roles \ --template-body file://dms-roles.yaml \ --capabilities CAPABILITY_NAMED_IAM \ --region us-east-1

Oder mit der AWS Konsole bereitstellen:

  1. Navigieren Sie CloudFormation in der AWS Konsole zu

  2. Wählen Sie „Stapel erstellen

  3. Wählen Sie Eine Vorlagendatei hochladen

  4. Laden Sie die Datei dms-roles.yaml hoch

  5. Geben Sie den Stacknamen ein: dms-roles

  6. Bestätigen Sie die IAM-Fähigkeiten

  7. Wählen Sie Stack erstellen

Schritt 4: Netzwerksicherheit konfigurieren

Stellen Sie die richtige Netzwerkkonnektivität zwischen AWS Transform, Ihrer SQL Server-Datenbank und anderen AWS Diensten sicher.

Konfiguration der Sicherheitsgruppe (empfohlener Ansatz)

Empfohlener Ansatz: Verwenden Sie eine auf Sicherheitsgruppen basierende Zugriffskontrolle anstelle von IP-based Regeln. Dies bietet eine bessere Sicherheit, eine einfachere Verwaltung und funktioniert nahtlos mit der Architektur von AWS Transform.

Warum Group-Based Sicherheitszugriffskontrolle?

  • DMS-Schemakonvertierung erstellt Elastic Network Interfaces (ENIs) in Ihrer VPC

  • Ihre Datenbanken müssen nicht öffentlich zugänglich sein

  • AWS Transform legt keine privaten IP-Adressen offen, was die IP-based Regeln komplex macht

  • Sicherheitsgruppenreferenzen bieten dynamische, automatische Updates, wenn die Ressourcen skalieren

Konfigurieren Sie Ihre SQL Server-Sicherheitsgruppe

Wenn Sie das Instanzprofil für die DMS-Schemakonvertierung in AWS Transform konfigurieren, geben Sie eine Sicherheitsgruppe für die DMS SC-Instanz an. Ihre Datenbanksicherheitsgruppe sollte eingehenden Datenverkehr von dieser DMS SC-Sicherheitsgruppe zulassen.

Step-by-step Konfiguration:

  1. Identifizieren Sie die Sicherheitsgruppe für die DMS-Schemakonvertierung:

    • Dies wird bei der Erstellung des Instanzprofils in AWS Transform angegeben

    • Notieren Sie sich die Sicherheitsgruppen-ID (z. B. sg-0123456789abcdef0)

  2. Aktualisieren Sie Ihre eingehenden SQL Server-Sicherheitsgruppenregeln:

    • Typ: Benutzerdefiniertes TCP

    • Port: 1433 (oder Ihr benutzerdefinierter SQL Server-Port)

    • Quelle: Die Sicherheitsgruppen-ID für die DMS-Schemakonvertierung

    • Beschreibung: „Zugriff auf die DMS-Schemakonvertierung zulassen“

  3. Für das Aurora PostgreSQL-Ziel (nach der Erstellung):

    • Typ: PostgreSQL

    • Port: 5432 (oder Ihr benutzerdefinierter PostgreSQL-Port)

    • Quelle: Die Sicherheitsgruppen-ID für die DMS-Schemakonvertierung

    • Beschreibung: „Zugriff auf die DMS-Schemakonvertierung zulassen“

Wichtig

Wichtig für Sicherheitsmodelle mit den wenigsten Rechten: Wenn Ihre Organisation ein Sicherheitsmodell mit den geringsten Rechten verwendet, das standardmäßig den gesamten Datenverkehr blockiert, müssen Sie eingehenden Datenverkehr von der Sicherheitsgruppe für die DMS-Schemakonvertierung zu Ihrem Datenbankport ausdrücklich zulassen. Öffnen Sie Port 1433 nicht für alle Quellen oder IP-Bereiche.

Erforderlich AWS Service-Konnektivität

Stellen Sie sicher, dass Ihre VPC kommunizieren kann mit:

  • AWS Transformieren Sie Service-Endpunkte

  • AWS DMS Endpunkte

  • Aurora PostgreSQL-Endpunkte

  • S3-Endpunkte für die Speicherung von Artefakten

  • AWS Secrets Manager Endpunkte

  • AWS CodeConnections Endpunkte

VPC-Endpunkte: Konfigurieren Sie für private Netzwerke VPC-Endpunkte für erforderliche AWS Dienste, um Internet-Gateway-Abhängigkeiten zu vermeiden.

Anforderungen für extern gehostete Datenbanken

Wenn Ihre SQL Server-Datenbank außerhalb von gehostet wird, stellen Sie sicher AWS, dass die folgenden Voraussetzungen erfüllt sind, und schließen Sie dann die Einrichtungsschritte ab, bevor Sie mit der Modernisierung beginnen.

Voraussetzungen

  • Ein AWS Konto bei einer VPC

  • Netzwerkkonnektivität zwischen der VPC und der externen Datenbank. Informationen zur Konfiguration der Netzwerkkonnektivität finden Sie unter Konfiguration der Netzwerkkonnektivität im AWS DMS Benutzerhandbuch.

Schritte zur Einrichtung

  1. Erstellen Sie ein geheimes AWS Secrets Manager Konto mit den Verbindungsdetails für die externe Datenbank. Weitere Informationen finden Sie unter Schritt 2: Speichern Sie die Anmeldeinformationen in AWS Secrets Manager.

  2. Wenn Sie dazu aufgefordert werden, geben Sie die VPC-ID und die Sicherheitsgruppen-ID für die Verbindung mit der externen Datenbank ein. AWS Transform fordert Sie zur Eingabe dieser Informationen auf, da der Datenbank-Hostname im Secret nicht innerhalb des Kontos aufgelöst werden kann. AWS