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 ermöglichen.

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 DMS-Schemakonvertierungsbenutzer haben, können Sie ihn wiederverwenden.

Stellen Sie eine Verbindung 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 Anmeldeinformationen in AWS Secrets Manager

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

  1. Navigieren Sie in der AWS Konsole zum Secrets Manager

  2. Wähle Neues Geheimnis speichern

  3. Konfiguriere das Geheimnis:

    • Geheimer Typ: Anmeldeinformationen für eine andere Datenbank

    • Datenbank: Microsoft SQL Server

    • Nutzername: atx_user (oder dein gewählter Nutzername)

    • Passwort: Das Passwort, das du erstellt hast

    • 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 obligatorisch):

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

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

  7. Wählen Sie in den verbleibenden Bildschirmen Weiter

  8. Wählen Sie Store

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

Wichtig

Datenbankkennwörter dürfen nur druckbare ASCII-Zeichen verwenden, 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 Ihr AWS Konto bereits über DMS-related Rollen verfügt, ä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 Stack mithilfe der CLI bereit: CloudFormation AWS

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

Oder stellen Sie es mithilfe der AWS Konsole bereit:

  1. Navigiere 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-Funktionen

  7. Wählen Sie Stapel erstellen

Schritt 4: Netzwerksicherheit konfigurieren

Stellen Sie eine ordnungsgemäße 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 statt IP-based Regeln. Dies bietet eine bessere Sicherheit, eine einfachere Verwaltung und passt sich nahtlos der Architektur von AWS Transform an.

Warum Security Group-Based Access Control?

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

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

  • AWS Transform gibt keine privaten IP-Adressen preis, was die IP-based Regeln komplex macht

  • Verweise auf Sicherheitsgruppen bieten dynamische, automatische Updates, wenn die Ressourcen wachsen

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 Datenbank-Sicherheitsgruppe 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 Regeln für eingehenden Datenverkehr in der SQL Server-Sicherheitsgruppe:

    • 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 geringsten Rechten: Wenn Ihre Organisation ein Sicherheitsmodell mit den geringsten Rechten verwendet, das standardmäßig den gesamten Datenverkehr blockiert, müssen Sie den eingehenden Datenverkehr von der Sicherheitsgruppe für die DMS-Schemakonvertierung zu Ihrem Datenbankport explizit 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 die erforderlichen 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 führen Sie dann die Einrichtungsschritte durch, 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 Geheimnis AWS Secrets Manager mit den Verbindungsdetails für die externe Datenbank. Weitere Informationen finden Sie unter Schritt 2: Speichern Sie 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 innerhalb des Kontos nicht aufgelöst werden kann. AWS