Erstellen Sie ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation - AWS Prescriptive Guidance

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.

Erstellen Sie ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation

Erstellt von Milena Godau (AWS) und Pedro Garcia () AWS

Übersicht

Eine Micro-Frontend-Architektur ermöglicht es mehreren Teams, unabhängig voneinander an verschiedenen Teilen einer Frontend-Anwendung zu arbeiten. Jedes Team kann ein Fragment des Frontends entwickeln, erstellen und bereitstellen, ohne andere Teile der Anwendung zu beeinträchtigen. Aus Sicht des Endbenutzers scheint es sich um eine einzige, zusammenhängende Anwendung zu handeln. Sie interagieren jedoch mit mehreren unabhängigen Anwendungen, die von verschiedenen Teams veröffentlicht werden.

In diesem Dokument wird beschrieben, wie Sie mithilfe des Angular-Frontend-Frameworks und der AWS AmplifyModule Federation eine Mikro-Frontend-Architektur erstellen. In diesem Muster werden die Mikrofrontends auf der Clientseite durch eine Shell-Anwendung (oder übergeordnete Anwendung) kombiniert. Die Shell-Anwendung fungiert als Container, der die Mikrofrontends abruft, anzeigt und integriert. Die Shell-Anwendung übernimmt das globale Routing, das verschiedene Mikrofrontends lädt. Das @angular -architects/module-federation Plugin integriert Module Federation mit Angular. Sie stellen die Shell-Anwendung und die Mikro-Frontends bereit, indem Sie AWS Amplify Endbenutzer greifen über ein webbasiertes Portal auf die Anwendung zu.

Das Portal ist vertikal aufgeteilt. Das bedeutet, dass es sich bei den Mikrofrontends um ganze Ansichten oder Gruppen von Ansichten handelt, anstatt um Teile derselben Ansicht. Daher lädt die Shell-Anwendung jeweils nur ein Mikro-Frontend.

Die Mikrofrontends sind als Remote-Module implementiert. Die Shell-Anwendung lädt diese Remote-Module langsam, wodurch die Mikro-Frontend-Initialisierung verzögert wird, bis sie benötigt wird. Dieser Ansatz optimiert die Anwendungsleistung, indem nur die benötigten Module geladen werden. Dies reduziert die anfängliche Ladezeit und verbessert die allgemeine Benutzererfahrung. Darüber hinaus teilen Sie über die Webpack-Konfigurationsdatei (webpack.config.js) gemeinsame Abhängigkeiten zwischen den Modulen. Diese Vorgehensweise fördert die Wiederverwendung von Code, reduziert Doppelarbeit und optimiert den Bündelungsprozess.

Voraussetzungen und Einschränkungen

Voraussetzungen

Produktversionen

  • Angular CLI Version 13.1.2 oder höher

  • @angular -architects/module-federation Version 14.0.1 oder höher

  • Webpack-Version 5.4.0 oder höher

  • AWS Amplify Generation 1

Einschränkungen

