Zum Inhalt springen

Installation des Jitterbit App Builders in AWS (Windows)

Einführung

Dieses Handbuch behandelt mehrere empfohlene Methoden zur Installation des App Builders in AWS unter Verwendung von Windows und SQL Server. Es gibt viele Methoden zur Konfiguration der zugrunde liegenden Architektur für Webhosting, Netzwerk- und Sicherheitsaspekte, die nach Bedarf angepasst werden können.

Dieser Leitfaden richtet sich hauptsächlich an Benutzer mit einem neuen, leeren AWS-Konto oder einem bestehenden Konto, das an die grundlegenden Anforderungen angepasst werden kann.

Zwei allgemeine Methoden zur Nutzung von AWS für das Hosting des App Builders unter Windows sind:

  • PaaS: ElasticBeanstalk - .NET als Plattform (Mit und ohne Hochverfügbarkeit)
  • IaaS: VMs Ec2-Instanzen - (Ähnlich wie vor Ort)

Dieses Dokument konzentriert sich auf die Verwendung von ElasticBeanstalk (EB), da dies die einfachste Methode in AWS für das langfristige Management und die einfache Durchführung von Upgrades ist. Für nur Ec2 siehe unser VM-/On-Premise-Dokument. Darüber hinaus wird sich dieses Dokument auch auf die Verwendung von RDS (Relational Database Service) für die Datenbank konzentrieren.

Hinweis

Sie können Kosten sparen und die Einfachheit erhöhen, indem Sie alle Objekte in öffentlichen Subnetzen platzieren (Subnetze, die sich in einer Routingtabelle befinden, in der das Standardgateway ((0.0.0.0/0)) ein Internet-Gateway ist.); Dies macht die Notwendigkeit eines NAT-Gateways und eines Bastion-Hosts überflüssig. Beachten Sie jedoch, dass die Sicherheitsgruppen dann die einzige Barriere gegen den externen Zugriff darstellen und Sie keine zuverlässige ausgehende IP-Adresse vom App Builder haben, die Sie in externen Systemen auf die Whitelist setzen können. (NAT-Gateways haben eine statische eIP, die die ausgehende IP ist).

AWS-Elemente

  • VPC mit 4 oder mehr Subnetzen; Zwei oder mehr, die mit einer Routingtabelle verbunden sind, die ein Internet-Gateway als Standardroute (öffentlich) enthält – Zwei oder mehr, die mit einer Routingtabelle verbunden sind, die ein NAT-Gateway als Standardroute (privat) verwendet. Verfügbarkeitszonen müssen über Routingtabellen hinweg gespiegelt werden (z. B.: öffentlich: 1a,1b - privat: 1a,1b)
  • Zertifikat – Sie müssen ein Zertifikat erstellen oder importieren, um SSL zu verwenden
  • IAM: Benutzer, Rollen*, Richtlinien* – Gewährung von Dienstberechtigungen
  • Sicherheitsgruppen* – Gewährung von eingehenden und serverübergreifenden Berechtigungen
  • Ec2, Bastion-Host – Sprungserver für den App-Server und den DB-Administrationszugriff
  • S3-Bucket* - konfiguriert, um dem App Builder Lese-/Schreibzugriff zum Erstellen und Teilen von Sicherheitskeys zu ermöglichen
  • Datenbank* - Kann mit RDS betrieben oder auf EC2-Instanzen installiert werden
  • Elastic Beanstalk* - Verwaltet die Ec2-Instanzen des App Builders

*Eins pro Instanz

figure.png

Grundlegende Netzwerktechnik

VPC-Beispiel:

Standard VPC: 172.31.0.0/16

NAT-Gateway (Optional): Subnetz als öffentlich, Konnektivität als öffentlich, eIP zuweisen.

Subnetze:

subnets.jpg

Öffentliche Routentabelle:

publicroutetable.jpg

Private Routentabelle:

privateroutetable.jpg

figure.png

S3-Setup für Datenverschlüsselungsschlüssel

