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
Grundlegende Netzwerktechnik
VPC-Beispiel:
Standard VPC: 172.31.0.0/16
NAT-Gateway (Optional): Subnetz als öffentlich, Konnektivität als öffentlich, eIP zuweisen.
Subnetze:
Öffentliche Routentabelle:
Private Routentabelle:
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
- Öffnen Sie den RDS-Dienst in der AWS-Konsole
- 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
-
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)
-
DB-Instanzbezeichner: z.B.: companyname-db-dev
- Master-Benutzername: App Builder
- Master-Passwort: Generieren Sie ein starkes, zufälliges Passwort, das keine Symbole enthält (z.B.: zpZvLtLmRmrrE68T)
- Instanzgröße: T3.Medium oder größer, abhängig von der Arbeitslast (M5.Large oder größer für dauerhaft hohe CPU.)
- Zugewiesener Speicher: 20 GB zu Beginn für Dev; empfehlen Sie 200 GB oder mehr für Prod aufgrund größerer IOPS-Zuweisung
-
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 verwendenNetzwerk: Erstelltes VPC auswählen
Lastenausgleichs-Subnets: 2 öffentliche Subnets auswählen
Instanz-Subnets: 2 private Subnets auswählen
Datenbank-Subnets: UnbenutztInstanzen: 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-06Sicherheit: <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:
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 |
ConnectionInfo
: Bearbeiten Sie die Zeichenfolgenanteile, um mit Ihrem DB-Hostname, Benutzernamen und Passwort übereinzustimmen.DataEncryptionKeyS3BucketEndpoint
: Setzen Sie auf den zuvor erstellten Bucket-Namen.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
- Melden Sie sich bei der Amazon Web Services-Konsole an.
- Wählen Sie unter Services Elastic Beanstalk aus.
- Wählen Sie die Umgebung aus, die Sie aktualisieren.
- Wählen Sie im linken Menü Configuration aus.
- Wählen Sie bei Load Balancer Edit.
-
Fügen Sie, falls nicht vorhanden, Listener Port 443, HTTPS hinzu:
-
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.
-
Klicken Sie auf die Schaltfläche Save und dann auf Apply auf der Load Balancer-Seite:
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
- Gehen Sie im App Builder zu IDE > Security Providers.
-
Klicken Sie im Configuration-Panel auf die Schaltfläche More und wählen Sie Sites aus:
-
Doppelklicken Sie auf den Standardeintrag.
- Klicken Sie auf die Schaltfläche Edit.
- Geben Sie Ihre FQDN-URL mit https im Feld URL ein.
- Aktivieren Sie das Kontrollkästchen Redirect.
-
Geben Sie im Feld Redirect If Header Exists X-Forwarded-For ein:
-
Klicken Sie auf Save.