Eine Micro-Frontend-Architektur ist ein leistungsstarker Ansatz für die Erstellung skalierbarer und robuster Webanwendungen. Es ist jedoch wichtig, die folgenden potenziellen Herausforderungen zu verstehen, bevor Sie diesen Ansatz anwenden:

  • Integration — Eine der größten Herausforderungen ist die potenzielle Zunahme der Komplexität im Vergleich zu monolithischen Frontends. Die Orchestrierung mehrerer Mikro-Frontends, die Verwaltung der Kommunikation zwischen ihnen und die Verwaltung gemeinsamer Abhängigkeiten können komplizierter sein. Darüber hinaus kann mit der Kommunikation zwischen den Mikrofrontends ein Leistungsaufwand verbunden sein. Diese Kommunikation kann die Latenz erhöhen und die Leistung verringern. Diesem Problem muss durch effiziente Nachrichtenmechanismen und Strategien für den Datenaustausch begegnet werden.

  • Codeduplizierung — Da jedes Mikro-Frontend unabhängig entwickelt wird, besteht die Gefahr, dass Code für gemeinsame Funktionen oder gemeinsam genutzte Bibliotheken dupliziert wird. Dies kann die Gesamtgröße der Anwendung erhöhen und zu Problemen bei der Wartung führen.

  • Koordination und Verwaltung — Die Koordination der Entwicklungs- und Bereitstellungsprozesse über mehrere Mikrofrontends hinweg kann eine Herausforderung sein. Die Sicherstellung einer konsistenten Versionierung, die Verwaltung von Abhängigkeiten und die Aufrechterhaltung der Kompatibilität zwischen den Komponenten werden in einer verteilten Architektur immer wichtiger. Die Einrichtung klarer Governance, Richtlinien und automatisierter Test- und Bereitstellungspipelines ist für eine reibungslose Zusammenarbeit und Bereitstellung unerlässlich.

  • Testen — Das Testen von Mikro-Frontend-Architekturen kann komplexer sein als das Testen monolithischer Frontends. Es erfordert zusätzlichen Aufwand und spezielle Teststrategien, um komponentenübergreifende Integrationstests und end-to-end Tests durchzuführen und konsistente Benutzererlebnisse über mehrere Mikrofrontends hinweg zu validieren.

Bevor Sie sich für den Micro-Frontend-Ansatz entscheiden, empfehlen wir Ihnen, den Artikel Micro-Frontends verstehen und implementieren auf zu lesen. AWS

Architektur

In einer Micro-Frontend-Architektur entwickelt und implementiert jedes Team Funktionen unabhängig. Das folgende Bild zeigt, wie mehrere DevOps Teams zusammenarbeiten. Das Portalteam entwickelt die Shell-Anwendung. Die Shell-Anwendung fungiert als Container. Sie ruft die Micro-Frontend-Anwendungen ab, zeigt sie an und integriert sie, die von anderen Teams veröffentlicht wurden. DevOps Sie verwenden, AWS Amplify um die Shell-Anwendung und die Micro-Frontend-Anwendungen zu veröffentlichen.

Veröffentlichen mehrerer Mikrofrontends in einer Shell-App, auf die der Benutzer über ein Webportal zugreift.

Das Architekturdiagramm zeigt den folgenden Arbeitsablauf:

  1. Das Portalteam entwickelt und verwaltet die Shell-Anwendung. Die Shell-Anwendung orchestriert die Integration und das Rendern der Mikro-Frontends, um das gesamte Portal zusammenzustellen.

  2. Die Teams A und B entwickeln und warten ein oder mehrere Mikrofrontends oder Funktionen, die in das Portal integriert sind. Jedes Team kann unabhängig an seinen jeweiligen Mikrofrontends arbeiten.

  3. Der Endbenutzer authentifiziert sich mithilfe von Amazon Cognito.

  4. Der Endbenutzer greift auf das Portal zu und die Shell-Anwendung wird geladen. Während der Benutzer navigiert, kümmert sich die Shell-Anwendung um das Routing und ruft das angeforderte Mikro-Frontend ab, wobei das Paket geladen wird.

Tools

AWS-Services

  • AWS Amplifyist eine Reihe von speziell entwickelten Tools und Funktionen, mit denen Frontend-Web- und Mobilentwickler schnell Full-Stack-Anwendungen erstellen können. AWS In diesem Muster verwenden Sie Amplify, CLI um die Amplify-Mikrofrontend-Anwendungen bereitzustellen.

  • AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.

Andere Tools

  • @angular -architects/module-federation ist ein Plugin, das Angular in Module Federation integriert.

  • Angular ist ein Open-Source-Framework für Webanwendungen zum Erstellen moderner, skalierbarer und testbarer einseitiger Anwendungen. Es folgt einer modularen und komponentenbasierten Architektur, die die Wiederverwendung und Wartung von Code fördert.

  • Node.js ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen konzipiert wurde.

  • npm ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten.

  • Webpack Module Federation hilft Ihnen dabei, Code, der unabhängig kompiliert und bereitgestellt wird, wie Mikro-Frontends oder Plugins, in eine Anwendung zu laden.