Erstellen Sie einen S3-Bucket in Ihrer gewünschten Region; dieser wird verwendet, um Metadaten zum Sitzungsstatus und zur Spaltenverschlüsselung des App Builders zu speichern:

Beispielname: *companyname*-vinyl-encryption-keys-*dev*

*Öffentlichen Zugriff verweigern

IAM

Richtlinien

S3-Zugriffsrichtlinie:

Neue Richtlinie erstellen mit diesem JSON, Ressource mit obigem Namen bearbeiten:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource":
        "arn:aws:s3:::companyname-vinyl-encryption-keys-dev/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation",
        "s3:ListBucket"
    ],
    "Resource": "*"
    }
    ]
}

Beispielname: *companyname*-vinyl-encryption-keys-s3-*dev*

Beispielbeschreibung: Gewährt EC2-Zugriff auf den S3-Bucket

Rollen

Neue Rolle erstellen: Typ=EC2 -> Richtlinien hinzufügen:

  • <S3 Policy Above>
  • AWSElasticBeanstalkMulticontainerDocker
  • AWSElasticBeanstalkWebTier
  • AWSElasticBeanstalkWorkerTier

Name: *companyname*-eb-*dev*

EC2

Gehen Sie im EC2-Dienst zu jedem der folgenden Abschnitte und erstellen Sie Folgendes:

Sicherheitsgruppen:

Erstellen Sie mindestens zwei Gruppen, eine für EC2/EB (in EB angewendet) und eine für RDS. Die EB-Gruppe wird als Quelle in der RDS-Gruppe hinzugefügt, wie unten zu sehen ist. Diese gewähren Berechtigungen für RDP auf die EC2-Instanz und für die EC2-Instanz, um auf die RDS-Instanz zuzugreifen:

Sicherheitsgruppen-Konfiguration
Name: EB-DEV (Erlaubt Ports zu EC2)
RDP TCP 3389 <VPN Endpoint> Unternehmens-VPN
RDP TCP 3389 <Yourself> RDP
RDP TCP 3389 sgr-091a912ec59ae4184 Bastion
Name: RDS-DEV (Erlaubt Ports zu RDS)
MSSQL TCP 1433 <VPN Endpoint> Unternehmens-VPN
MSSQL TCP 1433 sgr-082d6e34327ee6b9c8 (EB-DEV)
MSSQL TCP 1433 <Yourself> RDS
MSSQL TCP 1433 sgr-091a912ec59ae4184 Bastion
Name: Bastion (Optional) (Wird oben hinzugefügt, um den Zugriff auf Instanzen in privaten Subnetzen zu ermöglichen)
MSSQL TCP 1433 <VPN Endpoint> Unternehmens-VPN

Schlüsselpaare:
Schlüsselpaar erstellen -> <companyname-%dev%> -> PEM -> Erstellen

Instanzen: Erstellen Sie einen Bastion-Host (Optional)
Starten Sie eine Windows 2019-Basisinstanz zur Verwendung als RDP-Jump-Host, wenn private Subnetze für App Builder-Instanzen verwendet werden.

