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.
Optimieren Sie serverlose Bereitstellungen mit mehreren Konten mithilfe der AWS CDK Workflows und Aktionen GitHub
Sarat Chandra Pothula und VAMSI KRISHNA SUNKAVALLI, Amazon Web Services
Übersicht
Organizations, die eine serverlose Infrastruktur in mehreren AWS-Konten Umgebungen einsetzen, stehen häufig vor Herausforderungen wie Codeduplizierung, manuellen Prozessen und inkonsistenten Praktiken. Die Lösung dieses Musters zeigt, wie die wiederverwendbaren Workflows AWS Cloud Development Kit (AWS CDK) In Go und GitHub Actions verwendet werden können, um die serverlose Infrastrukturverwaltung für mehrere Konten zu optimieren. Diese Lösung zeigt, wie Sie Cloud-Ressourcen als Code definieren, standardisierte Prozesse für die kontinuierliche integration/continuous Bereitstellung (CI/CD) implementieren und modulare, wiederverwendbare Komponenten erstellen können.
Mithilfe dieser Tools können Unternehmen kontenübergreifende Ressourcen effizient verwalten, konsistente Bereitstellungspipelines implementieren und komplexe serverlose Architekturen vereinfachen. Der Ansatz verbessert auch die Sicherheit und die Einhaltung der Vorschriften, indem standardisierte Verfahren für die Verwendung durchgesetzt werden AWS-Konten, was letztendlich die Produktivität verbessert und Fehler bei der Entwicklung und Bereitstellung serverloser Anwendungen reduziert.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver. AWS-Konto
AWS Identity and Access Management (IAM) -Rollen und -Berechtigungen sind für den Bereitstellungsprozess vorhanden. Dazu gehören Berechtigungen für den Zugriff auf Amazon Elastic Container Registry (Amazon ECR) -Repositorys, zum Erstellen von AWS Lambda Funktionen und für alle anderen erforderlichen Ressourcen im gesamten Ziel. AWS-Konten
AWS Command Line Interface (AWS CLI) Version 2.9.11 oder höher, installiert und konfiguriert.
AWS Cloud Development Kit (AWS CDK) Version 2.114.1 oder höher, installiert und gebootet.
Einschränkungen
Sprachkompatibilität — Go ist eine beliebte Sprache für serverlose Anwendungen. Neben Go AWS CDK unterstützt der jedoch auch andere Programmiersprachen, darunter C#, Java, Python und TypeScript. Wenn Ihr Unternehmen bereits über Codebasen oder Kenntnisse in anderen Sprachen verfügt, müssen Sie Go möglicherweise anpassen oder lernen, um die im Muster beschriebene Lösung vollständig nutzen zu können.
Lernkurve — Die Einführung von Workflows AWS CDK, Go-Workflows (sofern sie für das Unternehmen neu sind) und GitHub wiederverwendbaren Workflows kann für Entwickler und DevOps Teams eine gewisse Lernkurve mit sich bringen. Möglicherweise sind Schulungen und Unterlagen erforderlich, um eine reibungslose Einführung und effektive Nutzung dieser Technologien zu gewährleisten.
Architektur
Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