Code-Repository

Der Code für dieses Muster ist im Micro-Frontend-Portal unter Verwendung des Angular- und Module GitHub Federation-Repositorys verfügbar. Dieses Repository enthält die folgenden zwei Ordner:

  • shell-appenthält den Code für die Shell-Anwendung.

  • feature1-appenthält ein Beispiel-Mikrofrontend. Die Shell-Anwendung ruft dieses Mikro-Frontend ab und zeigt es als Seite innerhalb der Portalanwendung an.

Bewährte Methoden

Mikro-Frontend-Architekturen bieten zahlreiche Vorteile, bringen aber auch Komplexität mit sich. Im Folgenden finden Sie einige bewährte Methoden für eine reibungslose Entwicklung, hochwertigen Code und eine hervorragende Benutzererfahrung:

  • Planung und Kommunikation — Um die Zusammenarbeit zu optimieren, sollten Sie im Vorfeld in Planung, Design und klare Kommunikationskanäle investieren.

  • Einheitliches Design — Sorgen Sie mithilfe von Designsystemen, Styleguides und Komponentenbibliotheken für einen einheitlichen visuellen Stil auf allen Mikro-Frontends. Dies sorgt für ein einheitliches Benutzererlebnis und beschleunigt die Entwicklung.

  • Abhängigkeitsmanagement — Da sich Mikro-Frontends unabhängig weiterentwickeln, sollten Sie standardisierte Verträge und Versionsstrategien anwenden, um Abhängigkeiten effektiv zu verwalten und Kompatibilitätsprobleme zu vermeiden.

  • Mikro-Frontend-Architektur — Um eine unabhängige Entwicklung und Bereitstellung zu ermöglichen, sollte jedes Mikro-Frontend eine klare und klar definierte Verantwortung für eine gekapselte Funktionalität haben.

  • Integration und Kommunikation — Um eine reibungslose Integration zu ermöglichen und Konflikte zu minimieren, sollten Sie klare Verträge und Kommunikationsprotokolle zwischen Mikrofrontends definieren, einschließlich Ereignisse und gemeinsam genutzter Datenmodelle. APIs

  • Testen und Qualitätssicherung — Implementieren Sie Testautomatisierung und kontinuierliche Integrationspipelines für Mikro-Frontends. Dies verbessert die Gesamtqualität, reduziert den manuellen Testaufwand und validiert die Funktionalität zwischen den Mikro-Frontend-Interaktionen.

  • Leistungsoptimierung — Überwachen Sie kontinuierlich die Leistungskennzahlen und verfolgen Sie die Abhängigkeiten zwischen den Mikrofrontends. Auf diese Weise können Sie Engpässe erkennen und eine optimale Anwendungsleistung aufrechterhalten. Verwenden Sie zu diesem Zweck Tools zur Leistungsüberwachung und Abhängigkeitsanalyse.

  • Entwicklererfahrung — Konzentrieren Sie sich auf die Erfahrung der Entwickler, indem Sie klare Dokumentationen, Tools und Beispiele bereitstellen. Auf diese Weise können Sie die Entwicklung optimieren und neue Teammitglieder einarbeiten.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die Shell-Anwendung.

  1. Geben Sie im Angular CLI den folgenden Befehl ein:

    ng new shell --routing
  2. Geben Sie den folgenden Befehl ein, um zum Projektordner zu navigieren:

    cd shell
    Anmerkung

    Die Ordner- und Projektstruktur für die Shell- und Micro-Frontend-Anwendungen kann völlig unabhängig sein. Sie können als unabhängige Angular-Anwendungen behandelt werden.

App-Developer

Installieren Sie das -Plug-in.