Erstellen Sie eine Datenbank mit RDS

  1. Öffnen Sie den RDS-Dienst in der AWS-Konsole
  2. Wählen Sie Subnetzgruppen > DB-Subnetzgruppe erstellen > Bezeichnen Sie sie entweder als privat oder öffentlich, je nachdem, ob Sie die Möglichkeit für externen Zugriff (unter Berücksichtigung der Sicherheitsgruppen) wünschen > Wählen Sie Ihre VPC aus und fügen Sie das Verfügbarkeitszonenpaar hinzu, das Sie beim Einrichten der Subnetze für die oben genannte VPC verwendet haben > Wählen Sie nun die beiden richtigen Subnetze aus, die entweder beide privat oder beide öffentlich sind. > Erstellen
  3. Wählen Sie Datenbank erstellen > Microsoft SQL Server > Lizenz auswählen:

    • SQL Server Express Edition *(Akzeptabel für kleine DBs unter 10 GB und Instanzen der Größe 'large' oder kleiner.)
    • SQL Web Edition (Für DBs > 10 GB; für Instanzgrößen > 'large')
    • SQL Standard Edition (Für Multi-AZ; Sehr teuer)
  4. DB-Instanzbezeichner: z.B.: companyname-db-dev

  5. Master-Benutzername: App Builder
  6. Master-Passwort: Generieren Sie ein starkes, zufälliges Passwort, das keine Symbole enthält (z.B.: zpZvLtLmRmrrE68T)
  7. Instanzgröße: T3.Medium oder größer, abhängig von der Arbeitslast (M5.Large oder größer für dauerhaft hohe CPU.)
  8. Zugewiesener Speicher: 20 GB zu Beginn für Dev; empfehlen Sie 200 GB oder mehr für Prod aufgrund größerer IOPS-Zuweisung
  9. Subnetzgruppe: Wählen Sie die oben erstellte aus.

    • Öffentlicher Zugriff: Ja, wenn die oben verwendete Gruppe öffentliche Subnetze verwendet; andernfalls nein.
    • Vorhandene VPC-Sicherheitsgruppen: Wählen Sie die zuvor erstellte RDS-Gruppe aus.

Setzen Sie die verbleibenden Werte nach Wunsch (Behalten Sie 1433 als DB-Port bei).

Hinweis

Wenn Sie App Builder mit Jitterbit hosten, ist SQL Server Express keine unterstützte Datenbankoption.

Elastic Beanstalk-Setup (EB)

  • App-Name: App Builder
  • Env-Name: *companyname*-app-*dev*
  • Plattform: .NET auf Windows; IIS 10 Windows 2019, Neueste Plattform
  • Laden Sie das App Builder .zip-Paket mit der Endung '-eb' hoch. Zum Beispiel: vinyl-3.3.12345-win-eb.zip
  • Wählen Sie Weitere Optionen konfigurieren - Scrollen Sie nach oben auf der Seite Wählen Sie: Benutzerdefinierte Konfiguration Für die folgenden Punkte klicken Sie auf Bearbeiten in jedem Abschnitt und speichern Sie in der folgenden Reihenfolge:

    Elastic Beanstalk Setup
    Kapazität: Lastenausgeglichen; min 1/max 1 (Siehe Handbuch zur Hochverfügbarkeit für höhere Werte);
    Instanztyp: T3.medium oder größer (Abhängig von der Last);
    AMI-ID: Standard-AMI-ID verwenden
    Netzwerk: Erstelltes VPC auswählen
    Lastenausgleichs-Subnets: 2 öffentliche Subnets auswählen
    Instanz-Subnets: 2 private Subnets auswählen
    Datenbank-Subnets: Unbenutzt
    Instanzen: Größe: 150GB; Gruppen: EB-Gruppe, die im EC2-Bereich erstellt wurde.
    Lastenausgleich: Typ: Anwendung -> Prozesse; Standard bearbeiten;
    HTTP-Code: 200; Pfad /ping
    Für SSL: (Siehe HTTPS konfigurieren) Listener hinzufügen - 443/HTTPS - Ihr Zertifikat - TLS-1-2-Ext-2018-06
    Sicherheit: <EC2-Schlüsselpaar von oben>; IAM-Instanzprofil wie oben erstellt. Dienstrolle unverändert lassen (automatisch generiert)
  • Erstellen!

EB-Nachkonfiguration

Die Umgebung benötigt ungefähr 15 bis 20 Minuten, um hochzufahren.

Sobald EB die Komponenten bereitgestellt hat, ist es normal, dass der Status in dieser Phase rot ist, da die Standard-EB-Umgebungseigenschaften aktualisiert werden müssen.

Im ElasticBeanstalk-Umfeld: Gehe zu: Konfiguration -> Software -> Bearbeiten:

postconfig1.jpg

postconfig2.jpg

Scrollen Sie nach unten zu den Umgebungs Eigenschaften:

