Zum Inhalt springen

Jitterbit App Builder in AWS installieren (Windows)

Einführung

Dieses Handbuch behandelt mehrere empfohlene Installationsmethoden für App Builder in AWS mit Windows und SQL Server. Es gibt viele Möglichkeiten, die zugrunde liegende Architektur für Webhosting zu konfigurieren. Die Netzwerk- und Sicherheitsaspekte können je nach Bedarf angepasst werden.

Diese Anleitung richtet sich in erster Linie an neue, leere AWS-Konten oder vorhandene Konten, die an die grundlegenden Anforderungen angepasst werden können.

Es gibt zwei allgemeine Methoden zur Verwendung von AWS zum Hosten von App Builder unter Windows:

  • PaaS: ElasticBeanstalk - .NET als Plattform (mit und ohne Hochverfügbarkeit)
  • IaaS: VMs EC2-Instanzen - (ähnlich wie lokal)

Dieses Dokument konzentriert sich auf die Verwendung von ElasticBeanstalk (EB), da dies die einfachste Methode in AWS für langfristige Verwaltung und einfache Upgrades ist. Nur für EC2 siehe unsere VM/On-Premise-Dokumentation. Darüber hinaus konzentriert sich dieses Dokument auch auf die Verwendung von RDS (Relational Database Service) für die Datenbank.

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 Standard-Gateway (0.0.0.0/0) ein Internet-Gateway ist). Dies macht ein NAT-Gateway und einen Bastion-Host überflüssig. Beachten Sie jedoch, dass die Sicherheitsgruppen dann die einzige Barriere gegen externen Zugriff darstellen und Sie keine zuverlässige ausgehende IP von App Builder haben, um sie auf externen Systemen auf die Whitelist zu setzen. (NAT-Gateways haben eine statische eIP, die die ausgehende IP ist).

Tipp

Hinweise zur Planung eines Upgrades über Entwicklungs-, QA- und Produktionsumgebungen, einschließlich Wartungsfenster und Rollback-Strategie, finden Sie unter Produktions-Upgrade-Strategien.

AWS-Elemente

  • VPC mit 4 oder mehr Subnetzen; zwei oder mehr zugeordnet zu einer Routingtabelle mit einem Internet-Gateway als Standardroute (öffentlich) – zwei oder mehr zugeordnet zu einer Routingtabelle mit einem NAT-Gateway als Standardroute (privat). Verfügbarkeitszonen müssen über Routingtabellen 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 Serviceberechtigungen
  • Sicherheitsgruppen* – Gewährung von eingehenden und serverübergreifenden Berechtigungen
  • EC2, Bastion-Host – Jump-Server für App-Server- und DB-Admin-Zugriff
  • S3-Bucket* – konfiguriert, um App Builder Lese-/Schreibzugriff zum Erstellen und Freigeben von Sicherheitsschlüsseln zu ermöglichen
  • Datenbank* – kann mit RDS ausgeführt oder auf EC2-Instanzen installiert werden
  • Elastic Beanstalk* – verwaltet App Builder EC2-Instanzen

*Eine pro Instanz

figure.png

Grundlegende Netzwerkeinrichtung

VPC-Beispiel:

Standard-VPC: 172.31.0.0/16

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

Subnetze:

subnets.jpg

Öffentliche Routingtabelle:

publicroutetable.jpg

Private Routingtabelle:

privateroutetable.jpg

figure.png

S3-Einrichtung für Datenverschlüsselungsschlüssel

Erstellen Sie einen S3-Bucket in Ihrer gewünschten Region; dieser wird zum Speichern von Sitzungszustandsmetadaten und App Builder-Spaltenverschlüsselung verwendet:

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

*Öffentlichen Zugriff ablehnen

IAM

Richtlinien

S3-Zugriffsrichtlinie:

Erstellen Sie eine neue Richtlinie mit diesem JSON und bearbeiten Sie die Ressource mit dem obigen Namen:

{
  "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 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-Service in jeden der folgenden Abschnitte und erstellen Sie Folgendes:

Sicherheitsgruppen:

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

Sicherheitsgruppenkonfiguration
Name: EB-DEV (Erlaubt Ports zu EC2)
RDP TCP 3389 <VPN Endpoint> Company VPN
RDP TCP 3389 <Yourself> RDP
RDP TCP 3389 sgr-091a912ec59ae4184 Bastion
Name: RDS-DEV (Erlaubt Ports zu RDS)
MSSQL TCP 1433 <VPN Endpoint> Company 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 Zugriff auf Instanzen in privaten Subnetzen zu ermöglichen)
MSSQL TCP 1433 <VPN Endpoint> Company 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 Sie private Subnetze für App-Builder-Instanzen verwenden.