Geben Sie im Angular den folgenden Befehl einCLI, um das @angular -architects/module-federation Plugin zu installieren:

ng add @angular-architects/module-federation --project shell --port 4200
App-Developer

Fügen Sie das URL Micro-Frontend als Umgebungsvariable hinzu.

  1. Öffnen Sie die Datei environment.ts.

  2. Zum mfe1URL: 'http://localhost:5000' Objekt hinzufügen: environment

    export const environment = { production: false, mfe1URL: 'http://localhost:5000', };
  3. Speichern und schließen Sie die Datei environment.ts.

App-Developer

Definieren Sie das Routing.

  1. Öffnen Sie die Datei app-routing.module.ts.

  2. Geben Sie im Angular den folgenden Befehl einCLI, um das Modul aus dem @angular -architects/module-federation Plugin zu importieren: loadRemoteModule

    import { loadRemoteModule } from '@angular-architects/module-federation';
  3. Stellen Sie die Standardroute wie folgt ein:

    { path: '', pathMatch: 'full', redirectTo: 'mfe1' },
  4. Stellen Sie die Route für das Micro-Frontend ein:

    { path: 'mfe1', loadChildren: () => loadRemoteModule({ type: 'module', remoteEntry: `${environment.mfe1URL}/remoteEntry.js`, exposedModule: './Module' }) .then(m => m.Mfe1Module) },
  5. Speichern und schließen Sie die Datei app-routing.module.ts.

App-Developer

mfe1Deklarieren Sie das Modul.

  1. Erstellen Sie in dem src Ordner eine neue Datei mit dem Namen decl.d.ts.

  2. Öffnen Sie die Datei decl.d.ts.

  3. Fügen Sie der Datei Folgendes hinzu:

    declare module 'mfe1/Module';
  4. Speichern und schließen Sie die Datei decl.d.ts.

App-Developer

Bereiten Sie das Preloading für das Micro-Frontend vor.

Das Vorladen des Mikro-Frontends hilft dem Webpack, die gemeinsam genutzten Bibliotheken und Pakete richtig auszuhandeln.

  1. Öffnen Sie die Datei main.ts.

  2. Ersetzen Sie den Inhalt durch Folgendes:

    import { loadRemoteEntry } from '@angular-architects/module-federation'; Promise.all([ loadRemoteEntry(`${environment.mfe1URL}/remoteEntry.js`, 'mfe1'), ]) .catch(err => console.error('Error loading remote entries', err)) .then(() => import('./bootstrap')) .catch(err => console.error(err));
  3. Speichern und schließen Sie die Datei main.ts.

App-Developer

Passen Sie den Inhalt anHTML.

  1. Öffnen Sie die Datei app.component.html.

  2. Ersetzen Sie den Inhalt durch Folgendes:

    <h1>Shell application is running!</h1> <router-outlet></router-outlet>
  3. Speichern und schließen Sie die Datei app.component.html.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie das Mikro-Frontend.

  1. Geben Sie im Angular CLI den folgenden Befehl ein:

    ng new mfe1 --routing
  2. Geben Sie den folgenden Befehl ein, um zum Projektordner zu navigieren:

    cd mfe1
App-Developer

Installieren Sie das -Plug-in.

Geben Sie den folgenden Befehl ein, um das @angular -architects/module-federation Plugin zu installieren:

ng add @angular-architects/module-federation --project mfe1 --port 5000
App-Developer

Erstellen Sie ein Modul und eine Komponente.

Geben Sie die folgenden Befehle ein, um ein Modul und eine Komponente zu erstellen und sie als Fernzugriffsmodul zu exportieren:

ng g module mfe1 --routing ng g c mfe1
App-Developer

Legen Sie den Standard-Routingpfad fest.

  1. Öffnen Sie die Datei mfe-routing.module.ts.

  2. Stellen Sie die Standardroute wie folgt ein:

    { path: '', component: Mfe1Component },
  3. Speichern und schließen Sie die Datei mfe-routing.module.ts.