Eigenschaftsname Standard Beispiel
ConnectionInfo DatabaseType=SQLServer;HostName=;DatabaseName=App Builder;UserName=vinyl;Password=password DatabaseType=SQLServer;HostName=example-db-dev.cmpgei1x4tzz.us-east-1.rds.amazonaws.com;DatabaseName=App Builder;UserName=vinyl;Password=P@SSW**RD~!!
DataEncryption:S3BucketEndpoint https://{bucket}s3{-aws-region}.amazonaws.com https://companyname-vinyl-encryption-keys-dev
DataEncryption:S3KeyPrefix {elastic-beanstalk-environment-name} Companyname-app-Dev
  1. ConnectionInfo: Bearbeiten Sie die Zeichenfolgenanteile, um mit Ihrem DB-Hostname, Benutzernamen und Passwort übereinzustimmen.
  2. DataEncryptionKeyS3BucketEndpoint: Setzen Sie auf den zuvor erstellten Bucket-Namen.
  3. DataEncryptionKeyS3KeyPrefix: Setzen Sie auf den Namen der Elastic Beanstalk-Umgebung.

Nachdem diese Schritte angewendet wurden und die Aktualisierungen abgeschlossen sind, gehen Sie zur URL der App Builder-Website in EB. Dies löst eine Datenbankinstallation oder -aktualisierung aus, falls erforderlich.

Konfigurieren von HTTPS

Standardmäßig sind neue Elastic Beanstalk-Umgebungen nicht für HTTPS konfiguriert. Wie in der Dokumentation des App Builders erwähnt, wird HTTPS für alle neuen Elastic Beanstalk-Umgebungen dringend empfohlen.

Elastic Beanstalk-Umgebungen beenden die HTTPS-Verbindung am Elastic Load Balancer.

Hinweis

Für den folgenden Prozess müssen Sie bereits ein Zertifikat im Certificate Manager-Dienst erstellt oder importiert haben.

Konfigurieren von Elastic Beanstalk zur Annahme von HTTPS-Anfragen

  1. Melden Sie sich bei der Amazon Web Services-Konsole an.
  2. Wählen Sie unter Services Elastic Beanstalk aus.
  3. Wählen Sie die Umgebung aus, die Sie aktualisieren.
  4. Wählen Sie im linken Menü Configuration aus.
  5. Wählen Sie bei Load Balancer Edit.
  6. Fügen Sie, falls nicht vorhanden, Listener Port 443, HTTPS hinzu:

    HTTPS1.jpg

  7. Wählen Sie die SSL Certificate ID aus, die zutrifft *Für die 'SSL-Richtlinie'; Für Windows 2019 muss TLS 1.2 verwendet werden.

  8. Klicken Sie auf die Schaltfläche Save und dann auf Apply auf der Load Balancer-Seite:

    HTTPS2.jpg

HTTPS und FQDN-Weiterleitung erzwingen

Stellen Sie sicher, dass Sie einen DNS-CNAME-Eintrag für Ihre Domain bei Ihrem Registrar oder den aktuellen Nameservern erstellt und getestet haben, bevor Sie das Folgende konfigurieren. Die ElasticBeanstalk-URI wird der Zielwert sein, den Ihr DNS-Eintrag verwenden muss. Sie muss auch mit dem SSL-Zertifikat übereinstimmen, das Sie verwenden.

Beispiel

  • Host/Name: demo1.companydomain.com
  • Type: CNAME
  • Target/Value: demo1.us-east-1.elasticbeanstalk.com
  1. Gehen Sie im App Builder zu IDE > Security Providers.
  2. Klicken Sie im Configuration-Panel auf die Schaltfläche More und wählen Sie Sites aus:

    moresites.png

  3. Doppelklicken Sie auf den Standardeintrag.

  4. Klicken Sie auf die Schaltfläche Edit.
  5. Geben Sie Ihre FQDN-URL mit https im Feld URL ein.
  6. Aktivieren Sie das Kontrollkästchen Redirect.
  7. Geben Sie im Feld Redirect If Header Exists X-Forwarded-For ein:

    siteredirect.png

  8. Klicken Sie auf Save.