Erstellen Sie eine Datenbank mit RDS

  1. Öffnen Sie den RDS-Service in der AWS-Konsole
  2. Wählen Sie Subnetzgruppen > DB-Subnetzgruppe erstellen > Beschriften Sie entweder privat oder öffentlich, je nachdem, ob Sie externen Zugriff ermöglichen möchten (Sicherheitsgruppen zulässig) > Wählen Sie Ihre VPC und fügen Sie das Verfügbarkeitszonen-Paar hinzu, das Sie beim Einrichten der Subnetze für die oben genannte VPC verwendet haben > Wählen Sie nun die beiden korrekten Subnetze aus, die beide entweder privat oder öffentlich sind. > Erstellen
  3. Wählen Sie Datenbank erstellen > Microsoft SQL Server > Lizenz wählen:

    • SQL Server Express Edition *(Akzeptabel für kleine Datenbanken unter 10 GB und Instanzgrößen „large" oder kleiner.)
    • SQL Web Edition (Für Datenbanken > 10 GB; für Instanzgrößen > „large")
    • SQL Standard Edition (Für Multi-AZ; Sehr teuer)
  4. DB-Instanzkennung: z. B. companyname-db-dev

  5. Masterbenutzername: App Builder
  6. Masterkennwort: Generieren Sie ein starkes Zufallskennwort, das keine Symbole enthält (z. B.: zpZvLtLmRmrrE68T)
  7. Instanzgröße: T3.Medium oder größer, je nach Workload (M5.Large oder > für anhaltend hohe CPU.)
  8. Zugewiesener Speicher: 20 GB zum Starten für Dev; empfohlen 200 GB oder mehr für Prod aufgrund größerer IOPS-Zuweisung
  9. Subnetzgruppe: Wählen Sie die oben erstellte Gruppe.

  10. Öffentlicher Zugriff: Ja, wenn die obige Gruppe öffentliche Subnetze verwendet; andernfalls nein.

  11. Vorhandene VPC-Sicherheitsgruppen: Wählen Sie die zuvor erstellte RDS-Gruppe aus.

Legen Sie die verbleibenden Werte nach Bedarf fest (Port 1433 als DB-Port beibehalten).

Hinweis

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

Elastic Beanstalk-Setup (EB)

  • App-Name: App Builder
  • Umgebungsname: *companyname*-app-*dev*
  • Plattform: .NET unter Windows; IIS 10 Windows 2019, neueste Plattform
  • Laden Sie das App Builder .zip-Paket mit der Dateiendung „-eb" hoch. Beispiel: vinyl-3.3.12345-win-eb.zip
  • Wählen Sie „Weitere Optionen konfigurieren" aus – Scrollen Sie zum oberen Seitenrand und wählen Sie: Benutzerdefinierte Konfiguration. Klicken Sie für die folgenden Optionen auf „Bearbeiten" in jedem Abschnitt und speichern Sie in der folgenden Reihenfolge:

    Elastic Beanstalk-Setup
    Kapazität: Lastverteilt; min 1/max 1 (Siehe Hochverfügbarkeitshandbuch für höhere Werte);
    Instanztyp: T3.medium oder höher (je nach Last);
    AMI-ID: Standard-AMI-ID verwenden
    Netzwerk: Wählen Sie die erstellte VPC aus
    Load Balancer-Subnetze: Wählen Sie 2 öffentliche Subnetze aus
    Instanz-Subnetze: Wählen Sie 2 private Subnetze aus
    Datenbank-Subnetze: Nicht verwendet
    Instanzen: Größe: 150GB; Gruppen: EB-Gruppe, die im EC2-Abschnitt erstellt wurde.
    Load Balancer: Typ: Anwendung -> Prozesse; Bearbeiten Sie Standard;
    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. Service Role unverändert lassen (autogeneriert)
  • Erstellen!

EB-Nachkonfiguration

Die Umgebung benötigt etwa 15 bis 20 Minuten zum Hochfahren.

Nach Abschluss des EB-Setups ist es normal, dass der Status in dieser Phase rot ist, da die Standard-EB-Umgebungseigenschaften aktualisiert werden müssen.

In der ElasticBeanstalk-Umgebung: Gehen Sie zu: Konfiguration -> Software -> Bearbeiten:

postconfig1.jpg

postconfig2.jpg

Scrollen Sie nach unten zu Umgebungseigenschaften:

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 Zeichenkettenbereiche, um Ihren Datenbank-Hostnamen, Benutzernamen und Ihr Passwort anzupassen.
  2. DataEncryptionKeyS3BucketEndpoint: Legen Sie den Namen des zuvor erstellten Buckets fest.
  3. DataEncryptionKeyS3KeyPrefix: Legen Sie den Namen der Elastic Beanstalk-Umgebung fest.

Nachdem diese Schritte angewendet wurden und die Updates abgeschlossen sind, rufen Sie die App Builder-Website-URL in EB auf. Dies löst eine Datenbankinstallation oder ein Upgrade aus, falls erforderlich.

HTTPS konfigurieren

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

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

Hinweis

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

Elastic Beanstalk für die Annahme von HTTPS-Anfragen konfigurieren

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

    HTTPS1.jpg

  7. Wählen Sie die SSL Certificate ID aus, die anwendbar ist. *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 der Load Balancer-Seite auf Apply:

    HTTPS2.jpg

HTTPS und FQDN-Umleitung erzwingen

Stellen Sie sicher, dass Sie einen DNS CNAME-Eintrag für Ihre Domain bei Ihrer Registrierungsstelle oder bei Ihren aktuellen Nameservern erstellt und getestet haben, bevor Sie das Folgende konfigurieren. Der ElasticBeanstalk-URI ist der Zielwert, den Ihr DNS-Eintrag verwenden muss. Er muss auch dem SSL-Zertifikat entsprechen, das Sie verwenden.

Beispiel

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

    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 Redirect
  7. Geben Sie im Feld Redirect If Header Exists den Wert X-Forwarded-For ein:

    siteredirect.png

  8. Klicken Sie auf Save