App-Developer

Fügen mfe1 Sie die Route hinzu.

  1. Öffnen Sie die Datei app-routing.module.ts.

  2. Stellen Sie die Standardroute wie folgt ein:

    { path: '', pathMatch: 'full', redirectTo: 'mfe1' },
  3. Fügen Sie die folgende mfe1 Route hinzu:

    { path: 'mfe1', loadChildren: () => import('./mfe1/mfe1.module').then((m) => m.Mfe1Module), },
  4. Speichern und schließen Sie die Datei app-routing.module.ts.

App-Developer

Bearbeiten Sie die Datei webpack.config.js.

  1. Öffnen Sie die Datei webpack.config.js.

  2. Bearbeiten Sie den For remotes Abschnitt so, dass er dem Folgenden entspricht:

    // For remotes (please adjust) name: "mfe1", filename: "remoteEntry.js", exposes: { './Module': './src/app/mfe1/mfe1.module.ts', },
  3. Fügen Sie im shared Abschnitt alle Abhängigkeiten hinzu, die die mfe1 Anwendung mit der Shell-Anwendung gemeinsam hat:

    shared: share({ "@angular/core": { singleton: true, strictVersion: true, requiredVersion: 'auto' }, "@angular/common": { singleton: true, strictVersion: true, requiredVersion: 'auto' }, "@angular/common/http": { singleton: true, strictVersion: true, requiredVersion: 'auto' }, "@angular/router": { singleton: true, strictVersion: true, requiredVersion: 'auto' }, ...sharedMappings.getDescriptors() })
  4. Speichern und schließen Sie die Datei webpack.config.js.

App-Developer

Passen Sie den Inhalt an. HTML

  1. Öffnen Sie die Datei app.component.html.

  2. Ersetzen Sie den Inhalt durch Folgendes:

    <router-outlet></router-outlet>
  3. Speichern und schließen Sie die Datei app.component.html.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Führen Sie die mfe1 Anwendung aus.

  1. Geben Sie den folgenden Befehl ein, um die mfe1 Anwendung zu starten:

    npm start
  2. Greifen Sie in einem Webbrowser zuhttp://localhost:5000.

  3. Stellen Sie sicher, dass das Micro-Frontend eigenständig ausgeführt werden kann. Die mfe1 Anwendung sollte ordnungsgemäß und ohne Fehler gerendert werden.

App-Developer

Führen Sie die Shell-Anwendung aus.

  1. Geben Sie den folgenden Befehl ein, um die Shell-Anwendung zu starten:

    npm start
  2. Greifen Sie in einem Webbrowser zuhttp://localhost:4200/mfe1.

  3. Stellen Sie sicher, dass das mfe1 Micro-Frontend in die Shell-Anwendung eingebettet ist. Die Portalanwendung sollte ordnungsgemäß und ohne Fehler gerendert werden, und die mfe1 Anwendung sollte in sie eingebettet sein.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein Modul und eine Komponente.

Geben Sie im Stammordner der Shell-Anwendung die folgenden Befehle ein, um ein Modul und eine Komponente für eine Fehlerseite zu erstellen:

ng g module error-page --routing ng g c error-page
App-Developer

Passen Sie den HTML Inhalt an.

  1. Öffnen Sie die Datei error-page.component.html.

  2. Ersetzen Sie den Inhalt durch Folgendes:

    <p>Sorry, this page is not available.</p>
  3. Speichern und schließen Sie die Datei error-page.component.html.

App-Developer

Legen Sie den Standard-Routingpfad fest.

  1. Öffnen Sie die Datei error-page-routing.module.ts.

  2. Stellen Sie die Standardroute wie folgt ein:

    { path: '', component: ErrorPageComponent },
  3. Speichern und schließen Sie die Datei error-page-routing.module.ts.

App-Developer