Diese Lösung führt die folgenden Schritte aus:
Der Entwickler klont das Repository, erstellt einen neuen Branch und nimmt Änderungen am Anwendungscode in seiner lokalen Umgebung vor.
Der Entwickler überträgt diese Änderungen und überträgt den neuen Branch in das Repository. GitHub
Der Entwickler erstellt eine Pull-Anfrage im GitHub Repository und schlägt vor, sein Feature oder seinen neuen Feature-Branch mit dem Haupt-Branch zusammenzuführen.
Dieser Pull-Request löst den Workflow für Continuous Integration (CI) GitHub -Aktionen aus. Die CI- und die Continuous Deployment (CD) -Workflows in diesem Muster verwenden wiederverwendbare Workflows, bei denen es sich um vordefinierte, modulare Vorlagen handelt, die gemeinsam genutzt und in verschiedenen Projekten oder Repositorys ausgeführt werden können. Wiederverwendbare Workflows fördern die Standardisierung und Effizienz der CI/CD Prozesse.
Der CI-Workflow richtet die erforderliche Umgebung ein, generiert ein Docker-Tag für das Image und erstellt das Docker-Image mithilfe des Anwendungscodes.
Der CI-Workflow authentifiziert sich AWS mithilfe der zentralen AWS-Konto GitHub OIDC-Rolle. Für CI-Workflows verwendet die zentrale AWS-Konto GitHub OIDC-Rolle AWS Security Token Service (AWS STS), um temporäre Anmeldeinformationen abzurufen. Diese Anmeldeinformationen ermöglichen es der Rolle, Docker-Images zu erstellen und in das Amazon ECR-Repository der Zentrale zu übertragen. AWS-Konto
Der CI-Workflow überträgt das erstellte Docker-Image an Amazon ECR.
Der CI-Workflow speichert das Image-Tag im Systems Manager Manager-Parameterspeicher.
Nachdem der CI-Workflow erfolgreich abgeschlossen wurde, wird das Docker-Image-Tag ausgegeben.
Beim Auslösen des CD-Workflows gibt der Entwickler das Image-Tag des Docker-Images, das er bereitstellen möchte, manuell ein. Dieses Image-Tag entspricht dem Tag, das während des CI-Workflows generiert und an Amazon ECR übertragen wurde.
Der Entwickler löst den CD-Workflow manuell aus, wobei der Workflow für wiederverwendbare CDs verwendet wird.
Der CD-Workflow authentifiziert sich AWS mithilfe der zentralen AWS-Konto GitHub OIDC-Rolle. Für den CD-Workflow AWS STS wird zunächst die zentrale AWS-Konto GitHub OIDC-Rolle übernommen. Anschließend übernimmt diese Rolle die CDK-Bootstrap-Rollen für die Bereitstellung von Zielkonten.
Der CD-Workflow verwendet die, um Vorlagen AWS CDK zu synthetisieren. AWS CloudFormation
Der CD-Workflow stellt die Anwendung mithilfe AWS-Konto von CDK Deploy auf dem Ziel bereit, wobei das manuell angegebene Image-Tag für die Lambda-Funktion verwendet wird.
Tools
AWS-Services
AWS Cloud Development Kit (AWS CDK)ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung von AWS Cloud Infrastruktur im Code unterstützt.
AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und zu verwalten AWS-Regionen. CloudFormation ist ein integraler Bestandteil des AWS CDK Bereitstellungsprozesses. Das CDK synthetisiert CloudFormation Vorlagen und verwendet sie dann CloudFormation , um die Ressourcen in der Umgebung zu erstellen oder zu aktualisieren. AWS
Amazon Elastic Container Registry (Amazon ECR) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
AWS Identity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Es führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
AWS Systems Manager Parameter Store bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.
Andere Tools
Docker
ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen. GitHub Actions
ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorys integriert ist. GitHub Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren. Go
ist eine Open-Source-Programmiersprache, die Google unterstützt.
Code-Repository
Der Code für dieses Muster ist im GitHub aws-cdk-golang-serverlesscicd-github-actions-Repository
Bewährte Methoden
Modularer Aufbau — Organisieren Sie Ihren AWS CDK Code in modulare und wiederverwendbare Konstrukte oder Stapel und fördern so die Wiederverwendung und Wartbarkeit von Code über mehrere Konten und Projekte hinweg.
Trennung von Problemen — Trennen Sie den Infrastrukturcode vom Anwendungscode, sodass jede Komponente unabhängig bereitgestellt und verwaltet werden kann.
Versionierung und Unveränderlichkeit — Behandle deine Infrastruktur als Code (IaC) und verwende Git für die Versionskontrolle. Machen Sie sich unveränderliche Infrastrukturprinzipien zunutze, indem Sie neue Ressourcen erstellen, anstatt bestehende zu modifizieren.
Testen und Validieren — Implementieren Sie umfassende Teststrategien, einschließlich Komponententests, Integrationstests und end-to-end Tests, um die Richtigkeit und Zuverlässigkeit Ihres AWS CDK Codes und Ihrer Implementierungen zu gewährleisten.
Sicherheit und Compliance — Halten Sie sich an bewährte AWS Sicherheitsmethoden wie den Zugriff mit geringsten Rechten, sichere Kommunikation und Datenverschlüsselung. Implementieren Sie Compliance-Prüfungen und Auditmechanismen, um die Einhaltung der Unternehmensrichtlinien und behördlichen Anforderungen sicherzustellen. Implementieren Sie bewährte Sicherheitsmethoden für Container-Images, z. B. das Scannen nach Sicherheitslücken, die Durchsetzung der Image-Signierung und die Einhaltung der Compliance-Anforderungen für Ihr Unternehmen.
Überwachung und Protokollierung — Richten Sie Überwachungs- und Protokollierungsmechanismen ein, um den Zustand und die Leistung Ihrer serverlosen Anwendungen und Infrastruktur zu verfolgen. Verwenden Sie AWS-Services es wie Amazon CloudWatch und AWS X-Ray für Überwachungs- und Prüfungszwecke. AWS CloudTrail
Automatisierung und CI/CD — Verwenden Sie GitHub wiederverwendbare Workflows und andere CI/CD Tools, um die Erstellungs-, Test- und Bereitstellungsprozesse zu automatisieren, wodurch konsistente und wiederholbare Bereitstellungen über mehrere Konten hinweg unterstützt werden können.
Umgebungsmanagement — Pflegen Sie separate Umgebungen (z. B. Entwicklung, Staging und Produktion). Implementieren Sie Strategien zur Förderung von Änderungen zwischen Umgebungen und stellen Sie sicher, dass vor der Bereitstellung in der Produktion ordnungsgemäße Tests und Validierungen durchgeführt werden.
Dokumentation und Zusammenarbeit — Dokumentieren Sie Ihren Infrastrukturcode, Ihre Bereitstellungsprozesse und Best Practices, um den Wissensaustausch und die Zusammenarbeit innerhalb Ihres Teams zu erleichtern.
Kostenoptimierung — Implementieren Sie Strategien zur Kostenüberwachung und -optimierung, z. B. die richtige Dimensionierung von Ressourcen, die Nutzung der auto-scaling und die Nutzung von AWS Kostenoptimierungsdiensten wie AWS Budgets und. AWS Cost Explorer
Notfallwiederherstellung und Backup — Planen Sie Notfallwiederherstellungsszenarien, indem Sie Sicherungs- und Wiederherstellungsmechanismen für Ihre serverlosen Anwendungen und Infrastrukturressourcen implementieren.
Kontinuierliche Verbesserung — Überprüfen und aktualisieren Sie Ihre Verfahren, Tools und Prozesse regelmäßig, um sie an die neuesten Best Practices, Sicherheitsempfehlungen und technologischen Fortschritte im serverlosen Ökosystem anzupassen.
Verbessern Sie die Sicherheitslage — Verwenden Sie diese Option, AWS PrivateLinkum die Sicherheitslage Ihrer Virtual Private Cloud (VPC) zu verbessern, indem Sie VPC-Schnittstellen-Endpunkte für Amazon ECR und Parameter Store AWS Lambda konfigurieren. AWS Systems Manager
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein Amazon ECR-Repository in der Zentrale AWS-Konto. | Um Container-Images für mehrere freizugeben AWS-Konten, müssen Sie den kontoübergreifenden Zugriff für Amazon ECR konfigurieren. Erstellen Sie zunächst ein Amazon ECR-Repository in der Zentrale AWS-Konto. Führen Sie den folgenden Befehl aus, um ein Amazon ECR-Repository zu erstellen:
Gewähren Sie in einer späteren Aufgabe den anderen Benutzern, die das Container-Image verwenden müssen AWS-Konten , Pull-Zugriff. | AWS DevOps |
Fügen Sie kontoübergreifende Berechtigungen zum Amazon ECR-Repository hinzu. | Um kontoübergreifende Berechtigungen zum Amazon ECR-Repository in der Zentrale hinzuzufügen AWS-Konto, führen Sie den folgenden Code aus:
| AWS DevOps |
Konfigurieren Sie eine Rolle für die GitHub OIDC-Rolle in der Zentrale. AWS-Konto |
| AWS DevOps |
Bootstrapping der AWS Umgebung im Ziel AWS-Konten. | Richten Sie eine CDK-Umgebung in einer bestimmten AWS-Konto Umgebung ein AWS-Region , die kontoübergreifende Bereitstellungen von einem zentralen Konto aus ermöglicht und bei der Ausführungsrolle die Prinzipien der geringsten Rechte anwendet. CloudFormation Führen Sie den folgenden Befehl aus, um eine AWS Umgebung zu booten:
| AWS DevOps |
Gewähren Sie der zentralen AWS-Konto OIDC-Rolle Zugriff auf die AWS-Konto Bootstrap-Zielrollen. | Der CDK-Bootstrap erstellt die folgenden IAM-Rollen, die so konzipiert sind, dass sie von der zentralen Stelle in verschiedenen Phasen des AWS-Konto CDK-Bereitstellungsprozesses übernommen werden:
Jede Rolle verfügt über spezifische Berechtigungen, die auf ihren Zweck zugeschnitten sind und dem Prinzip der geringsten Rechte folgen. Das „
Verwenden Sie den folgenden Code, um die Berechtigungsrichtlinie für die OIDC-Rolle in der Zentrale AWS-Konto zu aktualisieren:
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Klonen Sie das Projekt-Repository. | Führen Sie den folgenden Befehl aus, um das GitHub Repository
| AWS DevOps |
Gehen Sie zum Dockerfile-Pfad. | Führen Sie den folgenden Befehl aus, um zum Dockerfile-Pfad zu navigieren:
| AWS DevOps |
Authentifizieren Sie Docker mit Amazon ECR. | Amazon ECR benötigt sicheren Zugriff auf Ihre privaten Container-Repositorys. Wenn Sie sich auf diese Weise anmelden, ermöglichen Sie Docker auf Ihrem lokalen Computer oder Ihrer CI/CD Umgebung, sicher mit Amazon ECR zu interagieren. Führen Sie den folgenden Befehl aus, um Docker mit Amazon ECR zu authentifizieren:
Überarbeiten Sie die Platzhalter | AWS DevOps |
Erstellen Sie das Docker-Image. | Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen:
| AWS DevOps |
Markieren und übertragen Sie das Docker-Image. | Führen Sie die folgenden Befehle aus, um das Docker-Image zu taggen und in das Amazon ECR-Repository zu übertragen:
Überarbeiten Sie die Platzhalter | AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Synthetisieren Sie den CDK-Stack mit umgebungsspezifischen Variablen. | Führen Sie den folgenden Befehl aus, um die CloudFormation Vorlage für Ihre Infrastruktur zu generieren, wie sie in Ihrem CDK-Code definiert ist:
Überarbeiten Sie die folgenden Platzhalter mit Ihren Informationen:
| AWS DevOps |
Stellen Sie den CDK-Stack bereit. | Führen Sie den folgenden Befehl aus AWS-Konto, um den CDK-Stack auf Ihrem bereitzustellen. Das
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen Feature-Branch und fügen Sie Ihre Änderungen hinzu. | Verwenden Sie das geklonte Repository, das Sie zuvor erstellt haben, erstellen Sie einen Feature-Branch und fügen Sie dann Ihre Änderungen zum Anwendungscode hinzu. Verwenden Sie die folgenden Befehle:
Im Folgenden finden Sie Beispiele für Änderungen:
GitHub Aktionen verwenden die wiederverwendbaren Workflows und lösen die CI/CD Pipelines aus. | AWS DevOps |
Führen Sie Ihre Änderungen zusammen. | Erstelle einen Pull-Request und füge deine Änderungen mit dem Hauptteil zusammen. | AWS DevOps |
Fehlerbehebung
Problem | Lösung |
---|---|
| Gehen Sie wie folgt vor, um die kontoübergreifenden Berechtigungen zu überprüfen, um dieses Problem zu beheben:
|
Kompatibilitätsprobleme aufgrund von Versionskonflikten, z. B. | Gehen Sie wie folgt vor, um zu überprüfen, ob Sie die erforderlichen Versionen von AWS CDK and Go verwenden, um dieses Problem zu lösen:
|
CI/CD-Pipeline-Fehler, z. B. | Um Probleme mit der GitHub Aktionskonfiguration zu lösen, stellen Sie sicher, dass die wiederverwendbaren Workflows ordnungsgemäß referenziert und konfiguriert sind. |
Zugehörige Ressourcen
AWS-Ressourcen
Sonstige Ressourcen