Erstellen Sie eine Funktion zum Laden von Mikro-Frontends.

  1. Öffnen Sie die Datei app-routing.module.ts.

  2. Erstellen Sie die folgende Funktion:

    function loadMFE(url: string) { return loadRemoteModule({ type: 'module', remoteEntry: `${url}/remoteEntry.js`, exposedModule: './Module' }) .then(m => m.Mfe1Module) .catch( () => import('./error-page/error-page.module').then(m => m.ErrorPageModule) ); }
  3. Ändern Sie die mfe1 Route wie folgt:

    { path: 'mfe1', loadChildren: () => loadMFE(environment.mfe1URL) },
  4. Speichern und schließen Sie die Datei app-routing.module.ts.

App-Developer

Testen Sie die Fehlerbehandlung.

  1. Falls es noch nicht läuft, geben Sie den folgenden Befehl ein, um die Shell-Anwendung zu starten:

    npm start
  2. Greifen Sie in einem Webbrowser zuhttp://localhost:4200/mfe1.

  3. Stellen Sie sicher, dass die Fehlerseite gerendert wurde. Sie sollten den folgenden Text sehen:

    Sorry, this page is not available.
App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie das Mikro-Frontend bereit.

  1. Navigieren Sie im Amplify CLI zum Stammordner der Micro-Frontend-Anwendung.

  2. Geben Sie den folgenden Befehl ein, um Amplify zu initialisieren:

    amplify init
  3. Wenn Sie aufgefordert werden, einen Namen für Ihr Amplify-Projekt einzugeben, drücken Sie die Eingabetaste. Dadurch wird der Name aus der Datei package.json wiederverwendet.

  4. Wenn Sie aufgefordert werden, das Projekt mit der obigen Konfiguration zu initialisieren, geben Sie ein. Yes

  5. Wenn Sie aufgefordert werden, eine Authentifizierungsmethode auszuwählen, wählen SieAWS Profile.

  6. Wählen Sie das Profil aus, das Sie verwenden möchten.

  7. Warten Sie, bis Amplify das Projekt initialisiert hat. Wenn dieser Vorgang abgeschlossen ist, erhalten Sie eine Bestätigungsnachricht im Terminal.

  8. Geben Sie den folgenden Befehl ein, um dem Micro-Frontend eine Amplify-Hosting-Kategorie hinzuzufügen:

    amplify add hosting
  9. Wenn Sie aufgefordert werden, das Plugin-Modul auszuwählen, wählen Sie. Hosting with Amplify Console

  10. Wenn Sie aufgefordert werden, einen Typ auszuwählen, wählen SieManual deployment.

  11. Installieren Sie die NPM-Abhängigkeiten des Projekts, indem Sie den folgenden Befehl eingeben:

    npm install
  12. Veröffentlichen Sie die Anwendung auf der Amplify-Konsole, indem Sie den folgenden Befehl eingeben:

    amplify publish -y

    Wenn die Veröffentlichung abgeschlossen ist, gibt Amplify das URL des Mikro-Frontends zurück.

  13. Kopiere das. URL Sie benötigen diesen Wert, um die Shell-Anwendung zu aktualisieren.

App-Entwickler, AWS DevOps

Stellen Sie die Shell-Anwendung bereit.

  1. Öffnen Sie in dem src/app/environmentsOrdner die Datei environments.prod.ts.

  2. Ersetzen Sie den mfe1URL Wert durch den Wert des bereitgestellten URL Mikro-Frontends:

    export const environment = { production: true, mfe1URL: 'https://<env>.<Amplify-app-ID>.amplifyapp.com' };
  3. Speichern und schließen Sie die Datei environments.prod.ts.

  4. Navigieren Sie in Amplify CLI zum Stammordner der Shell-Anwendung.

  5. Geben Sie den folgenden Befehl ein, um Amplify zu initialisieren:

    amplify init
  6. Wenn Sie aufgefordert werden, einen Namen für Ihr Amplify-Projekt einzugeben, drücken Sie die Eingabetaste. Dadurch wird der Name aus der Datei package.json wiederverwendet.

  7. Wenn Sie aufgefordert werden, das Projekt mit der obigen Konfiguration zu initialisieren, geben Sie ein. Yes

  8. Wenn Sie aufgefordert werden, eine Authentifizierungsmethode auszuwählen, wählen SieAWS Profile.

  9. Wählen Sie das Profil aus, das Sie verwenden möchten.

  10. Warten Sie, bis Amplify das Projekt initialisiert hat. Wenn dieser Vorgang abgeschlossen ist, erhalten Sie eine Bestätigungsnachricht im Terminal.

  11. Fügen Sie der Shell-Anwendung eine Amplify-Hosting-Kategorie hinzu:

    amplify add hosting
  12. Wenn Sie aufgefordert werden, das Plugin-Modul auszuwählen, wählen SieHosting with Amplify Console.

  13. Wenn Sie aufgefordert werden, einen Typ auszuwählen, wählen SieManual deployment.

  14. Installieren Sie die NPM-Abhängigkeiten des Projekts, indem Sie den folgenden Befehl eingeben:

    npm install
  15. Veröffentlichen Sie die Shell-Anwendung auf der Amplify-Konsole, indem Sie den folgenden Befehl eingeben:

    amplify publish -y

    Wenn die Veröffentlichung abgeschlossen ist, gibt Amplify die URL der bereitgestellten Shell-Anwendung zurück.

  16. Notieren Sie sich das URL für die Shell-Anwendung.

App-Entwickler, App-Besitzer

Aktivieren Sie CORS.

Da die Shell- und Micro-Frontend-Anwendungen unabhängig voneinander auf verschiedenen Domänen gehostet werden, müssen Sie die ursprungsübergreifende gemeinsame Nutzung von Ressourcen (CORS) im Mikrofrontend aktivieren. Dadurch kann die Shell-Anwendung den Inhalt von einem anderen Ursprung laden. Um dies zu aktivierenCORS, fügen Sie benutzerdefinierte Header hinzu.

  1. Navigieren Sie im Amplify CLI zum Stammordner des Micro-Frontends.

  2. Geben Sie den folgenden Befehl ein:

    amplify configure hosting
  3. Wenn Sie aufgefordert werden, benutzerdefinierte Einstellungen zu konfigurieren, geben Sie ein. Y

  4. Melden Sie sich bei der AWS Management Console an und öffnen Sie dann die Amplify-Konsole.

  5. Wählen Sie das Micro-Frontend.

  6. Wählen Sie im Navigationsbereich Hosting und dann Benutzerdefinierte Kopfzeilen aus.

  7. Wählen Sie Edit (Bearbeiten) aus.

  8. Geben Sie im Fenster Benutzerdefinierte Header bearbeiten Folgendes ein:

    customHeaders: - pattern: '*.js' headers: - key: Access-Control-Allow-Origin value: '*' - key: Access-Control-Allow-Methods value: 'GET, OPTIONS' - key: Access-Control-Allow-Headers value: '*'
  9. Wählen Sie Save (Speichern) aus.

  10. Stellen Sie das Mikro-Frontend erneut bereit, um die neuen benutzerdefinierten Header anzuwenden.

App-Entwickler, AWS DevOps

Erstellen Sie eine Rewrite-Regel für die Shell-Anwendung.

Die Angular-Shell-Anwendung ist für die Verwendung von HTML5 Routing konfiguriert. Wenn der Benutzer eine Hard-Refresh durchführt, versucht Amplify, eine Seite aus der aktuellen URL Version zu laden. Dies generiert einen 403-Fehler. Um dies zu vermeiden, fügen Sie in der Amplify-Konsole eine Rewrite-Regel hinzu.

Gehen Sie folgendermaßen vor, um die Rewrite-Regel zu erstellen:

  1. Navigieren Sie in Amplify CLI zum Stammordner der Shell-Anwendung.

  2. Geben Sie den folgenden Befehl ein:

    amplify configure hosting
  3. Wenn Sie aufgefordert werden, benutzerdefinierte Einstellungen zu konfigurieren, geben Sie einY.

  4. Öffnen Sie die Amplify-Konsole.

  5. Wählen Sie die Shell-Anwendung.

  6. Wählen Sie im Navigationsbereich Hosting und dann Rewrites and redirects aus.

  7. Wählen Sie auf der Seite Umschreibungen und Weiterleitungen die Option Weiterleitungen verwalten aus.

  8. Wählen Sie Texteditor öffnen.

  9. Geben Sie im JSON Editor die folgende Weiterleitung ein:

    [ { "source": "/<*>", "target": "/index.html", "status": "404-200", "condition": null } ]
  10. Wählen Sie Save (Speichern) aus.

App-Entwickler, AWS DevOps

Testen Sie das Webportal.

  1. Geben Sie in einem Webbrowser die URL der bereitgestellten Shell-Anwendung ein.

  2. Stellen Sie sicher, dass die Shell-Anwendung und das Micro-Frontend ordnungsgemäß geladen werden.

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Löschen Sie die Anwendungen.

Wenn Sie die Shell- und Micro-Frontend-Anwendungen nicht mehr benötigen, löschen Sie sie. Auf diese Weise können Sie vermeiden, dass Gebühren für Ressourcen anfallen, die Sie nicht nutzen.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie dann die Amplify-Konsole.

  2. Wählen Sie das Micro-Frontend.

  3. Wählen Sie im Navigationsbereich App-Einstellungen und dann Allgemeine Einstellungen aus.

  4. Wählen Sie App löschen.

  5. Geben Sie im Bestätigungsfenster die Eingabe ein delete und wählen Sie dann App löschen.

  6. Wiederholen Sie diese Schritte, um die Shell-Anwendung zu löschen.

Allgemein AWS

Fehlerbehebung

ProblemLösung

Beim Ausführen des amplify init Befehls ist kein AWS Profil verfügbar

Wenn Sie kein AWS Profil konfiguriert haben, können Sie trotzdem mit dem amplify init Befehl fortfahren. Sie müssen die AWS access keys Option jedoch auswählen, wenn Sie zur Eingabe der Authentifizierungsmethode aufgefordert werden. Halten Sie Ihren AWS Zugriffsschlüssel und Ihren geheimen Schlüssel bereit.

Alternativ können Sie ein benanntes Profil für die konfigurieren AWS CLI. Anweisungen finden Sie in der AWS CLI Dokumentation unter Einstellungen für die Konfiguration und die Anmeldeinformationsdatei.

Fehler beim Laden von Remote-Einträgen

Wenn beim Laden der Remote-Einträge in der Datei main.ts der Shell-Anwendung ein Fehler auftritt, stellen Sie sicher, dass die environment.mfe1URL Variable richtig gesetzt ist. Der Wert dieser Variablen sollte dem Wert des URL Mikro-Frontends entsprechen.

404-Fehler beim Zugriff auf das Micro-Frontend

Wenn Sie beim Versuch, auf das lokale Micro-Frontend zuzugreifen, einen 404-Fehler erhalten, z. B. unterhttp://localhost:4200/mfe1, überprüfen Sie Folgendes:

  • Stellen Sie für die Shell-Anwendung sicher, dass die Routing-Konfiguration in der Datei app-routing.module.ts korrekt eingerichtet ist, und stellen Sie sicher, dass die Funktion das Micro-Frontend ordnungsgemäß aufruft. loadRemoteModule

  • Stellen Sie für das Micro-Frontend sicher, dass die Datei webpack.config.js die richtige Konfiguration hat, und stellen Sie sicher, dass die .js-Datei korrekt generiert wird. exposes remoteEntry

Zusätzliche Informationen

AWS Dokumentation

Andere Referenzen