

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.

# Entwicklertools
<a name="developer-tools-pattern-list"></a>

**Topics**
+ [DevOps](devops-pattern-list.md)
+ [Infrastruktur](infrastructure-pattern-list.md)
+ [Web- und mobile Apps](websitesandwebapps-pattern-list.md)

# DevOps
<a name="devops-pattern-list"></a>

**Topics**
+ [Beschleunigen Sie MLOps mit Backstage- und Self-Service-Vorlagen für Amazon AI SageMaker](accelerate-mlops-with-backstage-and-sagemaker-templates.md)
+ [Automatisieren Sie den AWS Infrastrukturbetrieb mithilfe von Amazon Bedrock](automate-aws-infrastructure-operations-by-using-amazon-bedrock.md)
+ [Automatisieren Sie mithilfe von Terraform CloudFront Updates, wenn sich die Load Balancer-Endpunkte ändern](automate-cloudfront-updates-when-load-balancer-endpoints-change.md)
+ [Automatisieren Sie CodeGuru Amazon-Rezensionen für AWS CDK Python-Anwendungen mithilfe von GitHub Aktionen](automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.md)
+ [Automatisieren Sie die Bereitstellung von AWS Supply Chain Data Lakes in einem Multi-Repository-Setup mithilfe von GitHub Actions, Artifactory und Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatisieren Sie die AWS-Ressourcenbewertung](automate-aws-resource-assessment.md)
+ [Automatische Installation von SAP-Systemen mithilfe von Open-Source-Tools](install-sap-systems-automatically-by-using-open-source-tools.md)
+ [Automatisieren Sie das AWS Service Catalog-Portfolio und die Produktbereitstellung mithilfe von AWS CDK](automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.md)
+ [Automatisieren Sie das dynamische Pipeline-Management für die Bereitstellung von Hotfix-Lösungen in Gitflow-Umgebungen mithilfe von und AWS Service Catalog AWS CodePipeline](automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.md)
+ [Automatisieren Sie das Löschen von AWS CloudFormation Stacks und zugehörigen Ressourcen](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatisieren Sie die Erfassung und Visualisierung von benutzerdefinierten Amazon MWAA-Metriken auf Amazon Managed Grafana mithilfe von Terraform](automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.md)
+ [Automatisieren Sie die Stackset-Bereitstellung mithilfe von AWS CodePipeline und AWS CodeBuild](automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.md)
+ [Automatisches Hinzufügen einer von AWS verwalteten Richtlinie für Systems Manager zu EC2 Instanzprofilen mithilfe von Cloud Custodian und AWS CDK](automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.md)
+ [Automatisches Erstellen von CI/CD Pipelines und Amazon ECS-Clustern für Microservices mithilfe von AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Erstellen und übertragen Sie Docker-Images mithilfe von GitHub Actions und Terraform auf Amazon ECR](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Erstellen und testen Sie iOS-Apps mit AWS CodeCommit CodePipeline, AWS und AWS Device Farm](build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm.md)
+ [Konfiguration der gegenseitigen TLS-Authentifizierung für Anwendungen, die auf Amazon EKS ausgeführt werden](configure-mutual-tls-authentication-for-applications-running-on-amazon-eks.md)
+ [Automatisieren Sie die Erstellung von Amazon WorkSpaces Applications-Ressourcen mit AWS CloudFormation](automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.md)
+ [Erstellen Sie einen benutzerdefinierten Protokollparser für Amazon ECS mithilfe eines Firelens-Protokollrouters](create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.md)
+ [Erstellen Sie mit Actions und Terragrunt ein API-gesteuertes Framework GitHub zur Ressourcenorchestrierung](create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.md)
+ [Erstellen Sie mithilfe von Aktionen automatisierte Pull-Requests für die von Terraform verwaltete Infrastruktur AWS GitHub](create-automated-pull-requests-for-terraform-managed-aws-infrastructure.md)
+ [Automatisches Erstellen dynamischer CI-Pipelines für Java- und Python-Projekte](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Stellen Sie CloudWatch Synthetics Canaries mithilfe von Terraform bereit](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Stellen Sie eine ChatOps Lösung zur Verwaltung von SAST-Scanergebnissen bereit, indem Sie Amazon Q Developer in Chat-Anwendungen verwenden, benutzerdefinierte Aktionen und CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Stellen Sie mithilfe von Terraform Agentensysteme auf Amazon Bedrock mit dem CrewAI-Framework bereit](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Stellen Sie einen AWS Glue Glue-Job mit einer AWS CodePipeline CI/CD-Pipeline bereit](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Stellen Sie mithilfe von AWS CodePipeline, AWS und AWS Code in mehreren CodeCommit AWS-Regionen bereit CodeBuild](deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild.md)
+ [Stellen Sie Workloads aus DevOps Azure-Pipelines auf private Amazon EKS-Cluster bereit](deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.md)
+ [Führen Sie Amazon Redshift SQL-Abfragen mithilfe von Terraform aus](execute-redshift-sql-queries-using-terraform.md)
+ [Exportieren Sie AWS Backup Backup-Berichte aus einer gesamten Organisation in AWS Organizations als CSV-Datei](export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.md)
+ [Exportieren Sie Tags für eine Liste von EC2 Amazon-Instances in eine CSV-Datei](export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.md)
+ [Generieren Sie mithilfe von Troposphere eine CloudFormation AWS-Vorlage, die von AWS Config verwaltete Regeln enthält](generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.md)
+ [Geben Sie SageMaker Notebook-Instances temporären Zugriff auf ein CodeCommit Repository in einem anderen AWS-Konto](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Implementieren Sie eine GitHub Flow-Branching-Strategie für Umgebungen mit mehreren Konten DevOps](implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.md)
+ [Implementieren Sie eine Gitflow-Branching-Strategie für Umgebungen mit mehreren Konten DevOps](implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.md)
+ [Implementieren Sie eine Trunk-Branching-Strategie für Umgebungen mit mehreren Konten DevOps](implement-a-trunk-branching-strategy-for-multi-account-devops-environments.md)
+ [Implementieren Sie zentralisiertes benutzerdefiniertes Checkov-Scanning, um Richtlinien vor der Bereitstellung AWS der Infrastruktur durchzusetzen](centralized-custom-checkov-scanning.md)
+ [Implementieren Sie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung mit der Integration von K8SGPT und Amazon Bedrock](implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.md)
+ [Automatische Erkennung von Änderungen und Initiierung verschiedener CodePipeline Pipelines für ein Monorepo in CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Integrieren Sie mithilfe von AWS ein Bitbucket-Repository mit AWS Amplify CloudFormation](integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.md)
+ [Starten Sie mithilfe von Step Functions und einer Lambda-Proxyfunktion ein CodeBuild Projekt für alle AWS-Konten](launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.md)
+ [Multi-AZ-Failover für EMR-Cluster mithilfe von Application Recovery Controller verwalten](multi-az-failover-spark-emr-clusters-arc.md)
+ [Verwalten Sie blue/green Bereitstellungen von Microservices für mehrere Konten und Regionen mithilfe von AWS-Code-Services und AWS KMS-Schlüsseln für mehrere Regionen](manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.md)
+ [Überwachen Sie Amazon ECR-Repositorys mit AWS und AWS CloudFormation Config auf Platzhalterberechtigungen](monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.md)
+ [Optimieren Sie serverlose Bereitstellungen mit mehreren Konten mithilfe der AWS CDK Workflows und Aktionen GitHub](optimize-multi-account-serverless-deployments.md)
+ [Bereitstellen von AWS Service Catalog Produkten auf der Grundlage von AWS CloudFormation Vorlagen mithilfe von GitHub Aktionen](provision-aws-service-catalog-products-using-github-actions.md)
+ [Stellen Sie IAM-Rollen mit den geringsten Rechten bereit, indem Sie eine Rollenautomatenlösung bereitstellen](provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.md)
+ [Veröffentlichen Sie CloudWatch Amazon-Metriken in einer CSV-Datei](publish-amazon-cloudwatch-metrics-to-a-csv-file.md)
+ [Entfernen Sie EC2 Amazon-Einträge AWS Managed Microsoft AD mithilfe AWS-Konten von AWS Lambda Automatisierung](remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.md)
+ [Entfernen Sie EC2 Amazon-Einträge in derselben AWS-Konto Form AWS Managed Microsoft AD mithilfe von AWS Lambda Automatisierung](remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.md)
+ [Führen Sie Komponententests für Python-ETL-Jobs AWS Glue mithilfe des Pytest-Frameworks aus](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Richten Sie eine CI/CD Pipeline mithilfe von AWS CodePipeline und AWS CDK ein](set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.md)
+ [Richten Sie mithilfe von Terraform eine zentrale Protokollierung auf Unternehmensebene ein](set-up-centralized-logging-at-enterprise-scale-by-using-terraform.md)
+ [Richten Sie die end-to-end Verschlüsselung für Anwendungen auf Amazon EKS mithilfe von cert-manager und Let's Encrypt ein](set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.md)
+ [Vereinfachen Sie die Bereitstellung von Amazon EKS-Anwendungen für mehrere Mandanten mithilfe von Flux](simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.md)
+ [Optimieren Sie die Entwicklung und Bereitstellung von Amazon Lex Lex-Bot mithilfe eines automatisierten Workflows](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Koordinieren Sie die Ressourcenabhängigkeit und die Aufgabenausführung mithilfe des AWS Fargate WaitCondition Hook-Konstrukts](use-the-aws-fargate-waitcondition-hook-construct.md)
+ [Verwenden Sie Git-Quell-Repositorys von Drittanbietern in AWS CodePipeline](use-third-party-git-source-repositories-in-aws-codepipeline.md)
+ [Erstellen Sie eine CI/CD Pipeline zur Validierung von Terraform-Konfigurationen mithilfe von AWS CodePipeline](create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.md)
+ [Mehr Muster](devops-more-patterns-pattern-list.md)

# Beschleunigen Sie MLOps mit Backstage- und Self-Service-Vorlagen für Amazon AI SageMaker
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates"></a>

*Ashish Bhatt, Shashank Hirematt und Shivanshu Suryakar, Amazon Web Services*

## Zusammenfassung
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-summary"></a>

Organizations, die Operations (MLOps) -Systeme für maschinelles Lernen verwenden, stehen vor erheblichen Herausforderungen bei der Skalierung, Standardisierung und Sicherung ihrer ML-Infrastruktur. Dieses Muster führt einen transformativen Ansatz ein, der [Backstage](https://backstage.io/), ein Open-Source-Entwicklerportal, mit [Amazon SageMaker AI](https://aws.amazon.com/sagemaker/) und gehärteten Infrastructure-as-Code-Modulen (IaC) kombiniert, um die Art und Weise zu verbessern, wie Ihre Data-Science-Teams ML-Workflows entwickeln, bereitstellen und verwalten können.

[Die IaC-Module für dieses Muster werden im Module-Repository bereitgestellt. GitHub AWS AIOps ](https://github.com/awslabs/aiops-modules/tree/main/modules/sagemaker) Diese Module bieten vorgefertigte Vorlagen für die Einrichtung der ML-Infrastruktur und die Erstellung konsistenter ML-Umgebungen. Datenwissenschaftler haben jedoch oft Schwierigkeiten, diese Vorlagen direkt zu verwenden, da sie Infrastrukturkenntnisse benötigen. Das Hinzufügen eines Entwicklerportals wie Backstage bietet Datenwissenschaftlern eine benutzerfreundliche Möglichkeit, standardisierte ML-Umgebungen bereitzustellen, ohne die zugrunde liegenden Infrastrukturdetails verstehen zu müssen.

Wenn Sie Backstage als Self-Service-Plattform verwenden und vorkonfigurierte SageMaker KI-Vorlagen integrieren, können Sie:
+ Beschleunigen Sie die Amortisierungszeit Ihrer ML-Initiativen.
+ Helfen Sie mit, konsistente Sicherheit und Governance durchzusetzen.
+ Stellen Sie Datenwissenschaftlern standardisierte, konforme Umgebungen zur Verfügung.
+ Reduzieren Sie den betrieblichen Aufwand und die Komplexität der Infrastruktur.

Dieses Muster bietet eine Lösung, die die kritischen Herausforderungen von bewältigt MLOps und außerdem ein skalierbares, wiederholbares Framework bietet, das Innovationen ermöglicht und gleichzeitig die Unternehmensstandards einhält.

**Zielpublikum**

Dieses Muster richtet sich an ein breites Publikum, das sich innerhalb eines Unternehmens mit ML, Cloud-Architektur und Plattformtechnik befasst. Dies umfasst:
+ **ML-Ingenieure**, die ML-Workflow-Implementierungen standardisieren und automatisieren möchten.
+ **Datenwissenschaftler**, die Self-Service-Zugriff auf vorkonfigurierte und konforme ML-Umgebungen wünschen.
+ **Plattformingenieure**, die für den Aufbau und die Wartung interner Entwicklerplattformen und der gemeinsamen Infrastruktur verantwortlich sind.
+ **Cloud-Architekten**, die skalierbare, sichere und kostengünstige Cloud-Lösungen für entwerfen MLOps.
+ **DevOps Ingenieure**, die daran interessiert sind, die Praktiken der kontinuierlichen Integration und kontinuierlichen Bereitstellung (CI/CD) auf die Bereitstellung und Workflows der ML-Infrastruktur auszudehnen.
+ **Technische Leiter und Manager**, die ML-Initiativen beaufsichtigen und die Teamproduktivität, die Unternehmensführung und die Markteinführungszeit verbessern möchten.

Weitere Informationen zu MLOps Herausforderungen, SageMaker MLOps KI-Modulen und dazu, wie die durch dieses Muster bereitgestellte Lösung den Bedürfnissen Ihrer ML-Teams gerecht werden kann, finden Sie im Abschnitt [Zusätzliche Informationen](#accelerate-mlops-with-backstage-and-sagemaker-templates-additional).

## Voraussetzungen und Einschränkungen
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-prereqs"></a>

**Voraussetzungen**
+ AWS Identity and Access Management (IAM) [-Rollen und Berechtigungen](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#prerequisites) für die Bereitstellung von Ressourcen in Ihrem AWS-Konto
+ Ein Verständnis der Konzepte von [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html), [SageMaker Projects](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-whatis.html), [SageMaker Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-overview.html) und [SageMaker Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html)
+ Ein Verständnis der IaC-Prinzipien und Erfahrung mit Tools wie [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)

**Einschränkungen**
+ **Eingeschränkte Abdeckung der Vorlagen**. Derzeit unterstützt die Lösung nur SageMaker KI-bezogene AIOps Module aus der umfassenderen [AIOps Lösung](https://github.com/awslabs/aiops-modules). Andere Module, wie Ray on Amazon Elastic Kubernetes Service (Amazon EKS) MLflow, Apache Airflow und Fine-Tuning für Amazon Bedrock, sind noch nicht als Backstage-Vorlagen verfügbar.
+ **Nicht konfigurierbare Standardeinstellungen.** Vorlagen verwenden feste Standardkonfigurationen aus den AIOps SageMaker Modulen ohne Anpassung. Sie können Instanztypen, Speichergrößen, Netzwerkkonfigurationen oder Sicherheitsrichtlinien nicht über die Backstage-Oberfläche ändern, was die Flexibilität für bestimmte Anwendungsfälle einschränkt.
+ **AWS-nur Unterstützung**. Die Plattform ist ausschließlich für AWS Bereitstellungen konzipiert und unterstützt keine Multi-Cloud-Szenarien. Organizations, die Cloud-Dienste außerhalb von verwenden, AWS Cloud können diese Vorlagen nicht für ihre ML-Infrastrukturanforderungen verwenden.
+ **Manuelle Verwaltung von Anmeldeinformationen**. Sie müssen Ihre AWS Anmeldeinformationen für jede Bereitstellung manuell eingeben. Diese Lösung bietet weder eine Integration mit Anbietern von Unternehmensidentitäten AWS IAM Identity Center noch eine automatische Rotation von Anmeldeinformationen.
+ **Eingeschränktes Lebenszyklusmanagement**. Den Vorlagen fehlen umfassende Funktionen für das Ressourcenlebenszyklusmanagement wie automatische Bereinigungsrichtlinien, Empfehlungen zur Kostenoptimierung und Erkennung von Infrastrukturabweichungen. Sie müssen die bereitgestellten Ressourcen nach der Erstellung manuell verwalten und überwachen.

## Architektur
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-architecture"></a>

Das folgende Diagramm zeigt die Lösungsarchitektur für ein einheitliches Entwicklerportal, das die Implementierung der ML-Infrastruktur mit SageMaker KI in allen Umgebungen standardisiert und beschleunigt.

![\[Architektur für ein einheitliches Entwicklerportal mit Backstage, CNOE, GitHub Actions und Seed-Farmer.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c16160cf-d637-423e-93a7-485ffbb28646/images/233adab3-83cf-42f3-a1de-72d0b8ade5ae.png)


In dieser Architektur:

1. [AWS Blueprints zur Anwendungsmodernisierung](https://github.com/aws-samples/appmod-blueprints.git) sehen die Infrastruktureinrichtung mit einem [Amazon EKS-Cluster](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) als Basis für das [Cloud Native Operational Excellence (CNOE)](https://cnoe.io/) -Framework vor. Diese umfassende Lösung bewältigt komplexe Herausforderungen beim Cloud-nativen Infrastrukturmanagement, indem sie eine skalierbare interne Entwicklerplattform (IDP) bereitstellt. Die Blueprints bieten einen strukturierten Ansatz für den Aufbau einer robusten, flexiblen Infrastruktur, die sich an Ihre sich ändernden organisatorischen Anforderungen anpassen kann.

1. Das CNOE-Open-Source-Framework konsolidiert DevOps Tools und löst die Fragmentierung des Ökosystems durch einen einheitlichen Plattform-Engineering-Ansatz. Durch die Zusammenführung unterschiedlicher Tools und Technologien vereinfacht es die komplexe Landschaft der cloudnativen Entwicklung, sodass sich Ihre Teams auf Innovationen statt auf das Toolchain-Management konzentrieren können. Das Framework bietet eine standardisierte Methodik für die Auswahl, Integration und Verwaltung von Entwicklungstools.

1. Mit CNOE wird Backstage als out-of-the-box Lösung innerhalb des Amazon EKS-Clusters bereitgestellt. [Backstage ist mit einer robusten Authentifizierung über [Keycloak und umfassenden Bereitstellungsworkflows](https://www.keycloak.org/) über Argo CD ausgestattet.](https://argo-cd.readthedocs.io/en/stable/) Diese integrierte Plattform schafft eine zentrale Umgebung für die Verwaltung von Entwicklungsprozessen und bietet Teams einen zentralen Ort, an dem sie auf ihre Infrastruktur und Anwendungen in mehreren Umgebungen zugreifen, diese bereitstellen und überwachen können.

1. Ein GitHub Repository enthält vorkonfigurierte AIOps Softwarevorlagen, die den gesamten SageMaker KI-Lebenszyklus abdecken. Diese Vorlagen richten sich an kritische ML-Infrastrukturanforderungen, einschließlich SageMaker Studio-Bereitstellung, Modelltraining, Inferenz-Pipelines und Modellüberwachung. Diese Vorlagen helfen Ihnen dabei, Ihre ML-Initiativen zu beschleunigen und die Konsistenz zwischen verschiedenen Projekten und Teams sicherzustellen.

1. [GitHub Actions](https://github.com/features/actions) implementiert einen automatisierten Workflow, der die Bereitstellung von Ressourcen über das [Seed-Farmer-Hilfsprogramm](https://github.com/awslabs/seed-farmer) dynamisch auslöst. Dieser Ansatz integriert den Backstage-Katalog in das AIOps Modul-Repository und sorgt für einen optimierten Infrastrukturbereitstellungsprozess. Die Automatisierung reduziert manuelle Eingriffe, minimiert menschliche Fehler und gewährleistet einen schnellen, konsistenten Aufbau einer Infrastruktur in verschiedenen Umgebungen.

1. Dies [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)hilft Ihnen dabei, Infrastruktur als Code zu definieren und bereitzustellen, und gewährleistet eine wiederholbare, sichere und konforme Bereitstellung von Ressourcen in allen angegebenen Bereichen. AWS-Konten Dieser Ansatz bietet maximale Governance bei minimalem manuellem Aufwand, sodass Sie standardisierte Infrastrukturvorlagen erstellen können, die einfach repliziert, versionsgesteuert und geprüft werden können.

## Tools
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, Infrastruktur im Code zu definieren und bereitzustellen AWS Cloud .
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/) ist ein verwalteter ML-Service, der Ihnen hilft, ML-Modelle zu erstellen und zu trainieren und sie dann in einer produktionsbereiten gehosteten Umgebung bereitzustellen.

**Andere Tools**
+ [Backstage](https://backstage.io/) ist ein Open-Source-Framework, mit dem Sie interne Entwicklerportale erstellen können.
+ [GitHub Actions](https://github.com/features/actions) ist eine CI/CD Plattform, die Workflows zur Softwareentwicklung automatisiert, einschließlich Aufgaben wie dem Erstellen, Testen und Bereitstellen von Code.

**Code-Repositorien**

Dieses Muster verwendet Code und Vorlagen aus den folgenden GitHub Repositorys:
+ [AIOps interne Entwicklerplattform (IDP) mit](https://github.com/aws-samples/sample-aiops-idp-backstage/) Backstage-Repository
+ SageMaker [KI-bezogene Module aus dem Modul-Repository AWS AIOps ](https://github.com/awslabs/aiops-modules)
+ [Modernes Engineering auf Lager AWS](https://github.com/aws-samples/appmod-blueprints)

**Implementierung**

Diese Implementierung verwendet ein Bereitstellungsmuster für Backstage in Produktionsqualität aus dem Repository [Modern Engineering on](https://github.com/aws-samples/appmod-blueprints). AWS Dieser Ansatz vereinfacht den Einrichtungsprozess erheblich und berücksichtigt gleichzeitig AWS bewährte Methoden für Sicherheit und Skalierbarkeit.

Im Abschnitt „[Epics](#accelerate-mlops-with-backstage-and-sagemaker-templates-epics)“ dieses Musters wird der Implementierungsansatz beschrieben. Ausführliche Anweisungen zur step-by-step Bereitstellung finden Sie im umfassenden [Bereitstellungsleitfaden](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md), der auf der [AIOps internen Entwicklerplattform (IDP) mit Backstage-Repository](https://github.com/aws-samples/sample-aiops-idp-backstage/) verfügbar ist. Die Implementierung umfasst:
+ Erste Bereitstellung der Backstage-Plattform
+ Integration von SageMaker Software-Vorlagen mit Backstage
+ Nutzung und Pflege von Backstage-Vorlagen

Der Bereitstellungsleitfaden enthält auch Anleitungen zur laufenden Wartung, Fehlerbehebung und Plattformskalierung.

## Best Practices
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-best-practices"></a>

Folgen Sie diesen Best Practices, um Sicherheit, Steuerung und betriebliche Exzellenz bei Ihren MLOps Infrastrukturimplementierungen zu gewährleisten.

**Verwaltung von Vorlagen**
+ Nehmen Sie niemals grundlegende Änderungen an Live-Vorlagen vor.
+ Testen Sie Updates immer gründlich, bevor Sie sie in der Produktion einsetzen.
+ Sorgen Sie für klare und gut dokumentierte Vorlagenversionen.

**Sicherheit**
+ Ordnen Sie GitHub Aktionen bestimmten Commit-Secure-Hash-Algorithmen (SHAs) zu, um Angriffe auf die Lieferkette zu verhindern.
+ Verwenden Sie IAM-Rollen mit geringsten Rechten und detaillierten Berechtigungen.
+ Speichern Sie vertrauliche Anmeldeinformationen in [GitHub Secrets](https://docs.github.com/en/actions/concepts/security/secrets) und. [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ Kodieren Sie niemals Anmeldeinformationen in Vorlagen fest.

**Verwaltung und Nachverfolgung**
+ Implementieren Sie umfassende Standards für die Kennzeichnung von Ressourcen.
+ Ermöglichen Sie eine präzise Kostenverfolgung und Compliance-Überwachung.
+ Sorgen Sie für klare Prüfpfade bei Infrastrukturänderungen.

Dieser Leitfaden bietet eine solide Grundlage für die Implementierung dieser Best Practices mithilfe von Backstage-, SageMaker KI- und IaC-Modulen.

## Epen
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-epics"></a>

### Richten Sie Ihre ML-Umgebung ein
<a name="set-up-your-ml-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie Backstage bereit. | In diesem Schritt werden die Blueprints im AWS Repository [Modern Engineering on](https://github.com/aws-samples/appmod-blueprints) verwendet, um eine robuste, skalierbare Infrastruktur aufzubauen, die mehrere integriert, AWS-Services um einen zentralen IDP für ML-Workflows zu schaffen. Folgen Sie den Anweisungen im [Abschnitt Backstage-Bereitstellung des Bereitstellungsleitfadens](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#backstage-deployment), um das Repository zu klonen, Abhängigkeiten zu installieren, die AWS CDK konfigurierten Umgebungsvariablen zu booten und die Backstage-Plattform bereitzustellen.Die Infrastruktur verwendet Amazon EKS als Container-Orchestrierungsplattform für die Bereitstellung von IDP-Komponenten. Die Amazon EKS-Architektur umfasst sichere Netzwerkkonfigurationen zur strikten Netzwerkisolierung und zur Steuerung von Zugriffsmustern. Die Plattform ist in Authentifizierungsmechanismen integriert, um den Benutzerzugriff über Dienste und Umgebungen hinweg zu sichern. | Plattformingenieur | 
| Richten Sie Ihre SageMaker KI-Vorlagen ein. | In diesem Schritt werden die Skripts in der GitHub [AIOps internen Entwicklerplattform (IDP) mit dem Backstage-Repository](https://github.com/aws-samples/sample-aiops-idp-backstage/) verwendet. Folgen Sie den Anweisungen im Abschnitt zur [Einrichtung der SageMaker Vorlage](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#sagemaker-template-setup) im Bereitstellungshandbuch, um das Repository zu klonen, die Voraussetzungen einzurichten und das Setup-Skript auszuführen.Durch diesen Prozess wird ein Repository erstellt, das die SageMaker AI-Vorlagen enthält, die für die Integration mit Backstage erforderlich sind. | Plattformingenieur | 
| Integrieren Sie die SageMaker **** KI-Vorlagen in Backstage. | Folgen Sie den Anweisungen im Abschnitt zur [Integration von SageMaker Vorlagen](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#sagemaker-templates-integration) des Bereitstellungsleitfadens, um Ihre SageMaker KI-Vorlagen zu registrieren.In diesem Schritt werden die AIOps Module (SageMaker KI-Vorlagen aus dem letzten Schritt) in Ihre Backstage-Implementierung integriert, sodass Sie Ihre ML-Infrastrukturanforderungen selbst erfüllen können. | Plattformingenieur | 
| Verwenden Sie die SageMaker KI-Vorlagen von Backstage. | Folgen Sie den Anweisungen im Abschnitt [ SageMaker Vorlagen verwenden](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#using-sagemaker-templates) des Bereitstellungsleitfadens, um auf das Backstage-Portal zuzugreifen und die ML-Umgebung in SageMaker Studio zu erstellen.Im Backstage-Portal können Sie aus verfügbaren SageMaker KI-Vorlagen auswählen, darunter Optionen für SageMaker Studio-Umgebungen, SageMaker Notizbücher, benutzerdefinierte SageMaker Projektvorlagen und Modellbereitstellungspipelines. Nachdem Sie die Konfigurationsparameter angegeben haben, erstellt die Plattform automatisch spezielle Repositorys und stellt AWS Ressourcen über GitHub Actions und Seed-Farmer bereit. Sie können den Fortschritt anhand von GitHub Aktionsprotokollen und dem Backstage-Komponentenkatalog überwachen. | Datenwissenschaftler, Dateningenieur, Entwickler | 

### Verwalten Sie Vorlagen für Unternehmensführung und Compliance
<a name="manage-templates-for-governance-and-compliance"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie SageMaker KI-Vorlagen. | Gehen Sie wie folgt vor, um eine SageMaker AI-Vorlage in Backstage zu aktualisieren.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/accelerate-mlops-with-backstage-and-sagemaker-templates.html) | Plattformingenieur | 
| Erstellen und verwalten Sie mehrere Versionen einer Vorlage. | Für grundlegende Änderungen oder Upgrades möchten Sie möglicherweise mehrere Versionen einer SageMaker AI-Vorlage erstellen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/accelerate-mlops-with-backstage-and-sagemaker-templates.html) | Plattformingenieur | 

### Erweitern Sie Ihre ML-Umgebung
<a name="extend-your-ml-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erweitern Sie die Reichweite von Vorlagen über SageMaker KI hinaus. | Die aktuelle Lösung implementiert nur SageMaker KI-bezogene AIOps Vorlagen. Sie können die ML-Umgebung erweitern, indem Sie [AIOps Module](https://github.com/awslabs/aiops-modules) hinzufügen und benutzerdefinierte Softwareschablonen für zusätzliche AWS-Services Anwendungen integrieren. Sie können diese mithilfe der Template-Designer-Oberfläche in Backstage, durch die Implementierung benutzerdefinierter Scaffolder-Aktionen oder durch die Verwaltung von Vorlagen-Repositorys mit Standard-Metadaten erstellen. Aus Gründen der Konsistenz unterstützt die Plattform die Versionierung von Vorlagen, die teamübergreifende gemeinsame Nutzung und Validierungsworkflows. Weitere Informationen finden Sie in der [Backstage-Dokumentation](https://backstage.io/docs/overview/what-is-backstage/).Sie können auch Muster der Vorlagenvererbung implementieren, um spezielle Versionen von Basisvorlagen zu erstellen. Diese Erweiterbarkeit ermöglicht es Ihnen, verschiedene AWS Ressourcen und Anwendungen über SageMaker KI hinaus zu verwalten und gleichzeitig die vereinfachte Entwicklererfahrung und die Standards Ihres Unternehmens beizubehalten. | Plattformingenieur | 
| Verwenden Sie die dynamische Parameterinjektion. | Die aktuellen Vorlagen verwenden Standardkonfigurationen ohne Anpassung und führen die Seed-Farmer-CLI aus, um Ressourcen mit Standardvariablen bereitzustellen. Sie können die Standardkonfiguration erweitern, indem Sie die dynamische Parameterinjektion für modulspezifische Konfigurationen verwenden. | Plattformingenieur | 
| Verbessern Sie Sicherheit und Compliance. | Um die Sicherheit bei der Erstellung von AWS-Ressourcen zu erhöhen, können Sie die Integration der rollenbasierten Zugriffskontrolle (RBAC) mit Single Sign-On (SSO), SAML, OpenID Connect (OIDC) und der Durchsetzung von Richtlinien als Code aktivieren. | Plattformingenieur | 
| Fügen Sie eine automatische Ressourcenbereinigung hinzu. | Sie können Funktionen für automatische Bereinigungsrichtlinien aktivieren und auch die Erkennung und Behebung von Infrastrukturabweichungen hinzufügen. | Plattformingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entfernen Sie die Backstage-Infrastruktur und die SageMaker KI-Ressourcen. | Wenn Sie mit der Nutzung Ihrer ML-Umgebung fertig sind, folgen Sie den Anweisungen im Abschnitt [Säuberung und Ressourcenmanagement](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#cleanup-and-resource-management) des Bereitstellungsleitfadens, um die Backstage-Infrastruktur zu entfernen und die SageMaker KI-Ressourcen in Ihrer ML-Umgebung zu löschen. | Plattformingenieur | 

## Fehlerbehebung
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| AWS CDK Bootstrap-Fehler |  Überprüfen Sie die AWS Anmeldeinformationen und die Regionskonfiguration. | 
| Probleme beim Zugriff auf Amazon EKS-Cluster | Überprüfen Sie die **Kubectl-Konfiguration** und die IAM-Berechtigungen. | 
| Verbindungsprobleme mit dem Application Load Balancer | Stellen Sie sicher, dass Sicherheitsgruppen eingehenden Datenverkehr auf Port 80/443 zulassen. | 
| GitHub Probleme bei der Integration | Überprüfen Sie die GitHub Token-Berechtigungen und den Zugriff auf die Organisation. | 
| SageMaker Fehler bei der KI-Bereitstellung | Überprüfen Sie die [AWS-Service Kontingente](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker) und IAM-Berechtigungen. | 

## Zugehörige Ressourcen
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-resources"></a>
+ [Plattformtechnik](https://docs.aws.amazon.com/prescriptive-guidance/latest/aws-caf-platform-perspective/platform-eng.html) (im Leitfaden *AWS Cloud Adoption Framework: Plattformperspektive*)
+ [Dokumentation zu Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/)
+ [Backstage-Softwarevorlagen](https://backstage.io/docs/features/software-templates/) (Backstage-Website)
+ [AIOps Modul-Repository](https://github.com/awslabs/aiops-modules) (Sammlung wiederverwendbarer IaC-Module für ML)
+ [AIOps interne Entwicklerplattform (IDP) mit](https://github.com/aws-samples/sample-aiops-idp-backstage/) Backstage-Repository
+ [Modernes Engineering](https://github.com/aws-samples/appmod-blueprints) im Repository AWS
+ [Webseite für Cloud-Native Operational Excellence (CNOE)](https://cnoe.io/)

## Zusätzliche Informationen
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-additional"></a>

**Geschäftliche Herausforderungen**

Organizations, die ihre MLOps Initiativen ergreifen oder skalieren, stehen häufig vor diesen geschäftlichen und technischen Herausforderungen:
+ **Inkonsistente Umgebungen**. Das Fehlen standardisierter Entwicklungs- und Bereitstellungsumgebungen erschwert die Zusammenarbeit und erhöht die Bereitstellungsrisiken.
+ **Mehraufwand bei der manuellen Bereitstellung**. Die manuelle Einrichtung einer ML-Infrastruktur mit SageMaker Studio, Amazon Simple Storage Service (Amazon S3) -Buckets, IAM-Rollen und CI/CD Pipelines ist zeitaufwändig und fehleranfällig und lenkt Datenwissenschaftler von ihrer Kernaufgabe, der Modellentwicklung, ab.
+ **Mangelnde Auffindbarkeit und Wiederverwendung.** Das Fehlen eines zentralisierten Katalogs macht es schwierig, bestehende ML-Modelle, Datensätze und Pipelines zu finden. Dies führt zu redundanter Arbeit und verpassten Möglichkeiten zur Wiederverwendung.
+ **Komplexe Unternehmensführung und Einhaltung von Vorschriften**. Ohne automatisierte Leitplanken kann es schwierig sein, sicherzustellen, dass ML-Projekte den organisatorischen Sicherheitsrichtlinien, Datenschutzbestimmungen und Compliance-Standards wie dem Health Insurance Portability and Accountability Act (HIPAA) und der Allgemeinen Datenschutzverordnung (GDPR) entsprechen.
+ **Langsame Amortisierung.** Die kumulative Wirkung dieser Herausforderungen führt zu längeren Lebenszyklen von ML-Projekten und verzögert die Realisierung des Geschäftswerts aus ML-Investitionen.
+ **Sicherheitsrisiken.** Inkonsistente Konfigurationen und manuelle Prozesse können zu Sicherheitslücken führen, die die Durchsetzung der geringsten Rechte und die Netzwerkisolierung erschweren.

Diese Probleme verlängern die Entwicklungszyklen, erhöhen den betrieblichen Aufwand und führen zu Sicherheitsrisiken. Der iterative Charakter von ML erfordert wiederholbare Workflows und eine effiziente Zusammenarbeit.

Gartner prognostiziert, dass bis 2026 80% der Softwareentwicklungsunternehmen über Plattformteams verfügen werden. (Weitere Informationen finden Sie [auf der Gartner-Website unter Platform Engineering ermöglicht Entwicklern, besser, schneller und glücklicher zu sein](https://www.gartner.com/en/experts/top-tech-trends-unpacked-series/platform-engineering-empowers-developers).) Diese Prognose verdeutlicht, wie ein IDP die Softwarebereitstellung beschleunigen kann. Als IDP hilft Backstage dabei, die Ordnung in einer komplexen Infrastruktur wiederherzustellen, sodass Teams schnell und sicher hochwertigen Code bereitstellen können. Die Integration von Backstage mit robusten AIOps Modulen hilft Ihnen dabei, von der reaktiven Fehlerbehebung zur proaktiven Prävention überzugehen.

**MLOps SageMaker Module**

Die [AIOps Module](https://github.com/awslabs/aiops-modules) im GitHub Repository, die für dieses Muster verwendet werden, bieten eine wertvolle Grundlage für die Standardisierung MLOps auf AWS wiederverwendbarem und gehärtetem IaC. Diese Module enthalten bewährte Methoden für die Bereitstellung von SageMaker Projekten, Pipelines und zugehörigen Netzwerk- und Speicherressourcen mit dem Ziel, die Komplexität zu reduzieren und die Einrichtung von ML-Umgebungen zu beschleunigen. Sie können diese Vorlagen für verschiedene Anwendungsfälle MLOps verwenden, um konsistente und sichere Bereitstellungsmuster zu erstellen, die einen besser kontrollierten und effizienteren Ansatz für ML-Workflows fördern. 

Die direkte Nutzung der AIOps Module erfordert oft, dass Plattformteams diese IaC-Vorlagen bereitstellen und verwalten, was für Datenwissenschaftler, die Self-Service-Zugriff wünschen, eine Herausforderung darstellen kann. Um die verfügbaren Vorlagen zu ermitteln und zu verstehen, die erforderlichen Parameter zu konfigurieren und ihre Bereitstellung auszulösen, müssen Sie möglicherweise in AWS-Service Konsolen navigieren oder direkt mit IaC-Tools interagieren. Dies kann zu Reibungserscheinungen führen, die kognitive Belastung für Datenwissenschaftler erhöhen, die es vorziehen, sich auf ML-Aufgaben zu konzentrieren, und möglicherweise zu inkonsistenten Parametrisierungen oder Abweichungen von Unternehmensstandards führen, wenn diese Vorlagen nicht über eine zentrale und benutzerfreundliche Oberfläche verwaltet werden. Die Integration dieser leistungsstarken AIOps Module mit einem IDP wie Backstage hilft bei der Bewältigung dieser Herausforderungen, indem sie ein optimiertes Self-Service-Erlebnis, eine verbesserte Auffindbarkeit und stärkere Governance-Kontrollen für die Verwendung dieser standardisierten Bausteine bietet. MLOps 

**Backstage als IDP**

Eine interne Entwicklerplattform (IDP) ist eine Self-Service-Ebene, die von Plattformteams entwickelt wurde, um die Art und Weise zu vereinfachen und zu standardisieren, wie Entwickler Anwendungen erstellen, bereitstellen und verwalten. Sie abstrahiert die Komplexität der Infrastruktur und bietet Entwicklern über eine einheitliche Oberfläche einfachen Zugriff auf Tools, Umgebungen und Dienste.

Das Hauptziel eines IDP besteht darin, die Erfahrung und Produktivität der Entwickler zu verbessern, und zwar durch:
+ Aktivierung von Self-Service für Aufgaben wie die Erstellung und Bereitstellung von Diensten.
+ Förderung von Konsistenz und Konformität durch Standardvorlagen.
+ Integration von Tools im gesamten Entwicklungszyklus (CI/CD, Überwachung und Dokumentation).

Backstage ist ein Open-Source-Entwicklerportal, das von Spotify erstellt wurde und heute Teil der Cloud Native Computing Foundation (CNCF) ist. Es unterstützt Unternehmen beim Aufbau ihres eigenen IDP, indem es eine zentrale, erweiterbare Plattform zur Verwaltung von Softwarekomponenten, Tools und Dokumentation bereitstellt. Mit Backstage können Entwickler:
+ Entdecken und verwalten Sie alle internen Dienste über einen Softwarekatalog.
+ Erstellen Sie neue Projekte mithilfe vordefinierter Vorlagen über das Scaffolder-Plugin.
+ Greifen Sie von einem Standort aus auf integrierte Tools wie CI/CD Pipelines, Kubernetes-Dashboards und Überwachungssysteme zu.
+ Sorgen Sie durchgehend für eine konsistente, auf Markdown basierende Dokumentation. TechDocs

**HÄUFIG GESTELLTE FRAGEN**

**Was ist der Unterschied zwischen der Verwendung dieser Backstage-Vorlage und der manuellen Bereitstellung von SageMaker Studio über die Konsole? SageMaker **

Die Backstage-Vorlage bietet mehrere Vorteile gegenüber der manuellen AWS Konsolenbereitstellung, darunter standardisierte Konfigurationen, die den Best Practices der Organisation folgen, automatisierte IaC-Bereitstellung mit Seed-Farmer und dem AWS CDK, integrierte Sicherheitsrichtlinien und Compliance-Maßnahmen sowie die Integration in die Entwickler-Workflows Ihres Unternehmens durch. GitHub Die Vorlage ermöglicht außerdem reproduzierbare Bereitstellungen mit Versionskontrolle, die es einfacher machen, Umgebungen in verschiedenen Phasen (Entwicklung, Staging, Produktion) zu replizieren und die Konsistenz zwischen den Teams aufrechtzuerhalten. Darüber hinaus umfasst die Vorlage automatische Bereinigungsfunktionen und lässt sich über Backstage in das Identitätsmanagementsystem Ihres Unternehmens integrieren. Die manuelle Bereitstellung über die Konsole erfordert AWS fundiertes Fachwissen und bietet weder Versionskontrolle noch das gleiche Maß an Standardisierung und Steuerung, das die Vorlage bietet. Aus diesen Gründen eignen sich Konsolenbereitstellungen eher für einmalige Experimente als ML-Produktionsumgebungen.

**Was ist Seed-Farmer und warum verwendet diese Lösung es?**

Seed-Farmer ist ein Tool AWS zur Orchestrierung von Bereitstellungen, das Infrastrukturmodule mithilfe von verwaltet. AWS CDK Dieses Muster verwendet Seed-Farmer, da es standardisierte, wiederverwendbare Infrastrukturkomponenten bereitstellt, die speziell für AI/ML Workloads entwickelt wurden, komplexe Abhängigkeiten zwischen diesen Komponenten AWS-Services automatisch handhabt und konsistente Bereitstellungen in verschiedenen Umgebungen gewährleistet.

**Muss ich das installieren, um diese Vorlagen verwenden AWS CLI zu können?**

Nein, Sie müssen das nicht AWS CLI auf Ihrem Computer installieren. Die Vorlagen werden vollständig über GitHub Aktionen in der Cloud ausgeführt. Sie geben Ihre AWS Anmeldeinformationen (Zugriffsschlüssel, geheimer Schlüssel und Sitzungstoken) über die Backstage-Oberfläche ein, und die Bereitstellung erfolgt automatisch in der GitHub Aktionsumgebung.

**Wie lange dauert die Bereitstellung einer SageMaker Studio-Umgebung?**

Eine typische SageMaker Studio-Bereitstellung dauert 15 bis 25 Minuten. Dazu gehören AWS CDK Bootstrapping (2-3 Minuten), die Einrichtung der Seed-Farmer-Toolchain (3—5 Minuten) und die Erstellung von Ressourcen (10—15 Minuten). Die genaue Zeit hängt von Ihnen AWS-Region und der Komplexität Ihres Netzwerk-Setups ab.

**Kann ich mehrere SageMaker Umgebungen in derselben Umgebung bereitstellen AWS-Konto?**

Ja, das können Sie. Bei jeder Bereitstellung werden Ressourcen mit eindeutigen Namen erstellt, die auf dem Komponentennamen basieren, den Sie in der Vorlage angeben. Beachten Sie jedoch die AWS-Service Kontingente: Jedes Konto kann eine begrenzte Anzahl von SageMaker Domains pro Region haben. [Überprüfen Sie daher Ihre Kontingente](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker), bevor Sie mehrere Umgebungen erstellen.

# Automatisieren Sie den AWS Infrastrukturbetrieb mithilfe von Amazon Bedrock
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock"></a>

*Ishwar Chauthaiwale und Anand Bukkapatnam Tirumala, Amazon Web Services*

## Zusammenfassung
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-summary"></a>

Bei Cloud-nativen Lösungen spielt die Automatisierung gängiger Infrastrukturoperationen eine entscheidende Rolle bei der Aufrechterhaltung effizienter, sicherer und kostengünstiger Umgebungen. Die manuelle Bearbeitung von Vorgängen ist zeitaufwändig und anfällig für menschliche Fehler. Darüber hinaus müssen Teammitglieder mit unterschiedlichem AWS Fachwissen diese Aufgaben ausführen und gleichzeitig die Einhaltung der Sicherheitsprotokolle sicherstellen. Dieses Muster zeigt, wie Amazon Bedrock verwendet wird, um allgemeine AWS Infrastrukturoperationen durch Natural Language Processing (NLP) zu automatisieren.

Dieses Muster kann Unternehmen dabei helfen, wiederverwendbaren, modularen und sicheren Code für die Bereitstellung generativer KI-basierter Infrastrukturen in mehreren Umgebungen zu entwickeln. Durch seinen Fokus auf Infrastructure as Code (IaC) und Automatisierung bietet es wichtige DevOps Vorteile wie Versionskontrolle, konsistente Bereitstellungen, weniger Fehler, schnellere Bereitstellung und verbesserte Zusammenarbeit.

Das Pattern implementiert eine sichere Architektur, die es Teams ermöglicht, Abläufe in Bezug auf wichtige Aufgaben zu verwalten, darunter: AWS-Services 
+ Versionsverwaltung für Buckets mit Amazon Simple Storage Service (Amazon S3)
+ Erstellung eines Amazon Relational Database Service (Amazon RDS) -Snapshots
+ Amazon Elastic Compute Cloud (Amazon EC2) Instanzverwaltung

Die Architektur verwendet Amazon Virtual Private Cloud (Amazon VPC) -Endpunkte und private Netzwerke für eine sichere Kommunikation, wobei AWS Lambda Funktionen als Task-Executoren in privaten Subnetzen fungieren. Amazon S3 bietet Datenmanagement und implementiert umfassende AWS Identity and Access Management (IAM) -Rollen und -Berechtigungen, um angemessene Zugriffskontrollen zu gewährleisten. Diese Lösung beinhaltet keine Chat-Verlaufsfunktion und der Chat wird nicht gespeichert.

## Voraussetzungen und Einschränkungen
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-prereqs"></a>
+ Ein aktiver AWS-Konto.
+ Es sollten angemessene Zugangskontrollmaßnahmen getroffen werden, um den Zugang zu sichern und zu kontrollieren. Zu den Beispielen für die Zugriffskontrolle gehören die Verwendung AWS Systems Manager von Basismodellen für den Zugriff, eine IAM-Rolle für die Bereitstellung und servicebasierte Rollen, die Deaktivierung des öffentlichen Zugriffs auf Amazon S3 S3-Buckets und die Einrichtung einer Warteschlange für unzustellbare Briefe.
+ [Ein () vom Kunden verwalteter Schlüssel AWS Key Management Service .AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)
+ AWS Command Line Interface (AWS CLI) Version 2 oder höher, in der Bereitstellungsumgebung [installiert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Terraform AWS Provider Version 4 oder höher [installiert und konfiguriert](https://registry.terraform.io/providers/-/aws/latest/docs/guides/version-4-upgrade).
+ [Terraform Version 1.5.7 oder höher wurde installiert und konfiguriert.](https://developer.hashicorp.com/terraform/install)
+ Überprüfen und [definieren Sie OpenAPI-Schemas für die Aktionsgruppen Ihres Agenten in Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-api-schema.html), um sich vor unbefugtem Zugriff zu schützen und die Datenintegrität aufrechtzuerhalten.
+ [Der [Zugriff ist in Ihrem AWS-Konto für die erforderlichen Amazon Titan Text Embeddings v2 und entweder für die Claude 3.5 Sonnet- oder Claude 3 Haiku Foundation-Modelle aktiviert](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html).](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) [Um Bereitstellungsfehler zu vermeiden, stellen Sie sicher, dass Ihre Zielbereitstellung AWS-Region die erforderlichen Modelle unterstützt.](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html)
+ Eine konfigurierte Virtual Private Cloud (VPC), die den Best Practices des [AWS Well Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec-design.html) folgt.
+ Die Überprüfung der [Amazon Responsible AI-Richtlinie](https://aws.amazon.com/ai/responsible-ai/policy/) wurde abgeschlossen.

**Produktversionen**
+ Amazon Titan Texteinbettungen v2
+ Anthropisches Claude 3.5 Sonett oder Claude 3 Haiku
+ Terraform Provider Version 4 oder höher AWS 
+ Terraform Version 1.5.7 oder höher

## Architektur
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Workflow zur Automatisierung gängiger AWS-Infrastrukturoperationen mithilfe von Amazon Bedrock.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/924e503f-bfc5-4452-abdf-d72a58d4d36f/images/bd56ad29-b435-4543-8ee8-dc4e1d38df18.png)


Die Lösungsarchitektur besteht aus mehreren Ebenen, die zusammenarbeiten, um Anfragen in natürlicher Sprache zu verarbeiten und entsprechende AWS Operationen auszuführen:

1. Der Benutzer stellt Betriebsanfragen über die Amazon Bedrock-Chat-Konsole.

1. Der Chatbot verwendet Amazon Bedrock Knowledge Bases für die Bearbeitung von Anfragen. Es implementiert das Amazon Titan Text Embeddings v2-Modell für die Verarbeitung natürlicher Sprache.

1. Wenn die Benutzeraufforderung eine Aktionsanfrage enthält, verwendet die Amazon Bedrock-Aktionsgruppe entweder das Anthropic Claude 3 Haiku oder das Claude 3.5 Sonnet-Modell (je nach Ihrer Wahl) für die Ausführungslogik und definiert Operationen über ein OpenAPI-Schema.

1. Die Aktionsgruppe erreicht die Amazon [VPC-Endpunkte](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html) und verwendet sie AWS PrivateLink für die sichere Servicekompetenz.

1. Die AWS Lambda Funktion wird über Amazon VPC-Endpunkte für Amazon Bedrock-Services erreicht.

1. Die Lambda-Funktionen sind die primäre Ausführungs-Engine. Basierend auf der Anfrage ruft die Lambda-Funktion die API auf, um Aktionen auf der AWS-Services auszuführen. Die Lambda-Funktion kümmert sich auch um das Routing und die Ausführung von Vorgängen.

1.  AWS-Services Sie rufen die API-Anfrage von der Lambda-Funktion ab und die entsprechenden Operationen werden ausgeführt.

1. Die Lambda-Funktion berechnet eine Ausgangsnutzlast, die von Amazon Bedrock verstanden wird.

1. Diese Payload wird zur sicheren Servicekommunation an Amazon Bedrock gesendet. PrivateLink Das von Amazon Bedrock verwendete Large Language Model (LLM) versteht diese Nutzlast und wandelt sie in ein für Menschen verständliches Format um.

1. Die Ausgabe wird dem Benutzer dann auf der Amazon Bedrock Chat-Konsole angezeigt.

Die Lösung ermöglicht die folgenden primären Operationen:
+ Amazon S3 — Aktivieren Sie die Bucket-Versionierung für die Versionskontrolle.
+ Amazon RDS — Erstellen Sie Datenbank-Snapshots für Backups.
+ Amazon EC2 — Listet Instances auf und steuert den Start und Stopp von Instances.

## Tools
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-tools"></a>

**AWS-Services**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) ist ein vollständig verwalteter Service, der Ihnen leistungsstarke Basismodelle (FMs) von führenden KI-Startups und Amazon über eine einheitliche API zur Verfügung stellt.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) bietet sichere und skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) ist eine serverlose On-Demand-Konfiguration für Amazon OpenSearch Service.
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)hilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren virtuellen privaten Clouds (VPCs) zu Diensten außerhalb der VPC herzustellen.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) unterstützt Sie bei der Einrichtung, dem Betrieb und der Skalierung einer relationalen Datenbank in der. AWS Cloud
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt werden. AWS Cloud Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [infra-ops-orchestratoraws-samples/](https://github.com/aws-samples/infra-ops-orchestrator) Repository verfügbar.

## Best Practices
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-best-practices"></a>
+ Überwachen Sie regelmäßig die Lambda-Ausführungsprotokolle. Weitere Informationen finden Sie unter [Überwachung und Problembehandlung von Lambda-Funktionen](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Weitere Informationen zu bewährten Methoden finden Sie unter [Bewährte Methoden für die Arbeit mit AWS Lambda Funktionen](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).
+ Überprüfen Sie die Sicherheitskonfigurationen regelmäßig, um sicherzustellen, dass die Anforderungen Ihres Unternehmens eingehalten werden. Weitere Informationen finden Sie unter [Bewährte Sicherheitsmethoden](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec-bp.html).
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-epics"></a>

### Bereitstellen der Lösung
<a name="deploy-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository auf Ihrem lokalen Computer zu klonen:<pre>git clone "git@github.com:aws-samples/infra-ops-orchestrator.git"<br />cd infra-ops-orchestrator</pre> | AWS DevOps, DevOps Ingenieur | 
| Bearbeiten Sie die Umgebungsvariablen. | Bearbeiten Sie die `terraform.tfvars` Datei. im Stammverzeichnis des geklonten Repositorys. Überprüfen Sie die Platzhalter, die mit gekennzeichnet sind`[XXXXX]`, und aktualisieren Sie sie entsprechend Ihrer Umgebung. | AWS DevOps, DevOps Ingenieur | 
| Erstellen Sie die Infrastruktur. | Führen Sie die folgenden Befehle aus, um die Infrastruktur zu erstellen:<pre>terraform init</pre><pre>terraform plan</pre>Überprüfen Sie den Ausführungsplan sorgfältig. Wenn die geplanten Änderungen akzeptabel sind, führen Sie den folgenden Befehl aus:<pre>terraform apply --auto-approve</pre> | AWS DevOps, DevOps Ingenieur | 

### Greifen Sie auf die Lösung zu
<a name="access-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Greifen Sie auf die Lösung zu. | Gehen Sie nach erfolgreicher Bereitstellung wie folgt vor, um die Chat-basierte Oberfläche zu verwenden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-infrastructure-operations-by-using-amazon-bedrock.html) | AWS DevOps, DevOps Ingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die erstellten Ressourcen. | Führen Sie den folgenden Befehl aus, um die gesamte nach diesem Muster erstellte Infrastruktur zu löschen:<pre>terraform plan -destroy </pre>Prüfen Sie den Vernichtungsplan sorgfältig. Wenn die geplanten Löschungen akzeptabel sind, führen Sie den folgenden Befehl aus:<pre>terraform destroy</pre>Hinweis: Mit diesem Befehl werden alle Ressourcen, die nach diesem Muster erstellt wurden, dauerhaft gelöscht. Der Befehl fordert Sie zur Bestätigung auf, bevor Ressourcen entfernt werden. | AWS DevOps, DevOps Ingenieur | 

## Fehlerbehebung
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Verhalten der Agenten  | Informationen zu diesem Problem finden Sie unter [Testen und Beheben von Problemen mit dem Verhalten von Agenten](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) in der Amazon Bedrock-Dokumentation. | 
| Probleme mit dem Lambda-Netzwerk | Informationen zu diesen Problemen finden Sie unter [Problembehandlung bei Netzwerkproblemen in Lambda](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) in der Lambda-Dokumentation. | 
| IAM-Berechtigungen | Informationen zu diesen Problemen finden Sie unter [Problembehandlung bei IAM in der IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html). | 

## Zugehörige Ressourcen
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-resources"></a>
+ [Erstellen eines DB-Snapshots für eine Single-AZ-DB-Instance für Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)
+ [Definieren Sie OpenAPI-Schemas für die Aktionsgruppen Ihres Agenten in Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-api-schema.html)
+ [Aktivierung der Versionierung für Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)
+ [So funktioniert Amazon Bedrock Agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [Rufen Sie Daten ab und generieren Sie KI-Antworten mit Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/aws-privatelink.html)
+ [Greifen Sie sicher auf Dienste zu über AWS PrivateLink](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/aws-privatelink.html)
+ [Beenden und starten Sie Amazon EC2 EC2-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)
+ [Verwenden Sie Aktionsgruppen, um Aktionen zu definieren, die Ihr Agent ausführen soll](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html)

# Automatisieren Sie mithilfe von Terraform CloudFront Updates, wenn sich die Load Balancer-Endpunkte ändern
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change"></a>

*Tamilselvan P, Mohan Annam und Naveen Suthar, Amazon Web Services*

## Zusammenfassung
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-summary"></a>

Wenn Benutzer von Amazon Elastic Kubernetes Service (Amazon EKS) ihre Eingangskonfiguration über Helm-Diagramme löschen und erneut installieren, wird ein neuer Application Load Balancer (ALB) erstellt. Dies führt zu einem Problem, da Amazon CloudFront weiterhin auf den DNS-Eintrag der alten ALB verweist. Infolgedessen sind Dienste, die für diesen Endpunkt bestimmt sind, nicht erreichbar. (Weitere Informationen zu diesem problematischen Workflow finden Sie unter [Zusätzliche Informationen](#automate-cloudfront-updates-when-load-balancer-endpoints-change-additional).)

Um dieses Problem zu lösen, beschreibt dieses Muster die Verwendung einer benutzerdefinierten AWS Lambda Funktion, die mit Python entwickelt wurde. Diese Lambda-Funktion erkennt anhand von EventBridge Amazon-Regeln automatisch, wenn eine neue ALB erstellt wird. Mithilfe von aktualisiert die Funktion dann die CloudFront Konfiguration mit der DNS-Adresse der neuen ALB und stellt so sicher, dass der Datenverkehr an den richtigen Endpunkt weitergeleitet wird. AWS SDK für Python (Boto3)

Diese automatisierte Lösung gewährleistet die Servicekontinuität ohne zusätzliches Routing oder Latenz. Der Prozess trägt dazu bei, dass CloudFront immer auf den richtigen ALB-DNS-Endpunkt verwiesen wird, auch wenn sich die zugrunde liegende Infrastruktur ändert.

## Voraussetzungen und Einschränkungen
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ Eine Beispiel-Webanwendung zum Testen und Validieren, die mithilfe von Helm auf Amazon EKS bereitgestellt wird. Weitere Informationen finden Sie unter [Bereitstellen von Anwendungen mit Helm auf Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) in der Amazon EKS-Dokumentation.
+ Konfigurieren Sie CloudFront die Konfiguration für die Weiterleitung von Anrufen an eine ALB, die von einem [Helm-Ingress-Controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) erstellt wurde. Weitere Informationen finden [Sie unter Installieren von Load AWS Balancer Controller with Helm](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html) in der Amazon EKS-Dokumentation und [Beschränken Sie den Zugriff auf Application Load Balancers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html) in der CloudFront Dokumentation.
+ Terraform [wurde in einem lokalen Workspace installiert](https://developer.hashicorp.com/terraform/install?product_intent=terraform) und konfiguriert.

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ Terraform Version 1.0.0 oder höher
+ [Terraform AWS Provider Version 4.20 oder höher](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Architektur
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Workflow zur Aktualisierung CloudFront mit einer neuen ALB-DNS-Adresse, die mithilfe EventBridge der Regel erkannt wurde.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/03c30b18-4dd7-4dd4-b960-5a5cc58cec63/images/28854767-0902-4398-80af-b19141dd94e4.png)


Diese Lösung führt die folgenden Schritte aus:

1. Der Amazon EKS-Ingress Controller erstellt bei jedem Neustart oder einer Bereitstellung von Helm einen neuen Application Load Balancer (ALB).

1. EventBridge sucht nach Ereignissen zur ALB-Erstellung.

1. Das ALB-Erstellungsereignis löst die Lambda-Funktion aus.

1. Die Lambda-Funktion wurde auf der Grundlage von Python 3.9 bereitgestellt und verwendet zum Aufrufen die Boto3-API. AWS-Services Die Lambda-Funktion aktualisiert den CloudFront Eintrag mit dem neuesten Load Balancer-DNS-Namen, der von Create Load Balancer-Ereignissen empfangen wurde.

## Tools
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-tools"></a>

**AWS-Services**
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) beschleunigt die Verteilung Ihrer Webinhalte, indem es sie über ein weltweites Netzwerk von Rechenzentren bereitstellt, was die Latenz senkt und die Leistung verbessert.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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 SDK für Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services.

**Andere Tools**
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [aws-cloudfront-automation-terraform-samples](https://github.com/aws-samples/aws-cloudfront-automation-terraform-samples) verfügbar.

## Epen
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-epics"></a>

### Richten Sie eine lokale Workstation ein
<a name="set-up-local-workstation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die Git-CLI ein und konfigurieren Sie sie. | Um die Git-Befehlszeilenschnittstelle (CLI) auf Ihrer lokalen Workstation zu installieren und zu konfigurieren, folgen Sie den Anweisungen [Erste Schritte — Installation von Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) in der Git-Dokumentation. | DevOps Ingenieur | 
| Erstellen Sie den Projektordner und fügen Sie die Dateien hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps Ingenieur | 

### Stellen Sie die Zielarchitektur mithilfe der Terraform-Konfiguration bereit
<a name="provision-the-target-architecture-using-the-terraform-configuration"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Lösung bereit. | Gehen Sie wie folgt vor AWS-Konto, um Ressourcen im Ziel bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps Ingenieur | 

### Überprüfen der Bereitstellung
<a name="verify-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Validieren Sie die Bereitstellung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps Ingenieur | 

### Infrastruktur aufräumen
<a name="clean-up-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Säubere die Infrastruktur. | Gehen Sie wie folgt vor, um die Infrastruktur zu bereinigen, die Sie zuvor erstellt haben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Fehler beim Überprüfen der Anbieteranmeldedaten | Wenn Sie Terraform `apply` oder `destroy` Befehle von Ihrem lokalen Computer aus ausführen, tritt möglicherweise ein Fehler auf, der dem folgenden ähnelt:<pre>Error: configuring Terraform AWS Provider: error validating provider <br />credentials: error calling sts:GetCallerIdentity: operation error STS: <br />GetCallerIdentity, https response error StatusCode: 403, RequestID: <br />123456a9-fbc1-40ed-b8d8-513d0133ba7f, api error InvalidClientTokenId: <br />The security token included in the request is invalid.</pre>Dieser Fehler wird durch den Ablauf des Sicherheitstokens für die in der Konfiguration Ihres lokalen Computers verwendeten Anmeldeinformationen verursacht.Informationen zur Behebung des Fehlers finden Sie unter [Konfigurationseinstellungen einrichten und anzeigen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) in der AWS Command Line Interface (AWS CLI) -Dokumentation. | 

## Zugehörige Ressourcen
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-resources"></a>

**AWS Ressourcen**
+ [Beschränken Sie den Zugriff auf Application Load Balancers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html)
+ [Internetverkehr mit AWS Load Balancer Controller weiterleiten](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html)

**Terraform-Dokumentation**
+ [AWS Anbieter](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Installieren Sie Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [Fernstatus](https://developer.hashicorp.com/terraform/language/state/remote)

## Zusätzliche Informationen
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-additional"></a>

**Problematischer Arbeitsablauf**

![\[Workflow, der einen out-of-date ALB-DNS-Eintrag in CloudFront erzeugt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/03c30b18-4dd7-4dd4-b960-5a5cc58cec63/images/bb3c2c93-c749-435d-9b1d-2bbf6f0cf085.png)


Das Diagramm zeigt den folgenden Workflow:

1. Wenn der Benutzer auf die Anwendung zugreift, geht der Anruf an. CloudFront

1. CloudFront leitet die Aufrufe an den jeweiligen Application Load Balancer (ALB) weiter.

1. Der ALB enthält die Ziel-IP-Adressen, bei denen es sich um die IP-Adressen des Anwendungs-Pods handelt. Von dort aus stellt der ALB dem Benutzer die erwarteten Ergebnisse bereit.

Dieser Arbeitsablauf weist jedoch auf ein Problem hin. Die Anwendungsbereitstellungen erfolgen über Helm-Diagramme. Immer wenn es eine Bereitstellung gibt oder wenn jemand Helm neu startet, wird der entsprechende Eingang ebenfalls neu erstellt. Infolgedessen erstellt der externe Load Balancer-Controller den ALB neu. Außerdem wird die ALB bei jeder Neuerstellung mit einem anderen DNS-Namen neu erstellt. Aus diesem Grund CloudFront wird es in den Ursprungseinstellungen einen veralteten Eintrag geben. Aufgrund dieses veralteten Eintrags ist die Anwendung für den Benutzer nicht erreichbar. Dieses Problem führt zu Ausfallzeiten für Benutzer.

**Alternative Lösung**

Eine andere mögliche Lösung besteht darin, ein [externes DNS](https://github.com/kubernetes-sigs/external-dns) für die ALB zu erstellen und es dann auf den Endpunkt der privaten gehosteten Zone von Amazon Route 53 zu verweisen. CloudFront Dieser Ansatz fügt dem Anwendungsablauf jedoch einen weiteren Sprung hinzu, was zu Anwendungslatenz führen kann. Die Lambda-Funktionslösung dieses Musters stört den Stromfluss nicht.

# Automatisieren Sie CodeGuru Amazon-Rezensionen für AWS CDK Python-Anwendungen mithilfe von GitHub Aktionen
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications"></a>

*Vanitha Dontireddy und Sarat Chandra Pothula, Amazon Web Services*

## Zusammenfassung
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-summary"></a>

Hinweis: Ab dem 7. November 2025 können Sie in Amazon CodeGuru Reviewer keine neuen Repository-Verknüpfungen mehr erstellen. Weitere Informationen zu Services mit ähnlichen Funktionen wie CodeGuru Reviewer finden Sie in der [ CodeGuru Reviewer-Dokumentation unter Änderung der Verfügbarkeit von Amazon](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) CodeGuru Reviewer.

Dieses Muster zeigt die Integration CodeGuru automatisierter Codeprüfungen von Amazon für AWS Cloud Development Kit (AWS CDK) Python-Anwendungen, die über GitHub Aktionen orchestriert werden. Die Lösung stellt eine in Python definierte serverlose Architektur bereit. AWS CDK Durch die Automatisierung der Expertencodeanalyse innerhalb der Entwicklungspipeline kann dieser Ansatz für AWS CDK Python-Projekte Folgendes bewirken:
+ Verbessern Sie die Codequalität.
+ Rationalisieren Sie Arbeitsabläufe.
+ Maximieren Sie die Vorteile von serverlosem Computing.

## Voraussetzungen und Einschränkungen
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ AWS Command Line Interface [(AWS CLI) Version 2.9.11 oder höher, [installiert und konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Ein aktives GitHub Konto und ein GitHub Repository mit Lese- und Schreib-Workflow-Berechtigungen und der Erstellung von Pull-Requests (PR) durch GitHub Actions, um sicherzustellen, dass der PR-Workflow ordnungsgemäß funktioniert.
+ Eine OpenID Connect (OIDC) -Rolle in GitHub Aktionen zur Bereitstellung der Lösung in der. AWS-Konto[Verwenden Sie das Konstrukt, um die Rolle zu erstellen.AWS CDK](https://github.com/aws-samples/github-actions-oidc-cdk-construct)

**Einschränkungen**
+ Amazon CodeGuru Profiler [unterstützt Anwendungen](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html#what-is-language-support), die in allen Sprachen der Java Virtual Machine (JVM) (wie Scala und Kotlin) und Runtimes sowie Python 3.6 oder höher geschrieben sind.
+ Amazon CodeGuru Reviewer [unterstützt Verknüpfungen](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-repositories.html) mit Java- und Python-Code-Repositorys nur von den folgenden Quellanbietern: AWS CodeCommit, Bitbucket GitHub, GitHub Enterprise Cloud und GitHub Enterprise Server. Darüber hinaus werden Amazon Simple Storage Service (Amazon S3) -Repositorys nur über GitHub Aktionen unterstützt.
+ Es gibt keine automatisierte Möglichkeit, die Ergebnisse während der CI/CD-Pipeline (Continuous Integration and Continuous Deployment) auszudrucken. Stattdessen verwendet dieses Muster GitHub Aktionen als alternative Methode zur Verarbeitung und Anzeige der Ergebnisse.
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS-Services nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Service-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Service.

## Architektur
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-architecture"></a>

Das folgende Diagramm zeigt die Architektur dieser Lösung.

![\[Workflow zur Integration der CodeGuru Codeüberprüfung für AWS CDK-Python-Anwendungen mithilfe von GitHub Aktionen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c5395e3e-ff2a-41cf-bd64-c73cc928b60b/images/18f880a2-9bc3-4d71-a598-bb83b68ee383.png)


Wie im Diagramm dargestellt, löst GitHub Actions die folgenden Schritte aus, wenn ein Entwickler eine Pull-Anfrage (PR) zur Überprüfung erstellt:

1. Annahme der IAM-Rolle — Die Pipeline verwendet die in GitHub Secrets angegebene IAM-Rolle, um Bereitstellungsaufgaben auszuführen.

1. Code-Analyse
   + CodeGuru Der Prüfer analysiert den im Amazon S3 S3-Bucket gespeicherten Code. Es identifiziert Fehler und gibt Empfehlungen für Korrekturen und Optimierungen.
   + CodeGuru Sicherheitsscans nach Richtlinienverstößen und Sicherheitslücken.

1. Überprüfung der Ergebnisse
   + Die Pipeline druckt in der Konsolenausgabe einen Link zum Ergebnis-Dashboard.
   + Wenn kritische Ergebnisse erkannt werden, schlägt die Pipeline sofort fehl.
   + Bei Befunden mit hohem, normalem oder niedrigem Schweregrad fährt die Pipeline mit dem nächsten Schritt fort.

1. PR-Genehmigung
   + Ein Prüfer muss die PR manuell genehmigen.
   + Wenn der PR verweigert wird, schlägt die Pipeline fehl und weitere Bereitstellungsschritte werden unterbrochen.

1. CDK-Bereitstellung — Nach der PR-Genehmigung beginnt der CDK-Bereitstellungsprozess. Es richtet Folgendes AWS-Services und Ressourcen ein:
   + CodeGuru Profiler
   + AWS Lambda Funktion
   + Amazon Simple Queue Service-Warteschlange (Amazon SQS)

1. Generierung von Profilerstellungsdaten — Um ausreichend Profilerstellungsdaten für CodeGuru Profiler zu generieren:
   + Die Pipeline ruft die Lambda-Funktion mehrfach auf, indem sie regelmäßig Nachrichten an die Amazon SQS SQS-Warteschlange sendet.

## Tools
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ [CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) ist ein Cloud-Entwicklungskit für die Befehlszeile, mit dem Sie mit Ihrer AWS CDK App interagieren können.
+ [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) sammelt Laufzeitleistungsdaten aus Ihren Live-Anwendungen und gibt Empfehlungen, die Ihnen bei der Feinabstimmung Ihrer Anwendungsleistung helfen können.
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) verwendet Programmanalyse und maschinelles Lernen, um potenzielle Fehler zu erkennen, die für Entwickler schwer zu finden sind. Anschließend bietet CodeGuru Profiler Vorschläge zur Verbesserung Ihres Java- und Python-Codes.
+ Amazon CodeGuru Security ist ein statisches Anwendungssicherheitstool, das maschinelles Lernen verwendet, um Verstöße und Sicherheitslücken zu erkennen. Es bietet Vorschläge zur Bewältigung von Sicherheitsrisiken und generiert Metriken, mit denen Sie den Sicherheitsstatus Ihrer Anwendungen verfolgen können.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere Tools**
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) ist eine Plattform für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD), die eng in Repositorien integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [amazon-codeguru-suite-cdk-python-Repository](https://github.com/aws-samples/amazon-codeguru-suite-cdk-python) verfügbar.

## Best Practices
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-best-practices"></a>
+ Halten Sie sich an die [Best Practices für die Entwicklung und Bereitstellung der Cloud-Infrastruktur mit dem AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html).
+ Beachten Sie bei der Verwendung von Workflows [in GitHub Actions die bewährten Sicherheitsmethoden AWS-Services in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html), einschließlich:
  + Speichern Sie keine Anmeldeinformationen in Ihrem Repository-Code.
  + [Gehen Sie von einer IAM-Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) aus, um temporäre Anmeldeinformationen zu erhalten, und verwenden Sie nach Möglichkeit temporäre Anmeldeinformationen.
  + [Gewähren Sie der in Actions-Workflows verwendeten IAM-Rolle die geringste Berechtigung](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). GitHub Gewähren Sie nur die Berechtigungen, die für die Ausführung der Aktionen in Ihren GitHub Aktions-Workflows erforderlich sind. 
  + [Überwachen Sie die Aktivität](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) der IAM-Rolle, die in GitHub Aktions-Workflows verwendet wird.
  + Wechseln Sie regelmäßig alle langfristigen Anmeldeinformationen, die Sie verwenden.

## Epen
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie AWS Anmeldeinformationen ein. | Führen Sie die folgenden Befehle aus, um die Variablen zu exportieren, die den Stack definieren AWS-Konto und AWS-Region wo Sie ihn bereitstellen:<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>Die AWS Anmeldeinformationen für AWS CDK werden über Umgebungsvariablen bereitgestellt. | AWS DevOps, DevOps Ingenieur | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository auf Ihrem lokalen Computer zu klonen:<pre>git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git</pre> | AWS DevOps, DevOps Ingenieur | 
| Installieren Sie das CDK Toolkit. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das CDK Toolkit installiert ist, und um die Version zu überprüfen: <pre>cdk --version</pre>Wenn die CDK Toolkit-Version älter als 2.27.0 ist, geben Sie den folgenden Befehl ein, um sie auf Version 2.27.0 zu aktualisieren:<pre>npm install -g aws-cdk@2.27.0</pre>Wenn das CDK Toolkit *nicht* installiert ist, führen Sie den folgenden Befehl aus, um es zu installieren:<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps Ingenieur | 
| Installieren Sie die erforderlichen Abhängigkeiten. | Führen Sie den folgenden Befehl aus, um die erforderlichen Projektabhängigkeiten zu installieren:<pre>python -m pip install --upgrade pip<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps Ingenieur | 
| Bootstrap für die CDK-Umgebung. | Führen Sie die folgenden [Befehle aus, um eine AWS-CDK-Umgebung zu booten](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html):<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre>Nachdem Sie die Umgebung erfolgreich gebootet haben, sollte die folgende Ausgabe angezeigt werden:<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre> | AWS DevOps, DevOps Ingenieur | 

### Stellen Sie die CDK-App bereit
<a name="deploy-the-cdk-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Synthetisieren Sie die AWS CDK App. | Führen Sie den folgenden Befehl aus, um eine AWS CDK App zu synthetisieren:<pre>cdk synth</pre>Weitere Informationen zu diesem Befehl finden Sie in der Dokumentation unter [cdk synthesize](https://docs.aws.amazon.com/cdk/v2/guide/ref-cli-cmd-synth.html). AWS CDK  | AWS DevOps, DevOps Ingenieur | 
| Stellen Sie die Ressourcen bereit. | Führen Sie den folgenden Befehl aus, um die Ressourcen bereitzustellen:<pre>cdk deploy --require-approval never</pre>Das `--require-approval never` Kennzeichen bedeutet, dass das CDK alle Änderungen automatisch genehmigt und ausführt. Dazu gehören auch Änderungen, die das CDK normalerweise als manuell überprüfbar kennzeichnen würde (z. B. Änderungen der IAM-Richtlinien oder das Entfernen von Ressourcen). Stellen Sie sicher, dass Ihr CDK-Code und Ihre CI/CD Pipeline gut getestet und sicher sind, bevor Sie das `--require-approval never` Flag in Produktionsumgebungen verwenden. | AWS DevOps, DevOps Ingenieur | 

### Erstellen Sie GitHub Geheimnisse und persönliche Zugriffstoken
<a name="create-github-secrets-and-personal-access-token"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die erforderlichen Geheimnisse in GitHub. | Um GitHub Aktionsworkflows den sicheren Zugriff auf AWS Ressourcen zu ermöglichen, ohne sensible Informationen im Code Ihres Repositorys preiszugeben, erstellen Sie Geheimnisse. Um die Secrets in GitHub for`ROLE_TO_ASSUME`, und zu erstellen `CodeGuruReviewArtifactBucketName``AWS_ACCOUNT_ID`, folgen Sie den Anweisungen unter [Creating Secrets for a Repository](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) in der GitHub Actions-Dokumentation.Im Folgenden finden Sie weitere Informationen zu den Variablen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps Ingenieur | 
| Erstellen Sie ein GitHub persönliches Zugriffstoken. | Gehen Sie wie folgt vor, um eine sichere Methode für die Authentifizierung und Interaktion mit GitHub Ihren GitHub Actions-Workflows einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps Ingenieur | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie die Ressourcen. | Führen Sie den folgenden Befehl aus, um Ihre AWS CDK Python-App zu bereinigen:<pre>cdk destroy --all</pre> | DevOps Ingenieur | 

## Fehlerbehebung
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Link zu den Ergebnissen des Dashboards anzeigen. | Es gibt keine Möglichkeit, die Ergebnisse während der CI/CD Pipeline auszudrucken. Stattdessen verwendet dieses Muster GitHub Aktionen als alternative Methode, um die Ergebnisse zu verarbeiten und anzuzeigen. | 

## Zugehörige Ressourcen
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-resources"></a>

**AWS Ressourcen**
+ [AWS Cloud Development Kit](https://aws.amazon.com/cdk/)
+ [ CodeGuru Amazon-Dokumentation](https://docs.aws.amazon.com/codeguru/)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [AWS Identity and Access Management](https://aws.amazon.com/iam/)
+ [Amazon Simple Queue Service](https://aws.amazon.com/sqs/)
+ [Was ist AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

**GitHub Dokumentation**
+ [Konfiguration von OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [GitHub Aktionen](https://github.com/features/actions)
+ [Workflows wiederverwenden](https://docs.github.com/en/actions/using-workflows/reusing-workflows)
+ [Einen Workflow auslösen](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) 

# Automatisieren Sie die Bereitstellung von AWS Supply Chain Data Lakes in einem Multi-Repository-Setup mithilfe von GitHub Actions, Artifactory und Terraform
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes"></a>

*Keshav Ganesh, Amazon Web Services*

## Zusammenfassung
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-summary"></a>

Dieses Muster bietet einen automatisierten Ansatz für die Bereitstellung und Verwaltung von AWS Supply Chain Data Lakes unter Verwendung von Funktionen für kontinuierliche Integration und kontinuierliche Bereitstellung mit mehreren Repositorys. CI/CD) pipeline. It demonstrates two deployment methods: automated deployment using GitHub Actions workflows, or manual deployment using Terraform directly. Both approaches use Terraform for infrastructure as code (IaC), with the automated method adding GitHub Actions and JFrog Artifactory for enhanced CI/CD

Die Lösung nutzt AWS Supply Chain AWS Lambda, und Amazon Simple Storage Service (Amazon S3), um die Data-Lake-Infrastruktur einzurichten, und verwendet gleichzeitig beide Bereitstellungsmethoden, um die Konfiguration und Ressourcenerstellung zu automatisieren. Diese Automatisierung macht manuelle Konfigurationsschritte überflüssig und gewährleistet konsistente Bereitstellungen in allen Umgebungen. Darüber hinaus AWS Supply Chain entfällt der Bedarf an fundiertem Fachwissen in den Bereichen Extrahieren, Transformieren und Laden (ETL) und bietet Einblicke und Analysen auf der Grundlage von Amazon Quick Sight.

Durch die Implementierung dieses Musters können Unternehmen die Bereitstellungszeit reduzieren, die Infrastruktur als Code verwalten und Data Lakes in der Lieferkette mithilfe eines versionskontrollierten, automatisierten Prozesses verwalten. Der Ansatz mit mehreren Repositorys bietet eine detaillierte Zugriffskontrolle und unterstützt die unabhängige Bereitstellung verschiedener Komponenten. Teams können die Bereitstellungsmethode wählen, die am besten zu ihren vorhandenen Tools und Prozessen passt.

## Voraussetzungen und Einschränkungen
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs"></a>

**Voraussetzungen**

Stellen Sie sicher, dass auf Ihrem lokalen Computer Folgendes installiert ist:
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) Version 2
+ [GitHub CLI](https://docs.github.com/en/get-started/git-basics/set-up-git)
+ [Python v3.13](https://www.python.org/downloads/)
+ [Terraform v1.12 oder später](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)

Stellen Sie vor der Bereitstellung sicher, dass Folgendes vorhanden ist:
+ Ein aktiver AWS-Konto.
+ Eine [virtuelle private Cloud (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) mit zwei [privaten Subnetzen](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) in AWS-Konto einem Ihrer AWS-Region Wahl.
+ Ausreichende Berechtigungen für die AWS Identity and Access Management (IAM) -Rolle, die für die Bereitstellung in den folgenden Diensten verwendet wird:
  + AWS Supply Chain — Voller Zugriff wird bevorzugt für die Bereitstellung seiner Komponenten wie Datensätze und Integrationsabläufe sowie für den Zugriff über. AWS-Managementkonsole
  + Amazon CloudWatch Logs — Zum Erstellen und Verwalten von CloudWatch Protokollgruppen.
  + Amazon Elastic Compute Cloud (Amazon EC2) — Für Amazon EC2-Sicherheitsgruppen und Amazon Virtual Private Cloud (Amazon VPC) -Endpunkte.
  + Amazon EventBridge — Zur Verwendung durch AWS Supply Chain.
  + IAM — Zum Erstellen von AWS Lambda Servicerollen.
  + AWS Key Management Service (AWS KMS) — Für den Zugriff auf den für Amazon S3 AWS KMS keys verwendeten Artefakt-Bucket und den Amazon S3 AWS Supply Chain S3-Staging-Bucket.
  + AWS Lambda — Für die Erstellung der Lambda-Funktionen, die die AWS Supply Chain Komponenten bereitstellen.
  + Amazon S3 — Für den Zugriff auf den Amazon S3 S3-Artefakt-Bucket, den Server-Zugriffs-Logging-Bucket und den AWS Supply Chain Staging-Bucket. Wenn Sie die manuelle Bereitstellung verwenden, sind auch Berechtigungen für den Amazon S3 S3-Bucket für Terraform-Artefakte erforderlich.
  + Amazon VPC — Zum Erstellen und Verwalten einer VPC.

Wenn Sie es vorziehen, GitHub Aktions-Workflows für die Bereitstellung zu verwenden, gehen Sie wie folgt vor:
+ Richten Sie [OpenID Connect (OIDC)](https://docs.github.com/en/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws#configuring-the-role-and-trust-policy) für die IAM-Rolle mit den oben genannten Berechtigungen ein.
+ Erstellen Sie eine IAM-Rolle mit ähnlichen Zugriffsberechtigungen für die. AWS-Managementkonsole Weitere Informationen finden Sie in der IAM-Dokumentation unter [Eine Rolle erstellen, um einem IAM-Benutzer Berechtigungen zu erteilen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

Wenn Sie eine manuelle Bereitstellung bevorzugen, gehen Sie wie folgt vor:
+ Erstellen Sie einen IAM-Benutzer, der die IAM-Rolle mit den oben genannten Berechtigungen übernimmt. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Eine Rolle erstellen, um einem IAM-Benutzer Berechtigungen zu erteilen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).
+ [Nehmen Sie die Rolle](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-role.html) in Ihrem lokalen Terminal an.

Wenn Sie es vorziehen, GitHub Aktions-Workflows für die Bereitstellung zu verwenden, richten Sie Folgendes ein:
+ Ein [JFrog Artifactory-Konto](https://jfrog.com/artifactory/?utm_source=google&utm_medium=cpc_search&utm_campaign=SearchDSKBrandAPACIN202506&utm_term=jfrog%20cloud&gads_network=g&utm_content=u-bin&gads_campaign_id=22674833884&gads_adgroup_id=184501797241&gads_extension_id=233003714635&gads_target_id=aud-312135645780:kwd-1598615735032&gads_matchtype=b&gad_source=1&gad_campaignid=22674833884&gbraid=0AAAAADqV85U5B37iapTR9IIFHBvydF5AQ&gclid=CjwKCAjwiY_GBhBEEiwAFaghvqdNV-odNLZXPHjT7NAwf8lA-QuMtg666hgvDW1oCJ4nn7wvf869_xoCW4IQAvD_BwE), um den Hostnamen, den Login-Benutzernamen und das Login-Zugriffstoken zu erhalten.
+ Ein [JFrog Projektschlüssel und ein Repository](https://jfrog.com/help/r/jfrog-platform-administration-documentation/step-1-set-up-a-new-project) zum Speichern von Artefakten.

**Einschränkungen**
+ Die AWS Supply Chain Instanz unterstützt keine komplexen Datentransformationstechniken.
+ AWS Supply Chain eignet sich am besten für Supply-Chain-Bereiche, da es integrierte Analysen und Einblicke bietet. AWS Supply Chain Kann für jede andere Domäne als Datenspeicher als Teil der Data-Lake-Architektur verwendet werden.
+ Die in dieser Lösung verwendeten Lambda-Funktionen müssen möglicherweise erweitert werden, um API-Wiederholungen und Speicherverwaltung in einer Bereitstellung im Produktionsmaßstab zu handhaben.
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-architecture"></a>

Sie können diese Lösung entweder mithilfe automatisierter GitHub Aktionsworkflows oder manuell mithilfe von Terraform bereitstellen.

**Automatisierte Bereitstellung mit Aktionen GitHub **

Das folgende Diagramm zeigt die automatisierte Bereitstellungsoption, die GitHub Aktions-Workflows verwendet. JFrog Artifactory wird für die Verwaltung von Artefakten verwendet. Es speichert Ressourceninformationen und Ausgaben zur Verwendung in einer Bereitstellung mit mehreren Repositorys.

![\[Automatisierte Bereitstellungsoption, die GitHub Aktionsworkflows und JFrog verwendet.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/d454a5c5-ed51-421c-a87f-ff74cfcb30be.png)


**Manuelle Bereitstellung mit Terraform**

Das folgende Diagramm zeigt die manuelle Bereitstellungsoption über Terraform. Anstelle von JFrog Artifactory wird Amazon S3 für die Verwaltung von Artefakten verwendet.

![\[Manuelle Bereitstellungsoption mit Terraform und Amazon S3.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/1130e728-44d5-4ae7-9586-1e497f54352a.png)


**Arbeitsablauf bei der Bereitstellung**

Die Diagramme zeigen den folgenden Arbeitsablauf:

1. Stellen Sie die Infrastruktur und Datenbanken von AWS Supply Chain Service-Datasets mithilfe einer der folgenden Bereitstellungsmethoden bereit:
   + **Automatisierte Bereitstellung** — verwendet GitHub Aktions-Workflows, um alle Bereitstellungsschritte zu orchestrieren, und verwendet JFrog Artifactory für die Verwaltung von Artefakten.
   + **Manuelle Bereitstellung** — Führt Terraform-Befehle direkt für jeden Bereitstellungsschritt aus und verwendet Amazon S3 für die Verwaltung von Artefakten.

1. Erstellen Sie die unterstützenden AWS Ressourcen, die für AWS Supply Chain den Servicebetrieb erforderlich sind:
   + Amazon VPC-Endpunkte und Sicherheitsgruppen
   + AWS KMS keys
   + CloudWatch Protokolliert Protokollgruppen

1. Erstellen und implementieren Sie die folgenden Infrastrukturressourcen:
   + Lambda-Funktionen, die die AWS Supply Chain Dienstinstanz, Namespaces und Datensätze verwalten (erstellen, aktualisieren und löschen).
   + AWS Supply Chain Bereitstellen eines Amazon S3 S3-Buckets für die Datenaufnahme

1. Stellen Sie die Lambda-Funktion bereit, die Integrationsflüsse zwischen dem Staging-Bucket und AWS Supply Chain den Datensätzen verwaltet. Nach Abschluss der Bereitstellung verwalten die verbleibenden Workflow-Schritte die Datenaufnahme und -analyse.

1. Konfigurieren Sie die Quelldatenaufnahme für den Amazon S3 AWS Supply Chain S3-Staging-Bucket.

1. Nachdem Daten zum Amazon S3 AWS Supply Chain S3-Staging-Bucket hinzugefügt wurden, löst der Service automatisch den Integrationsfluss zu den AWS Supply Chain Datensätzen aus.

1. AWS Supply Chain lässt sich in Quick Sight Analytics integrieren, um Dashboards auf der Grundlage der aufgenommenen Daten zu erstellen.

## Tools
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) hilft Ihnen dabei, die Protokolle all Ihrer Systeme und Anwendungen zu zentralisieren, AWS-Services sodass Sie sie überwachen und sicher archivieren können.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) bietet sichere und skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)hilft Ihnen dabei, den Single Sign-On (SSO) -Zugriff auf all Ihre Anwendungen AWS-Konten und Cloud-Anwendungen zentral zu verwalten.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon Q](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) in AWS Supply Chain ist ein interaktiver generativer KI-Assistent, der Ihnen hilft, Ihre Lieferkette effizienter zu betreiben, indem er die Daten in Ihrem AWS Supply Chain Data Lake analysiert.
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) ist ein Business Intelligence (BI) -Service auf Cloud-Ebene, mit dem Sie Ihre Daten in einem einzigen Dashboard visualisieren, analysieren und Berichte erstellen können.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)ist eine cloudbasierte verwaltete Anwendung, die in Organisationen als Datenspeicher für Lieferketten-Domänen verwendet werden kann. Sie kann verwendet werden, um Erkenntnisse zu gewinnen und Analysen der aufgenommenen Daten durchzuführen.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS. Ein [Amazon VPC-Endpunkt](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) ist ein virtuelles Gerät, mit dem Sie Ihre VPC privat mit unterstützten Geräten verbinden können, AWS-Services ohne dass ein Internet-Gateway, ein NAT-Gerät, eine VPN-Verbindung oder AWS Direct Connect eine Verbindung erforderlich ist.

**Andere Tools**
+ [GitHub Actions](https://docs.github.com/en/actions) ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorien integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren.
+ [HashiCorp Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code), mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [JFrog Artifactory](https://jfrog.com/help/r/jfrog-artifactory-documentation/jfrog-artifactory) ermöglicht die end-to-end Automatisierung und Verwaltung von Binärdateien und Artefakten während des Anwendungsbereitstellungsprozesses.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache. Dieses Muster verwendet Python für die Interaktion mit dem Code der AWS Funktion AWS Supply Chain

  .

## Best Practices
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-best-practices"></a>
+ Achten Sie bei der Implementierung dieses Musters auf die höchstmögliche Sicherheit. Wie unter [Voraussetzungen](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) angegeben, stellen Sie sicher, dass sich eine [Virtual Private Cloud (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) mit zwei [privaten Subnetzen](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) AWS-Konto in AWS-Region der Umgebung Ihrer Wahl befindet.
+ Verwenden Sie nach Möglichkeit vom AWS KMS [Kunden verwaltete Schlüssel](https://docs.aws.amazon.com/kms/latest/cryptographic-details/basic-concepts.html) und gewähren Sie ihnen eingeschränkte Zugriffsberechtigungen.
+ Informationen zum Einrichten von IAM-Rollen mit dem geringsten Zugriff, der für die Datenaufnahme für dieses Muster erforderlich ist, finden Sie unter [Sichere Datenaufnahme von Quellsystemen zu Amazon S3](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main?tab=readme-ov-file#secure-data-ingestion-from-source-systems-to-amazon-s3) im Repository dieses Musters.

## Epen
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-epics"></a>

### (Beide Optionen) Richten Sie eine lokale Workstation ein
<a name="both-options-set-up-local-workstation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Um das Repository dieses Musters zu klonen, führen Sie den folgenden Befehl auf Ihrer lokalen Workstation aus:<pre>git clone https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment.git<br />cd ASC-Deployment</pre> | AWS DevOps | 
| (Automatisierte Option) Überprüfen Sie die Voraussetzungen für die Bereitstellung. | Stellen Sie sicher, dass die [Voraussetzungen für die automatisierte Bereitstellung erfüllt](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) sind. | Besitzer der App | 
| (Manuelle Option) Bereiten Sie die Bereitstellung von AWS Supply Chain Datensätzen vor. | Führen Sie den folgenden Befehl aus`ASC-Datasets`, um zum `terraform-deployment` Verzeichnis von zu wechseln:<pre>cd ASC-Datasets/terraform-deployment</pre>Führen Sie den folgenden Befehl aus, um die Rolle ARN anzunehmen, die in den [Voraussetzungen](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) erstellt wurde:<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Führen Sie die folgenden Befehle aus, um die Umgebungsvariablen zu konfigurieren und zu exportieren:<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Datasets dir name><br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export AWS_USER_ROLE=<Enter user role ARN for AWS Console access and deployment><br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | AWS DevOps | 
| (Manuelle Option) Bereiten Sie sich auf die Verwaltung der AWS Supply Chain Integrationsabläufe während der Bereitstellung vor. | Führen Sie den folgenden Befehl aus`ASC-Integration-Flows`, um zum `terraform-deployment` Verzeichnis von zu wechseln:<pre>cd ASC-Integration-Flows/terraform-deployment</pre>Führen Sie den folgenden Befehl aus, um die Rolle ARN anzunehmen, die zuvor erstellt wurde:<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Führen Sie die folgenden Befehle aus, um die Umgebungsvariablen zu konfigurieren und zu exportieren:<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Integration Flows dir name><br />export ASC_DATASET_VARS_REPO=<Enter Current ASC Datasets dir name>  #Must be the same directory name used for ASC Datasets deployment<br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | Besitzer der App | 

### (Automatisierte Option) Stellen Sie AWS Supply Chain Datensätze mithilfe von GitHub Aktions-Workflows bereit
<a name="automated-option-deploy-supplychain-datasets-using-github-actions-workflows"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopieren Sie das `ASC-Datasets` Verzeichnis. | Gehen Sie wie folgt vor, um das `ASC-Datasets` Verzeichnis an einen neuen Speicherort zu kopieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Richten Sie das `ASC-Datasets` Verzeichnis ein. | Führen Sie die folgenden Befehle aus, um es `ASC-Datasets` als eigenständiges Repository in Ihrer Organisation einzurichten:<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Datasets standalone repository"<br />git remote add origin <INSERT_ASC_DATASETS_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Konfigurieren Sie den Zweignamen in der Workflow-Datei .github. | Richten Sie den Zweignamen in der [Deployment-Workflow-Datei](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/asc-datasets.yml) ein, wie im folgenden Beispiel gezeigt:<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Besitzer der App | 
| Richten Sie GitHub Umgebungen ein und konfigurieren Sie Umgebungswerte. | Um GitHub Umgebungen in Ihrer GitHub Organisation einzurichten, folgen Sie den Anweisungen [unter GitHub Umgebungen einrichten](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-github-environments) im Repository dieses Musters.Um [Umgebungswerte](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) in den Workflow-Dateien zu konfigurieren, folgen Sie den Anweisungen [unter Umgebungswerte einrichten in den Workflow-Dateien](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) im Repository dieses Musters. | Besitzer der App | 
| Den Workflow auslösen. | Führen Sie den folgenden Befehl aus, um Ihre Änderungen an Ihre GitHub Organisation weiterzuleiten und den Bereitstellungs-Workflow auszulösen:<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Automatisierte Option) Stellen Sie AWS Supply Chain Integrationsabläufe mithilfe von GitHub Actions-Workflows bereit
<a name="automated-option-deploy-supplychain-integration-flows-using-github-actions-workflows"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopieren Sie das `ASC-Integration-Flows` Verzeichnis. | Gehen Sie wie folgt vor, um das `ASC-Integration-Flows` Verzeichnis an einen neuen Speicherort zu kopieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Richten Sie das `ASC-Integration-Flows` Verzeichnis ein. | Führen Sie die folgenden Befehle aus, um das `ASC-Integration-Flows` Verzeichnis als eigenständiges Repository in Ihrer Organisation einzurichten:<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Integration-Flows standalone repository"<br />git remote add origin <INSERT_ASC_Integration_Flows_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Konfigurieren Sie den Zweignamen in der Workflow-Datei .github. | Richten Sie den Zweignamen in der [Deployment-Workflow-Datei](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/asc-integration-flows.yml) ein, wie im folgenden Beispiel gezeigt:<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Besitzer der App | 
| Richten Sie GitHub Umgebungen ein und konfigurieren Sie Umgebungswerte. | Um GitHub Umgebungen in Ihrer GitHub Organisation einzurichten, folgen Sie den Anweisungen [unter GitHub Umgebungen einrichten](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) im Repository dieses Musters.Um [Umgebungswerte](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) in den Workflow-Dateien zu konfigurieren, folgen Sie den Anweisungen [unter Umgebungswerte einrichten in den Workflow-Dateien](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-environment-values-in-the-workflow-files) im Repository dieses Musters. | Besitzer der App | 
| Den Workflow auslösen. | Führen Sie den folgenden Befehl aus, um Ihre Änderungen an Ihre GitHub Organisation weiterzuleiten und den Bereitstellungs-Workflow auszulösen:<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Manuelle Option) Stellen Sie AWS Supply Chain Datensätze mit Terraform bereit
<a name="manual-option-deploy-supplychain-datasets-using-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Navigieren Sie zum `terraform-deployment ` Verzeichnis . | Führen Sie den folgenden Befehl aus`ASC-Datasets`, um zum `terraform-deployment` Verzeichnis von zu wechseln:<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Richten Sie den Amazon S3 S3-Bucket Terraform State ein. | Verwenden Sie das folgende Skript, um den Amazon S3 S3-Bucket Terraform State einzurichten:<pre># Setup terraform bucket<br />chmod +x ../scripts/setup-terraform.sh<br />../scripts/setup-terraform.sh</pre> | AWS DevOps | 
| Richten Sie den Amazon S3-Bucket für Terraform-Artefakte ein. | Verwenden Sie das folgende Skript, um den Amazon S3 S3-Bucket für Terraform-Artefakte einzurichten:<pre># Setup terraform artifacts bucket<br />chmod +x ../scripts/setup-terraform-artifacts-bucket.sh<br />../scripts/setup-terraform-artifacts-bucket.sh</pre> | AWS DevOps | 
| Richten Sie das Terraform-Backend und die Provider-Konfiguration ein. | Verwenden Sie das folgende Skript, um das Terraform-Backend und die Provider-Konfiguration einzurichten:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Generieren Sie einen Bereitstellungsplan. | Führen Sie die folgenden Befehle aus, um einen Bereitstellungsplan zu generieren:<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Stellen Sie die Konfigurationen bereit. | Führen Sie den folgenden Befehl aus, um die Konfigurationen bereitzustellen:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Aktualisieren Sie andere Konfigurationen und speichern Sie Ausgaben. | Führen Sie die folgenden Befehle aus, um AWS KMS wichtige Richtlinien zu aktualisieren und die angewendeten Konfigurationsausgaben im Amazon S3 S3-Bucket für Terraform-Artefakte zu speichern:<pre># Update AWS Supply Chain KMS Key policy with the service's requirements<br />chmod +x ../scripts/update-asc-kms-policy.sh<br />../scripts/update-asc-kms-policy.sh<br /></pre><pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy.sh<br />../scripts/update-kms-policy.sh<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Manuelle Option) Stellen Sie AWS Supply Chain Service-Integrationsabläufe mithilfe von Terraform bereit
<a name="manual-option-deploy-supplychain-service-integration-flows-using-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Navigieren Sie zum `terraform-deployment` Verzeichnis . | Führen Sie den folgenden Befehl aus`ASC-Integration-Flows`, um zum `terraform-deployment` Verzeichnis von zu wechseln:<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Richten Sie das Terraform-Backend und die Provider-Konfiguration ein. | Verwenden Sie das folgende Skript, um das Terraform-Backend und die Provider-Konfigurationen einzurichten:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Generieren Sie einen Bereitstellungsplan. | Führen Sie die folgenden Befehle aus, um einen Bereitstellungsplan zu generieren. Diese Befehle initialisieren Ihre Terraform-Umgebung, führen Konfigurationsvariablen `ASC-Datasets` mit Ihren vorhandenen Terraform-Konfigurationen zusammen und generieren einen Bereitstellungsplan.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Stellen Sie die Konfigurationen bereit. | Führen Sie den folgenden Befehl aus, um die Konfigurationen bereitzustellen:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Aktualisieren Sie andere Konfigurationen. | Führen Sie die folgenden Befehle aus, um AWS KMS wichtige Richtlinien zu aktualisieren und die angewendeten Konfigurationsausgaben im Amazon S3 S3-Bucket für Terraform-Artefakte zu speichern:<pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy-through-s3.sh<br />../scripts/update-kms-policy-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Beide Optionen) Daten aufnehmen
<a name="both-options-ingest-data"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie CSV-Beispieldateien hoch. | Gehen Sie wie folgt vor, um CSV-Beispieldateien für die Datensätze hochzuladen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Dateningenieur | 

### (Beide Optionen) Richten Sie AWS Supply Chain den Zugriff ein
<a name="both-options-set-up-supplychain-access"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  AWS Supply Chain Zugriff einrichten. | Gehen Sie wie folgt vor AWS-Managementkonsole, um den AWS Supply Chain Zugriff von der aus einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Besitzer der App | 

### (Automatisierte Option) Bereinigen Sie alle Ressourcen mithilfe von GitHub Aktions-Workflows
<a name="automated-option-clean-up-all-resources-using-github-actions-workflows"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löst den Workflow zur Zerstörung von Ressourcen für Integrationsflüsse aus. | Lösen Sie den [Zerstörungsworkflow](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/destroy-workflow.yml) `ASC-Integration-Flows` von Ihrer Deployment-Abteilung in Ihrer GitHub Organisation aus. | AWS DevOps | 
| Löst den Workflow zur Zerstörung von Datensatz-Ressourcen aus. | Lösen Sie den [Löschen-Workflow](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/destroy-workflow.yml) `ASC-Datasets` von Ihrer Deployment-Abteilung in Ihrer GitHub Organisation aus. | AWS DevOps | 

### (Manuelle Option) Bereinigen Sie die Ressourcen der AWS Supply Chain Integrationsflüsse mithilfe von Terraform
<a name="manual-option-clean-up-resources-of-supplychain-integration-flows-using-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Navigieren Sie zum `terraform-deployment` Verzeichnis . | Führen Sie den folgenden Befehl aus`ASC-Integration-Flows`, um zum `terraform-deployment` Verzeichnis von zu wechseln:<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Richten Sie das Terraform-Backend und die Provider-Konfiguration ein. | Verwenden Sie das folgende Skript, um das Terraform-Backend und die Provider-Konfiguration einzurichten:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Generieren Sie einen Plan zur Zerstörung der Infrastruktur. | Führen Sie die folgenden Befehle aus, um sich auf die kontrollierte Zerstörung Ihrer AWS Infrastruktur vorzubereiten, indem Sie einen detaillierten Plan zum Abbau Ihrer Infrastruktur erstellen. Der Prozess initialisiert Terraform, integriert AWS Supply Chain Datensatzkonfigurationen und erstellt einen Zerstörungsplan, den Sie vor der Ausführung überprüfen können.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Führen Sie den Plan zur Zerstörung der Infrastruktur aus. | Führen Sie den folgenden Befehl aus, um die geplante Zerstörung Ihrer Infrastruktur auszuführen:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Entfernen Sie Terraform-Ausgaben aus dem Amazon S3 S3-Bucket. | Führen Sie den folgenden Befehl aus, um die Ausgabedatei zu entfernen`ASC-Integration-Flows`, die während der Bereitstellung von hochgeladen wurde:<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

### (Manuelle Option) Bereinigen Sie die Ressourcen von AWS Supply Chain Service-Datensätzen mithilfe von Terraform
<a name="manual-option-clean-up-resources-of-supplychain-service-datasets-using-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Navigieren Sie zum `terraform-deployment` Verzeichnis . | Führen Sie den folgenden Befehl aus`ASC-Datasets`, um zum `terraform-deployment` Verzeichnis von zu wechseln:<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Richten Sie das Terraform-Backend und die Provider-Konfiguration ein. | Verwenden Sie das folgende Skript, um das Terraform-Backend und die Provider-Konfiguration einzurichten:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Generieren Sie einen Plan zur Zerstörung der Infrastruktur. | Führen Sie die folgenden Befehle aus, um einen Plan für die Zerstörung von AWS Supply Chain Datensatzressourcen zu erstellen:<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Leere Amazon S3 S3-Buckets. | Verwenden Sie das folgende Skript, um alle Amazon S3 S3-Buckets zu leeren (mit Ausnahme des Serverzugriffs-Logging-Buckets, für den konfiguriert ist`force-destroy`):<pre># Delete S3 buckets excluding server access logging bucket<br />chmod +x ../scripts/empty-s3-buckets.sh<br />../scripts/empty-s3-buckets.sh tfplan.out</pre> | AWS DevOps | 
| Führen Sie den Plan zur Zerstörung der Infrastruktur aus. | Führen Sie den folgenden Befehl aus, um die geplante Zerstörung Ihrer AWS Supply Chain Datensatz-Infrastruktur mithilfe des generierten Plans auszuführen:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Entfernen Sie Terraform-Ausgaben aus dem Amazon S3 S3-Bucket für Terraform-Artefakte. | Um den Bereinigungsprozess abzuschließen, entfernen Sie die Ausgabedatei, die während der Bereitstellung von hochgeladen wurde, `ASC-Datasets` indem Sie den folgenden Befehl ausführen:<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

## Fehlerbehebung
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Ein AWS Supply Chain Datensatz oder ein Integrationsablauf wurde aufgrund AWS Supply Chain interner Fehler oder unzureichender IAM-Berechtigungen für die Servicerolle nicht korrekt bereitgestellt. | Bereinigen Sie zunächst alle Ressourcen. Stellen Sie dann die AWS Supply Chain [Datensatzressourcen](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/README.md) erneut bereit und stellen Sie dann die AWS Supply Chain [Integrationsflussressourcen](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/README.md) erneut bereit. | 
| Der AWS Supply Chain Integrationsfluss ruft die neuen Datendateien, die für die Datensätze hochgeladen wurden, nicht ab. AWS Supply Chain  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | 

## Zugehörige Ressourcen
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-resources"></a>

**AWS Dokumentation**
+ [AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)

**Sonstige Ressourcen**
+ [Grundlegendes zu den Arbeitsabläufen von GitHub Aktionen](https://docs.github.com/en/actions/get-started/understand-github-actions) (GitHub Dokumentation)

## Zusätzliche Informationen
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-additional"></a>

Diese Lösung kann für mehr Datensätze repliziert und für weitere Analysen abgefragt werden, und zwar über vorgefertigte Dashboards, die mit Amazon Quick Sight bereitgestellt werden, AWS Supply Chain oder über eine benutzerdefinierte Integration mit Amazon Quick Sight. Darüber hinaus können Sie Amazon Q verwenden, um Fragen zu Ihrer AWS Supply Chain Instance zu stellen.

**Analysieren Sie Daten mit AWS Supply Chain Analytics**

Anweisungen zum Einrichten von AWS Supply Chain Analytics finden Sie in der AWS Supply Chain Dokumentation unter [AWS Supply Chain Analytics einrichten](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/setting_analytics.html).

Dieses Muster demonstrierte die Erstellung von **Calendar** - und **Outbound\$1Order\$1Line-Datensätzen**. Gehen Sie wie folgt vor, um eine Analyse zu erstellen, die diese Datensätze verwendet:

1. Verwenden Sie das Dashboard für die **Saisonalitätsanalyse**, um die Datensätze zu analysieren. Um das Dashboard hinzuzufügen, folgen Sie den Schritten unter [Vorgefertigte Dashboards](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/prebuilt_dashboards.html) in der Dokumentation. AWS Supply Chain 

1. Wählen Sie das Dashboard aus, um dessen Analyse zu sehen, die auf CSV-Beispieldateien für Kalenderdaten und ausgehende Auftragspositionsdaten basiert.

Das Dashboard bietet auf Anfrage Erkenntnisse über die Jahre, die auf den aufgenommenen Daten für die Datensätze basieren. Sie können die ProductID, CustomerID, Jahre und andere Parameter für die Analyse weiter angeben.

**Verwenden Sie Amazon Q, um Fragen zu Ihrer AWS Supply Chain Instance zu stellen**

[Amazon Q in AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) ist ein interaktiver generativer KI-Assistent, der Ihnen hilft, Ihre Lieferkette effizienter zu betreiben. Amazon Q kann Folgendes tun:
+ Analysieren Sie die Daten in Ihrem AWS Supply Chain Data Lake.
+ Bieten Sie betriebliche und finanzielle Einblicke.
+ Beantworten Sie Ihre unmittelbaren Fragen zur Lieferkette.

Weitere Informationen zur Verwendung von Amazon Q finden Sie unter [Amazon Q aktivieren in AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/enabling_QinASC.html) und [Amazon Q verwenden AWS Supply Chain in](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/using_QinASC.html) der AWS Supply Chain Dokumentation.

# Automatisieren Sie die AWS-Ressourcenbewertung
<a name="automate-aws-resource-assessment"></a>

*Naveen Suthar, Arun Bagal, Manish Garg und Sandeep Gawande, Amazon Web Services*

## Zusammenfassung
<a name="automate-aws-resource-assessment-summary"></a>

Dieses Muster beschreibt einen automatisierten Ansatz für die Einrichtung von Funktionen zur Ressourcenbewertung mithilfe des [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html). Mithilfe dieses Musters sammeln Betriebsteams automatisiert Informationen zur Ressourcenprüfung und sehen sich die Details aller in einem AWS-Konto bereitgestellten Ressourcen auf einem einzigen Dashboard an. Dies ist in den folgenden Anwendungsfällen hilfreich:
+ Identifizierung von Infrastructure-as-Code-Tools (IaC) und Isolierung von Ressourcen, die von verschiedenen IaC-Lösungen wie [HashiCorp Terraform](https://www.terraform.io/), [AWS CloudFormation, AWS CDK und AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) [Command Line Interface (AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) CLI) erstellt wurden
+ Informationen zur Ressourcenprüfung werden abgerufen

Diese Lösung hilft dem Führungsteam auch dabei, von einem einzigen Dashboard aus Einblicke in die Ressourcen und Aktivitäten in einem AWS-Konto zu erhalten. 


| 
| 
| Hinweis: [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) ist ein kostenpflichtiger Service. Bevor Sie es ausführen, um Daten zu analysieren und ein Dashboard zu erstellen, sollten Sie sich die [Amazon Quick Sight-Preise ansehen](https://aws.amazon.com/quicksight/pricing/). | 
| --- |

## Voraussetzungen und Einschränkungen
<a name="automate-aws-resource-assessment-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Rollen und Berechtigungen von AWS Identity and Access Management (IAM) mit Zugriff auf Bereitstellungsressourcen
+ Ein [Amazon Quick-Konto](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html), das mit Zugriff auf [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) und [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) erstellt wurde
+ AWS CDK Version 2.55.1 oder höher installiert 
+ [Python-Version](https://www.python.org/downloads/release/python-390/) 3.9 oder höher installiert

**Einschränkungen**
+ Diese Lösung wird auf einem einzigen AWS-Konto bereitgestellt.
+ Die Lösung verfolgt die Ereignisse, die vor ihrer Bereitstellung passiert sind, nicht, es sei denn, AWS CloudTrail war bereits eingerichtet und speichert Daten in einem S3-Bucket.

**Produktversionen**
+ AWS CDK Version 2.55.1 oder höher
+ Python-Version 3.9 oder höher

## Architektur
<a name="automate-aws-resource-assessment-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon Athena
+ AWS CloudTrail
+ AWS Glue
+ AWS Lambda
+ Amazon Quick Sight
+ Amazon S3

**Zielarchitektur**

Der AWS-CDK-Code stellt alle Ressourcen bereit, die für die Einrichtung von Funktionen zur Ressourcenbewertung in einem AWS-Konto erforderlich sind. Das folgende Diagramm zeigt den Prozess des Sendens von CloudTrail Protokollen an AWS Glue, Amazon Athena und Quick Sight.

![\[AWS-Ressourcenbewertung mit AWS Glue, Amazon Athena und Amazon QuickSight in einem sechsstufigen Prozess.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a504774e-db7a-4c36-a22c-ce56d252fb58/images/8f2b549d-33a8-4cbf-86fd-33244716b668.png)


1. CloudTrail sendet Protokolle zur Speicherung an einen S3-Bucket.

1. Eine Ereignisbenachrichtigung ruft eine Lambda-Funktion auf, die die Protokolle verarbeitet und gefilterte Daten generiert.

1. Die gefilterten Daten werden in einem anderen S3-Bucket gespeichert.

1. Ein AWS Glue Glue-Crawler wird für die gefilterten Daten im S3-Bucket eingerichtet, um ein Schema in der AWS Glue Glue-Datenkatalogtabelle zu erstellen.

1. Die gefilterten Daten können jetzt von Amazon Athena abgefragt werden.

1. Quick Sight greift zur Visualisierung auf die abgefragten Daten zu.

**Automatisierung und Skalierung**
+ Diese Lösung kann von einem AWS-Konto auf mehrere AWS-Konten skaliert werden, wenn es in AWS Organizations einen unternehmensweiten CloudTrail Trail gibt. Durch die Bereitstellung CloudTrail auf Organisationsebene können Sie diese Lösung auch verwenden, um Informationen zur Ressourcenprüfung für alle erforderlichen Ressourcen abzurufen.
+ Dieses Muster verwendet serverlose AWS-Ressourcen, um die Lösung bereitzustellen.

## Tools
<a name="automate-aws-resource-assessment-tools"></a>

**AWS-Services**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) ist ein interaktiver Abfrageservice, mit dem Sie Daten mithilfe von Standard-SQL direkt in Amazon S3 analysieren können.
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und AWS-Regionen hinweg zu verwalten.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) unterstützt Sie bei der Prüfung der Unternehmensführung, der Einhaltung von Vorschriften und des Betriebsrisikos Ihres AWS-Kontos.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) ist ein vollständig verwalteter Service zum Extrahieren, Transformieren und Laden (ETL). Er hilft Ihnen dabei, Daten zuverlässig zu kategorisieren, zu bereinigen, anzureichern und zwischen Datenspeichern und Datenströmen zu verschieben. Dieses Muster verwendet einen AWS Glue Glue-Crawler und eine AWS Glue Glue-Datenkatalogtabelle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) ist ein Business Intelligence (BI) -Service auf Cloud-Ebene, mit dem Sie Ihre Daten in einem einzigen Dashboard visualisieren, analysieren und Berichte erstellen können.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [infrastructure-assessment-iac-automation](https://github.com/aws-samples/infrastructure-assessment-iac-automation)Repository verfügbar.

Das Code-Repository enthält die folgenden Dateien und Ordner:
+ `lib`folder — Das AWS-CDK-Konstrukt Python-Dateien, die zum Erstellen von AWS-Ressourcen verwendet werden
+ `src/lambda_code`— Der Python-Code, der in der Lambda-Funktion ausgeführt wird
+ `requirements.txt`— Die Liste aller Python-Abhängigkeiten, die installiert werden müssen
+ `cdk.json`— Die Eingabedatei zur Bereitstellung von Werten, die zum Hochfahren von Ressourcen erforderlich sind

## Best Practices
<a name="automate-aws-resource-assessment-best-practices"></a>

Richten Sie die Überwachung und Warnung für die Lambda-Funktion ein. Weitere Informationen finden Sie unter [Überwachung und Problembehandlung von Lambda-Funktionen](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Allgemeine bewährte Methoden für die Arbeit mit Lambda-Funktionen finden Sie in der [AWS-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Epen
<a name="automate-aws-resource-assessment-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repo auf Ihrem lokalen Computer. | Führen Sie zum Klonen des Repositorys den Befehl `git clone https://github.com/aws-samples/infrastructure-assessment-iac-automation.git` aus. | AWS DevOps, DevOps Ingenieur | 
| Richten Sie die virtuelle Python-Umgebung ein und installieren Sie die erforderlichen Abhängigkeiten. | Führen Sie die folgenden Befehle aus, um die virtuelle Python-Umgebung einzurichten.<pre>cd infrastructure-assessment-iac-automation<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Führen Sie den Befehl aus, um die erforderlichen Abhängigkeiten einzurichten`pip install -r requirements.txt`. | AWS DevOps, DevOps Ingenieur | 
| Richten Sie die AWS-CDK-Umgebung ein und synthetisieren Sie den AWS-CDK-Code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps Ingenieur | 

### AWS-Anmeldeinformationen auf Ihrem lokalen Computer einrichten
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Exportieren Sie Variablen für das Konto und die Region, in der der Stack bereitgestellt werden soll. | Führen Sie die folgenden Befehle aus, um AWS-Anmeldeinformationen für AWS CDK mithilfe von Umgebungsvariablen bereitzustellen.<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | AWS DevOps, DevOps Ingenieur | 
| Richten Sie das AWS-CLI-Profil ein. | Folgen Sie den Anweisungen in der [AWS-Dokumentation, um das AWS-CLI-Profil](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html) für das Konto einzurichten. | AWS DevOps, DevOps Ingenieur | 

### Konfigurieren und implementieren Sie das Tool zur Ressourcenbewertung
<a name="configure-and-deploy-the-resource-assessment-tool"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie Ressourcen im Konto bereit. | Gehen Sie wie folgt vor, um Ressourcen im AWS-Konto mithilfe von AWS CDK bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps | 
| Führen Sie den AWS Glue Glue-Crawler aus und erstellen Sie die Datenkatalogtabelle. | Ein [AWS Glue Glue-Crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) wird verwendet, um das Datenschema dynamisch zu halten. Die Lösung erstellt und aktualisiert Partitionen in der [AWS Glue Data Catalog-Tabelle](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html), indem sie den Crawler regelmäßig ausführt, wie vom AWS Glue Crawler Scheduler definiert. Nachdem die Daten im S3-Ausgabe-Bucket verfügbar sind, führen Sie die folgenden Schritte aus, um den AWS Glue Glue-Crawler auszuführen und das Data Catalog-Tabellenschema zum Testen zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)Der AWS-CDK-Code konfiguriert den AWS Glue-Crawler so, dass er zu einem bestimmten Zeitpunkt ausgeführt wird. Sie können ihn aber auch bei Bedarf ausführen. | AWS DevOps, DevOps Ingenieur | 
| Stellen Sie das Quick Sight-Konstrukt bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps Ingenieur | 
| Erstellen Sie das Quick Sight-Dashboard. | Gehen Sie wie folgt vor, um das Quick Sight-Beispiel-Dashboard und die Analyse zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)Weitere Informationen finden Sie unter [Starten einer Analyse in Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/creating-an-analysis.html) und [Visuelle Typen in Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/working-with-visual-types.html). | AWS DevOps, DevOps Ingenieur | 

### Bereinigen Sie alle AWS-Ressourcen in der Lösung
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entfernen Sie die AWS-Ressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps Ingenieur | 

### Richten Sie zusätzliche Funktionen zusätzlich zur Automatisierung des AWS-Tools zur Ressourcenbewertung ein
<a name="set-up-additional-features-on-top-of-the-aws-resource-assessment-tool-automation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überwachen und bereinigen Sie manuell erstellte Ressourcen. | (Optional) Wenn Ihre Organisation Compliance-Anforderungen für die Erstellung von Ressourcen mithilfe von IaC-Tools hat, können Sie die Einhaltung der Vorschriften erreichen, indem Sie mithilfe der Automatisierung des AWS-Tools zur Ressourcenbeurteilung manuell bereitgestellte Ressourcen abrufen. Sie können das Tool auch verwenden, um die Ressourcen in ein IaC-Tool zu importieren oder neu zu erstellen. Um manuell bereitgestellte Ressourcen zu überwachen, führen Sie die folgenden allgemeinen Aufgaben aus:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps Ingenieur | 

## Fehlerbehebung
<a name="automate-aws-resource-assessment-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| AWS CDK gibt Fehler zurück. | Hilfe bei Problemen mit AWS CDK finden Sie unter [Behebung häufiger Probleme mit AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 

## Zugehörige Ressourcen
<a name="automate-aws-resource-assessment-resources"></a>
+ [Lambda-Funktionen mit Python erstellen](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Erste Schritte mit AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Arbeiten mit AWS CDK in Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Einen CloudTrail Log-Trail erstellen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Erste Schritte mit Amazon Quick Sight](https://aws.amazon.com/quicksight/getting-started/)

## Zusätzliche Informationen
<a name="automate-aws-resource-assessment-additional"></a>

**Mehrere Konten**

Verwenden Sie AWS-Profile, um die AWS-CLI-Anmeldeinformationen für mehrere Konten einzurichten. Weitere Informationen finden Sie im Abschnitt *Mehrere Profile konfigurieren* unter [Einrichtung der AWS-CLI](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/).

**AWS-CDK-Befehle**

Beachten Sie bei der Arbeit mit AWS CDK die folgenden nützlichen Befehle:
+ Listet alle Stacks in der App auf

  ```
  cdk ls
  ```
+ Gibt die synthetisierte AWS-Vorlage aus CloudFormation 

  ```
  cdk synth
  ```
+ Stellt den Stack für Ihr AWS-Standardkonto und Ihre Region bereit

  ```
  cdk deploy
  ```
+ Vergleicht den bereitgestellten Stack mit dem aktuellen Status

  ```
  cdk diff
  ```
+ Öffnet die AWS CDK-Dokumentation

  ```
  cdk docs
  ```

# Automatische Installation von SAP-Systemen mithilfe von Open-Source-Tools
<a name="install-sap-systems-automatically-by-using-open-source-tools"></a>

*Guilherme Sesterheim, Amazon Web Services*

## Zusammenfassung
<a name="install-sap-systems-automatically-by-using-open-source-tools-summary"></a>

Dieses Muster zeigt, wie die Installation von SAP-Systemen mithilfe von Open-Source-Tools automatisiert werden kann, um die folgenden Ressourcen zu erstellen:
+ Eine SAP S/4HANA 1909-Datenbank
+ Eine Instanz von SAP ABAP Central Services (ASCS)
+ Eine Instanz des SAP Primary Application Server (PAS)

HashiCorp Terraform erstellt die Infrastruktur des SAP-Systems und Ansible konfiguriert das Betriebssystem (OS) und installiert SAP-Anwendungen. Jenkins führt die Installation aus.

Dieses Setup macht die Installation von SAP-Systemen zu einem wiederholbaren Prozess, der zur Steigerung der Effizienz und Qualität der Bereitstellung beitragen kann.

**Anmerkung**  
Der in diesem Muster bereitgestellte Beispielcode funktioniert sowohl für Hochverfügbarkeitssysteme (HA) als auch für Systeme ohne Hochverfügbarkeit.

## Voraussetzungen und Einschränkungen
<a name="install-sap-systems-automatically-by-using-open-source-tools-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein Amazon Simple Storage Service (Amazon S3) -Bucket, der all Ihre SAP-Mediendateien enthält
+ Ein AWS Identity and Access Management (IAM) -Prinzipal mit einem [Zugriffsschlüssel und einem geheimen Schlüssel](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html), der über die folgenden Berechtigungen verfügt:
  + **Schreibgeschützte Berechtigungen:** Amazon Route 53, AWS Key Management Service (AWS KMS)
  + **Lese- und Schreibberechtigungen:** Amazon S3, Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic File System (Amazon EFS), IAM, Amazon CloudWatch, Amazon DynamoDB
+ Eine [privat gehostete Route 53 53-Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)
+ Ein Abonnement für [Red Hat Enterprise Linux für SAP mit HA und Update Services 8.2](https://aws.amazon.com/marketplace/pp/prodview-5grz5a5thx7c2) Amazon Machine Image (AMI) auf Amazon Marketplace
+ Ein [vom Kunden verwalteter AWS KMS-Schlüssel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#aws-managed-customer-managed-keys)
+ Ein [Secure Shell (SSH) -Schlüsselpaar](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+ **Eine [ EC2 Amazon-Sicherheitsgruppe](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html), die eine SSH-Verbindung auf Port 22 von dem Hostnamen aus ermöglicht, auf dem Sie Jenkins installieren (der Hostname ist höchstwahrscheinlich localhost)**
+ [ HashiCorp Vagrant von wurde installiert und konfiguriert](https://www.vagrantup.com/)
+ [VirtualBox](https://www.virtualbox.org/)von Oracle installiert und konfiguriert
+ Vertrautheit mit Git, Terraform, Ansible und Jenkins

**Einschränkungen**
+ Nur SAP S/4HANA 1909 wurde für dieses spezielle Szenario vollständig getestet. Der Ansible-Beispielcode in diesem Muster muss geändert werden, wenn Sie eine andere Version von SAP HANA verwenden.
+ Das Beispielverfahren in diesem Muster funktioniert für Mac OS- und Linux-Betriebssysteme. Einige der Befehle können nur in UNIX-basierten Terminals ausgeführt werden. Sie können jedoch ein ähnliches Ergebnis erzielen, indem Sie unterschiedliche Befehle und ein Windows-Betriebssystem verwenden.

**Produktversionen**
+ SAP S/4HANA 1909
+ Red Hat Enterprise Linux (RHEL) 8.2 oder höhere Versionen

## Architektur
<a name="install-sap-systems-automatically-by-using-open-source-tools-architecture"></a>

Das folgende Diagramm zeigt einen Beispiel-Workflow, der Open-Source-Tools verwendet, um die Installation von SAP-Systemen in einem AWS-Konto zu automatisieren:

![\[Der Beispiel-Workflow verwendet Open-Source-Tools, um die Installation von SAP-Systemen in einem AWS-Konto zu automatisieren.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/aaf11dac-38cc-4e89-be86-51d4409cf238/images/d7902f9d-f1be-461f-b69b-cf3c663c8f2f.png)


Das Diagramm zeigt den folgenden Workflow:

1. Jenkins orchestriert die Ausführung der SAP-Systeminstallation, indem es Terraform- und Ansible-Code ausführt.

1. Terraform-Code baut die Infrastruktur des SAP-Systems auf.

1. Ansible Code konfiguriert das Betriebssystem und installiert SAP-Anwendungen.

1. Eine SAP S/4HANA 1909-Datenbank, eine ASCS-Instanz und eine PAS-Instanz, die alle definierten Voraussetzungen enthalten, sind auf einer Amazon-Instance installiert. EC2 

**Anmerkung**  
Das Beispiel-Setup in diesem Muster erstellt automatisch einen Amazon S3 S3-Bucket in Ihrem AWS-Konto, um die Terraform-Statusdatei zu speichern.

**Technologie-Stack**
+ Terraform
+ Ansible
+ Jenkins
+ Eine SAP S/4HANA 1909 Datenbank
+ Eine SAP ASCS-Instanz
+ Eine SAP-PAS-Instanz
+ Amazon EC2 

## Tools
<a name="install-sap-systems-automatically-by-using-open-source-tools-tools"></a>

**AWS-Services**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server starten, wie Sie benötigen, und diese schnell nach oben oder unten skalieren.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel zum Schutz Ihrer Daten.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist eine Befehlszeilenschnittstellenanwendung, mit der Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
+ [Ansible](https://www.ansible.com/) ist ein Open-Source-Tool zur Konfiguration als Code (CaC), mit dem Anwendungen, Konfigurationen und IT-Infrastruktur automatisiert werden können.
+ [Jenkins](https://www.jenkins.io/) ist ein Open-Source-Automatisierungsserver, mit dem Entwickler ihre Software erstellen, testen und bereitstellen können.

**Code**

[Der Code für dieses Muster ist im Repository -jenkins-ansible verfügbar. GitHub aws-install-sap-with](https://github.com/aws-samples/aws-install-sap-with-jenkins-ansible)

## Epen
<a name="install-sap-systems-automatically-by-using-open-source-tools-epics"></a>

### Konfigurieren Sie die Voraussetzungen
<a name="configure-the-prerequisites"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie Ihre SAP-Mediendateien zu einem Amazon S3 S3-Bucket hinzu. | [Erstellen Sie einen Amazon S3 S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html), der all Ihre SAP-Mediendateien enthält.Stellen Sie sicher, dass Sie der Ordnerhierarchie des AWS Launch Wizard für **S/4HANA** in der [Launch Wizard-Dokumentation](https://docs.aws.amazon.com/launchwizard/latest/userguide/launch-wizard-sap-software-install-details.html) folgen. | Cloud-Administrator | 
| Installieren VirtualBox. | Installation und Konfiguration [VirtualBox](https://www.virtualbox.org/)durch Oracle. | DevOps Ingenieur | 
| Installieren Sie Vagrant. | Installieren und konfigurieren Sie [Vagrant](https://www.vagrantup.com/) von. HashiCorp | DevOps Ingenieur | 
| Konfigurieren Sie Ihr AWS-Konto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html) | Allgemeines AWS | 

### Erstellen Sie Ihre SAP-Installation und führen Sie sie aus
<a name="build-and-run-your-sap-installation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository von GitHub. | Klonen Sie das [aws-install-sap-with-jenkins-ansible-Repository](https://github.com/aws-samples/aws-install-sap-with-jenkins-ansible) auf. GitHub | DevOps Ingenieur | 
| Starten Sie den Jenkins-Service. | Öffnen Sie das Linux-Terminal. Navigieren Sie dann zu dem lokalen Ordner, der den Repository-Ordner für geklonten Code enthält, und führen Sie den folgenden Befehl aus:<pre>sudo vagrant up</pre>Der Jenkins-Start dauert etwa 20 Minuten. Der Befehl gibt bei Erfolg die Meldung **Service is up and running** zurück. | DevOps Ingenieur | 
| Öffnen Sie Jenkins in einem Webbrowser und melden Sie sich an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html) | DevOps Ingenieur | 
| Konfigurieren Sie die Installationsparameter Ihres SAP-Systems. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)Sie können die anderen nicht erforderlichen Parameter je nach Ihrem Anwendungsfall nach Bedarf konfigurieren. Sie können beispielsweise die SAP-System-ID (SID) der Instanzen, das Standardkennwort, die Namen und die Tags für Ihr SAP-System ändern. Alle erforderlichen Variablen haben **(Erforderlich)** am Anfang ihrer Namen. | AWS-Systemadministrator, DevOps Ingenieur | 
| Führen Sie Ihre SAP-Systeminstallation aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)Informationen zu den Pipeline-Schritten finden Sie im Abschnitt **Grundlegendes zu den Pipeline-Schritten** unter [Automatisieren der SAP-Installation mit Open-Source-Tools](https://aws.amazon.com/blogs/awsforsap/automating-sap-installation-with-open-source-tools/) im AWS-Blog.**Wenn ein Fehler auftritt, bewegen Sie den Mauszeiger über das rote Fehlerfeld, das angezeigt wird, und wählen Sie Logs.** Die Protokolle für den Pipeline-Schritt, bei dem ein Fehler aufgetreten ist, werden angezeigt. Die meisten Fehler treten aufgrund falscher Parametereinstellungen auf. | DevOps Ingenieur, AWS-Systemadministrator | 

## Zugehörige Ressourcen
<a name="install-sap-systems-automatically-by-using-open-source-tools-resources"></a>
+ [DevOps für SAP — SAP-Installation: 2 Monate bis 2 Stunden](https://videos.itrevolution.com/watch/707351918/) (DevOps Enterprise Summit Video Library)

# Automatisieren Sie das AWS Service Catalog-Portfolio und die Produktbereitstellung mithilfe von AWS CDK
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk"></a>

*Sandeep Gawande, Viyoma Sachdeva und RAJNEESH TYAGI, Amazon Web Services*

## Zusammenfassung
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-summary"></a>

Mit AWS Service Catalog können Sie Kataloge von IT-Services oder *Produkten*, die für die Verwendung in der AWS-Umgebung Ihres Unternehmens zugelassen sind, zentral verwalten. Eine Sammlung von Produkten wird als *Portfolio* bezeichnet, und ein Portfolio enthält auch Konfigurationsinformationen. Mit AWS Service Catalog können Sie ein maßgeschneidertes Portfolio für jeden Benutzertyp in Ihrer Organisation erstellen und dann Zugriff auf das entsprechende Portfolio gewähren. Diese Benutzer können dann schnell jedes Produkt, das sie benötigen, aus dem Portfolio bereitstellen.

Wenn Sie über eine komplexe Netzwerkinfrastruktur verfügen, z. B. Architekturen mit mehreren Regionen und mehreren Konten, wird empfohlen, Service Catalog-Portfolios in einem einzigen, zentralen Konto zu erstellen und zu verwalten. Dieses Muster beschreibt, wie das AWS Cloud Development Kit (AWS CDK) verwendet wird, um die Erstellung von Service Catalog-Portfolios in einem zentralen Konto zu automatisieren, Endbenutzern Zugriff darauf zu gewähren und dann, optional, Produkte in einem oder mehreren AWS-Zielkonten bereitzustellen. Diese ready-to-use Lösung erstellt die Service Catalog-Portfolios im Quellkonto. Es stellt optional auch Produkte in Zielkonten mithilfe von CloudFormation AWS-Stacks bereit und hilft Ihnen bei der Konfiguration TagOptions für die Produkte:
+ **AWS CloudFormation StackSets** — Sie können es verwenden StackSets , um Service Catalog-Produkte in mehreren AWS-Regionen und Konten auf den Markt zu bringen. In dieser Lösung haben Sie die Möglichkeit, Produkte automatisch bereitzustellen, wenn Sie diese Lösung bereitstellen. Weitere Informationen finden Sie unter [Verwenden von AWS CloudFormation StackSets](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/using-stacksets.html) (Service Catalog-Dokumentation) und [StackSets Konzepte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation Dokumentation).
+ **TagOption Bibliothek** — Mithilfe der TagOption Bibliothek können Sie Tags für bereitgestellte Produkte verwalten. A *TagOption*ist ein Schlüssel-Wert-Paar, das im AWS Service Catalog verwaltet wird. Es ist kein AWS-Tag, sondern dient als Vorlage für die Erstellung eines AWS-Tags auf der Grundlage von TagOption. Weitere Informationen finden Sie in der [TagOption Bibliothek](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/tagoptions.html) (Service Catalog-Dokumentation).

## Voraussetzungen und Einschränkungen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto, das Sie als Quellkonto für die Verwaltung von Service Catalog-Portfolios verwenden möchten.
+ Wenn Sie diese Lösung verwenden, um Produkte in einem oder mehreren Zielkonten bereitzustellen, muss das Zielkonto bereits existieren und aktiv sein.
+ AWS Identity and Access Management (IAM) -Berechtigungen für den Zugriff auf AWS Service Catalog CloudFormation, AWS und AWS IAM.

**Produktversionen**
+ AWS CDK versie 2.27.0

## Architektur
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-architecture"></a>

**Zieltechnologie-Stack**
+ Service Catalog-Portfolios in einem zentralen AWS-Konto
+ Service Catalog-Produkte, die im Zielkonto bereitgestellt werden

**Zielarchitektur**

![\[AWS CDK erstellt Service Catalog-Portfolios und stellt Produkte im Zielkonto bereit.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e8f217a7-aec4-4c85-8f6b-f91995506be0/images/1f027b82-14c3-485a-909b-1544e974b90a.png)


1. Im Portfolio- (oder *Quellkonto*) aktualisieren Sie die Datei **config.json** mit dem AWS-Konto, der AWS-Region, der IAM-Rolle, dem Portfolio und den Produktinformationen für Ihren Anwendungsfall.

1. Sie stellen die AWS-CDK-Anwendung bereit.

1. Die AWS-CDK-Anwendung übernimmt die IAM-Rolle für die Bereitstellung und erstellt die Service Catalog-Portfolios und -Produkte, die in der **Datei config.json** definiert sind.

   Wenn Sie für StackSets die Bereitstellung von Produkten in einem Zielkonto konfiguriert haben, wird der Vorgang fortgesetzt. Wenn Sie nicht für StackSets die Bereitstellung von Produkten konfiguriert haben, ist der Vorgang abgeschlossen.

1. Die AWS-CDK-Anwendung übernimmt die **StackSet Administratorrolle** und stellt das CloudFormation AWS-Stack-Set bereit, das Sie in der **Datei config.json** definiert haben.

1.  StackSets Übernimmt im Zielkonto die **StackSet Ausführungsrolle** und stellt die Produkte bereit.

## Tools
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-tools"></a>

**AWS-Services**
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) ist ein Befehlszeilen-Cloud-Entwicklungskit, das Sie bei der Interaktion mit Ihrer AWS-CDK-App unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
+ Mit [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ Mit [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) können Sie Kataloge von IT-Services, die für AWS zugelassen sind, zentral verwalten. Endbenutzer können schnell nur die jeweils benötigten genehmigten IT-Services bereitstellen, wobei die Einschränkungen Ihrer Organisation berücksichtigt werden.

**Code-Repository**

Der Code für dieses Muster ist im [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git)Repository verfügbar. GitHub Das Code-Repository enthält die folgenden Dateien und Ordner:
+ **cdk-sevicecatalog-app**— Dieser Ordner enthält die AWS-CDK-Anwendung für diese Lösung.
+ **config** — Dieser Ordner enthält die Datei **config.json** und die CloudFormation Vorlage für die Bereitstellung der Produkte im Service Catalog-Portfolio.
+ **config/config.json** — Diese Datei enthält alle Konfigurationsinformationen. Sie aktualisieren diese Datei, um diese Lösung an Ihren Anwendungsfall anzupassen.
+ **config/templates** — Dieser Ordner enthält die CloudFormation Vorlagen für die Service Center-Produkte.
+ **setup.sh** — Dieses Skript stellt die Lösung bereit.
+ **uninstall.sh** — Dieses Skript löscht den Stack und alle AWS-Ressourcen, die bei der Bereitstellung dieser Lösung erstellt wurden.

Folgen Sie den Anweisungen im Abschnitt [Epics](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics), um den Beispielcode zu verwenden.

## Best Practices
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-best-practices"></a>
+ Die für die Bereitstellung dieser Lösung verwendeten IAM-Rollen sollten dem [Prinzip der geringsten Rechte entsprechen (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)).
+ Halten Sie sich an die [Best Practices für die Entwicklung von Cloud-Anwendungen mit AWS CDK](https://aws.amazon.com/blogs/devops/best-practices-for-developing-cloud-applications-with-aws-cdk/) (AWS-Blogbeitrag).
+ Halten Sie sich an die [ CloudFormation bewährten AWS-Methoden](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html) (CloudFormation Dokumentation).

## Epen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie das AWS CDK Toolkit. | Stellen Sie sicher, dass Sie das AWS CDK Toolkit installiert haben. Geben Sie den folgenden Befehl ein, um zu bestätigen, ob es installiert ist, und um die Version zu überprüfen. <pre>cdk --version</pre>Wenn das AWS CDK Toolkit nicht installiert ist, geben Sie den folgenden Befehl ein, um es zu installieren.<pre>npm install -g aws-cdk@2.27.0</pre>Wenn die Version des AWS CDK Toolkit älter als 2.27.0 ist, geben Sie den folgenden Befehl ein, um sie auf Version 2.27.0 zu aktualisieren.<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps Ingenieur | 
| Klonen Sie das Repository | Geben Sie den folgenden Befehl ein. Unter *Das Repository klonen* können Sie im Abschnitt [Zusätzliche Informationen](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional) den vollständigen Befehl kopieren, der die URL für das Repository enthält. Dadurch wird das [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation)Repository von GitHub geklont.<pre>git clone <repository-URL>.git</pre>Dadurch wird ein `cd aws-cdk-servicecatalog-automation` Ordner im Zielverzeichnis erstellt. Geben Sie den folgenden Befehl ein, um in diesen Ordner zu navigieren.<pre>cd aws-cdk-servicecatalog-automation</pre> | AWS DevOps, DevOps Ingenieur | 
| Richten Sie AWS-Anmeldeinformationen ein. | Geben Sie die folgenden Befehle ein. Diese exportieren die folgenden Variablen, die das AWS-Konto und die Region definieren, in der Sie den Stack bereitstellen.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>AWS-Anmeldeinformationen für AWS CDK werden über Umgebungsvariablen bereitgestellt. | AWS DevOps, DevOps Ingenieur | 
| Konfigurieren Sie Berechtigungen für IAM-Rollen von Endbenutzern. | Wenn Sie IAM-Rollen verwenden möchten, um Zugriff auf das Portfolio und die darin enthaltenen Produkte zu gewähren, müssen die Rollen über Berechtigungen verfügen, damit sie vom **Servicecatalog.amazonaws.com** Service Principal übernommen werden können. Anweisungen zum Erteilen dieser Berechtigungen finden Sie unter [Aktivieren des vertrauenswürdigen Zugriffs mit Service Catalog](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-servicecatalog.html#integrate-enable-ta-servicecatalog) (Dokumentation zu AWS Organizations). | AWS DevOps, DevOps Ingenieur | 
| Konfigurieren Sie die IAM-Rollen, die für erforderlich sind. StackSets | Wenn Sie die automatische Bereitstellung von Produkten in Zielkonten verwenden StackSets , müssen Sie die IAM-Rollen konfigurieren, mit denen das Stack-Set verwaltet und ausgeführt wird.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS DevOps, DevOps Ingenieur | 

### Passen Sie die Lösung an und stellen Sie sie bereit
<a name="customize-and-deploy-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die CloudFormation Vorlagen. | Erstellen Sie in dem `config/templates` Ordner CloudFormation Vorlagen für alle Produkte, die Sie in Ihre Portfolios aufnehmen möchten. Weitere Informationen finden Sie unter [Arbeiten mit CloudFormation AWS-Vorlagen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) (CloudFormation Dokumentation). | App-Entwickler, AWS DevOps, DevOps Ingenieur | 
| Passen Sie die Konfigurationsdatei an. | Öffnen Sie in dem `config` Ordner die Datei **config.json** und definieren Sie die Parameter entsprechend Ihrem Anwendungsfall. Die folgenden Parameter sind erforderlich, sofern nicht anders angegeben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Ein Beispiel für eine fertige Konfigurationsdatei finden Sie unter *Beispielkonfigurationsdatei* im Abschnitt [Zusätzliche Informationen](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional). | App-Entwickler, DevOps Ingenieur, AWS DevOps | 
| Stellen Sie die Lösung bereit. | Geben Sie den folgenden Befehl ein. Dadurch wird die AWS CDK-App bereitgestellt und die Service Catalog-Portfolios und -Produkte bereitgestellt, wie in der **Datei config.json** angegeben.<pre>sh +x setup.sh</pre> | App-Entwickler, DevOps Ingenieur, AWS DevOps | 
| Überprüfen Sie die Bereitstellung. | Überprüfen Sie die erfolgreiche Bereitstellung, indem Sie wie folgt vorgehen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | Allgemeines AWS | 
| (Optional) Aktualisieren Sie die Portfolios und Produkte. | Wenn Sie diese Lösung verwenden möchten, um die Portfolios oder Produkte zu aktualisieren oder neue Produkte bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Sie können beispielsweise zusätzliche Portfolios hinzufügen oder mehr Ressourcen bereitstellen. Die AWS CDK-App implementiert nur die Änderungen. Wenn es keine Änderungen an zuvor bereitgestellten Portfolios oder Produkten gibt, hat die erneute Bereitstellung keine Auswirkungen auf sie. | App-Entwickler, DevOps Ingenieur, General AWS | 

### Säubere die Lösung
<a name="clean-up-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| (Optional) Entfernen Sie AWS-Ressourcen, die von dieser Lösung bereitgestellt werden. | Wenn Sie ein bereitgestelltes Produkt löschen möchten, folgen Sie den Anweisungen unter [Löschen bereitgestellter Produkte](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) (Service Catalog-Dokumentation).Wenn Sie alle mit dieser Lösung erstellten Ressourcen löschen möchten, geben Sie den folgenden Befehl ein.<pre>sh uninstall.sh</pre> | AWS DevOps, DevOps Ingenieur, App-Entwickler | 

## Zugehörige Ressourcen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-resources"></a>
+ [AWS Service Catalog Construct-Bibliothek](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog-readme.html) (AWS-API-Referenz)
+ [StackSets Konzepte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation Dokumentation)
+ [AWS Service Catalog](https://aws.amazon.com/servicecatalog) (AWS-Marketing)
+ [Verwenden von Service Catalog mit dem AWS CDK](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US/4-builders-devs/sc-cdk) (AWS-Workshop)

## Zusätzliche Informationen
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional"></a>

**Klonen Sie das Repository**

Geben Sie den folgenden Befehl ein, um das Repository zu klonen GitHub.

```
git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git
```

**Beispiel für eine Konfigurationsdatei**

Im Folgenden finden Sie eine **config.json-Beispieldatei** mit Beispielwerten.

```
{
    "portfolios": [
        {
            "displayName": "EC2 Product Portfolio",
            "providerName": "User1",
            "description": "Test1",
            "roles": [
                "<Names of IAM roles that can access the products>"
            ],
            "users": [
                "<Names of IAM users who can access the products>"
            ],
            "groups": [
                "<Names of IAM user groups that can access the products>"
            ]
        },
        {
            "displayName": "Autoscaling Product Portfolio",
            "providerName": "User2",
            "description": "Test2",
            "roles": [
                "<Name of IAM role>"
            ]
        }
    ],
    "tagOption": [
        {
            "key": "Group",
            "value": [
                "finance",
                "engineering",
                "marketing",
                "research"
            ]
        },
        {
            "key": "CostCenter",
            "value": [
                "01",
                "02",
                "03",
                "04"
            ]
        },
        {
            "key": "Environment",
            "value": [
                "dev",
                "prod",
                "stage"
            ]
        }
    ],
    "products": [
        {
            "portfolioName": "EC2 Product Profile",
            "productName": "Ec2",
            "owner": "owner1",
            "productVersionName": "v1",
            "templatePath": "../../config/templates/template1.json"
        },
        {
            "portfolioName": "Autoscaling Product Profile",
            "productName": "autoscaling",
            "owner": "owner1",
            "productVersionName": "v1",
            "templatePath": "../../config/templates/template2.json",
            "deployWithStackSets": {
                "accounts": [
                    "012345678901",
                ],
                "regions": [
                    "us-west-2"
                ],
                "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole",
                "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole"
            }
        }
    ]
}
```

# Automatisieren Sie das dynamische Pipeline-Management für die Bereitstellung von Hotfix-Lösungen in Gitflow-Umgebungen mithilfe von und AWS Service Catalog AWS CodePipeline
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions"></a>

*Balaji Vedagiri, Faisal Shahdad, Shanmugam Shanker und Vivek Thangamuthu, Amazon Web Services*

## Zusammenfassung
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-summary"></a>

**Anmerkung**  
AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

Dieses Muster bezieht sich auf ein Szenario der Verwaltung einer dynamischen Hotfix-Pipeline, die ausschließlich der sicheren Bereitstellung von Hotfix-Lösungen in einer Produktionsumgebung dient. Die Lösung wird mithilfe eines AWS Service Catalog Portfolios und Produkts implementiert und verwaltet. Eine EventBridge Amazon-Regel wird für die Automatisierung von Ereignissen verwendet. Einschränkungen werden mithilfe von Service Catalog-Portfolioeinschränkungen und AWS Identity and Access Management (IAM) -Rollen für Entwickler durchgesetzt. Nur eine AWS Lambda Funktion darf das Service Catalog-Produkt starten, ausgelöst durch die EventBridge Regel. Dieses Muster wurde für Umgebungen mit einem bestimmten Gitflow-Setup entwickelt, das unter [Zusätzliche Informationen](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional) beschrieben wird.

In der Regel wird ein Hotfix bereitgestellt, um kritische Probleme oder Sicherheitsprobleme zu beheben, die in einer Live-Umgebung, z. B. in der Produktionsumgebung, gemeldet wurden. Hotfixes sollten nur direkt in Staging- und Produktionsumgebungen bereitgestellt werden. Die Staging- und Production-Pipelines werden in großem Umfang für reguläre Entwicklungsanfragen verwendet. Diese Pipelines können nicht zur Bereitstellung von Hotfixes verwendet werden, da es fortlaufende Qualitätssicherungsfunktionen gibt, die nicht auf die Produktionsumgebung übertragen werden können. Für die Veröffentlichung von Hotfixes beschreibt dieses Muster eine dynamische, kurzlebige Pipeline mit den folgenden Sicherheitsfunktionen:
+ **Automatische Erstellung** — Eine Hotfix-Pipeline wird automatisch erstellt, wenn ein Hotfix-Branch in einem Repository erstellt wird. AWS CodeCommit 
+ **Zugriffsbeschränkungen** — Entwickler haben keinen Zugriff darauf, diese Pipeline außerhalb des Hotfix-Prozesses zu erstellen. 
+ **Kontrollierte Phase** — Die Pipeline verfügt über eine kontrollierte Phase mit einem speziellen Zugriffstoken, das sicherstellt, dass eine Pull-Anfrage (PR) nur einmal erstellt werden kann. 
+ **Genehmigungsphasen** — Genehmigungsphasen sind in der Pipeline enthalten, um die erforderlichen Genehmigungen von den relevanten Interessengruppen einzuholen. 
+ **Automatisches Löschen** — Die Hotfix-Pipeline wird automatisch gelöscht, wenn ein `hotfix` Branch im CodeCommit Repository gelöscht wird, nachdem er mit einem PR zusammengeführt wurde. 

## Voraussetzungen und Einschränkungen
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**Voraussetzungen**
+ Drei aktive AWS-Konten sind wie folgt erforderlich:
  + Tools-Konto — Für die Einrichtung von Continuous Integration und Continuous Delivery (CI/CD).
  + Stage-Konto — Für Benutzerakzeptanztests.
  + Produktionskonto — Für einen geschäftlichen Endbenutzer.
  + (Optional) Fügen Sie ein Konto hinzu AWS-Konto , das als QA-Konto fungiert. Dieses Konto ist erforderlich, wenn Sie sowohl ein Haupt-Pipeline-Setup, einschließlich QA, als auch eine Hotfix-Pipeline-Lösung zum Testen benötigen.
+ Ein AWS CloudFormation Stack mit einer optionalen Bedingung zur Bereitstellung im QA-Konto unter Verwendung der Hauptpipeline, falls erforderlich. Das Muster kann auch ohne die Einrichtung der Haupt-Pipeline getestet werden, indem ein `hotfix` Branch erstellt und gelöscht wird.
+ Ein Amazon Simple Storage Service (Amazon S3) -Bucket zum Speichern der CloudFormation Vorlagen, die zur Erstellung von Service Catalog-Produkten verwendet werden.
+ Erstellen Sie PR-Genehmigungsregeln für das CodeCommit Repository gemäß den Compliance-Anforderungen (nachdem Sie das Repository erstellt haben).
+ Schränken Sie die IAM-Berechtigungen von Entwicklern und Teamleitern ein, um die Ausführung der Lambda-Funktion [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) zu verweigern, da sie nur von der Pipeline aus aufgerufen werden sollte.

**Einschränkungen**
+ Der CloudFormation Anbieter wird in der Bereitstellungsphase verwendet, und die Anwendung wird mithilfe eines Änderungssatzes bereitgestellt. CloudFormation Wenn Sie eine andere Bereitstellungsoption verwenden möchten, ändern Sie den CodePipeline Stack nach Bedarf.
+ Dieses Muster verwendet AWS CodeBuild und andere Konfigurationsdateien, um einen Beispiel-Microservice bereitzustellen. Wenn Sie einen anderen Workload-Typ haben (z. B. serverlose Workloads), müssen Sie alle relevanten Konfigurationen aktualisieren.
+ Dieses Muster stellt die Anwendung auf einer einzigen Fläche AWS-Region (z. B. US East (N. Virginia) us-east-1) bereit. AWS-Konten Um die Bereitstellung in mehreren Regionen durchzuführen, ändern Sie die Regionsreferenz in Befehlen und Stapeln.
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in Regionen finden Sie unter [AWS-Services nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Service-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Service aus.

## Architektur
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-architecture"></a>

Die Diagramme in diesem Abschnitt enthalten Workflows für ein Ereignis zum Erstellen eines Lebenszyklus und für ein Ereignis zum Löschen eines Lebenszyklus.

![\[Workflow zum Erstellen eines Lebenszyklusereignisses.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


Das obige Diagramm zur Erstellung eines Lebenszyklusereignisses zeigt Folgendes:

1. Der Entwickler erstellt einen `hotfix-*` Branch im CodeCommit Repository, um eine Hotfix-Lösung zu entwickeln.

1. Das Ereignis, bei dem ein `hotfix-*` Branch erstellt wird, wird durch die Regel erfasst. EventBridge Zu den Ereignisdetails gehören der Repository-Name und der Branch-Name.

1. Die EventBridge Regel ruft die AWS Lambda Funktion `hotfix-lambda-function` auf. Die EventBridge Regel übergibt die Ereignisinformationen als Eingabe an die Lambda-Funktion.

1. Die Lambda-Funktion verarbeitet die Eingabe, um den Repository-Namen und den Branchnamen abzurufen. Es startet das Service Catalog-Produkt mit Werten, die aus der verarbeiteten Eingabe abgerufen wurden.

1. Das Service Catalog-Produkt umfasst ein Pipeline-Setup, mit dem die Lösung in den Phasen- und Produktionsumgebungen bereitgestellt wird. Der Pipeline-Block umfasst die Phasen Sourcing, Build und Deployment. Außerdem gibt es eine manuelle Genehmigungsphase, um die Bereitstellung für die Produktionsumgebung voranzutreiben.

1. In der Quellphase wird der Code aus dem Repository und der `hotfix-*` Branch abgerufen, die im ersten Schritt erstellt wurden. Der Code wird über einen Amazon S3 S3-Bucket für Artefakte an die Build-Phase übergeben. In der Erstellungsphase wird ein Container-Image erstellt, das den Hotfix enthält, der in der `hotfix-*` Filiale entwickelt und in Amazon Elastic Container Registry (Amazon ECR) übertragen wurde.

1. In der Bereitstellungsphase für die Stage-Umgebung wird Amazon Elastic Container Service (Amazon ECS) mit dem neuesten Container-Image aktualisiert, das den Hotfix enthält. Der Hotfix wird bereitgestellt, indem ein CloudFormation Änderungssatz erstellt und ausgeführt wird.

1. Die `prcreation-lambda` Lambda-Funktion wird nach erfolgreicher Bereitstellung in der Stage-Umgebung aufgerufen. Diese Lambda-Funktion erstellt eine PR vom `hotfix-*` Zweig bis zu den `develop` `main` Zweigen des Repositorys. Die Lambda-Funktion stellt sicher, dass der in der `hotfix-*` Branche entwickelte Fix wieder zusammengeführt und in nachfolgende Bereitstellungen aufgenommen wird.

1. Eine manuelle Genehmigungsphase trägt dazu bei, dass die erforderlichen Beteiligten den Fix überprüfen und die Genehmigung für die Implementierung in der Produktionsumgebung erteilen.

1. In der Bereitstellungsphase für die Produktionsumgebung wird Amazon ECS mit dem neuesten Container-Image aktualisiert, das den Hotfix enthält. Der Hotfix wird bereitgestellt, indem ein CloudFormation Änderungssatz erstellt und ausgeführt wird.

![\[Workflow zum Löschen eines Lebenszyklusereignisses.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


Das vorherige Diagramm zum Löschen eines Lebenszyklusereignisses zeigt Folgendes:

1. Der Entwickler löscht den `hotfix-*` Branch nach erfolgreicher Bereitstellung des Hotfixes in der Produktionsumgebung.

1. Das Ereignis zum Löschen einer `hotfix-*` Zweigstelle wird durch eine EventBridge Regel erfasst. Zu den Ereignisdetails gehören der Repository-Name und der Branch-Name.

1. Die EventBridge Regel ruft die Lambda-Funktion auf. Die EventBridge Regel übergibt die Ereignisinformationen als Eingabe an die Lambda-Funktion.

1. Die Lambda-Funktion verarbeitet die Eingabe, um den Repository-Namen und den Branchnamen abzurufen. Die Lambda-Funktion bestimmt anhand der übergebenen Eingabe das jeweilige Service Catalog-Produkt und beendet dann das Produkt.

1. Die von Service Catalog bereitgestellte Produktbeendigung löscht die Pipeline und die entsprechenden Ressourcen, die zuvor in diesem Produkt erstellt wurden.

**Automatisierung und Skalierung**
+ Das Muster umfasst eine EventBridge Regel und eine Lambda-Funktion, die mehrere Anfragen zur Erstellung von Hotfix-Branches parallel verarbeiten können. Die Lambda-Funktion stellt das Service Catalog-Produkt für die entsprechende Ereignisregel bereit.
+ Die Pipeline-Einrichtung erfolgt mithilfe des Service Catalog-Produkts, das Funktionen zur Versionskontrolle bietet. Die Lösung skaliert außerdem automatisch, um mehrere Hotfix-Entwicklungen für dieselbe Anwendung parallel abzuwickeln.
+ Die Funktion [prcreation-Lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) stellt sicher, dass diese Hotfix-Änderungen durch eine automatische Pull-Request-Erstellung auch wieder in die Branches `main` und die `develop` Branches integriert werden. Dieser Ansatz ist wichtig, um die Branches `main` und die `develop` Branches mit allen Fixes auf dem neuesten Stand zu halten und mögliche Code-Regressionen zu vermeiden. Dieser Prozess trägt dazu bei, die Konsistenz zwischen den Branches aufrechtzuerhalten und Code-Regressionen zu verhindern, indem sichergestellt wird, dass alle langlebigen Branches über die neuesten Fixes verfügen.

## Tools
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über und zu verwalten. AWS-Konten AWS-Regionen
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen. AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen findest du unter [So migrierst du dein AWS CodeCommit Repository zu einem anderen Git-Anbieter](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Beenden und Verwalten von Containern in einem Cluster vereinfacht.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)unterstützt Sie bei der zentralen Verwaltung von Katalogen mit IT-Services, für die eine Genehmigung erteilt wurde. AWS Endbenutzer können schnell nur die jeweils benötigten genehmigten IT-Services bereitstellen, wobei die Einschränkungen Ihrer Organisation berücksichtigt werden.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere Tools**
+ [CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) [ist ein Linter, der CloudFormation YAML- oder JSON-Vorlagen anhand der Ressourcenspezifikation überprüft. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Es führt auch andere Prüfungen durch, z. B. die Überprüfung auf gültige Werte für Ressourceneigenschaften und die Einhaltung von Best Practices.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) ist ein Open-Source-Tool, das potenzielle Sicherheitsprobleme in CloudFormation Vorlagen identifiziert, indem es nach Mustern sucht.
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen. Dieses Muster verwendet Docker, um Container-Images lokal zu erstellen und zu testen.
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [dynamic\$1hotfix\$1codepipeline](https://github.com/aws-samples/dynamic_hotfix_codepipeline) verfügbar.

## Best Practices
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

Überprüfen und passen Sie die IAM-Rollen und Service Control Policies (SCP) in Ihrer Umgebung an, um sicherzustellen, dass sie den Zugriff angemessen einschränken. Dies ist wichtig, um Aktionen zu verhindern, die die in diesem Muster enthaltenen Sicherheitsmaßnahmen außer Kraft setzen könnten. Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-epics"></a>

### Richten Sie die Arbeitsumgebung ein
<a name="set-up-the-work-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das [Beispiel-Repository](https://github.com/aws-samples/dynamic_hotfix_codepipeline) in ein neues Verzeichnis an Ihrem Arbeitsplatz zu klonen:<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | AWS DevOps | 
| Exportieren Sie Umgebungsvariablen für die CloudFormation Stack-Bereitstellung. | Definieren Sie die folgenden Umgebungsvariablen, die später in diesem Muster als Eingabe für die CloudFormation Stacks verwendet werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export BucketStartName=<BucketName></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export ProdAccount=<prodaccountnumber><br />export StageAccount=<stage/preprodaccountnumber><br />export QAAccount=<qaccountnumber><br />export ToolsAccount=<toolsaccountnumber><br />export DepRegion=<region></pre> | AWS DevOps | 

### Richten Sie die erforderlichen Voraussetzungen ein in AWS-Konten
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Ressourcen, die für CI/CD das Tools-Konto erforderlich sind. | Verwenden Sie die folgenden Befehle, um den CloudFormation Stack im Tools-Konto bereitzustellen. (Entfernen Sie den `QAAccount` Parameter, wenn Sie das QA-Konto nicht für die Einrichtung verwenden.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre>Notieren Sie sich die Ressourcen, die das CodeCommit Repository und Amazon ECR aus dem vorherigen Stack erstellt haben. Diese Parameter sind erforderlich, um den `main` Zweig der Pipeline in den nächsten Schritten einzurichten. | AWS DevOps | 
| Erstellen Sie die Ressourcen, die für CI/CD die Workload-Konten erforderlich sind. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Aktualisieren Sie die Richtlinie für S3-Artefakt-Buckets, um den Zugriff für Workload-Konten zu ermöglichen. | Um die CloudFormation Stack-Voraussetzungen im Tools-Konto zu aktualisieren, verwenden Sie die folgenden Befehle, um alle erforderlichen Berechtigungen für die Workload-Konten Stage und Production hinzuzufügen. (Entfernen Sie den `QAAccount` Parameter, wenn Sie ihn nicht für die Einrichtung verwenden.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} PutPolicy=true \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre> | AWS DevOps | 

### Lambda-Funktion und Service Catalog-Ressourcen im Tools-Konto einrichten
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das Service Catalog-Portfolio und die Produkte ein. | Gehen Sie wie folgt vor, um das Service Catalog-Portfolio und die Produkte einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Richten Sie Lambda-Funktionen ein. | Diese Lösung verwendet die folgenden Lambda-Funktionen zur Verwaltung von Hotfix-Workflows:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)Gehen Sie wie folgt vor, damit die Lambda-Funktionen Service Catalog-Produkte bereitstellen und beenden können, wenn `hotfix ` Zweige mithilfe der zugehörigen EventBridge Regel erstellt oder gelöscht werden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Erstellen Sie eine Pipeline für den Hauptzweig und stellen Sie die Anwendung in Workload-Konten bereit
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die Pipeline für die `main` Filiale ein. | Um die Pipeline für den Hauptzweig einzurichten, führen Sie den folgenden Befehl im Tools-Konto aus. Ersetzen Sie die Parameter für `MainProductId` und `MainProductArtifactId` durch Werte aus den `servicecatalogsetup` Stack-Ausgaben.<pre>#InToolsAccount<br />aws servicecatalog provision-product \<br />    --product-id <MainProductId> \<br />    --provisioning-artifact-id <MainProductArtifactId> \<br />    --provisioned-product-name "${ApplicationName}-main-pipeline" \<br />    --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \<br />    --region=${DepRegion}</pre> | AWS DevOps | 
| Stellen Sie die Anwendung mithilfe der `main` Filiale bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Erstellen Sie die Pipeline für einen Hotfix-\$1-Zweig und stellen Sie den Hotfix bereit
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen `hotfix-*` Zweig und übernehmen Sie die Änderungen. | Gehen Sie wie folgt vor, um eine Pipeline für den `hotfix-*` Branch zu erstellen und den Hotfix für die Workload-Konten bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Löschen Sie den `hotfix-check1` Zweig. | Gehen Sie wie folgt vor, um den zuvor erstellten `hotfix-check1` Zweig zu löschen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie die eingesetzten Ressourcen. | Gehen Sie wie folgt vor, um die Ressourcen zu bereinigen, die zuvor bereitgestellt wurden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>##In Tools Account##<br />aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}</pre><pre>##In Workload Accounts##<br />aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}</pre>Weitere Informationen finden Sie in der Service Catalog-Dokumentation unter [Löschen bereitgestellter Produkte](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html). | AWS DevOps | 

## Fehlerbehebung
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Änderungen, die Sie für das CodeCommit Repository übernommen haben, werden nicht bereitgestellt. | Überprüfen Sie die CodeBuild Protokolle auf Fehler bei der Docker-Build-Aktion. Weitere Informationen finden Sie in der [CodeBuild -Dokumentation](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| Das Service Catalog-Produkt wird nicht bereitgestellt. | Überprüfen Sie die zugehörigen CloudFormation Stacks auf fehlgeschlagene Ereignisse. Weitere Informationen finden Sie in der [CloudFormation -Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Zugehörige Ressourcen
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Grundlegende Git-Befehle](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Konfigurieren Sie eine IAM-Richtlinie, um Pushs und Merges auf einen Branch zu beschränken](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Mit einem AWS CodeCommit Repository verbinden](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Benutzern Zugriff gewähren](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Ein Docker-Image in ein privates Amazon ECR-Repository übertragen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Fehlersuche AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [Was ist? AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Zusätzliche Informationen
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

Dieses Muster wurde für Umgebungen mit einem Gitflow-Setup entwickelt, das CI/CD dabei für den Entwicklungsworkflow übernommen wird. Die Pipelines folgen dem Bereitstellungszyklus, der mit der Entwicklung beginnt und sich über die Qualitätssicherung (QA), die Phase bis hin zur Produktionsumgebung erstreckt. Das CI/CD Setup umfasst zwei Git-Branches mit Werbebereitstellungen in Umgebungen wie folgt:
+ Der `develop` Branch wird in der Entwicklungsumgebung bereitgestellt.
+ Die `main` Zweigstelle wird in der QA-, Stage- und Produktionsumgebung eingesetzt.

Bei dieser Konfiguration ist es eine Herausforderung, einen Hotfix oder Sicherheitspatch schneller als im üblichen Bereitstellungszyklus zu installieren, während die aktive Entwicklung neuer Funktionen andauert. Für die Bearbeitung von Hotfix- oder Sicherheitsanfragen ist ein spezieller Prozess erforderlich, der sicherstellt, dass die Live-Umgebungen weiterhin ordnungsgemäß funktionieren und sicher sind.

In den folgenden Fällen können Sie jedoch auch andere verfügbare Optionen verwenden, ohne dass ein spezieller Bereitstellungsprozess erforderlich ist:
+ Der CI/CD Prozess ist mit automatisierten Tests, z. B. Funktions- und end-to-end Tests, gut ausgestattet, sodass keine manuellen Tests erforderlich sind und Verzögerungen bei der Bereitstellung bis zur Produktion vermieden werden. Wenn automatisierte Tests jedoch nicht gut in den CI/CD Prozess integriert sind, kann es für Entwickler komplex und umständlich werden, eine kleine Korrektur in der Produktionsumgebung vorzunehmen. Dies liegt daran, dass in der QA-Umgebung möglicherweise neue Funktionen auf ihre Genehmigung und Genehmigung warten. Ein Hotfix oder Sicherheitsupdate kann nicht auf einfache Weise gleichzeitig in die Produktionsumgebung eingeführt werden.
+ Entwicklungsteams implementieren kontinuierlich neue Funktionen in der Produktionsumgebung und integrieren Hotfixes oder Sicherheitspatches in die geplante Bereitstellung jeder neuen Funktion. Mit anderen Worten, das nächste Funktionsupdate für die Produktionsumgebung besteht aus zwei Komponenten: der Hinzufügung einer neuen Funktion und der Aufnahme des Hotfixes oder Sicherheitspatches. Wenn der Bereitstellungszyklus jedoch nicht kontinuierlich ist, können mehrere neue Funktionen bereits auf die Genehmigung in der QA-Umgebung warten. Die Verwaltung verschiedener Versionen und die Sicherstellung, dass die richtigen Änderungen erneut angewendet werden, kann dann komplex und fehleranfällig werden.

**Anmerkung**  
Wenn Sie [Version 2](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) von AWS CodePipeline verwenden und die richtigen Auslöser in der `hotfix` Filiale eingerichtet haben, benötigen Sie dennoch einen speziellen Prozess, um ungeplante Anfragen zu bearbeiten. In Version 2 können Sie Trigger entweder für Push- oder Pull-Anfragen einrichten. Die Ausführung wird entweder in die Warteschlange gestellt oder sofort ausgeführt, abhängig vom vorherigen Status der Pipeline. Bei einer dedizierten Pipeline werden die Fixes jedoch sofort auf die Produktionsumgebung angewendet, wodurch sichergestellt wird, dass dringende Probleme unverzüglich behoben werden.

# Automatisieren Sie das Löschen von AWS CloudFormation Stacks und zugehörigen Ressourcen
<a name="automate-deletion-cloudformation-stacks-associated-resources"></a>

*SANDEEP SINGH und James Jacob, Amazon Web Services*

## Zusammenfassung
<a name="automate-deletion-cloudformation-stacks-associated-resources-summary"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ist ein weit verbreiteter Service für die Verwaltung von Cloud-Infrastrukturen als Code (IaC). *Wenn Sie ihn verwenden CloudFormation, verwalten Sie zugehörige Ressourcen als eine einzige Einheit, die als Stack bezeichnet wird.* Sie können eine Sammlung von Ressourcen durch Erstellen, Aktualisieren und Löschen von Stacks erstellen und löschen.

Manchmal benötigen Sie die Ressourcen in einem CloudFormation Stapel nicht mehr. Abhängig von den Ressourcen und ihren Konfigurationen kann es kompliziert sein, einen Stapel und die zugehörigen Ressourcen zu löschen. In realen Produktionssystemen schlagen Löschungen aufgrund widersprüchlicher Bedingungen oder Einschränkungen, die nicht außer Kraft gesetzt werden können, CloudFormation manchmal fehl oder dauern lange. Es kann eine sorgfältige Planung und Ausführung erfordern, um sicherzustellen, dass alle Ressourcen ordnungsgemäß, effizient und konsistent gelöscht werden. Dieses Muster beschreibt, wie Sie ein Framework einrichten, das Sie beim Löschen von CloudFormation Stacks unterstützt, die die folgenden Komplexitäten beinhalten:
+ **Ressourcen mit Löschschutz** — Bei einigen Ressourcen ist der Löschschutz möglicherweise aktiviert. Gängige Beispiele sind [Amazon DynamoDB-Tabellen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) und [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) -Buckets. Der Löschschutz verhindert automatisiertes Löschen, z. B. das Löschen durch. CloudFormation Wenn Sie diese Ressourcen löschen möchten, müssen Sie den Löschschutz manuell oder programmgesteuert außer Kraft setzen oder vorübergehend deaktivieren. Bevor Sie fortfahren, sollten Sie die Auswirkungen des Löschens dieser Ressourcen sorgfältig abwägen.
+ **Ressourcen mit Aufbewahrungsrichtlinien** — Bestimmte Ressourcen, wie z. B. AWS Key Management Service (AWS KMS) -Schlüssel und Amazon S3 S3-Buckets, verfügen möglicherweise über Aufbewahrungsrichtlinien, die angeben, wie lange sie nach der Anforderung des Löschvorgangs aufbewahrt werden sollen. Sie sollten diese Richtlinien bei der Säuberungsstrategie berücksichtigen, um die Einhaltung der Unternehmensrichtlinien und behördlichen Anforderungen zu gewährleisten.
+ **Verzögertes Löschen von Lambda-Funktionen, die an eine VPC angehängt sind** — Das Löschen einer [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)Funktion, die an eine Virtual Private Cloud (VPC) angehängt ist, kann 5—40 Minuten dauern, abhängig von den mehreren miteinander verbundenen Abhängigkeiten, die an dem Prozess beteiligt sind. Wenn Sie die Funktion vor dem Löschen des Stacks von der VPC trennen, können Sie diese Verzögerung auf unter 1 Minute reduzieren.
+ **Ressourcen, die nicht direkt von erstellt wurden CloudFormation** — In bestimmten Anwendungsdesigns können Ressourcen außerhalb des ursprünglichen CloudFormation Stacks erstellt werden, entweder von der Anwendung selbst oder durch Ressourcen, die über den Stack bereitgestellt werden. Nachfolgend finden Sie zwei Beispiele:
  + CloudFormation könnte eine [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) -Instance bereitstellen, die ein Benutzerdatenskript ausführt. Dann könnte dieses Skript einen [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)Parameter zum Speichern anwendungsbezogener Daten erstellen. Dieser Parameter wird nicht verwaltet. CloudFormation
  + CloudFormation könnte eine Lambda-Funktion bereitstellen, die automatisch eine [Amazon CloudWatch Logs-Gruppe zum Speichern von Protokollen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) generiert. Diese Protokollgruppe wird nicht verwaltet. CloudFormation

  Auch wenn diese Ressourcen nicht direkt von verwaltet werden CloudFormation, müssen sie häufig bereinigt werden, wenn der Stapel gelöscht wird. Wenn sie nicht verwaltet werden, können sie verwaist werden und zu unnötigem Ressourcenverbrauch führen.

Diese Leitplanken können zwar zu Komplexität führen, sind aber gewollt und entscheidend. Die Möglichkeit CloudFormation , alle Beschränkungen außer Kraft zu setzen und Ressourcen wahllos zu löschen, könnte in vielen Szenarien zu nachteiligen und unvorhergesehenen Folgen führen. Als Cloud-Ingenieur, der für die Verwaltung der Umgebung verantwortlich ist, kann es jedoch vorkommen, dass diese Einschränkungen außer Kraft gesetzt werden müssen, insbesondere in Entwicklungs-, Test- DevOps oder Staging-Umgebungen.

**Gezielte Geschäftsergebnisse**

Durch die Implementierung dieses Frameworks können Sie die folgenden Vorteile erzielen:
+ **Kostenmanagement** — Durch die regelmäßige und effiziente Bereinigung temporärer Umgebungen, wie end-to-end z. B. Umgebungen für Benutzerakzeptanztests, wird verhindert, dass Ressourcen länger als nötig genutzt werden. Dadurch können die Kosten erheblich gesenkt werden.
+ **Sicherheit** — Die automatische Säuberung veralteter oder ungenutzter Ressourcen reduziert die Angriffsfläche und trägt zur Aufrechterhaltung einer sicheren AWS Umgebung bei.
+ **Betriebseffizienz** — Regelmäßige und automatische Säuberungen können die folgenden betrieblichen Vorteile bieten:
  + Automatisierte Skripts, die alte Protokollgruppen entfernen oder Amazon S3 S3-Buckets leeren, können die betriebliche Effizienz verbessern, indem sie die Umgebung sauber und überschaubar halten.
  + Das schnelle Löschen und Neuerstellen von Stacks unterstützt schnelle Iterationen bei Design und Implementierung, was zu einer robusteren und robusteren Architektur führen kann.
  + Das regelmäßige Löschen und Neuerstellen von Umgebungen kann Ihnen helfen, potenzielle Probleme zu identifizieren und zu beheben. Auf diese Weise können Sie sicherstellen, dass die Infrastruktur realen Szenarien standhält.

## Voraussetzungen und Einschränkungen
<a name="automate-deletion-cloudformation-stacks-associated-resources-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Python Version 3.6 oder höher, [installiert](https://www.python.org/downloads/)
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Einschränkungen**
+ Eine Benennungskonvention wird verwendet, um die Ressourcen zu identifizieren, die gelöscht werden sollen. Der Beispielcode in diesem Muster verwendet ein Präfix für den Ressourcennamen, Sie können jedoch Ihre eigene Benennungskonvention definieren. Ressourcen, die diese Benennungskonvention nicht verwenden, werden nicht identifiziert oder anschließend gelöscht.

## Architektur
<a name="automate-deletion-cloudformation-stacks-associated-resources-architecture"></a>

Das folgende Diagramm zeigt, wie dieses Framework den CloudFormation Zielstapel und die damit verbundenen zusätzlichen Ressourcen identifiziert.

![\[Die Phasen, in denen CloudFormation Stacks und die zugehörigen Ressourcen erkannt, verarbeitet und gelöscht werden.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/ab7c3b56-3476-41a3-8ece-68915605a546/images/a7fceb1c-d624-47b3-957d-f910ef2f44d7.png)


Das Diagramm zeigt den folgenden Workflow:

1. **Ressourcen sammeln** — Das Automatisierungs-Framework verwendet eine Namenskonvention, um alle relevanten CloudFormation Stacks, Amazon Elastic Container Registry (Amazon ECR) -Repositorys, DynamoDB-Tabellen und Amazon S3 S3-Buckets zurückzugeben.
**Anmerkung**  
Die Funktionen für diese Phase verwenden [Paginatoren](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), eine Funktion in Boto3, die den Prozess der Iteration über eine verkürzte API-Ergebnismenge abstrahiert. Dadurch wird sichergestellt, dass alle Ressourcen verarbeitet werden. Um die Leistung weiter zu optimieren, sollten Sie erwägen, [serverseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) Filterung anzuwenden oder eine [clientseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath) Filterung durchzuführen. JMESPath 

1. **Vorverarbeitung** — Das Automatisierungs-Framework identifiziert und behebt die Serviceeinschränkungen, die außer Kraft gesetzt werden müssen, damit die Ressourcen gelöscht werden können. CloudFormation Beispielsweise wird die `DeletionProtectionEnabled` Einstellung für DynamoDB-Tabellen auf geändert. `False` In der Befehlszeilenschnittstelle erhalten Sie für jede Ressource eine Eingabeaufforderung mit der Frage, ob Sie die Einschränkung überschreiben möchten.

1. **Stapel löschen** — Das Automation Framework löscht den Stapel. CloudFormation In der Befehlszeilenschnittstelle erhalten Sie eine Eingabeaufforderung mit der Frage, ob Sie den Stack löschen möchten.

1. **Nachbearbeitung** — Das Automatisierungs-Framework löscht alle zugehörigen Ressourcen, die nicht direkt CloudFormation als Teil des Stacks bereitgestellt wurden. Beispiele für diese Ressourcentypen sind Systems Manager Manager-Parameter und CloudWatch Protokollgruppen. Separate Funktionen sammeln diese Ressourcen, verarbeiten sie vor und löschen sie anschließend. In der Befehlszeilenschnittstelle werden Sie für jede Ressource gefragt, ob Sie die Ressource löschen möchten.
**Anmerkung**  
Die Funktionen für diese Phase verwenden [Paginatoren](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), eine Funktion in Boto3, die den Prozess der Iteration über eine verkürzte API-Ergebnismenge abstrahiert. Dadurch wird sichergestellt, dass alle Ressourcen verarbeitet werden. Um die Leistung weiter zu optimieren, sollten Sie erwägen, [serverseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) Filterung anzuwenden oder eine [clientseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath) Filterung durchzuführen. JMESPath 

**Automatisierung und Skalierung**

Wenn Ihr CloudFormation Stack andere Ressourcen enthält, die nicht im Beispielcode enthalten sind, oder wenn der Stack eine Einschränkung hat, die in diesem Muster nicht behandelt wurde, können Sie das Automatisierungsframework an Ihren Anwendungsfall anpassen. Gehen Sie beim Sammeln von Ressourcen, der Vorverarbeitung, dem Löschen des Stacks und der anschließenden Nachverarbeitung derselben Methode nach.

## Tools
<a name="automate-deletion-cloudformation-stacks-associated-resources-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten AWS-Konten Lebenszyklus über und zu verwalten. AWS-Regionen
+ [CloudFormation Command Line Interface (CFN-CLI)](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) ist ein Open-Source-Tool, mit dem Sie Erweiterungen von Drittanbietern entwickeln und testen AWS und diese dann für die Verwendung in registrieren können. CloudFormation
+ [AWS SDK für Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services.

**Andere Tools**
+ [Click](https://click.palletsprojects.com/en/stable/) ist ein Python-Tool, mit dem Sie Befehlszeilenschnittstellen erstellen können.
+ [Poetry](https://python-poetry.org/docs/) ist ein Tool für Abhängigkeitsmanagement und Paketierung in Python.
+ [Pyenv](https://github.com/pyenv/pyenv) ist ein Tool, mit dem Sie Python-Versionen verwalten und zwischen ihnen wechseln können.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [cloudformation-stack-cleanup](https://github.com/aws-samples/cloudformation-stack-cleanup/)Repository verfügbar.

## Best Practices
<a name="automate-deletion-cloudformation-stacks-associated-resources-best-practices"></a>
+ **Kennzeichnen Sie Ressourcen zur leichteren Identifizierung** — Implementieren Sie eine [Tagging-Strategie](https://aws.amazon.com/solutions/guidance/tagging-on-aws/), um Ressourcen zu identifizieren, die für unterschiedliche Umgebungen und Zwecke erstellt wurden. Tags können den Bereinigungsprozess vereinfachen, indem sie Ihnen helfen, Ressourcen anhand ihrer Tags zu filtern.
+ **Ressourcenlebenszyklen einrichten** — Definieren Sie Ressourcenlebenszyklen, um Ressourcen nach einem bestimmten Zeitraum automatisch zu löschen. Auf diese Weise können Sie sicherstellen, dass temporäre Umgebungen nicht zu dauerhaften Kostenbelastungen werden.

## Epen
<a name="automate-deletion-cloudformation-stacks-associated-resources-epics"></a>

### Tools installieren
<a name="install-tools"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps Ingenieur | 
| Installieren Sie Poetry. | Folgen Sie den [Anweisungen](https://python-poetry.org/docs/) (Poesy-Dokumentation), um Poetry in der virtuellen Zielumgebung zu installieren. | DevOps Ingenieur | 
| Installieren Sie die Abhängigkeiten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps Ingenieur | 
| (Optional) Installieren Sie Pyenv. | Folgen Sie den [Anweisungen](https://github.com/pyenv/pyenv#installation) (GitHub), um Pyenv zu installieren. | DevOps Ingenieur | 

### (Optional) Passen Sie das Framework an
<a name="optional-customize-the-framework"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Funktionen, die die Zielressourcen sammeln, vorverarbeiten und löschen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps Ingenieur, Python | 

### Erstellen Sie Beispielressourcen
<a name="create-sample-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen CloudFormation Stapel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Erstellen Sie einen Systems Manager Manager-Parameter. | Geben Sie den folgenden Befehl ein, um einen Systems Manager Manager-Parameter zu erstellen, der nicht bereitgestellt wird über CloudFormation:<pre>aws ssm put-parameter \<br />  --name "/sampleforcleanup/database/password" \<br />  --value "your_db_password" \<br />  --type "SecureString" \<br />  --description "Database password for my app" \<br />  --tier "Standard" \<br />  --region "us-east-1"</pre> | AWS DevOps | 
| Erstellen Sie einen Amazon-S3-Bucket. | Geben Sie den folgenden Befehl ein, um einen Amazon S3 S3-Bucket zu erstellen, der nicht bereitgestellt wird über CloudFormation:<pre>aws s3api create-bucket \<br />  --bucket samplesorcleanup-unmanagedbucket-<UniqueIdentifier> \<br />  --region us-east-1 \<br />  --create-bucket-configuration LocationConstraint=us-east-1</pre> | AWS DevOps | 

### Löschen Sie die Beispielressourcen
<a name="delete-the-sample-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie den CloudFormation Stapel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Bestätigen Sie das Löschen von Ressourcen. | Vergewissern Sie sich in der Ausgabe, dass alle Beispielressourcen gelöscht wurden. Eine Beispielausgabe finden Sie im Abschnitt [Zusätzliche Ressourcen](#automate-deletion-cloudformation-stacks-associated-resources-additional) dieses Musters. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="automate-deletion-cloudformation-stacks-associated-resources-resources"></a>
+ [Einen Stack löschen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) (CloudFormation Dokumentation)
+ [Problembehandlung CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation Dokumentation)
+ [Lambda-Funktionen Zugriff auf Ressourcen in einer Amazon VPC gewähren](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) (Lambda-Dokumentation)
+ [Wie lösche ich einen AWS CloudFormation Stack, der im Status DELETE\$1FAILED hängengeblieben ist?](https://repost.aws/knowledge-center/cloudformation-stack-delete-failed) (Wissenszentrum)AWS 

## Zusätzliche Informationen
<a name="automate-deletion-cloudformation-stacks-associated-resources-additional"></a>

Im Folgenden finden Sie ein Beispiel für die Ausgabe des `cfncli` Befehls:

```
cfncli --region aus-east-1  dev cleanup-env --prefix-list sampleforcleanup                                                                                                                              
https://sts.us-east-1.amazonaws.com
Cleaning up: ['sampleforcleanup'] in xxxxxxxxxx:us-east-1
Do you want to proceed? [Y/n]: Y
No S3 buckets
No ECR repositories
No Lambda functions in VPC
The following DynamoDB tables will have their deletion protection removed:
sampleforcleanup-MyDynamoDBTable
Do you want to proceed with removing deletion protection from these tables? [Y/n]: Y
Deletion protection disabled for DynamoDB table 'sampleforcleanup-MyDynamoDBTable'.
The following CloudFormation stacks will be deleted:
sampleforcleanup-Stack
Do you want to proceed with deleting these CloudFormation stacks? [Y/n]: Y
Initiated deletion of CloudFormation stack: `sampleforcleanup-Stack`
Waiting for stack `sampleforcleanup-Stack` to be deleted...
CloudFormation stack `sampleforcleanup-Stack` deleted successfully.
The following ssm_params will be deleted:
/sampleforcleanup/database/password
Do you want to proceed with deleting these ssm_params? [Y/n]: Y
Deleted SSM Parameter: /sampleforcleanup/database/password
Cleaned up: ['sampleforcleanup']
```

# Automatisieren Sie die Erfassung und Visualisierung von benutzerdefinierten Amazon MWAA-Metriken auf Amazon Managed Grafana mithilfe von Terraform
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics"></a>

*Faisal Abdullah und Satya Vajrapu, Amazon Web Services*

## Zusammenfassung
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-summary"></a>

In diesem Muster wird beschrieben, wie Amazon Managed Grafana verwendet wird, um benutzerdefinierte Metriken zu erstellen und zu überwachen, die von Amazon Managed Workflows for Apache Airflow (Amazon MWAA) aufgenommen werden. Amazon MWAA dient als Orchestrator für Workflows und verwendet Directed Acyclic Graphs (DAGs), die in Python geschrieben sind. Im Mittelpunkt dieses Musters steht die Überwachung benutzerdefinierter Metriken, einschließlich der Gesamtzahl der in der letzten Stunde DAGs ausgeführten und fehlgeschlagenen Vorgänge DAGs pro Stunde sowie der durchschnittlichen Dauer dieser Prozesse. Diese Analyse zeigt, wie Amazon Managed Grafana in Amazon MWAA integriert wird, um eine umfassende Überwachung und Einblicke in die Orchestrierung von Workflows in dieser Umgebung zu ermöglichen.

## Voraussetzungen und Einschränkungen
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver Benutzer AWS-Konto mit den erforderlichen Benutzerberechtigungen, um Folgendes zu erstellen und zu verwalten: AWS-Services
  + AWS Identity and Access Management (IAM) Rollen und Richtlinien
  + AWS Lambda
  + Amazon Managed Grafana
  + Amazon Managed Workflows für Apache Airflow (Amazon MWAA)
  + Amazon Simple Storage Service (Amazon-S3)
  + Amazon Timestream
+ Zugriff auf eine Shell-Umgebung, die ein Terminal auf Ihrem lokalen Computer sein kann oder [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html).
+ Eine Shell-Umgebung, in der Git installiert und die neueste Version von AWS Command Line Interface (AWS CLI) installiert und konfiguriert ist. Weitere Informationen finden Sie AWS CLI in der AWS CLI Dokumentation unter [Installation oder Aktualisierung auf die neueste Version von](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Die folgende Terraform-Version ist installiert: `required_version = ">= 1.6.1, < 2.0.0"` Sie können [tfswitch](https://tfswitch.warrensbox.com/) verwenden, um zwischen verschiedenen Versionen von Terraform zu wechseln.
+ Konfigurierte Identitätsquelle für Ihren. AWS IAM Identity Center AWS-Konto Weitere Informationen finden Sie unter [Bestätigen Sie Ihre Identitätsquellen in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/prereq-identity-sources.html) in der IAM Identity Center-Dokumentation. Sie können zwischen dem Standard IAM-Identity-Center-Verzeichnis, Active Directory oder einem externen Identitätsanbieter (IdP) wie Okta wählen. Weitere Informationen finden Sie unter [Verwandte](#automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources) Ressourcen.

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ Terraform `required_version = ">= 1.6.1, < 2.0.0"`
+ Amazon Managed Grafana Version 9.4 oder höher. Dieses Muster wurde auf Version 9.4 getestet.

## Architektur
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-architecture"></a>

Das folgende Architekturdiagramm hebt die in der Lösung AWS-Services verwendeten Komponenten hervor.

![\[Workflow zur Automatisierung der Erfassung von benutzerdefinierten Amazon MWAA-Metriken.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/3458d0a9-aee1-428a-bf2f-c357bb531c64/images/b43ed8d2-94ac-4438-913b-81c7eba8f3e0.png)


In der obigen Abbildung wird der folgende Arbeitsablauf schrittweise beschrieben:

1. Benutzerdefinierte Metriken in Amazon MWAA stammen von DAGs denen, die innerhalb der Umgebung ausgeführt werden. Die Metriken werden in einem CSV-Dateiformat in den Amazon S3 S3-Bucket hochgeladen. Im Folgenden werden die Datenbankabfragefunktionen von Amazon MWAA DAGs verwendet:
   + `run-example-dag`— Diese DAG enthält Python-Beispielcode, der eine oder mehrere Aufgaben definiert. Sie läuft alle 7 Minuten und druckt das Datum. Nach dem Drucken des Datums enthält die DAG eine Aufgabe, die Ausführung für eine bestimmte Dauer in den Standbymodus zu versetzen oder anzuhalten.
   + `other-sample-dag`— Diese DAG wird alle 10 Minuten ausgeführt und druckt das Datum. Nach dem Drucken des Datums enthält die DAG eine Aufgabe, bei der die Ausführung für eine bestimmte Dauer in den Ruhezustand versetzt oder unterbrochen wird.
   + `data-extract`— Diese DAG wird stündlich ausgeführt und fragt die Amazon MWAA-Datenbank ab und sammelt Metriken. Nachdem die Metriken erfasst wurden, schreibt diese DAG sie zur weiteren Verarbeitung und Analyse in einen Amazon S3 S3-Bucket.

1. Um die Datenverarbeitung zu optimieren, werden Lambda-Funktionen ausgeführt, wenn sie durch Amazon S3 S3-Ereignisse ausgelöst werden, was das Laden von Metriken in Timestream erleichtert.

1. Timestream ist als Datenquelle in Amazon Managed Grafana integriert, wo alle benutzerdefinierten Metriken von Amazon MWAA gespeichert werden.

1. Benutzer können die Daten abfragen und benutzerdefinierte Dashboards erstellen, um wichtige Leistungsindikatoren zu visualisieren und Einblicke in die Orchestrierung von Workflows innerhalb von Amazon MWAA zu gewinnen.

## Tools
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-tools"></a>

**AWS-Services**
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)hilft Ihnen dabei, den Single Sign-On (SSO) -Zugriff auf all Ihre Anwendungen und Cloud-Anwendungen zentral zu verwalten. AWS-Konten 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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. In diesem Muster AWS Lambda wird der Python-Code als Reaktion auf Amazon S3 S3-Ereignisse ausgeführt und die Rechenressourcen automatisch verwaltet.
+ [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) ist ein vollständig verwalteter Datenvisualisierungsservice, mit dem Sie Ihre Metriken, Logs und Traces abfragen, korrelieren und visualisieren und Warnmeldungen dazu erhalten können. Dieses Muster verwendet Amazon Managed Grafana, um ein Dashboard für die Visualisierung von Kennzahlen und Benachrichtigungen zu erstellen.
+ [Amazon Managed Workflows for Apache Airflow (Amazon MWAA) ist ein](https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html) verwalteter Orchestrierungsservice für Apache Airflow, mit dem Sie Daten-Pipelines in der Cloud in großem Umfang einrichten und betreiben können. [Apache Airflow](https://airflow.apache.org/) ist ein Open-Source-Tool zum programmgesteuerten Erstellen, Planen und Überwachen von Prozess- und Aufgabensequenzen, die als Workflows bezeichnet werden. In diesem Muster werden ein Beispiel DAGs und ein Metrik-Extraktor-DAG in Amazon MWAA bereitgestellt.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt. In diesem Muster wird Amazon S3 zum Speichern von DAGs Skripten und benutzerdefinierten Metriken im CSV-Format verwendet.
+ [Amazon Timestream for LiveAnalytics](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) is ist eine schnelle, skalierbare, vollständig verwaltete, speziell entwickelte Zeitreihendatenbank, die es einfach macht, Billionen von Zeitreihendatenpunkten pro Tag zu speichern und zu analysieren. Timestream for lässt sich LiveAnalytics auch in häufig verwendete Dienste für Datenerfassung, Visualisierung und maschinelles Lernen integrieren. In diesem Muster wird es verwendet, um die generierten benutzerdefinierten Amazon MWAA-Metriken aufzunehmen.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. Dieses Muster verwendet ein Terraform-Modul, um die Bereitstellung der Infrastruktur in zu automatisieren. AWS

**Code-Repository**

Der Code für dieses Muster ist GitHub im Repository [visualize-amazon-mwaa-custom-metrics-grafana](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana) verfügbar. Der Ordner enthält Folgendes`stacks/Infra`:
+ Terraform-Konfigurationsdateien für alle Ressourcen AWS 
+ Grafana-Dashboard-.json-Datei im Ordner `grafana`
+ Amazon Managed Workflows für Apache Airflow DAGs im Ordner `mwaa/dags`
+ Lambda-Code zum Analysieren der CSV-Datei und zum Speichern von Metriken in der Timestream-Datenbank im Ordner `src`
+ .json-Dateien für IAM-Richtlinien im Ordner `templates`

## Best Practices
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-best-practices"></a>

Terraform muss den Status Ihrer verwalteten Infrastruktur und Konfiguration speichern, damit es Ihrer Konfiguration reale Ressourcen zuordnen kann. Standardmäßig speichert Terraform den Status lokal in einer Datei mit dem Namen. `terraform.tfstate` Es ist wichtig, die Sicherheit und Integrität Ihrer Terraform-Statusdatei zu gewährleisten, da sie den aktuellen Status Ihrer Infrastruktur beibehält. Weitere Informationen finden Sie unter [Remote State](https://developer.hashicorp.com/terraform/language/state/remote) in der Terraform-Dokumentation. 

## Epen
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-epics"></a>

### Stellen Sie die Infrastruktur mit Terraform bereit
<a name="deploy-the-infrastructure-using-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Infrastruktur bereit. | Gehen Sie wie folgt vor, um die Lösungsinfrastruktur bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

### Validieren Sie die bereitgestellten Infrastrukturressourcen
<a name="validate-the-deployed-infrastructure-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Validieren Sie die Amazon MWAA-Umgebung. | Gehen Sie wie folgt vor, um die Amazon MWAA-Umgebung zu validieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, Dateningenieur | 
| Überprüfen Sie die DAG-Zeitpläne. | Um die einzelnen DAG-Zeitpläne einzusehen, wechseln Sie in der **Airflow-Benutzeroberfläche** zur Registerkarte **Zeitplan**.Jede der folgenden Optionen DAGs hat einen vorkonfigurierten Zeitplan, der in der Amazon MWAA-Umgebung ausgeführt wird und benutzerdefinierte Metriken generiert: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Sie können auch die erfolgreichen Ausführungen der einzelnen DAG in der Spalte **Runs** sehen.  | Dateningenieur, AWS DevOps | 

### Konfigurieren Sie die Amazon Managed Grafana-Umgebung
<a name="configure-the-gra-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie den Zugriff auf den Amazon Managed Grafana-Arbeitsbereich. | Die Terraform-Skripte haben den erforderlichen Amazon Managed Grafana-Arbeitsbereich, die Dashboards und die Metrikseite erstellt. Gehen Sie wie folgt vor, um den Zugriff so zu konfigurieren, dass Sie sie anzeigen können:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Installieren Sie das Amazon Timestream Timestream-Plugin.  | Benutzerdefinierte Amazon MWAA-Metriken werden in die Timestream-Datenbank geladen. Sie verwenden das Timestream-Plugin, um die Metriken mit Amazon Managed Grafana-Dashboards zu visualisieren.Gehen Sie wie folgt vor, um das Timestream-Plugin zu installieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Weitere Informationen finden Sie unter [Erweitern Sie Ihren Workspace mit Plugins](https://docs.aws.amazon.com/grafana/latest/userguide/grafana-plugins.html#manage-plugins) in der Amazon Managed Grafana-Dokumentation. | AWS DevOps, DevOps Ingenieur | 

### Visualisieren Sie die benutzerdefinierten Metriken im Amazon Managed Grafana-Dashboard
<a name="visualize-the-custom-metrics-in-the-gra-dashboard"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Sehen Sie sich das Amazon Managed Grafana-Dashboard an. | Gehen Sie wie folgt vor, um die Metriken anzuzeigen, die in den Amazon Managed Grafana-Workspace aufgenommen wurden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Auf der Seite mit den Dashboard-Metriken werden die folgenden Informationen angezeigt:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Passen Sie das Amazon Managed Grafana-Dashboard an. | Gehen Sie wie folgt vor, um die Dashboards für weitere future Verbesserungen anzupassen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Alternativ ist der Quellcode für dieses Dashboard in der `dashboard.json` Datei im `stacks/infra/grafana` Ordner im [GitHub Repository](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana/blob/main/stacks/infra/grafana/dashboard.json) verfügbar. | AWS DevOps | 

### AWS Ressourcen bereinigen
<a name="clean-up-aws-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Unterbrechen Sie die Ausführung der Amazon MWAA-DAG. | Gehen Sie wie folgt vor, um die DAG-Ausführung anzuhalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, Dateningenieur | 
| Löschen Sie die Objekte in den Amazon S3 S3-Buckets. | Um die Amazon S3 S3-Buckets **mwaa-events-bucket-\$1 und **mwaa-metrics-bucket-\$1**** zu löschen, folgen Sie den Anweisungen zur Verwendung der Amazon S3 S3-Konsole unter [Löschen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) in der Amazon S3 S3-Dokumentation. | AWS DevOps | 
| Zerstöre die von Terraform erstellten Ressourcen. | Gehen Sie wie folgt vor, um die von Terraform erstellten Ressourcen und die zugehörige lokale Terraform-Statusdatei zu löschen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

## Fehlerbehebung
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `null_resource.plugin_mgmt (local-exec): aws: error: argument operation: Invalid choice, valid choices are:` | Führen Sie ein Upgrade AWS CLI auf die [neueste Version](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) durch. | 
| Fehler beim Laden der Datenquellen - `Fetch error: 404 Not Found Instantiating…` | Der Fehler tritt sporadisch auf. Warten Sie einige Minuten, und aktualisieren Sie dann Ihre Datenquellen, um die aufgelistete Timestream-Datenquelle anzuzeigen.  | 

## Zugehörige Ressourcen
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources"></a>

**AWS Dokumentation**
+ [Amazon Managed Grafana für Dashboarding und Visualisierung](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/amg-dashboarding-visualization.html)
+ [Amazon Managed Grafana für die Verwendung von Okta konfigurieren](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-SAML-providers-okta.html)
+ [AWS IAM Identity Center Mit Ihrem Amazon Managed Grafana-Workspace verwenden](https://docs.aws.amazon.com/grafana/latest/userguide/authentication-in-AMG-SSO.html)
+ [Arbeiten mit DAGs auf Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags.html)

**AWS Videos**
+ [Konfigurieren Sie IAM Identity Center mit Amazon Managed Grafana für die Authentifizierung, wie im folgenden Video gezeigt.](https://www.youtube.com/watch?v=XX2Xcz-Ps9U)




[https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U? Steuerungen=0](https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U?controls=0)
+ [Wenn IAM Identity Center nicht verfügbar ist, können Sie die Amazon Managed Grafana-Authentifizierung auch mithilfe eines externen Identitätsanbieters (IdP) wie Okta integrieren, wie im folgenden Video gezeigt.](https://www.youtube.com/watch?v=Z4JHxl2xpOg)




[https://www.youtube-nocookie.com/embed/JHxl2xpZ4 Og? Steuerungen=0](https://www.youtube-nocookie.com/embed/Z4JHxl2xpOg?controls=0)

## Zusätzliche Informationen
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-additional"></a>

Sie können eine umfassende Überwachungs- und Warnlösung für Ihre Amazon MWAA-Umgebung erstellen, die ein proaktives Management und eine schnelle Reaktion auf potenzielle Probleme oder Anomalien ermöglicht. Amazon Managed Grafana umfasst die folgenden Funktionen:

**Warnung — Sie** können Benachrichtigungen in Amazon Managed Grafana auf der Grundlage vordefinierter Schwellenwerte oder Bedingungen konfigurieren. Richten Sie E-Mail-Benachrichtigungen ein, um relevante Stakeholder zu benachrichtigen, wenn bestimmte Kennzahlen bestimmte Schwellenwerte über- oder unterschreiten. Weitere Informationen finden Sie unter [Grafana-Benachrichtigungen](https://docs.aws.amazon.com/grafana/latest/userguide/alerts-overview.html) in der Amazon Managed Grafana-Dokumentation.

**Integration** — Sie können Amazon Managed Grafana in verschiedene Tools von Drittanbietern wie OpsGenie, oder Slack integrieren PagerDuty, um erweiterte Benachrichtigungsfunktionen zu erhalten. Sie können beispielsweise Webhooks einrichten oder integrieren, APIs um Vorfälle und Benachrichtigungen auf diesen Plattformen auszulösen, die auf in Amazon Managed Grafana generierten Warnungen basieren. Darüber hinaus bietet dieses Muster ein [GitHub Repository](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana) zum Erstellen AWS von Ressourcen. Sie können diesen Code weiter in Ihre Workflows zur Infrastrukturbereitstellung integrieren.

# Automatisieren Sie die Stackset-Bereitstellung mithilfe von AWS CodePipeline und AWS CodeBuild
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild"></a>

*Thiyagarajan Mani, Mihir Borkar und Raghu Gowda, Amazon Web Services*

## Zusammenfassung
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-summary"></a>

In Ihrer CI/CD) processes, you might want to deploy applications automatically into all your existing AWS accounts and into new accounts that you add to your organization in AWS Organizations. When you architect a CI/CD Lösung für Continuous Integration and Continuous Delivery (Continuous Integration and Continuous Delivery) für diese Anforderung CloudFormation ist die [delegierte Stack-Set-Administratorfunktion](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html) von AWS nützlich, da sie eine Sicherheitsebene ermöglicht, indem der Zugriff auf das Verwaltungskonto eingeschränkt wird. AWS CodePipeline verwendet jedoch das Modell der vom Service verwalteten Berechtigungen, um Anwendungen in mehreren Konten und Regionen bereitzustellen. Sie müssen das Verwaltungskonto von AWS Organizations für die Bereitstellung mit Stack-Sets verwenden, da AWS die Funktion zum delegierten Stack-Set-Administrator CodePipeline nicht unterstützt.

Dieses Muster beschreibt, wie Sie diese Einschränkung umgehen können. Das Muster verwendet AWS CodeBuild und ein benutzerdefiniertes Skript, um die Stackset-Bereitstellung mit AWS zu automatisieren CodePipeline. Es automatisiert diese Aktivitäten zur Anwendungsbereitstellung:
+ Stellen Sie eine Anwendung als Stack-Sets in vorhandenen Organisationseinheiten bereit () OUs
+ Erweitern Sie die Bereitstellung einer Anwendung auf weitere OUs Regionen 
+ Entfernen Sie eine bereitgestellte Anwendung aus allen OUs oder bestimmten Regionen

## Voraussetzungen und Einschränkungen
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-prereqs"></a>

**Voraussetzungen**

Bevor Sie die Schritte in diesem Muster ausführen:
+ Erstellen Sie Organisationen in Ihrem AWS-Verwaltungskonto für Organisationen. Anweisungen finden Sie in der [Dokumentation zu AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html).
+ Ermöglichen Sie vertrauenswürdigen Zugriff zwischen AWS Organizations und verwenden CloudFormation Sie vom Service verwaltete Berechtigungen. Anweisungen finden Sie in der CloudFormation Dokumentation unter [Aktivieren des vertrauenswürdigen Zugriffs mit AWS Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html).

**Einschränkungen**

Der Code, der mit diesem Muster geliefert wird, hat die folgenden Einschränkungen: 
+ Sie können nur eine einzige CloudFormation Vorlage für eine Anwendung bereitstellen. Die Bereitstellung mehrerer Vorlagen wird derzeit nicht unterstützt.
+ Die Anpassung der aktuellen Implementierung erfordert DevOps Fachwissen.
+ Dieses Muster verwendet keine AWS Key Management System (AWS KMS) -Schlüssel. Sie können diese Funktionalität jedoch aktivieren, indem Sie die in diesem Muster enthaltene CloudFormation Vorlage neu konfigurieren.

## Architektur
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-architecture"></a>

![\[Architektur für die Automatisierung der CI/CD-Pipeline\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a5c47de7-9039-415d-a9e5-9de0d4c3a260/images/2dbca422-7f32-4f9c-a4aa-1f95b484b772.png)


Diese Architektur für die CI/CD Bereitstellungspipeline behandelt Folgendes:
+ Schränkt den direkten Zugriff auf das Verwaltungskonto ein, indem die Verantwortung für die Stackset-Bereitstellung an ein spezielles CI/CD Konto als Stackset-Administrator für Anwendungsbereitstellungen delegiert wird.
+ Verwendet das vom Service verwaltete Berechtigungsmodell, um die Anwendung automatisch bereitzustellen, wenn ein neues Konto erstellt und einer Organisationseinheit zugeordnet wird.
+ Stellt die Konsistenz der Anwendungsversionen für alle Konten auf Umgebungsebene sicher.
+ Nutzt mehrere Genehmigungsphasen auf Repository- und Pipeline-Ebene, um zusätzliche Sicherheits- und Governance-Ebenen für die bereitgestellte Anwendung bereitzustellen.
+ Überwindet die derzeitige Einschränkung, Stack-Sets und Stack-Instances CodePipeline mithilfe eines benutzerdefinierten Bereitstellungsskripts automatisch bereitzustellen oder CodeBuild zu entfernen. Eine Veranschaulichung der Ablaufsteuerung und der Hierarchie der API-Aufrufe, die durch das benutzerdefinierte Skript implementiert werden, finden Sie im Abschnitt [Zusätzliche Informationen](#automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-additional).
+ Erstellt individuelle Stacksets für die Entwicklungs-, Test- und Produktionsumgebung. Darüber hinaus können Sie Stack-Sets erstellen, die in jeder Phase mehrere OUs Regionen kombinieren. Sie können beispielsweise Sandbox und Entwicklung OUs innerhalb einer Entwicklungsphase kombinieren.
+ Unterstützt die Anwendungsbereitstellung für oder den Ausschluss aus einer Teilmenge von Konten oder einer Liste von. OUs

**Automatisierung und Skalierung**

Sie können den mit diesem Muster bereitgestellten Code verwenden, um ein CodeCommit AWS-Repository und eine Code-Pipeline für Ihre Anwendung zu erstellen. Sie können diese dann als Stack-Sets für mehrere Konten auf OU-Ebene bereitstellen. Der Code automatisiert auch Komponenten wie Amazon Simple Notification Service (Amazon SNS) -Themen zur Benachrichtigung von Genehmigern, die erforderlichen AWS Identity and Access Management (IAM) -Rollen und die Service Control Policy (SCP), die für das Verwaltungskonto gelten soll.

## Tools
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatisiert Bereitstellungen auf Amazon Elastic Compute Cloud (Amazon EC2) oder lokalen Instances, AWS Lambda Lambda-Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) ist ein Kontoverwaltungsservice, mit dem Sie mehrere AWS-Konten in einer Organisation konsolidieren können, die Sie erstellen und zentral verwalten.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [automated-code-pipeline-stackset-deployment](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment) verfügbar. Die Ordnerstruktur und weitere Details finden Sie in der [Readme-Datei](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment/blob/main/README.md) für das Repository.

## Best Practices
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-best-practices"></a>

Dieses Muster schränkt den direkten Zugriff auf das Verwaltungskonto bei der Bereitstellung der Anwendung auf OU-Ebene ein. Das Hinzufügen mehrerer Genehmigungsphasen zum Pipeline- und Repository-Prozess trägt dazu bei, zusätzliche Sicherheit und Steuerung für die Anwendungen und Komponenten zu gewährleisten, die Sie mit diesem Ansatz bereitstellen.

## Epen
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-epics"></a>

### Konten in AWS Organizations konfigurieren
<a name="configure-accounts-in-aws-organizations"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktivieren Sie alle Funktionen im Verwaltungskonto. | Aktivieren Sie alle Funktionen im Verwaltungskonto für Ihre Organisation, indem Sie den Anweisungen in der [Dokumentation zu AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html) folgen. | AWS-Administrator, Plattformadministrator | 
| Erstellen Sie ein CI/CD Konto. | Erstellen Sie in AWS Organizations in Ihrer Organisation ein spezielles CI/CD Konto und weisen Sie einem Team zu, das für das Konto verantwortlich ist und den Zugriff darauf kontrolliert. | AWS-Administrator | 
| Fügen Sie einen delegierten Administrator hinzu. | Registrieren Sie im Verwaltungskonto das Konto, das CI/CD Sie im vorherigen Schritt erstellt haben, als delegierten Stackset-Administrator. Anweisungen finden Sie in der [ CloudFormation AWS-Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html). | AWS-Administrator, Plattformadministrator | 

### Erstellen Sie ein Anwendungs-Repository und eine CI/CD Pipeline
<a name="create-an-application-repository-and-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Erstellen Sie SNS-Themen. | Sie können die im GitHub Repository bereitgestellte `sns-template.yaml` Vorlage verwenden, um SNS-Themen zu erstellen und Abonnements für Genehmigungsanfragen zu konfigurieren.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Erstellen Sie IAM-Rollen für CI/CD Komponenten. | Sie können die im GitHub Repository bereitgestellte `cicd-role-template.yaml` Vorlage verwenden, um IAM-Rollen und -Richtlinien zu erstellen, die für Komponenten erforderlich sind. CI/CD [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Erstellen Sie ein CodeCommit Repository und eine Code-Pipeline für Ihre Anwendung. | Sie können die im Repository bereitgestellte `cicd-pipeline-template.yaml` Vorlage verwenden, um ein GitHub CodeCommit Repository und eine Code-Pipeline für Ihre Anwendung zu erstellen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 

### Stellen Sie ein Stack-Set bereit
<a name="deploy-a-stack-set"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Anwendungs-Repository. | Die CI/CD Pipeline-Vorlage, die Sie zuvor verwendet haben, erstellt ein Beispielanwendungs-Repository und eine Code-Pipeline. So klonen und verifizieren Sie das Repository:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | App-Entwickler, Dateningenieur | 
| Fügen Sie Anwendungsartefakte hinzu. | Aktualisieren Sie das Anwendungs-Repository mithilfe einer CloudFormation Vorlage.Diese Lösung unterstützt die Bereitstellung nur einer einzigen CloudFormation Vorlage.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | App-Entwickler, Dateningenieur | 
| Aktualisieren Sie die Einrichtungskonfigurationsdatei. | Aktualisieren Sie die `deployment_config.json` Datei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html)Dieses Muster erstellt individuelle Stack-Sets für jede Umgebung, indem der Umgebungsname zu dem Stack-Set-Namen hinzugefügt wird, den Sie in der Einrichtungskonfigurationsdatei angeben. | App-Entwickler, Dateningenieur | 
| Übernehmen Sie die Änderungen und stellen Sie das Stack-Set bereit. | Übernehmen Sie die Änderungen, die Sie in Ihrer Anwendungsvorlage angegeben haben, und führen Sie das Stack-Set Schritt für Schritt zusammen und stellen Sie es in mehreren Umgebungen bereit:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | App-Entwickler, Dateningenieur | 

## Fehlerbehebung
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:*Ändern Sie den Namen der Vorlagenparameterdatei in -parameter- .json mit, Standardnamen sind nicht zulässig* <application name><evn> | Die CloudFormation Vorlagenparameterdateien müssen der angegebenen Namenskonvention entsprechen. Aktualisieren Sie die Namen der Parameterdateien und versuchen Sie es erneut. | 
| Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:*Ändern Sie den Namen der CloudFormation Vorlage in .yml. Die Standardwerte template.yml oder template.yaml sind nicht zulässig* <application name> | Der CloudFormation Vorlagenname muss der angegebenen Benennungskonvention entsprechen. Aktualisieren Sie den Dateinamen und versuchen Sie es erneut. | 
| Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:*Für die Umgebung \$1Umgebungsname\$1 wurden keine gültige CloudFormation Vorlage und die zugehörige Parameterdatei gefunden* | Überprüfen Sie die Dateibenennungskonventionen für die CloudFormation Vorlage und ihre Parameterdatei für die angegebene Umgebung. | 
| Die Bereitstellung schlägt mit der folgenden Ausnahme fehl:*In der Einrichtungskonfigurationsdatei wurde eine ungültige Bereitstellungsaktion angegeben. Gültige Optionen sind „Bereitstellen“ und „Löschen“.* | Sie haben einen ungültigen Wert für den `deployment_action` Parameter in der Einrichtungskonfigurationsdatei angegeben. Der Parameter hat zwei gültige Werte: `deploy` und`delete`. Wird verwendet`deploy`, um die Stack-Sets und die zugehörigen Stack-Instances zu erstellen und zu aktualisieren. `delete`Nur verwenden, wenn Sie das gesamte Stack-Set und die zugehörigen Stack-Instances entfernen möchten. | 

## Zugehörige Ressourcen
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-resources"></a>
+ GitHub [automated-code-pipeline-stackset-Bereitstellungs-Repository](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment)
+ [Aktivierung aller Funktionen in Ihrer Organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html) (Dokumentation zu AWS Organizations)
+ [Registrieren Sie einen delegierten Administrator](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html) ( CloudFormation AWS-Dokumentation)
+ [Ziele auf Kontoebene für servicemanaged Stack Sets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/account-level-targets.html) ( CloudFormation AWS-Dokumentation)

## Zusätzliche Informationen
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-additional"></a>

**Flussdiagramm**

Das folgende Flussdiagramm zeigt die Ablaufsteuerung und die Hierarchie der API-Aufrufe, die durch das benutzerdefinierte Skript implementiert werden, um die Bereitstellung von Stacksets zu automatisieren.

![\[Flusskontrolle und API-Aufrufe, implementiert durch ein Python-Skript\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a5c47de7-9039-415d-a9e5-9de0d4c3a260/images/1898883a-62b7-40c2-8f08-9f2a9dda8404.png)


**Beispiele für Konfigurationsdateien für die Bereitstellung**

**Ein neues Stack-Set erstellen**

Die folgende Einrichtungskonfigurationsdatei erstellt ein neues Stack-Set, das `sample-stack-set` in der AWS-Region `us-east-1` in Three aufgerufen wird OUs.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Bereitstellung eines vorhandenen Stack-Sets in einer anderen Organisationseinheit**

Wenn Sie die im vorherigen Beispiel gezeigte Konfiguration bereitstellen und das Stack-Set in einer zusätzlichen Organisationseinheit bereitstellen möchten, die `dev-org-unit-2` in der Entwicklungsumgebung aufgerufen wird, könnte die Einrichtungskonfigurationsdatei wie folgt aussehen.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Bereitstellung eines vorhandenen Stack-Sets in einer anderen AWS-Region**

Wenn Sie die im vorherigen Beispiel gezeigte Konfiguration bereitstellen und das Stack-Set für zwei OUs (`dev-org-unit-1`und`dev-org-unit-2`) in einer zusätzlichen AWS-Region (`us-east-2`) in der Entwicklungsumgebung bereitstellen möchten, könnte die Einrichtungskonfigurationsdatei wie folgt aussehen. 

**Anmerkung**  
Die Ressourcen in der CloudFormation Vorlage müssen gültig und regionsspezifisch sein.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-1", "us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Entfernen einer Stack-Instance aus einer OU- oder AWS-Region**

Nehmen wir an, dass die im vorherigen Beispiel gezeigte Bereitstellungskonfiguration bereitgestellt wurde. Die folgende Konfigurationsdatei entfernt die Stack-Instances aus beiden Regionen der OU`dev-org-unit-2`.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"],
                                        "regions": ["us-east-1", "us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"],
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"],
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

Die folgende Konfigurationsdatei entfernt die Stack-Instance aus der AWS-Region `us-east-1` für beide OUs in der Entwicklungsumgebung.    

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Das gesamte Stack-Set wird gelöscht**

Die folgende Einrichtungskonfigurationsdatei löscht das gesamte Stack-Set und alle zugehörigen Stack-Instances.

```
{
     "deployment_action": "delete",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

****Ein Konto von der Bereitstellung ausschließen**

 Die folgende Einrichtungskonfigurationsdatei schließt das Konto`111122223333`, das Teil der Organisationseinheit ist`dev-org-unit-1`, von der Bereitstellung aus.

```
 {
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": ["111122223333"],
                                        "filter_type": "DIFFERENCE"
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Bereitstellung der Anwendung für eine Teilmenge von Konten in einer Organisationseinheit**

Mit der folgenden Einrichtungskonfigurationsdatei wird die Anwendung nur für drei Konten (`111122223333``444455556666`, und`777788889999`) in der Organisationseinheit bereitgestellt. `dev-org-unit-1`

```
 {
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": ["111122223333", "444455556666", "777788889999"],
                                        "filter_type": "INTERSECTION"
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

# Automatisches Hinzufügen einer von AWS verwalteten Richtlinie für Systems Manager zu EC2 Instanzprofilen mithilfe von Cloud Custodian und AWS CDK
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk"></a>

*Ali Asfour und Aaron Lennon, Amazon Web Services*

## Zusammenfassung
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-summary"></a>

Sie können Amazon Elastic Compute Cloud (Amazon EC2) -Instances in AWS Systems Manager integrieren, um betriebliche Aufgaben zu automatisieren und für mehr Transparenz und Kontrolle zu sorgen. Für die Integration mit Systems Manager müssen für EC2 Instances ein installierter [AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) und eine `AmazonSSMManagedInstanceCore` AWS Identity and Access Management (IAM) -Richtlinie an ihre Instance-Profile angehängt sein. 

Wenn Sie jedoch sicherstellen möchten, dass allen EC2 Instance-Profilen die `AmazonSSMManagedInstanceCore` Richtlinie angehängt ist, kann es schwierig werden, neue EC2 Instances zu aktualisieren, die keine Instance-Profile haben, oder EC2 Instances, die ein Instance-Profil haben, aber nicht über die `AmazonSSMManagedInstanceCore` Richtlinie verfügen. Es kann auch schwierig sein, diese Richtlinie für mehrere Amazon Web Services (AWS) -Konten und AWS-Regionen hinzuzufügen.

Dieses Muster hilft bei der Lösung dieser Herausforderungen, indem es drei [Cloud Custodian-Richtlinien](https://cloudcustodian.io/) in Ihren AWS-Konten bereitstellt:
+ Die erste Cloud Custodian-Richtlinie sucht nach vorhandenen EC2 Instances, die über ein Instanzprofil, aber nicht über die `AmazonSSMManagedInstanceCore` Richtlinie verfügen. Die `AmazonSSMManagedInstanceCore` Richtlinie wird dann angehängt. 
+ Die zweite Cloud Custodian-Richtlinie sucht nach vorhandenen EC2 Instanzen ohne Instanzprofil und fügt ein Standard-Instanzprofil hinzu, dem die `AmazonSSMManagedInstanceCore` Richtlinie angehängt ist.
+ Die dritte Cloud Custodian-Richtlinie erstellt [AWS Lambda Lambda-Funktionen](https://cloudcustodian.io/docs/aws/lambda.html) in Ihren Konten, um die Erstellung von EC2 Instanzen und Instanzprofilen zu überwachen. Dadurch wird sichergestellt, dass die `AmazonSSMManagedInstanceCore` Richtlinie automatisch angehängt wird, wenn eine EC2 Instanz erstellt wird.

Dieses Muster verwendet [ DevOpsAWS-Tools](https://aws.amazon.com/devops/), um eine kontinuierliche, maßstabsgetreue Bereitstellung der Cloud Custodian-Richtlinien in einer Umgebung mit mehreren Konten zu erreichen, ohne eine separate Rechenumgebung bereitzustellen. 

## Voraussetzungen und Einschränkungen
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-prereqs"></a>

**Voraussetzungen**
+ Zwei oder mehr aktive AWS-Konten. Ein Konto ist das *Sicherheitskonto* und die anderen sind *Mitgliedskonten*.
+ Berechtigungen zur Bereitstellung von AWS-Ressourcen im Sicherheitskonto. Dieses Muster verwendet [Administratorberechtigungen](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), Sie sollten jedoch Berechtigungen entsprechend den Anforderungen und Richtlinien Ihrer Organisation gewähren.
+ Möglichkeit, vom Sicherheitskonto aus eine IAM-Rolle für Mitgliedskonten zu übernehmen und die erforderlichen IAM-Rollen zu erstellen. Weitere Informationen dazu finden Sie unter [Delegieren des Zugriffs auf AWS-Konten mithilfe von IAM-Rollen in der IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html).
+ 
**Wichtig**  
AWS-Befehlszeilenschnittstelle (AWS CLI), installiert und konfiguriert. Zu Testzwecken können Sie die AWS-CLI konfigurieren, indem Sie den `aws configure` Befehl verwenden oder Umgebungsvariablen festlegen. : Dies wird für Produktionsumgebungen nicht empfohlen und wir empfehlen, diesem Konto nur Zugriff mit den geringsten Rechten zu gewähren. Weitere Informationen dazu finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Die `devops-cdk-cloudcustodian.zip` Datei (angehängt), die auf Ihren lokalen Computer heruntergeladen wurde.
+ Vertrautheit mit Python.
+ Die erforderlichen Tools (Node.js, AWS Cloud Development Kit (AWS CDK) und Git) wurden installiert und konfiguriert. Sie können die `install-prerequisites.sh` Datei in der `devops-cdk-cloudcustodian.zip` Datei verwenden, um diese Tools zu**** installieren. ****Stellen Sie sicher, dass Sie diese Datei mit Root-Rechten ausführen. 

**Einschränkungen**
+ Dieses Muster kann zwar in einer Produktionsumgebung verwendet werden, stellen Sie jedoch sicher, dass alle IAM-Rollen und -Richtlinien den Anforderungen und Richtlinien Ihres Unternehmens entsprechen. 

**Versionen von Paketen**
+ Cloud Custodian Version 0.9 oder höher
+ TypeScript Version 3.9.7 oder höher
+ Node.js Version 14.15.4 oder höher
+ `npm`Version 7.6.1 oder höher
+ AWS CDK Version 1.96.0 oder höher

## Architektur
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-architecture"></a>

![\[AWS CodePipeline workflow with CodeCommit, CodeBuild, and deployment to member accounts.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/169a7bde-789e-4ebd-b4ca-80eb28ac9927/images/8ec0b6b4-d4b0-42e5-833d-24d1e6098fd9.png)


 

Das Diagramm zeigt den folgenden Workflow:

1. Cloud Custodian-Richtlinien werden in ein CodeCommit AWS-Repository im Sicherheitskonto übertragen. Eine Amazon CloudWatch Events-Regel initiiert automatisch die CodePipeline AWS-Pipeline.

1. Die Pipeline ruft den neuesten Code von CodeCommit und sendet ihn an den Continuous-Integration-Teil der von AWS verwalteten CI/CD-Pipeline (Continuous Integration and Continuous Delivery). CodeBuild

1. CodeBuild führt die vollständigen DevSecOps Aktionen aus, einschließlich der Überprüfung der Richtliniensyntax für die Cloud Custodian-Richtlinien, und führt diese Richtlinien im `--dryrun` Modus aus, um zu überprüfen, welche Ressourcen identifiziert wurden.

1. Wenn keine Fehler vorliegen, fordert die nächste Aufgabe einen Administrator auf, die Änderungen zu überprüfen und die Bereitstellung in den Mitgliedskonten zu genehmigen.

**Technologie-Stack**
+ AWS-CDK
+ CodeBuild
+ CodeCommit
+ CodePipeline
+ IAM
+ Cloud Custodian 

**Automatisierung und Skalierung**

Das AWS-CDK-Pipeline-Modul stellt eine CI/CD Pipeline bereit CodePipeline , mit der neben der Bereitstellung von AWS-Ressourcen mit CodeBuild AWS-Stacks auch die Erstellung und das Testen von Quellcode orchestriert werden. CloudFormation Sie können dieses Muster für alle Mitgliedskonten und Regionen in Ihrer Organisation verwenden. Sie können den `Roles creation` Stack auch erweitern, um andere IAM-Rollen in Ihren Mitgliedskonten bereitzustellen. 

## Tools
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-tools"></a>
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungsframework zur Definition der Cloud-Infrastruktur im Code und deren Bereitstellung über AWS. CloudFormation
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service in der Cloud.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Assets privat speichern und verwalten können.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ist ein Continuous Delivery Service, mit dem Sie die zur Veröffentlichung Ihrer Software erforderlichen Schritte modellieren, visualisieren und automatisieren können.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ist ein Webservice, mit dem Sie den Zugriff auf AWS-Ressourcen sicher kontrollieren können.
+ [Cloud Custodian](https://cloudcustodian.io/) ist ein Tool, das Dutzende von Tools und Skripten, die die meisten Unternehmen für die Verwaltung ihrer Public-Cloud-Konten verwenden, in einem Open-Source-Tool vereint.
+ [Node.js](https://nodejs.org/en/) ist eine JavaScript Runtime, die auf der V8-Engine von Google Chrome basiert. JavaScript 

**Code**

Eine detaillierte Liste der Module, Kontofunktionen, Dateien und Bereitstellungsbefehle, die in diesem Muster verwendet werden, finden Sie in der `README` Datei in der `devops-cdk-cloudcustodian.zip` Datei (angehängt).

## Epen
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-epics"></a>

### Richten Sie die Pipeline mit AWS CDK ein
<a name="set-up-the-pipeline-with-aws-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das CodeCommit Repository ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Weitere Informationen dazu finden Sie in der CodeCommit AWS-Dokumentation unter [Erstellen eines CodeCommit Repositorys](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html). | Developer | 
| Installieren Sie die erforderlichen Tools. | Verwenden Sie die `install-prerequisites.sh` Datei, um alle erforderlichen Tools auf Amazon Linux zu installieren. Dies beinhaltet nicht die AWS-CLI, da sie vorinstalliert ist.Weitere Informationen dazu finden Sie im Abschnitt [Voraussetzungen](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_prerequisites) unter [Erste Schritte mit dem AWS-CDK in der AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html). | Developer | 
| Installieren Sie die erforderlichen AWS CDK-Pakete. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Die folgenden Pakete werden von AWS CDK benötigt und sind in der `requirements.txt` Datei enthalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 

### Konfigurieren Sie Ihre Umgebung
<a name="configure-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die erforderlichen Variablen. | Öffnen Sie die `vars.py` Datei im Stammordner Ihres CodeCommit Repositorys und aktualisieren Sie die folgenden Variablen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 
| Aktualisieren Sie die Datei account.yml mit den Informationen zum Mitgliedskonto. | Um das [c7n-org Cloud Custodian-Tool](https://cloudcustodian.io/docs/tools/c7n-org.html) für mehrere Konten auszuführen, müssen Sie die `accounts.yml` Konfigurationsdatei im Stammverzeichnis des Repositorys ablegen. Im Folgenden finden Sie ein Beispiel für eine Cloud Custodian-Konfigurationsdatei für AWS:<pre>accounts:<br />- account_id: '123123123123'<br />  name: account-1<br />  regions:<br />  - us-east-1<br />  - us-west-2<br />  role: arn:aws:iam::123123123123:role/CloudCustodian<br />  vars:<br />    charge_code: xyz<br />  tags:<br />  - type:prod<br />  - division:some division<br />  - partition:us<br />  - scope:pci</pre> | Developer | 

### Bootstrap der AWS-Konten
<a name="bootstrap-the-aws-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Boostrap das Sicherheitskonto. | Führen Sie den Bootstrap `deploy_account` mit der `cloudcustodian_stack` Anwendung aus, indem Sie den folgenden Befehl ausführen:<pre>cdk bootstrap -a 'python3 <br />cloudcustodian/cloudcustodian_stack.py</pre> | Developer | 
| Option 1 — Automatisches Bootstrapping der Mitgliedskonten. | Wenn die `cdk_bootstrap_member_accounts` Variable `True` in der `vars.py` Datei auf gesetzt ist, werden die in der `member_accounts` Variablen angegebenen Konten automatisch von der Pipeline gestartet.Bei Bedarf können Sie `*cdk_bootstrap_role*` mit einer IAM-Rolle aktualisieren, die Sie vom Sicherheitskonto aus übernehmen können und die über die erforderlichen Berechtigungen für das Bootstrapping des AWS-CDK verfügt.Neue Konten, die der `member_accounts ` Variablen hinzugefügt werden, werden automatisch von der Pipeline gestartet, sodass die erforderlichen Rollen bereitgestellt werden können. | Developer | 
| Option 2 — Manuelles Bootstrapping der Mitgliedskonten.  | Wir empfehlen zwar nicht, diesen Ansatz zu verwenden, Sie können jedoch den Wert `cdk_bootstrap_member_accounts` auf festlegen `False` und diesen Schritt manuell ausführen, indem Sie den folgenden Befehl ausführen:<pre>$ cdk bootstrap -a 'python3 cloudcustodian/member_account_roles_stack.py' \<br /><br />--trust {security_account_id} \<br /><br />--context assume-role-credentials:writeIamRoleName={role_name} \<br /><br />--context assume-role-credentials:readIamRoleName={role_name} \<br /><br />--mode=ForWriting \<br /><br />--context bootstrap=true \<br /><br />--cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess</pre>Stellen Sie sicher, dass Sie die `{role_name}` Werte `{security_account_id}` und mit dem Namen einer IAM-Rolle aktualisieren, die Sie vom Sicherheitskonto aus übernehmen können und die über die erforderlichen Berechtigungen für das Bootstrapping des AWS-CDK verfügt.Sie können auch andere Methoden verwenden, um die Mitgliedskonten zu booten, z. B. mit AWS CloudFormation. Weitere Informationen dazu finden Sie unter [Bootstrapping](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) in der AWS CDK-Dokumentation. | Developer | 

### Stellen Sie die AWS-CDK-Stacks bereit
<a name="deploy-the-aws-cdk-stacks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die IAM-Rollen in den Mitgliedskonten. | Führen Sie den folgenden Befehl aus, um den `member_account_roles_stack` Stack bereitzustellen und die IAM-Rollen in den Mitgliedskonten zu erstellen:<pre>cdk deploy --all -a 'python3 cloudcustodian/member_account_roles_stack.py' --require-approval never</pre> | Developer | 
| Stellen Sie den Cloud Custodian-Pipeline-Stack bereit. | Führen Sie den folgenden Befehl aus, um die Cloud `cloudcustodian_stack.py` Custodian-Pipeline zu erstellen, die im Sicherheitskonto bereitgestellt wird:<pre>cdk deploy -a 'python3 cloudcustodian/cloudcustodian_stack.py'</pre> | Developer | 

## Zugehörige Ressourcen
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-resources"></a>
+ [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)

## Anlagen
<a name="attachments-169a7bde-789e-4ebd-b4ca-80eb28ac9927"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/169a7bde-789e-4ebd-b4ca-80eb28ac9927/attachments/attachment.zip)

# Automatisches Erstellen von CI/CD Pipelines und Amazon ECS-Clustern für Microservices mithilfe von AWS CDK
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk"></a>

*Varsha Raju, Amazon Web Services*

## Zusammenfassung
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-summary"></a>

Dieses Muster beschreibt, wie Sie automatisch die CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CD Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (Continuous Delivery) erstellen, die Sie dann an die Anforderungen Ihres Unternehmens anpassen oder ändern können. 

Der Ansatz des Musters schafft eine Produktionsumgebung und eine Nicht-Produktionsumgebung, die jeweils über eine Virtual Private Cloud (VPC) und einen Amazon ECS-Cluster verfügen, die für die Ausführung in zwei Availability Zones konfiguriert sind. Diese Umgebungen werden von all Ihren Microservices gemeinsam genutzt, und Sie erstellen dann eine CI/CD Pipeline für jeden Microservice. Diese CI/CD Pipelines rufen Änderungen aus einem Quell-Repository in AWS ab CodeCommit, erstellen die Änderungen automatisch und stellen sie dann in Ihren Produktions- und Nichtproduktionsumgebungen bereit. Wenn eine Pipeline alle Phasen erfolgreich abgeschlossen hat, können Sie URLs damit auf den Microservice in der Produktions- und Nichtproduktionsumgebung zugreifen.

## Voraussetzungen und Einschränkungen
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto.
+ Ein vorhandener Amazon Simple Storage Service (Amazon S3) -Bucket, der die `starter-code.zip` Datei (angehängt) enthält.
+ AWS Cloud Development Kit (AWS CDK), in Ihrem Konto installiert und konfiguriert. Weitere Informationen dazu finden Sie unter [Erste Schritte mit dem AWS-CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) in der AWS-CDK-Dokumentation.
+ Python 3 und`pip`, installiert und konfiguriert. Weitere Informationen dazu finden Sie in der [Python-Dokumentation](https://www.python.org/).
+ Vertrautheit mit AWS CDK, AWS CodePipeline, AWS CodeBuild CodeCommit, Amazon Elastic Container Registry (Amazon ECR), Amazon ECS und AWS Fargate.
+ Vertrautheit mit Docker.
+ Ein Verständnis von und. CI/CD DevOps

**Einschränkungen**
+ Es gelten allgemeine AWS-Kontobeschränkungen. Weitere Informationen dazu finden Sie unter [AWS-Servicekontingente](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) in der Dokumentation AWS General Reference.

**Produktversionen**
+ Der Code wurde mit Node.js Version 16.13.0 und AWS CDK Version 1.132.0 getestet.

## Architektur
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-architecture"></a>

![\[AWS Cloud architecture diagram showing CI/CD pipeline and deployment to production and non-production VPCs.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/05ac2cad-408e-433f-8150-0a2b71f63cfd/images/6fa3dbef-88de-4b3f-ae41-dfa90256a058.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein Anwendungsentwickler überträgt den Code in ein Repository. CodeCommit 

1. Eine Pipeline wird initiiert.

1. CodeBuild erstellt das Docker-Image und überträgt es in ein Amazon ECR-Repository

1. CodePipeline stellt ein neues Image für einen vorhandenen Fargate-Service in einem Amazon ECS-Cluster bereit, der nicht in der Produktion ist.

1. Amazon ECS ruft das Bild aus dem Amazon ECR-Repository in einen Fargate-Dienst ab, der nicht zur Produktion verwendet wird.

1. Die Tests werden unter Verwendung einer URL durchgeführt, die nicht für die Produktion verwendet wird.

1. Der Release-Manager genehmigt die Produktionsbereitstellung.

1. CodePipeline stellt das neue Image für einen vorhandenen Fargate-Service in einem Amazon ECS-Produktionscluster bereit

1. Amazon ECS ruft das Bild aus dem Amazon ECR-Repository in den Fargate-Produktionsservice ab.

1. Produktionsbenutzer greifen über eine Produktions-URL auf Ihre Funktion zu.

**Technologie-Stack**
+ AWS-CDK
+ CodeBuild
+ CodeCommit 
+ CodePipeline
+ Amazon ECR 
+ Amazon ECS 
+ Amazon VPC

**Automatisierung und Skalierung**

Sie können den Ansatz dieses Musters verwenden, um Pipelines für Microservices zu erstellen, die in einem gemeinsamen CloudFormation AWS-Stack bereitgestellt werden. Die Automatisierung kann mehr als einen Amazon ECS-Cluster in jeder VPC erstellen und auch Pipelines für Microservices erstellen, die in einem gemeinsamen Amazon ECS-Cluster bereitgestellt werden. Dies erfordert jedoch, dass Sie neue Ressourceninformationen als Eingaben für den Pipeline-Stack angeben.

## Tools
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-tools"></a>
+ [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html) — Das AWS Cloud Development Kit (AWS CDK) ist ein Softwareentwicklungsframework zur Definition der Cloud-Infrastruktur im Code und deren Bereitstellung über AWS. CloudFormation
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — AWS CodeBuild ist ein vollständig verwalteter Build-Service in der Cloud. CodeBuild kompiliert Ihren Quellcode, führt Komponententests durch und produziert Artefakte, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — AWS CodeCommit ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat in der AWS-Cloud speichern und verwalten können. CodeCommit macht es für Sie überflüssig, Ihr eigenes Quellcodeverwaltungssystem zu verwalten oder sich Gedanken über die Skalierung der Infrastruktur zu machen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — AWS CodePipeline ist ein Continuous Delivery Service, mit dem Sie die zur Veröffentlichung Ihrer Software erforderlichen Schritte modellieren, visualisieren und automatisieren können. Sie können die verschiedenen Phasen eines Softwareveröffentlichungsprozesses schnell modellieren und konfigurieren. CodePipeline automatisiert die Schritte, die zur kontinuierlichen Veröffentlichung Ihrer Softwareänderungen erforderlich sind.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) ist ein hoch skalierbarer, schneller Container-Management-Service, der zum Ausführen, Stoppen und Verwalten von Containern in einem Cluster verwendet wird. Sie können Ihre Aufgaben und Services auf einer serverlosen Infrastruktur ausführen, die von AWS Fargate verwaltet wird. Für mehr Kontrolle über Ihre Infrastruktur können Sie Ihre Aufgaben und Dienste alternativ auf einem Cluster von Amazon Elastic Compute Cloud (Amazon EC2) -Instances ausführen, die Sie verwalten.
+ [Docker](https://www.docker.com/) — Docker hilft Entwicklern dabei, jede Anwendung als leichten, portablen und autarken Container zu packen, zu versenden und auszuführen.

**Code**

Der Code für dieses Muster ist in den `starter-code.zip` Dateien `cicdstarter.zip` und (im Anhang) verfügbar.

## Epen
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das Arbeitsverzeichnis für AWS CDK ein.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, Cloud-Infrastruktur | 

### Erstellen Sie die gemeinsame Infrastruktur
<a name="create-the-shared-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die gemeinsame Infrastruktur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, Cloud-Infrastruktur | 
| Überwachen Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, Cloud-Infrastruktur | 
| Testen Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html)Stellen Sie sicher, dass Sie die Sicherheitsgruppe IDs für die beiden VPCs und die Sicherheitsgruppe IDs für die Standardsicherheitsgruppen in beiden Gruppen aufzeichnen VPCs. | AWS DevOps, Cloud-Infrastruktur | 

### Erstellen Sie eine CI/CD Pipeline für einen Microservice
<a name="create-a-ci-cd-pipeline-for-a-microservice"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Infrastruktur für den Microservice. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html)Sie können die Werte für beide Befehle auch mithilfe der `cdk.json` Datei im Verzeichnis angeben. | AWS DevOps, Cloud-Infrastruktur | 
| Überwachen Sie den CloudFormation AWS-Stack. | Öffnen Sie die CloudFormation AWS-Konsole und überwachen Sie den Fortschritt des `myservice1-cicd-stack` Stacks. Schließlich ändert sich der Status zu `CREATE_COMPLETE`*.* | AWS DevOps, Cloud-Infrastruktur | 
| Testen Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) |  | 
| Verwenden Sie die Pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, Cloud-Infrastruktur | 
| Wiederhole dieses Epos für jeden Microservice. | Wiederholen Sie die Aufgaben in diesem Epos, um eine CI/CD Pipeline für jeden Ihrer Microservices zu erstellen. | AWS DevOps, Cloud-Infrastruktur | 

## Zugehörige Ressourcen
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-resources"></a>
+ [Verwenden von Python mit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-python.html) 
+ [AWS CDK Python-Referenz](https://docs.aws.amazon.com/cdk/api/latest/python/index.html)
+ [Einen AWS Fargate-Service mithilfe des AWS CDK erstellen](https://docs.aws.amazon.com/cdk/latest/guide/ecs_example.html)

## Zusätzliche Informationen
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-additional"></a>

**`cdk synth` **-Befehl

```
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
```

**`cdk deploy `command**

```
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice> 
```

## Anlagen
<a name="attachments-05ac2cad-408e-433f-8150-0a2b71f63cfd"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/05ac2cad-408e-433f-8150-0a2b71f63cfd/attachments/attachment.zip)

# Erstellen und übertragen Sie Docker-Images mithilfe von GitHub Actions und Terraform auf Amazon ECR
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform"></a>

*Ruchika Modi, Amazon Web Services*

## Zusammenfassung
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-summary"></a>

Dieses Muster erklärt, wie Sie wiederverwendbare GitHub Workflows erstellen können, um Ihr Dockerfile zu erstellen und das resultierende Image an Amazon Elastic Container Registry (Amazon ECR) zu übertragen. Das Muster automatisiert den Erstellungsprozess Ihrer Dockerfiles mithilfe von Terraform und Aktionen. GitHub Dies minimiert die Möglichkeit menschlicher Fehler und reduziert die Bereitstellungszeit erheblich.

Eine GitHub Push-Aktion zum Hauptzweig Ihres GitHub Repositorys leitet die Bereitstellung von Ressourcen ein. Der Workflow erstellt ein eindeutiges Amazon ECR-Repository, das auf der Kombination aus GitHub Organisation und Repository-Name basiert. Anschließend wird das Dockerfile-Image in das Amazon ECR-Repository übertragen.

## Voraussetzungen und Einschränkungen
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Ein aktives GitHub Konto.
+ Ein [GitHub Repositorium](https://docs.github.com/en/get-started/quickstart/create-a-repo).
+ Terraform Version 1 oder höher wurde [installiert und konfiguriert](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli).
+ Ein Amazon Simple Storage Service (Amazon S3) -Bucket für das [Terraform-Backend](https://developer.hashicorp.com/terraform/language/settings/backends/s3).
+ Eine [Amazon DynamoDB-Tabelle](https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwjO95K9xqCCAxW-KIMDHfOvD7IYABADGgJzZg&gclid=EAIaIQobChMIzveSvcagggMVviiDAx3zrw-yEAAYASADEgJYWfD_BwE&ohost=www.google.com&cid=CAASJuRoKjv_llGjIU3liZ4T2IRecPqw0dVHSvjZ7bee1lvcc36K_lO_&sig=AOD64_1b294pq65HiFN-T1YxQAuXmRu_hw&adurl&ved=2ahUKEwjhiY29xqCCAxUgzjgGHRu6CAIQqyQoAnoECAkQDQ) für Terraform-Statussperrung und Konsistenz. Die Tabelle muss einen Partitionsschlüssel haben, der den Typ `LockID` hat. `String` Wenn dies nicht konfiguriert ist, wird die Statussperre deaktiviert.
+ Eine AWS Identity and Access Management (IAM) -Rolle, die über Berechtigungen zum Einrichten des Amazon S3 S3-Backends für Terraform verfügt. [Anweisungen zur Konfiguration finden Sie in der Terraform-Dokumentation.](https://developer.hashicorp.com/terraform/language/settings/backends/s3#assume-role-configuration)

**Einschränkungen**

Dieser wiederverwendbare Code wurde nur mit GitHub Aktionen getestet.

## Architektur
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon ECR-Repository
+ GitHub Aktionen
+ Terraform

**Zielarchitektur**

![\[Workflow zum Erstellen wiederverwendbarer GitHub Workflows zum Erstellen von Dockerfiles und zum Pushen von Images an Amazon ECR.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c39c110e-cbe5-459e-a0aa-de27e884fb10/images/298e0e16-3054-49b7-8695-db510e0df2df.png)


Das Diagramm veranschaulicht folgende Vorgänge:

1. Ein Benutzer fügt dem Repository ein Dockerfile und Terraform-Vorlagen hinzu. GitHub 

2. Diese Ergänzungen initiieren einen Aktions-Workflow. GitHub 

3. Der Workflow prüft, ob ein Amazon ECR-Repository vorhanden ist. Wenn nicht, erstellt er das Repository auf der Grundlage der GitHub Organisation und des Repository-Namens.

4. Der Workflow erstellt das Dockerfile und überträgt das Image in das Amazon ECR-Repository.

## Tools
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-tools"></a>

**Amazon-Dienste**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Registry-Service, der sicher, skalierbar und zuverlässig ist.

**Andere Tools**
+ [GitHub Actions](https://docs.github.com/en/actions) ist in die GitHub Plattform integriert und hilft Ihnen dabei, Workflows in Ihren GitHub Repositorys zu erstellen, gemeinsam zu nutzen und auszuführen. Sie können GitHub Aktionen verwenden, um Aufgaben wie das Erstellen, Testen und Bereitstellen Ihres Codes zu automatisieren.
+ [Terraform](https://developer.hashicorp.com/terraform/intro) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Infrastrukturen erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Docker ECR Actions Workflow-Repository](https://github.com/aws-samples/docker-ecr-actions-workflow) verfügbar.
+ Wenn Sie GitHub Aktionen erstellen, werden Docker-Workflow-Dateien im `/.github/workflows/` Ordner dieses Repositorys gespeichert. Der Workflow für diese Lösung befindet sich in der Datei [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml).
+ Der `e2e-test` Ordner enthält ein Dockerfile-Beispiel zum Nachschlagen und Testen.

## Best Practices
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-best-practices"></a>
+ [Bewährte Methoden für das Schreiben von Dockerfiles finden Sie in der Docker-Dokumentation.](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)
+ Verwenden Sie einen [VPC-Endpunkt für Amazon ECR](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). VPC-Endpunkte werden von AWS unterstützt PrivateLink, einer Technologie, mit der Sie privat über private IP-Adressen auf Amazon ECR APIs zugreifen können. Bei Amazon ECS-Aufgaben, die den Starttyp Fargate verwenden, ermöglicht der VPC-Endpunkt der Aufgabe, private Images aus Amazon ECR abzurufen, ohne der Aufgabe eine öffentliche IP-Adresse zuzuweisen.

## Epen
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-epics"></a>

### Richten Sie den OIDC-Anbieter und das Repository ein GitHub
<a name="set-up-the-oidc-provider-and-github-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie OpenID Connect. | Erstellen Sie einen OpenID Connect (OIDC) -Anbieter. Sie verwenden den Anbieter in der Vertrauensrichtlinie für die in dieser Aktion verwendete IAM-Rolle. Anweisungen finden Sie in der GitHub Dokumentation unter [Konfiguration von OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services). | AWS-Administrator, AWS DevOps, Allgemeines AWS | 
| Klonen Sie das GitHub Repository. | Klonen Sie das GitHub [Docker ECR Actions Workflow-Repository](https://github.com/aws-samples/docker-ecr-actions-workflow) in Ihren lokalen Ordner:<pre>$git clone https://github.com/aws-samples/docker-ecr-actions-workflow</pre> | DevOps Ingenieur | 

### Passen Sie den GitHub wiederverwendbaren Workflow an und stellen Sie das Docker-Image bereit
<a name="customize-the-github-reusable-workflow-and-deploy-the-docker-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Passen Sie das Ereignis an, das den Docker-Workflow initiiert. | [Der Workflow für diese Lösung befindet sich in workflow.yaml.](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml) Dieses Skript ist derzeit so konfiguriert, dass es Ressourcen bereitstellt, wenn es das Ereignis empfängt. `workflow_dispatch` Sie können diese Konfiguration anpassen, indem Sie das Ereignis in einen anderen übergeordneten Workflow ändern `workflow_call` und den Workflow von dort aufrufen. | DevOps Ingenieur | 
| Passen Sie den Arbeitsablauf an. | Die Datei [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml) ist so konfiguriert, dass sie einen dynamischen, wiederverwendbaren Workflow erstellt. GitHub Sie können diese Datei bearbeiten, um die Standardkonfiguration anzupassen, oder Sie können die Eingabewerte aus der GitHub Aktionskonsole übergeben, wenn Sie das `workflow_dispatch` Ereignis verwenden, um die Bereitstellung manuell einzuleiten.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.html) | DevOps Ingenieur | 
| Stellen Sie die Terraform-Vorlagen bereit. | Der Workflow stellt automatisch die Terraform-Vorlagen bereit, die das Amazon ECR-Repository erstellen, basierend auf dem von Ihnen konfigurierten GitHub Ereignis. Diese Vorlagen sind als `.tf` Dateien im [Stammverzeichnis](https://github.com/aws-samples/docker-ecr-actions-workflow/tree/main) des Github-Repositorys verfügbar. | AWS DevOps, DevOps Ingenieur | 

## Fehlerbehebung
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Probleme oder Fehler bei der Konfiguration von Amazon S3 und DynamoDB als Terraform-Remote-Backend. | Folgen Sie den Anweisungen in der [Terraform-Dokumentation](https://developer.hashicorp.com/terraform/language/settings/backends/s3), um die erforderlichen Berechtigungen für die Amazon S3- und DynamoDB-Ressourcen für die Remote-Backend-Konfiguration einzurichten. | 
| Der Workflow mit dem Ereignis konnte nicht ausgeführt oder gestartet werden. `workflow_dispatch` | Der Workflow, der für die Bereitstellung über das `workflow_dispatch` Ereignis konfiguriert ist, funktioniert nur, wenn der Workflow auch für den Hauptzweig konfiguriert ist. | 

## Zugehörige Ressourcen
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-resources"></a>
+ [Wiederverwendung von Workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows) (GitHub Dokumentation)
+ [Einen Workflow auslösen (Dokumentation](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow)) GitHub 

# Erstellen und testen Sie iOS-Apps mit AWS CodeCommit CodePipeline, AWS und AWS Device Farm
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Zusammenfassung
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-summary"></a>

Dieses Muster beschreibt die Schritte zur Erstellung einer CI/CD-Pipeline (Continuous Integration and Continuous Delivery), die AWS verwendet, CodePipeline um iOS-Anwendungen auf echten Geräten auf AWS zu erstellen und zu testen. Das Muster verwendet AWS CodeCommit zum Speichern des Anwendungscodes, das Jenkins-Open-Source-Tool zum Erstellen der iOS-Anwendung und AWS Device Farm, um die erstellte Anwendung auf realen Geräten zu testen. Diese drei Phasen werden mithilfe von AWS CodePipeline zusammen in einer Pipeline orchestriert.

Dieses Muster basiert auf dem Beitrag [Erstellen und Testen von iOS- und iPadOS-Apps mit AWS DevOps und mobilen Diensten](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) im DevOps AWS-Blog. Eine ausführliche Anleitung finden Sie im Blogbeitrag.

## Voraussetzungen und Einschränkungen
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein Apple-Entwicklerkonto
+ Server erstellen (macOS)
+ [Xcode](https://developer.apple.com/xcode/) Version 11.3 (auf dem Build-Server installiert und eingerichtet)
+ Auf der Workstation [installierte](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) und [konfigurierte](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) AWS-Befehlszeilenschnittstelle (AWS CLI)
+ Grundkenntnisse in [Git](https://git-scm.com/docs)

**Einschränkungen**
+ Auf dem Anwendungs-Build-Server muss macOS ausgeführt werden. 
+ Der Build-Server muss über eine öffentliche IP-Adresse verfügen, sodass er sich remote mit ihm verbinden CodePipeline kann, um Builds zu initiieren.

## Architektur
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-architecture"></a>

**Quelltechnologie-Stack**
+ Ein Prozess zur Erstellung von iOS-Anwendungen vor Ort, der die Verwendung eines Simulators oder einen manuellen Test auf physischen Geräten beinhaltet

**Zieltechnologie-Stack**
+ Ein CodeCommit AWS-Repository zum Speichern von Anwendungsquellcode
+ Ein Jenkins-Server für Anwendungsbuilds mit Xcode
+ Ein AWS Device Farm Farm-Gerätepool zum Testen von Anwendungen auf realen Geräten

**Zielarchitektur**

Wenn ein Benutzer Änderungen am Quell-Repository festschreibt, ruft die Pipeline (AWS CodePipeline) den Code aus dem Quell-Repository ab, initiiert einen Jenkins-Build und übergibt den Anwendungscode an Jenkins. Nach dem Build ruft die Pipeline das Build-Artefakt ab und startet einen AWS Device Farm Farm-Job, um die Anwendung anhand eines Gerätepools zu testen.

 

![\[Die CI/CD-Pipeline verwendet AWS CodePipeline , um iOS-Anwendungen auf realen Geräten zu erstellen und zu testen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/06fbd82f-4aed-441c-818c-5f89f56af78e/images/0ae3d7b6-b40c-44ef-9580-8c8266c3d841.png)


## Tools
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-tools"></a>
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ist ein vollständig verwalteter Continuous Delivery Service, der Sie bei der Automatisierung Ihrer Release-Pipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates unterstützt. CodePipeline automatisiert die Erstellungs-, Test- und Bereitstellungsphasen Ihres Release-Prozesses bei jeder Codeänderung auf der Grundlage des von Ihnen definierten Release-Modells.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein vollständig verwalteter Quellcodeverwaltungsservice, der sichere Git-basierte Repositorys hostet. Es erleichtert Teams die Zusammenarbeit an Code in einem sicheren und hoch skalierbaren Ökosystem. CodeCommit macht es überflüssig, Ihr eigenes Quellcodeverwaltungssystem zu betreiben oder sich Gedanken über die Skalierung der Infrastruktur zu machen.
+ [AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) ist ein Service zum Testen von Anwendungen, mit dem Sie die Qualität Ihrer Web- und mobilen Apps verbessern können, indem Sie sie mit einer Vielzahl von Desktop-Browsern und echten Mobilgeräten testen, ohne eine Testinfrastruktur bereitstellen und verwalten zu müssen.
+ [Jenkins](https://www.jenkins.io/) ist ein Open-Source-Automatisierungsserver, der es Entwicklern ermöglicht, ihre Software zu erstellen, zu testen und bereitzustellen.

## Epen
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-epics"></a>

### Richten Sie die Build-Umgebung ein
<a name="set-up-the-build-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie Jenkins auf dem Build-Server, auf dem macOS ausgeführt wird. | Jenkins wird für die Erstellung der Anwendung verwendet, daher müssen Sie sie zuerst auf dem Build-Server installieren. Detaillierte Anweisungen für diese und nachfolgende Aufgaben finden Sie im AWS-Blogbeitrag [Erstellen und Testen von iOS- und iPadOS-Apps mit AWS DevOps und mobilen Services](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) und anderen Ressourcen im Abschnitt [Verwandte Ressourcen](#build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources) am Ende dieses Musters. | DevOps | 
| Konfigurieren Sie Jenkins. | Folgen Sie den Anweisungen auf dem Bildschirm, um Jenkins zu konfigurieren. | DevOps | 
| Installieren Sie das CodePipeline AWS-Plugin für Jenkins. | Dieses Plugin muss auf dem Jenkins-Server installiert sein, damit Jenkins mit dem AWS-Service interagieren kann. CodePipeline  | DevOps | 
| Erstellen Sie ein Jenkins-Freestyle-Projekt. | Erstellen Sie in Jenkins ein Freestyle-Projekt. Konfigurieren Sie das Projekt, um Trigger und andere Build-Konfigurationsoptionen anzugeben. | DevOps | 

### AWS-Gerätefarm konfigurieren
<a name="configure-aws-device-farm"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Device Farm Farm-Projekt. | Öffnen Sie die AWS Device Farm Farm-Konsole. Erstellen Sie ein Projekt und einen Gerätepool zum Testen. Anweisungen finden Sie im Blogbeitrag. | Developer | 

### Konfigurieren Sie das Quell-Repository
<a name="configure-the-source-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein CodeCommit Repository. | Erstellen Sie ein Repository, in dem der Quellcode gespeichert wird. | DevOps | 
| Übergeben Sie Ihren Anwendungscode in das Repository. | Connect zu dem CodeCommit Repository her, das Sie erstellt haben. Übertragen Sie den Code von Ihrem lokalen Computer in das Repository. | DevOps | 

### Konfigurieren Sie die Pipeline
<a name="configure-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Pipeline in AWS CodePipeline. | Öffnen Sie die CodePipeline AWS-Konsole und erstellen Sie eine Pipeline. Die Pipeline orchestriert alle Phasen des CI/CD Prozesses. Anweisungen finden Sie im AWS-Blogbeitrag [Erstellen und Testen von iOS- und iPadOS-Apps mit AWS DevOps und mobilen Services](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/). | DevOps | 
| Fügen Sie der Pipeline eine Testphase hinzu. | Um eine Testphase hinzuzufügen und sie in AWS Device Farm zu integrieren, bearbeiten Sie die Pipeline. | DevOps | 
| Initiieren Sie die Pipeline. | Um die Pipeline und den CI/CD Prozess zu starten, wählen Sie **Änderung veröffentlichen**. | DevOps | 

### Testergebnisse der Anwendung anzeigen
<a name="view-application-test-results"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Testergebnisse. | Wählen Sie in der AWS Device Farm Farm-Konsole das von Ihnen erstellte Projekt aus und überprüfen Sie die Ergebnisse der Tests. In der Konsole werden die Details der einzelnen Tests angezeigt. | Developer | 

## Zugehörige Ressourcen
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources"></a>

**Step-by-step Anweisungen für dieses Muster**
+ [iOS- und iPadOS-Apps mit AWS und mobilen Services erstellen DevOps und testen](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) ( DevOps AWS-Blogbeitrag)

**AWS-Gerätefarm konfigurieren**
+ [AWS Device Farm Farm-Konsole](https://console.aws.amazon.com/devicefarm)

**Konfigurieren Sie das Quell-Repository**
+ [Ein CodeCommit AWS-Repository erstellen](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html)
+ [Stellen Sie eine Connect zu einem CodeCommit AWS-Repository her](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)

**Konfigurieren Sie die Pipeline**
+ [ CodePipeline AWS-Konsole](https://console.aws.amazon.com/codesuite/codepipeline/home)

**Weitere Ressourcen**
+ [ CodePipeline AWS-Dokumentation](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [ CodeCommit AWS-Dokumentation](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+ [Dokumentation zu AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html)
+ [Jenkins-Dokumentation](https://www.jenkins.io/doc/)
+ [Jenkins-Installation auf macOS](https://www.jenkins.io/download/weekly/macos/)
+ [ CodePipeline AWS-Plugin für Jenkins](https://plugins.jenkins.io/aws-codepipeline/)
+ [Xcode-Installation](https://developer.apple.com/xcode/)
+ [Installation](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) und [Konfiguration](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) von AWS CLI
+ [Git-Dokumentation](https://git-scm.com/docs)

# Konfiguration der gegenseitigen TLS-Authentifizierung für Anwendungen, die auf Amazon EKS ausgeführt werden
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Zusammenfassung
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-summary"></a>

Zertifikatsbasierte Mutual Transport Layer Security (TLS) ist eine optionale TLS-Komponente, die eine bidirektionale Peer-Authentifizierung zwischen Servern und Clients ermöglicht. Bei Mutual TLS müssen Clients während der Sitzungsaushandlung ein X.509-Zertifikat bereitstellen. Der Server verwendet dieses Zertifikat, um den Client zu identifizieren und zu authentifizieren.

Mutual TLS ist eine häufige Anforderung für Internet of Things (IoT) -Anwendungen und kann für business-to-business Anwendungen oder Standards wie [Open Banking](https://docs.aws.amazon.com/wellarchitected/latest/financial-services-industry-lens/open-banking.html) verwendet werden.

Dieses Muster beschreibt, wie Mutual TLS für Anwendungen, die auf einem Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster ausgeführt werden, mithilfe eines NGINX-Ingress-Controllers konfiguriert wird. Sie können integrierte Mutual TLS-Funktionen für den NGINX-Ingress-Controller aktivieren, indem Sie die Ingress-Ressource mit Anmerkungen versehen. [Weitere Informationen zu gegenseitigen TLS-Anmerkungen auf NGINX-Controllern finden Sie in der Kubernetes-Dokumentation unter Authentifizierung mit Client-Zertifikaten.](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#client-certificate-authentication)

**Wichtig**  
Dieses Muster verwendet selbstsignierte Zertifikate. Es wird empfohlen, dieses Muster nur mit Testclustern und nicht in Produktionsumgebungen zu verwenden. Wenn Sie dieses Muster in einer Produktionsumgebung verwenden möchten, können Sie [AWS Private Certificate Authority (AWS Private CA)](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) oder Ihren bestehenden Public Key Infrastructure (PKI) -Standard verwenden, um private Zertifikate auszustellen.

## Voraussetzungen und Einschränkungen
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto.
+ Ein vorhandener Amazon-EKS-Cluster.
+ AWS-Befehlszeilenschnittstelle (AWS CLI) Version 1.7 oder höher, installiert und konfiguriert auf macOS, Linux oder Windows.
+ Das kubectl-Befehlszeilenprogramm, das für den Zugriff auf den Amazon EKS-Cluster installiert und konfiguriert wurde. Weitere Informationen dazu finden Sie unter [Installation von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) in der Amazon EKS-Dokumentation.
+ Ein vorhandener DNS-Name (Domain Name System) zum Testen der Anwendung.

**Einschränkungen**
+ Dieses Muster verwendet selbstsignierte Zertifikate. Es wird empfohlen, dieses Muster nur mit Testclustern und nicht in Produktionsumgebungen zu verwenden.

## Architektur
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-architecture"></a>

![\[Konfiguration der gegenseitigen TLS-Authentifizierung für Anwendungen, die auf Amazon EKS ausgeführt werden\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/ae2761e3-7ed2-4c2a-ba54-a4ddce8a1e7e/images/cefc60f9-2f29-4052-b7ae-df4eb6395e1c.png)


**Technologie-Stack**
+ Amazon EKS
+ Amazon Route 53
+ Kubectl

## Tools
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-tools"></a>
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) hilft Ihnen, Kubernetes auf AWS auszuführen, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten zu müssen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [Kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) ist ein Befehlszeilenprogramm, das Sie für die Interaktion mit einem Amazon EKS-Cluster verwenden.

## Epen
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-epics"></a>

### Generieren Sie die selbstsignierten Zertifikate
<a name="generate-the-self-signed-certificates"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Generieren Sie den CA-Schlüssel und das Zertifikat. | Generieren Sie den Schlüssel und das Zertifikat der Zertifizierungsstelle (CA), indem Sie den folgenden Befehl ausführen.<pre>openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 356 -nodes -subj '/CN=Test Cert Authority'</pre> | DevOps Ingenieur | 
| Generieren Sie den Serverschlüssel und das Zertifikat und signieren Sie mit dem CA-Zertifikat. | Generieren Sie den Serverschlüssel und das Zertifikat und signieren Sie mit dem CA-Zertifikat, indem Sie den folgenden Befehl ausführen.<pre>openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN= <your_domain_name> ' && openssl x509 -req -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt</pre>Stellen Sie sicher, dass Sie es `<your_domain_name>` durch Ihren vorhandenen Domainnamen ersetzen. | DevOps Ingenieur | 
|  Generieren Sie den Client-Schlüssel und das Zertifikat und signieren Sie mit dem CA-Zertifikat. | Generieren Sie den Client-Schlüssel und das Zertifikat und signieren Sie mit dem CA-Zertifikat, indem Sie den folgenden Befehl ausführen.<pre>openssl req -new -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj '/CN=Test' && openssl x509 -req -sha256 -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt</pre> | DevOps Ingenieur | 

### Stellen Sie den NGINX-Ingress-Controller bereit
<a name="deploy-the-nginx-ingress-controller"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den NGINX-Ingress-Controller in Ihrem Amazon EKS-Cluster bereit. | Stellen Sie den NGINX-Ingress-Controller mithilfe des folgenden Befehls bereit.<pre>kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/aws/deploy.yaml</pre> | DevOps Ingenieur | 
|  Stellen Sie sicher, dass der NGINX-Ingress-Controller-Dienst ausgeführt wird. | Stellen Sie mithilfe des folgenden Befehls sicher, dass der NGINX-Ingress-Controller-Dienst ausgeführt wird.<pre>kubectl get svc -n ingress-nginx</pre>Stellen Sie sicher, dass das Adressfeld den Domänennamen des Network Load Balancers enthält. | DevOps Ingenieur | 

### Erstellen Sie einen Namespace im Amazon EKS-Cluster, um gegenseitiges TLS zu testen
<a name="create-a-namespace-in-the-amazon-eks-cluster-to-test-mutual-tls"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Namespace im Amazon EKS-Cluster.  | Erstellen Sie einen Namespace, `mtls` der in Ihrem Amazon EKS-Cluster aufgerufen wird, indem Sie den folgenden Befehl ausführen. <pre>kubectl create ns mtls</pre>Dadurch wird die Beispielanwendung zum Testen von Mutual TLS bereitgestellt. | DevOps Ingenieur | 

### Erstellen Sie die Bereitstellung und den Service für die Beispielanwendung
<a name="create-the-deployment-and-service-for-the-sample-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Kubernetes-Bereitstellung und den Dienst im mtls-Namespace. | Erstellen Sie eine Datei namens `mtls.yaml`. Fügen Sie folgenden Code in die Datei ein. <pre>kind: Deployment<br />apiVersion: apps/v1<br />metadata:<br />  name: mtls-app<br />  labels:<br />    app: mtls<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: mtls<br />  template:<br />    metadata:<br />      labels:<br />        app: mtls<br />    spec:<br />      containers:<br />      - name: mtls-app<br />        image: hashicorp/http-echo<br />        args:<br />          - "-text=mTLS is working"<br /><br /><br />---<br /><br />kind: Service<br />apiVersion: v1<br />metadata:<br />  name: mtls-service<br />spec:<br />  selector:<br />    app: mtls<br />  ports:<br />    - port: 5678 # Default port for image</pre> Erstellen Sie die Kubernetes-Bereitstellung und den Kubernetes-Dienst im `mtls` Namespace, indem Sie den folgenden Befehl ausführen.<pre>kubectl create -f mtls.yaml -n mtls</pre> | DevOps Ingenieur | 
| Stellen Sie sicher, dass die Kubernetes-Bereitstellung erstellt wurde. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Bereitstellung erstellt wurde und einen Pod im Status „Verfügbar“ hat.<pre>kubectl get deploy -n mtls</pre> | DevOps Ingenieur | 
| Stellen Sie sicher, dass der Kubernetes-Dienst erstellt wurde. | Stellen Sie sicher, dass der Kubernetes-Dienst erstellt wurde, indem Sie den folgenden Befehl ausführen.<pre>kubectl get service -n mtls</pre> | DevOps Ingenieur | 

### Erstellen Sie ein Geheimnis im MTLS-Namespace
<a name="create-a-secret-in-the-mtls-namespace"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Geheimnis für die Eingangsressource. | Führen Sie den folgenden Befehl aus, um mithilfe der zuvor erstellten Zertifikate ein Geheimnis für den NGINX-Ingress-Controller zu erstellen.<pre>kubectl create secret generic mtls-certs --from-file=tls.crt=server.crt --from-file=tls.key=server.key --from-file=ca.crt=ca.crt -n mtls </pre>Ihr Secret umfasst ein Serverzertifikat für den Client zur Identifizierung des Servers und ein CA-Zertifikat für den Server zur Überprüfung der Client-Zertifikate. | DevOps Ingenieur | 

### Erstellen Sie die Ingress-Ressource im MTLS-Namespace
<a name="create-the-ingress-resource-in-the-mtls-namespace"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Ingress-Ressource im mtls-Namespace. | Erstellen Sie eine Datei namens `ingress.yaml`. Fügen Sie den folgenden Code in die Datei ein (`<your_domain_name>`ersetzen Sie ihn durch Ihren vorhandenen Domainnamen).<pre>apiVersion: networking.k8s.io/v1<br />kind: Ingress<br />metadata:<br />  annotations:<br />    nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"<br />    nginx.ingress.kubernetes.io/auth-tls-secret: mtls/mtls-certs<br />  name: mtls-ingress<br />spec:<br />  ingressClassName: nginx<br />  rules:<br />  - host: "*.<your_domain_name>"<br />    http:<br />      paths:<br />      - path: /<br />        pathType: Prefix<br />        backend:<br />          service:<br />            name: mtls-service<br />            port:<br />              number: 5678<br />  tls:<br />  - hosts:<br />    - "*.<your_domain_name>"<br />    secretName: mtls-certs</pre>Erstellen Sie die Ingress-Ressource im `mtls` Namespace, indem Sie den folgenden Befehl ausführen.<pre>kubectl create -f ingress.yaml -n mtls</pre>Das bedeutet, dass der NGINX-Ingress-Controller den Datenverkehr an Ihre Beispielanwendung weiterleiten kann. | DevOps Ingenieur | 
| Stellen Sie sicher, dass die Eingangsressource erstellt wurde. | Stellen Sie sicher, dass die Eingangsressource erstellt wurde, indem Sie den folgenden Befehl ausführen.<pre>kubectl get ing -n mtls</pre>Stellen Sie sicher, dass die Adresse der Eingangsressource den Load Balancer anzeigt, der für den NGINX-Ingress-Controller erstellt wurde. | DevOps Ingenieur | 

### Konfigurieren Sie DNS so, dass der Hostname auf den Load Balancer verweist
<a name="configure-dns-to-point-the-hostname-to-the-load-balancer"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen CNAME-Eintrag, der auf den Load Balancer für den NGINX-Ingress-Controller verweist. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon Route 53 53-Konsole und erstellen Sie einen Canonical Name (CNAME) -Eintrag, der auf den Load Balancer für `mtls.<your_domain_name>` den NGINX-Ingress-Controller verweist.Weitere Informationen finden Sie unter [Erstellen von Datensätzen mithilfe der Route 53 53-Konsole](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) in der Route 53 53-Dokumentation. | DevOps Ingenieur | 

### Testen der Anwendung
<a name="test-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie das gegenseitige TLS-Setup ohne Zertifikate. | Führen Sie den folgenden Befehl aus.<pre>curl -k https://mtls.<your_domain_name> </pre>Sie sollten die Fehlermeldung „400 Kein erforderliches SSL-Zertifikat wurde gesendet“ erhalten. | DevOps Ingenieur | 
| Testen Sie das gegenseitige TLS-Setup mit Zertifikaten. | Führen Sie den folgenden Befehl aus.<pre>curl -k https://mtls.<your_domain_name> --cert client.crt --key client.key</pre>Sie sollten die Antwort „mTLS funktioniert“ erhalten. | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-resources"></a>
+ [Erstellen von Datensätzen mithilfe der Amazon Route 53 53-Konsole](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)
+ [Verwenden eines Network Load Balancer mit dem NGINX-Ingress-Controller auf Amazon EKS](https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/)
+ [Authentifizierung des Client-Zertifikats](https://kubernetes.github.io/ingress-nginx/examples/auth/client-certs/)

# Automatisieren Sie die Erstellung von Amazon WorkSpaces Applications-Ressourcen mit AWS CloudFormation
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation"></a>

*Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-summary"></a>

Dieses Muster enthält Codebeispiele und Schritte zur Automatisierung der Erstellung von [Amazon WorkSpaces Applications-Ressourcen](https://aws.amazon.com/workspaces/applications/) AWS Cloud mithilfe einer [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)Vorlage. Das Muster zeigt Ihnen, wie Sie mithilfe eines CloudFormation Stacks die Erstellung Ihrer WorkSpaces Anwendungsressourcen, einschließlich eines Image Builders, eines Images, einer Flotteninstanz und eines Stacks, automatisieren können. Sie können Ihre WorkSpaces Anwendungsanwendung in einem HTML5 -kompatiblen Browser an Endbenutzer streamen, indem Sie entweder den Desktop- oder den Anwendungsbereitstellungsmodus verwenden.

## Voraussetzungen und Einschränkungen
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine Annahme der Allgemeinen Geschäftsbedingungen für WorkSpaces Bewerbungen
+ [Grundkenntnisse in Bezug auf WorkSpaces Anwendungsressourcen wie [Flotten und Stacks sowie Image](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html) Builder](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-image-builders.html)

**Einschränkungen**
+ Sie können die einer WorkSpaces Anwendungsinstanz zugeordnete [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)(IAM-) Rolle nicht mehr ändern, nachdem diese Instanz erstellt wurde.
+ Sie können keine Eigenschaften (wie das [Subnetz](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-basics) oder die [Sicherheitsgruppe](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)) auf der WorkSpaces Applications Image Builder-Instanz ändern, nachdem dieser Image Builder erstellt wurde.

## Architektur
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-architecture"></a>

Das folgende Diagramm zeigt, wie Sie die Erstellung von WorkSpaces Anwendungsressourcen mithilfe einer CloudFormation Vorlage automatisieren können.

![\[Arbeitsablauf für die automatische Erstellung von WorkSpaces Anwendungsressourcen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/4f0205f5-5b91-4832-9f0f-2135ae866226/images/cb578939-d9af-4f60-93c9-286881df4c3a.png)


Das Diagramm zeigt den folgenden Workflow:

1. Sie erstellen eine CloudFormation Vorlage auf der Grundlage des YAML-Codes im Abschnitt [Zusätzliche Informationen](#automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-additional) dieses Musters.

1. Die CloudFormation Vorlage erstellt einen CloudFormation Teststapel.

   1. (Optional) Sie erstellen eine Image Builder-Instanz mithilfe von WorkSpaces Applications.

   1. (Optional) Sie erstellen ein Windows-Abbild mithilfe Ihrer benutzerdefinierten Software.

1. Der CloudFormation Stack erstellt eine WorkSpaces Applications-Flotteninstanz und einen Stack.

1. Sie stellen Ihre WorkSpaces Anwendungsressourcen für Endbenutzer in einem HTML5 -kompatiblen Browser bereit.

## Tools
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-tools"></a>
+ [Amazon WorkSpaces Applications](https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html) ist ein vollständig verwalteter Anwendungs-Streaming-Service, mit dem Sie von überall aus sofort auf Ihre Desktop-Anwendungen zugreifen können. WorkSpaces Applications verwaltet die AWS Ressourcen, die für das Hosten und Ausführen Ihrer Anwendungen erforderlich sind, skaliert automatisch und bietet Ihren Benutzern bei Bedarf Zugriff.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, Ihre AWS Ressourcen zu modellieren und einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus zu verwalten. Sie können eine Vorlage verwenden, um Ihre Ressourcen und ihre Abhängigkeiten zu beschreiben und sie zusammen als Stapel zu starten und zu konfigurieren, anstatt Ressourcen einzeln zu verwalten. Sie können Stacks über mehrere und hinweg verwalten AWS-Konten und AWS-Regionen bereitstellen.

## Best Practices
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-best-practices"></a>
+ **Netzwerkzugriff für Image Builder korrekt konfigurieren** — Starten Sie Image Builder in Virtual Private Cloud (VPC) -Subnetzen mit ordnungsgemäßem Internetzugang, indem Sie ein NAT-Gateway für den ausschließlich ausgehenden Internetzugang verwenden.

  Testen Sie die Netzwerkkonnektivität zu den erforderlichen Ressourcen (wie Anwendungsservern, Datenbanken und Lizenzservern), bevor Sie Images erstellen. Stellen Sie sicher, dass VPC-Routing-Tabellen Verbindungen zu allen erforderlichen Netzwerkressourcen zulassen. Weitere Informationen finden Sie in der WorkSpaces Anwendungsdokumentation unter [Internetzugang](https://docs.aws.amazon.com/appstream2/latest/developerguide/internet-access.html).
+ **Proaktive Überwachung der Flottenkapazität anhand der Servicekontingente** — Die Kontingente für WorkSpaces Anwendungsinstanzen und -größen gelten pro AWS-Konto, pro AWS-Region. Wenn Sie mehrere Flotten in derselben Region haben, die denselben Instance-Typ und dieselbe Größe verwenden, muss die Gesamtzahl der Instances in allen Flotten in dieser Region kleiner oder gleich dem geltenden Kontingent sein. Weitere Informationen finden Sie unter [Problembehandlung bei Flotten](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting-fleets.html) in der WorkSpaces Anwendungsdokumentation.
+ **Testen Sie Anwendungen vor der Flottenbereitstellung im Image Builder Builder-Testmodus** — Überprüfen Sie Anwendungen immer im Image Builder Builder-Testmodus, bevor Sie Images erstellen und für Flotten bereitstellen. Der Testmodus simuliert die eingeschränkten Berechtigungen, die Endbenutzer für Flotteninstanzen haben. Weitere Informationen finden Sie unter [Problembehandlung bei Image Builders](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting-image-builder.html#troubleshooting-07) in der WorkSpaces Anwendungsdokumentation.

## Epen
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-epics"></a>

### (Optional) Erstellen Sie ein WorkSpaces Anwendungs-Image
<a name="optional-create-a-aas2-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie benutzerdefinierte Software und erstellen Sie ein Image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html)Erwägen Sie, die AppLocker Windows-Funktion zu verwenden, um das Bild weiter zu sperren. | AWS DevOps, Cloud-Architekt | 

### Stellen Sie die CloudFormation Vorlage bereit
<a name="deploy-the-cfn-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die CloudFormation Vorlage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html) | AWS-Systemadministrator, Cloud-Administrator, Cloud-Architekt, Allgemeines AWS, AWS-Administrator | 
| Erstellen Sie mithilfe der Vorlage einen CloudFormation Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html) | App-Besitzer, AWS-Systemadministrator, Windows Engineer | 

## Fehlerbehebung
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Verschiedene Probleme | Weitere Informationen finden Sie in der WorkSpaces Anwendungsdokumentation unter [Problembehandlung](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting.html). | 

## Zugehörige Ressourcen
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-resources"></a>

**Referenzen**
+ [Erste Schritte mit Amazon WorkSpaces Applications: Einrichtung mit Beispielanwendungen](https://docs.aws.amazon.com/appstream2/latest/developerguide/getting-started.html)
+ [Erstellen Sie eine Amazon WorkSpaces Applications-Flotte und einen Stack](https://docs.aws.amazon.com/appstream2/latest/developerguide/set-up-stacks-fleets.html)

**Tutorials und Videos**
+ [Benutzerworkflow WorkSpaces für Amazon Applications](https://www.youtube.com/watch?v=hVGQ87-Uhrc)
+ [So migrieren Sie eine ältere Windows Forms-App zu WorkSpaces Amazon-Anwendungen](https://www.youtube.com/watch?v=CIImtS2iVbg)
+ [AWS re:Invent 2018: Sichere Bereitstellung von Desktop-Anwendungen mit WorkSpaces Amazon-Anwendungen (01) BAP2](https://www.youtube.com/watch?v=xNIyc_inOhM)

## Zusätzliche Informationen
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-additional"></a>

Der folgende Code ist ein Beispiel für eine CloudFormation Vorlage, mit der Sie automatisch WorkSpaces Anwendungsressourcen erstellen können.

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  SubnetIds:
    Type: 'List<AWS::EC2::Subnet::Id>'
  testSecurityGroup:
    Type: 'AWS::EC2::SecurityGroup::Id'
  ImageName:
    Type: String
Resources:
  
  AppStreamFleet:
    Type: 'AWS::AppStream::Fleet'
    Properties:
      ComputeCapacity:
        DesiredInstances: 5
      InstanceType: stream.standard.medium
      Name: appstream-test-fleet
      DisconnectTimeoutInSeconds: 1200
      FleetType: ON_DEMAND
      IdleDisconnectTimeoutInSeconds: 1200
      ImageName: !Ref ImageName
      MaxUserDurationInSeconds: 345600
      VpcConfig:
        SecurityGroupIds:
          - !Ref testSecurityGroup
        SubnetIds: !Ref SubnetIds
  AppStreamStack:
    Type: 'AWS::AppStream::Stack'
    Properties:
      Description: AppStream stack for test
      DisplayName: AppStream test Stack
      Name: appstream-test-stack
      StorageConnectors:
        - ConnectorType: HOMEFOLDERS
      UserSettings:
        - Action: CLIPBOARD_COPY_FROM_LOCAL_DEVICE
          Permission: ENABLED
        - Action: CLIPBOARD_COPY_TO_LOCAL_DEVICE
          Permission: ENABLED
        - Action: FILE_DOWNLOAD
          Permission: ENABLED
        - Action: PRINTING_TO_LOCAL_DEVICE
          Permission: ENABLED
  AppStreamFleetAssociation:
    Type: 'AWS::AppStream::StackFleetAssociation'
    Properties:
      FleetName: appstream-test-fleet
      StackName: appstream-test-stack
    DependsOn:
      - AppStreamFleet
      - AppStreamStack
```

# Erstellen Sie einen benutzerdefinierten Protokollparser für Amazon ECS mithilfe eines Firelens-Protokollrouters
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router"></a>

*Varun Sharma, Amazon Web Services*

## Zusammenfassung
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-summary"></a>

Firelens ist ein Protokollrouter für Amazon Elastic Container Service (Amazon ECS) und AWS Fargate. [Sie können Firelens verwenden, um Container-Logs von Amazon ECS an Amazon CloudWatch und andere Ziele (z. B. [Splunk](https://www.splunk.com/) oder Sumo Logic) weiterzuleiten.](https://www.sumologic.com/) Firelens arbeitet mit [Fluentd oder Fluent](https://www.fluentd.org/) [Bit](https://fluentbit.io/) als Protokollierungsagent, was bedeutet, dass Sie [Amazon ECS-Aufgabendefinitionsparameter](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) verwenden können, um Protokolle weiterzuleiten.

Wenn Sie sich dafür entscheiden, Protokolle auf Quellenebene zu analysieren, können Sie Ihre Protokolldaten analysieren und Abfragen durchführen, um effizienter und effektiver auf betriebliche Probleme zu reagieren. Da verschiedene Anwendungen unterschiedliche Protokollierungsmuster haben, müssen Sie einen benutzerdefinierten Parser verwenden, der die Protokolle strukturiert und die Suche am Zielort erleichtert.

Dieses Muster verwendet einen Firelens-Protokollrouter mit einem benutzerdefinierten Parser, um Protokolle CloudWatch von einer Spring Boot-Beispielanwendung, die auf Amazon ECS ausgeführt wird, zu übertragen. Anschließend können Sie Amazon CloudWatch Logs Insights verwenden, um die Protokolle auf der Grundlage benutzerdefinierter Felder zu filtern, die vom benutzerdefinierten Parser generiert werden. 

## Voraussetzungen und Einschränkungen
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto.
+ AWS-Befehlszeilenschnittstelle (AWS CLI), auf Ihrem lokalen Computer installiert und konfiguriert.
+ Docker, auf Ihrem lokalen Computer installiert und konfiguriert.
+ Eine bestehende Spring Boot-basierte containerisierte Anwendung in Amazon Elastic Container Registry (Amazon ECR). 

## Architektur
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-architecture"></a>

![\[Verwendung eines Firelens-Protokollrouters zum Übertragen von Protokollen CloudWatch von einer Anwendung, die auf Amazon ECS ausgeführt wird.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9/images/ef60e087-965a-40e9-9f80-35edbda2befe.png)


**Technologie-Stack**
+ CloudWatch
+ Amazon ECR
+ Amazon ECS
+ Fargate
+ Docker
+ Fluent Bit

## Tools
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-tools"></a>
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) — Amazon Elastic Container Registry (Amazon ECR) ist ein von AWS verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Stoppen und Verwalten von Containern in einem Cluster vereinfacht.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — IAM ist ein Webservice zur sicheren Steuerung des Zugriffs auf AWS-Services.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie mithilfe von Befehlen in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Docker](https://www.docker.com/) — Docker ist eine offene Plattform für die Entwicklung, den Versand und den Betrieb von Anwendungen.

**Code**

Die folgenden Dateien sind an dieses Muster angehängt:
+ `customFluentBit.zip`— Enthält die Dateien zum Hinzufügen der benutzerdefinierten Analyse und Konfigurationen.
+ `firelens_policy.json`— Enthält das Richtliniendokument zur Erstellung einer IAM-Richtlinie.
+ `Task.json`— Enthält eine Beispielaufgabendefinition für Amazon ECS.

## Epen
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-epics"></a>

### Erstellen Sie ein benutzerdefiniertes Fluent Bit-Bild
<a name="create-a-custom-fluent-bit-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon ECR-Konsole und erstellen Sie ein Repository namens`fluentbit_custom`.Weitere Informationen dazu finden Sie unter [Erstellen eines Repositorys](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) in der Amazon ECR-Dokumentation. | Systemadministrator, Entwickler | 
| Entpacken Sie das customFluentBit ZIP-Paket. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) |  | 
| Erstellen Sie das benutzerdefinierte Docker-Image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html)Weitere Informationen dazu finden Sie unter [Pushing a Docker-Image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) in der Amazon ECR-Dokumentation.  | Systemadministrator, Entwickler | 

### Den Amazon ECS-Cluster einrichten
<a name="set-up-the-amazon-ecs-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon-ECS-Cluster. | Erstellen Sie einen Amazon ECS-Cluster, indem Sie den Anweisungen im Abschnitt *Nur Netzwerkvorlage* unter [Cluster erstellen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) in der Amazon ECS-Dokumentation folgen.Stellen Sie sicher, dass Sie **Create VPC** wählen, um eine neue Virtual Private Cloud (VPC) für Ihren Amazon ECS-Cluster zu erstellen. | Systemadministrator, Entwickler | 

### Die Amazon ECS-Aufgabe einrichten
<a name="set-up-the-amazon-ecs-task"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Richten Sie die IAM-Rolle für die Amazon ECS-Aufgabenausführung ein. | Erstellen Sie mithilfe der `AmazonECSTaskExecutionRolePolicy` verwalteten Richtlinie eine Amazon ECS-IAM-Rolle für die Ausführung von Aufgaben. Weitere Informationen dazu finden Sie in der [Amazon ECS-Dokumentation unter IAM-Rolle für die Ausführung von Aufgaben](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) in Amazon ECS.Stellen Sie sicher, dass Sie den Amazon-Ressourcennamen (ARN) der IAM-Rolle aufzeichnen. | Systemadministrator, Entwickler | 
|  Fügen Sie die IAM-Richtlinie der IAM-Rolle für die Amazon ECS-Aufgabenausführung hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) | Systemadministrator, Entwickler | 
| Richten Sie die Amazon ECS-Aufgabendefinition ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html)Weitere Informationen dazu finden Sie unter [Erstellen einer Aufgabendefinition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) in der Amazon ECS-Dokumentation. | Systemadministrator, Entwickler | 

### Führen Sie die Amazon ECS-Aufgabe aus
<a name="run-the-amazon-ecs-task"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die Amazon ECS-Aufgabe aus.  | Wählen Sie in der Amazon ECS-Konsole **Clusters**, wählen Sie den Cluster aus, den Sie zuvor erstellt haben, und führen Sie dann die eigenständige Aufgabe aus.Weitere Informationen dazu finden Sie unter [Ausführen einer eigenständigen Aufgabe](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html) in der Amazon ECS-Dokumentation. | Systemadministrator, Entwickler | 

### Überprüfen Sie die CloudWatch Protokolle
<a name="verify-the-cloudwatch-logs"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Protokolle.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) | Systemadministrator, Entwickler | 

## Zugehörige Ressourcen
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-resources"></a>
+ [Docker-Grundlagen für Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html) 
+ [Amazon ECS auf AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) 
+ [Konfiguration grundlegender Serviceparameter](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/basic-service-params.html) 

## Anlagen
<a name="attachments-e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9/attachments/attachment.zip)

# Erstellen Sie mit Actions und Terragrunt ein API-gesteuertes Framework GitHub zur Ressourcenorchestrierung
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt"></a>

*Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande und Akash Kumar, Amazon Web Services*

## Zusammenfassung
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-summary"></a>

Dieses Muster nutzt GitHub Actions-Workflows, um die Ressourcenbereitstellung durch standardisierte JSON-Payloads zu automatisieren, sodass keine manuelle Konfiguration erforderlich ist. Diese automatisierte Pipeline verwaltet den gesamten Bereitstellungszyklus und kann nahtlos in verschiedene Frontend-Systeme integriert werden, von benutzerdefinierten UI-Komponenten bis hin zu. ServiceNow Die Flexibilität der Lösung ermöglicht es Benutzern, über ihre bevorzugten Schnittstellen mit dem System zu interagieren und gleichzeitig standardisierte Prozesse beizubehalten.

Die konfigurierbare Pipeline-Architektur kann an unterschiedliche organisatorische Anforderungen angepasst werden. Die Beispielimplementierung konzentriert sich auf die Bereitstellung von Amazon Virtual Private Cloud (Amazon VPC) und Amazon Simple Storage Service (Amazon S3). Das Muster bewältigt effektiv allgemeine Herausforderungen bei der Verwaltung von Cloud-Ressourcen, indem Anfragen im gesamten Unternehmen standardisiert und konsistente Integrationspunkte bereitgestellt werden. Dieser Ansatz erleichtert es Teams, Ressourcen anzufordern und zu verwalten und gleichzeitig die Standardisierung sicherzustellen.

## Voraussetzungen und Einschränkungen
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Ein aktives GitHub Konto mit Zugriff auf das konfigurierte Repository

**Einschränkungen**
+ Neue Ressourcen erfordern das manuelle Hinzufügen von `terragrunt.hcl` Dateien zur Repository-Konfiguration.
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-architecture"></a>

Das folgende Diagramm zeigt die Komponenten und den Arbeitsablauf dieses Musters.

![\[Workflow zur Automatisierung der Ressourcenbereitstellung mit GitHub Aktionen und Terraform.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/bff5d70e-e8f1-454a-94bc-60e8cc16e69f/images/d4a768c8-4e11-493c-85ed-f4bf7e76ce60.png)


Das Architekturdiagramm zeigt die folgenden Aktionen:

1. Der Benutzer sendet eine JSON-Payload an GitHub Actions, wodurch die Automatisierungspipeline ausgelöst wird.

1. Die GitHub Actions-Pipeline ruft den erforderlichen Ressourcencode auf der Grundlage der Payload-Spezifikationen aus den Terragrunt- und Terraform-Repositorys ab.

1. Die Pipeline nimmt unter Verwendung der angegebenen ID die entsprechende AWS Identity and Access Management (IAM-) Rolle an. AWS-Konto Anschließend stellt die Pipeline die Ressourcen auf dem Ziel bereit AWS-Konto und verwaltet den Terraform-Status mithilfe des kontospezifischen Amazon S3 S3-Buckets und der Amazon DynamoDB-Tabelle.

Jedes AWS-Konto enthält IAM-Rollen für den sicheren Zugriff, einen Amazon S3 S3-Bucket für die Terraform-Statusspeicherung und eine DynamoDB-Tabelle für das Sperren von Zuständen. Dieses Design ermöglicht eine kontrollierte, automatisierte Bereitstellung von Ressourcen in allen Bereichen. AWS-Konten Der Bereitstellungsprozess gewährleistet eine ordnungsgemäße Statusverwaltung und Zugriffskontrolle durch spezielle Amazon S3 S3-Buckets und IAM-Rollen in jedem Konto.

## Tools
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-tools"></a>

**AWS-Services**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ [GitHub Actions](https://docs.github.com/en/actions) ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorien integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [Terragrunt](https://terragrunt.gruntwork.io/docs/getting-started/overview/) ist ein Orchestrierungstool, das sowohl die Funktionen von Terraform als auch die Funktionen von Terraform erweitert. OpenTofu Es verwaltet, wie generische Infrastrukturmuster angewendet werden, und erleichtert so die Skalierung und Wartung großer Infrastrukturanlagen.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [sample-aws-orchestration-pipeline-terraform](https://github.com/aws-samples/sample-aws-orchestration-pipeline-terraform) verfügbar.

## Best Practices
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-best-practices"></a>
+ Speichern Sie AWS Anmeldeinformationen und vertrauliche Daten mithilfe von GitHub Repository-Geheimnissen für einen sicheren Zugriff.
+ Konfigurieren Sie den OpenID Connect (OIDC) -Anbieter für GitHub Aktionen so, dass er die IAM-Rolle übernimmt und statische Anmeldeinformationen vermeiden.
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-epics"></a>

### Repository erstellen und konfigurieren
<a name="create-and-configure-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Initialisieren Sie das GitHub Repository. | Gehen Sie wie folgt vor, um das GitHub Repository zu initialisieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps Ingenieur | 
| Konfigurieren Sie die IAM-Rollen und -Berechtigungen. | Gehen Sie wie folgt vor, um die IAM-Rollen und -Berechtigungen zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps Ingenieur | 
| Richten Sie GitHub Geheimnisse und Variablen ein. | Anweisungen zum Einrichten von Repository-Geheimnissen und -Variablen im GitHub Repository finden Sie in der GitHub Dokumentation unter [Konfigurationsvariablen für ein Repository erstellen](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#creating-configuration-variables-for-a-repository). Konfigurieren Sie die folgenden Variablen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps Ingenieur | 
| Erstellen Sie die Repository-Struktur. | Gehen Sie wie folgt vor, um die Repository-Struktur zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps Ingenieur | 

### Triggern Sie die Pipeline und validieren Sie die Ergebnisse
<a name="trigger-the-pipeline-and-validate-results"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die Pipeline mit curl aus.  | Gehen Sie wie folgt vor, um die Pipeline mithilfe von [curl](https://curl.se/) auszuführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html)Weitere Informationen zum Pipeline-Ausführungsprozess finden Sie unter [Zusätzliche Informationen](#create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-additional). | DevOps Ingenieur | 
| Validieren Sie die Ergebnisse der Pipeline-Ausführung | Gehen Sie wie folgt vor, um die Ergebnisse zu validieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html)Sie können die erstellten Ressourcen auch verifizieren, indem Sie die im Repository erstellte `output.json` Datei verwenden, die sich in derselben Ressource wie die `terragrunt.hcl` Datei befindet. | DevOps Ingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Reichen Sie eine Reinigungsanfrage ein. | Gehen Sie wie folgt vor, um Ressourcen zu löschen, die nicht mehr benötigt werden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-resources"></a>

**AWS Blogs**
+ [Verwenden Sie IAM-Rollen, um GitHub Aktionen mit Aktionen in zu verbinden AWS](https://aws.amazon.com/blogs/security/use-iam-roles-to-connect-github-actions-to-actions-in-aws/)

**AWS-Service Dokumentation**
+ [Erstellung von IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Überwachung von CloudTrail Protokolldateien mit Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)
+ [Bewährte Sicherheitsmethoden für Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)

**GitHub Ressourcen**
+ [Erstellen Sie ein Repository-Versandereignis](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#create-a-repository-dispatch-event)
+ [Webhooks erstellen](https://docs.github.com/en/webhooks/using-webhooks/creating-webhooks#payload)
+ [Implementieren Sie strenge Zugriffskontrollen für das Repository GitHub ](https://docs.github.com/en/get-started/learning-about-github/access-permissions-on-github)
+ [Überprüfen Sie regelmäßig den Zugriff auf das Repository](https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization)
+ [Sicherheitsüberprüfungen sind in CI/CD Vorbereitung](https://github.com/marketplace/actions/checkov-github-action)
+ [Verwenden Sie die Multi-Faktor-Authentifizierung für Konten GitHub ](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)

## Zusätzliche Informationen
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-additional"></a>

**Prozess der Pipeline-Ausführung**

Im Folgenden sind die Schritte der Pipeline-Ausführung aufgeführt:

1. **Validiert das JSON-Nutzdatenformat** — Stellt sicher, dass die eingehende JSON-Konfiguration ordnungsgemäß strukturiert ist und alle erforderlichen Parameter enthält

1. **Nimmt die angegebene IAM-Rolle** an — Authentifiziert sich und übernimmt die für den Betrieb erforderliche IAM-Rolle AWS 

1. **Lädt den erforderlichen Terraform- und Terragrunt-Code herunter — Ruft die angegebene Version des Ressourcencodes** und der Abhängigkeiten ab

1. **Führt die Ressourcenbereitstellung aus — Wendet die Konfiguration für die Bereitstellung** oder Aktualisierung von Ressourcen in der Zielumgebung an AWS 

**Beispielnutzlast, die für die VPC-Erstellung verwendet wurde**

Im Folgenden finden Sie einen Beispielcode für die Erstellung eines Terraform-Backend-State-Buckets:

```
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
```

```
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
```

Im Folgenden finden Sie eine Beispiel-Payload für die Erstellung einer VPC mit Amazon VPC, in der die [CIDR-Blockspezifikationen](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) für die VPC `vpc_cidr` definiert werden. Der Terraform-State-Bucket ist einer in den Dateien definierten Variablen zugeordnet. `terraform` Der `ref` Parameter enthält den Zweignamen des auszuführenden Codes.

```
{
    "ref": "main",
    "inputs": {
        "RequestParameters": {
            "RequestId": "1111111",
            "RequestType": "create",
            "ResourceType": "vpc",
            "AccountId": "1234567890",
            "AccountAlias": "account-alias",
            "RegionId": "us-west-2",
            "ApplicationName": "myapp",
            "DivisionName": "division-name",
            "EnvironmentId": "dev",
            "Suffix": "poc"
        },
        "ResourceParameters": [
            {
                "VPC": {
                    "vpc_cidr": "10.0.0.0/16"
                }
            }
        ]
    }
}
```

`RequestParameters`werden verwendet, um den Status der Anfrage im Pipeline-Abschnitt zu verfolgen, und `tfstate` werden auf der Grundlage dieser Informationen erstellt. Die folgenden Parameter enthalten Metadaten und Steuerinformationen:
+ `RequestId`— Eindeutiger Bezeichner für die Anfrage
+ `RequestType`— Art des Vorgangs (erstellen, aktualisieren oder löschen)
+ `ResourceType`— Art der Ressource, die bereitgestellt werden soll
+ `AccountId`— Ziel AWS-Konto für den Einsatz
+ `AccountAlias`— Freundlicher Name für den AWS-Konto
+ `RegionId`— AWS-Region für den Einsatz von Ressourcen
+ `ApplicationName`— Name der Anwendung
+ `DivisionName`— Abteilung Organisation
+ `EnvironmentId`— Umwelt (zum Beispiel Entwicklung und Produktion)
+ `Suffix`— Zusätzliche Kennung für die Ressourcen

`ResourceParameters`enthalten eine ressourcenspezifische Konfiguration, die den in den Terraform-Dateien definierten Variablen zugeordnet ist. Alle benutzerdefinierten Variablen, die an die Terraform-Module übergeben werden müssen, sollten in enthalten sein. `ResourceParameters` Der Parameter `vpc_cidr` ist für Amazon VPC obligatorisch.

# Erstellen Sie mithilfe von Aktionen automatisierte Pull-Requests für die von Terraform verwaltete Infrastruktur AWS GitHub
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure"></a>

*Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay und Prafful Gupta, Amazon Web Services*

## Zusammenfassung
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-summary"></a>

Dieses Muster stellt ein Automatisierungsprogramm dar, das darauf ausgelegt ist, die manuelle, sich wiederholende Arbeit zu vermeiden, die mit der Verwaltung von Änderungen in mehreren Terraform-Repositorys verbunden ist. Viele Organisationen verwenden Terraform-Repositorys, um ihre Infrastruktur als Code (IaC) zu verwalten, oft mit Hunderten von separaten Repositorys, die unterschiedliche Umgebungen, Dienste oder Teams repräsentieren. Die Verwaltung dieser Repositorien in großem Maßstab stellt eine erhebliche betriebliche Herausforderung dar. Routineaufgaben wie das Aktualisieren eines Parameters, das Aktualisieren von Modulversionen oder das Anwenden von Konfigurationsänderungen erfordern häufig das mehrmalige Erstellen und Verwalten von Pull-Requests (PRs) für viele Repositorys mehrmals täglich.

Selbst bei einfachen Änderungen ist dieser sich wiederholende und manuelle Prozess zeitaufwändig und fehleranfällig. Techniker müssen die gleiche Änderung konsequent auf alle Ziel-Repositorien anwenden und aussagekräftige PR-Titel und -Beschreibungen erstellen. Darüber hinaus müssen sie häufig mit externen Tools wie Jira interagieren, um Referenzen zur Problemverfolgung abzurufen oder einzubeziehen. Diese Aufgaben sind zwar notwendig, stellen jedoch eine undifferenzierte Schwerstarbeit dar, die wertvolle Entwicklungszeit in Anspruch nimmt und die Gesamteffizienz beeinträchtigt. Der Mangel an Automatisierung in diesem Arbeitsablauf führt zu Reibungen, verlangsamt die Bereitstellung und erhöht die kognitive Belastung der Teams, die mit der Wartung umfangreicher Terraform-Infrastrukturen beauftragt sind.

**Überblick über die Lösung**

Um dieser Herausforderung zu begegnen, bietet dieses Muster ein vollständig konfigurationsorientiertes Hilfsprogramm, mit dem Benutzer ihre gewünschten Änderungen in einer strukturierten Konfigurationsdatei definieren können. Diese Datei spezifiziert die Ziel-Repositorys, Module, Parameter und Werte anhand eines klar definierten Schemas.

Nach der Konfiguration führt das Hilfsprogramm die folgenden automatisierten Schritte aus:

1. **Liest die benutzerdefinierte Konfiguration**, um den Umfang und die Art der Änderungen zu bestimmen

1. **Erstellt in jedem Ziel-Repository einen neuen Branch**, in dem die erforderlichen Updates angewendet werden

1. **Generiert für jede Änderung eine PR**, wodurch die Konsistenz in allen Repositorys gewährleistet wird

1. **Sendet Slack-Benachrichtigungen** (optional), um Stakeholder über direkte Links zu den erstellten Inhalten zu informieren PRs

Durch die Automatisierung dieser sich wiederholenden Aufgaben reduziert das Tool den Zeit- und Arbeitsaufwand sowie die Risiken, die mit der Verwaltung umfangreicher Infrastruktur-Updates verbunden sind, erheblich. Es ermöglicht Teams, sich auf höherwertige technische Arbeiten zu konzentrieren und gleichzeitig sicherzustellen, dass Änderungen konsistent angewendet werden und in allen Repositorys nachverfolgt werden können.

## Voraussetzungen und Einschränkungen
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ Python-Version 3.8 oder höher.
+ Ein GitHub persönliches Zugriffstoken (PAT). Weitere Informationen finden Sie in der GitHub Dokumentation unter [Erstellen eines persönlichen Zugriffstokens (klassisch)](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
+ Das GitHub PAT kann auf Ihre Ziel-Repositorys zugreifen, sodass das Utility Operationen wie das Erstellen von Branches und Pull-Requests ausführen kann. Weitere Informationen finden Sie im GitHub [Code-Repository](https://github.com/aws-samples/sample-terraform-pr-automation-utility?tab=readme-ov-file#repository-access-verification) dieses Musters.

**Einschränkungen**
+ Die **Komplexität der Konfiguration** stellt die größte Herausforderung dar. Die Effektivität der Automatisierung wird durch die Funktionen ihrer Konfigurationsdatei eingeschränkt. Obwohl das System Standardänderungen effizient verarbeitet, können komplexe Infrastrukturänderungen manuelle Eingriffe erfordern, und bestimmte Randfälle gehen nach wie vor über den Rahmen einer automatisierten Bearbeitung hinaus.
+ **Sicherheit und Zugriff** stellen wichtige Überlegungen dar, insbesondere bei der Verwaltung von GitHub Zugriffstoken und API-Ratenbegrenzungen. Organizations müssen die Notwendigkeit der Automatisierung sorgfältig mit der sicheren Speicherung und Verwaltung von Anmeldeinformationen abwägen, um angemessene Zugriffskontrollen zu gewährleisten und gleichzeitig die betriebliche Effizienz aufrechtzuerhalten.
+ **Einschränkungen bei der Validierung** stellen eine weitere wichtige Einschränkung dar, da das automatisierte System nur begrenzt in der Lage ist, Geschäftslogik und umgebungsspezifische Anforderungen zu validieren. Komplexe Abhängigkeiten und dienstübergreifende Interaktionen erfordern oft menschliche Aufsicht, da die automatisierte Validierung nicht alle kontextuellen Nuancen und Geschäftsregeln vollständig erfassen kann.
+ **Skalierungs- und Leistungsprobleme** treten auf, wenn es um umfangreiche Infrastrukturänderungen geht. Das System muss innerhalb der GitHub API-Grenzen arbeiten und gleichzeitig zahlreiche Repositorys verwalten. Ressourcenintensive Operationen in einer umfangreichen Infrastruktur können zu Leistungsengpässen führen, die eine sorgfältige Verwaltung erfordern.
+ **Integrationsgrenzen** schränken die Flexibilität des Systems ein, da es in erster Linie für die Arbeit mit bestimmten Tools wie Slack konzipiert ist. GitHub Organizations, die unterschiedliche Tools verwenden, benötigen möglicherweise benutzerdefinierte Lösungen, und die Workflow-Anpassungsoptionen dieses Musters sind auf unterstützte Integrationspunkte beschränkt.

## Architektur
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-architecture"></a>

Das folgende Diagramm zeigt den Arbeitsablauf und die Komponenten für diese Lösung.

![\[Workflow zum Erstellen automatisierter Pull-Requests mithilfe von GitHub Aktionen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e211359a-03b1-4e69-b152-eb7c09bdb01a/images/6cee0660-5b44-4abe-970c-c0a3c830a9aa.png)


Der Workflow besteht aus folgenden Schritten:

1. Der Entwickler löst GitHub Aktionen aus, indem er das Terraform-Repository angibt.

1. Das Automatisierungsprogramm liest die definierten Konfigurationen.

1. Das Automatisierungsdienstprogramm ruft auch das bereitgestellte Terraform-Repository ab.

1. Das Automatisierungsdienstprogramm erstellt einen neuen Branch und aktualisiert die Terraform-Vorlagen lokal.

1. Das Automatisierungsdienstprogramm überträgt den neuen Branch in das Repository und erstellt einen neuen PR. 

1. Das Automatisierungsprogramm verwendet Slack-Benachrichtigungen, die PR-Links enthalten, um Entwickler zu benachrichtigen, und aktiviert Terraform-Vorlagen für die Bereitstellung. AWS Cloud 

## Tools
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-tools"></a>
+ [GitHub](https://docs.github.com/)ist eine Entwicklerplattform, mit der Entwickler ihren Code erstellen, speichern, verwalten und teilen können.
+ [GitHub Actions](https://docs.github.com/en/actions) ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorys integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren.
+ [HashiCorp Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code), mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [Slack](https://slack.com/help/articles/115004071768-What-is-Slack-), ein Salesforce-Angebot, ist eine KI-gestützte Konversationsplattform, die Chat- und Videozusammenarbeit ermöglicht, Prozesse ohne Code automatisiert und den Informationsaustausch unterstützt.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Automated Terraform Infrastructure Update Workflow using GitHub Actions](https://github.com/aws-samples/sample-terraform-pr-automation-utility?tab=readme-ov-file) Repository verfügbar.

## Best Practices
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-best-practices"></a>
+ Ein effektives **Änderungsmanagement** ist entscheidend für eine erfolgreiche Implementierung. Organizations sollten eine schrittweise Einführungsstrategie für groß angelegte Änderungen verfolgen. Halten Sie konsistente Konventionen für die Benennung von Filialen und PR-Beschreibungen ein und stellen Sie sicher, dass alle Änderungen umfassend dokumentiert werden.
+ **Sicherheitskontrollen** müssen rigoros implementiert werden, wobei der Schwerpunkt auf den Prinzipien des Zugriffs mit den geringsten Rechten und der sicheren Verwaltung von Anmeldeinformationen liegt. Aktivieren Sie Regeln zum Schutz von Zweigstellen, um unbefugte Änderungen zu verhindern. Führen Sie regelmäßige Sicherheitsaudits durch, um die Systemintegrität aufrechtzuerhalten.
+ Ein robustes **Testprotokoll** sollte die automatisierte `terraform plan` Ausführung in Pipelines für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) beinhalten. Das Protokoll sollte auch Validierungsprüfungen vor dem Commit und spezielle Überprüfungsumgebungen für kritische Änderungen beinhalten. Dieser mehrschichtige Testansatz hilft, Probleme frühzeitig zu erkennen und gewährleistet die Stabilität der Infrastruktur.
+ Die **Überwachungsstrategie** muss umfassende Warnmechanismen, eine detaillierte Nachverfolgung von success/failure Kennzahlen und automatische Wiederholungsmechanismen für fehlgeschlagene Operationen umfassen. Diese Strategie trägt dazu bei, die betriebliche Transparenz zu gewährleisten und ermöglicht eine schnelle Reaktion auf auftretende Probleme.
+ Bei den **Konfigurationsstandards** sollte der Schwerpunkt auf der Versionskontrolle für alle Konfigurationen liegen, wobei die Modularität im Hinblick auf Wiederverwendbarkeit und Skalierbarkeit gewahrt werden sollte. Eine klare Dokumentation des Schemas und der Beispiele hilft den Teams, das Automatisierungssystem zu verstehen und effektiv zu nutzen.

## Epen
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-epics"></a>

### Installation und Einrichtung
<a name="installation-and-setup"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das Repository ein. | Führen Sie die folgenden Befehle aus, um das Repository einzurichten:<pre># Clone the automation tool repository<br />git clone https://github.com/aws-samples/sample-terraform-pr-automation-utility<br />cd sample-terraform-pr-automation-utility<br /><br /># Copy example configuration<br />cp config.example.yaml config.yaml<br /></pre> | AWS DevOps | 
| Installieren Sie die Abhängigkeiten. | Führen Sie die folgenden Befehle aus, um die Python-Abhängigkeiten zu installieren und zu überprüfen:<pre># Install Python dependencies<br />pip3 install -r requirements.txt<br /><br /># Verify installation<br />python3 -c "import github; import hcl2; import yaml; import requests; print('All packages installed successfully')"<br /></pre> | AWS DevOps | 
| Konfigurieren Sie das GitHub Token. | Führen Sie die folgenden Befehle aus, um das GitHub Token zu konfigurieren und anschließend zu überprüfen, ob es funktioniert:<pre># Set GitHub token environment variable<br />export GITHUB_TOKEN="your_github_token_here"<br /><br /># Verify token works<br />curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user<br /></pre> | AWS DevOps | 

### Richten Sie die Konfigurationsdatei für Terraform-Änderungen ein
<a name="set-up-configuration-file-for-terraform-changes"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die `config.yaml` Datei ein. | Um Ihre Ziel-Repositorys und die gewünschten Änderungen zu definieren, bearbeiten Sie die `config.yam` L-Datei wie folgt:<pre>repositories:<br />  - owner: "your-org"<br />    repo: "your-terraform-repo"<br />    files:<br />      - path: "variables.tf"<br />        changes:<br />          variables:<br />            - app_version:<br />                default:<br />                  update:<br />                    - from: ["1.0.0"]<br />                      to: "1.1.0"<br /><br />settings:<br />  pr_title_template: "Infrastructure Update - {{timestamp}}"<br />  slack:<br />    username: "Terraform Bot"<br />    icon_emoji: ":terraform:"<br />    notify_on_success: true<br />    notify_on_error: true<br />    notify_batch_summary: true<br /></pre> | AWS DevOps | 

### Testen und validieren
<a name="test-and-validate"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie Tests vor dem Flug durch. | Testen Sie Ihre Konfiguration immer, bevor Sie sie auf Produktions-Repositorys ausführen. Verwenden Sie die folgenden Befehle:<pre># 1. Test configuration syntax<br />python3 -c "from main import get_config_content; get_config_content()"<br /><br /># 2. Run in dry-run mode first<br />DRY_RUN=true python3 main.py<br /><br /># 3. Test with minimal configuration<br /># Use a simple config.yaml with just one repository and one change</pre> | AWS DevOps | 
| Überprüfen Sie den Repository-Zugriff. | Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das GitHub Token auf das Repository zugreifen kann:<pre># Test GitHub token access<br />curl -H "Authorization: token $GITHUB_TOKEN" \<br />  https://api.github.com/repos/owner/repo-name<br /><br /># Should return repository information, not 404</pre> | AWS DevOps | 

### Führen Sie das Automatisierungsprogramm aus
<a name="run-the-automation-utility"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie das Automatisierungsdienstprogramm mithilfe der GitHub Aktions-Benutzeroberfläche aus. | Gehen Sie wie folgt vor, um das Automatisierungsdienstprogramm über die GitHub Aktions-Benutzeroberfläche auszuführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-automated-pull-requests-for-terraform-managed-aws-infrastructure.html) | AWS DevOps | 
| (Alternative) Führen Sie das Automatisierungsdienstprogramm von der Befehlszeile aus. | Wenn Sie möchten, können Sie das Automatisierungsdienstprogramm auch von der Befehlszeile aus ausführen, anstatt die Benutzeroberfläche für GitHub Aktionen zu verwenden. Verwenden Sie den folgenden Befehl:<pre># Run actual automation<br />python3 main.py</pre> | AWS DevOps | 

### Validieren PRs und ändern
<a name="validate-prs-and-changes"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die erstellten PRs Dateien und Änderungen. | Gehen Sie wie folgt vor, um die Ergebnisse der GitHub Workflow-Ausführung zu überwachen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-automated-pull-requests-for-terraform-managed-aws-infrastructure.html) | AWS DevOps | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| (Optional) Aufräumen PRs. | Schliessen, verlassen oder unnötig PRs. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-resources"></a>

**AWS Präskriptive Leitlinien**
+ [Verwendung von Terraform als IaC-Tool für AWS Cloud](https://docs.aws.amazon.com/prescriptive-guidance/latest/choose-iac-tool/terraform.html)

**GitHub Dokumentation**
+ [Über Pull-Requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
+ [Verwaltung deiner persönlichen Zugriffstoken](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
+ [ GitHub Aktionen verstehen](https://docs.github.com/en/actions/get-started/understand-github-actions)
+ [Schnellstart für Aktionen GitHub ](https://docs.github.com/en/actions/get-started/quickstart)

# Automatisches Erstellen dynamischer CI-Pipelines für Java- und Python-Projekte
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically"></a>

*Aromal Raj Jayarajan, Vijesh Vijayakumaran Nair, MAHESH RAGHUNANDANAN und Amarnath Reddy, Amazon Web Services*

## Zusammenfassung
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-summary"></a>

Dieses Muster zeigt, wie mithilfe von AWS-Entwicklertools automatisch dynamische CI-Pipelines (Continuous Integration) für Java- und Python-Projekte erstellt werden.

Mit der Diversifizierung der Technologie-Stacks und der Zunahme der Entwicklungsaktivitäten kann es schwierig werden, CI-Pipelines zu erstellen und aufrechtzuerhalten, die unternehmensweit einheitlich sind. Durch die Automatisierung des Prozesses in AWS Step Functions können Sie sicherstellen, dass Ihre CI-Pipelines in ihrer Verwendung und Herangehensweise konsistent sind.

Um die Erstellung dynamischer CI-Pipelines zu automatisieren, verwendet dieses Muster die folgenden Variableneingaben:
+ Programmiersprache (nur Java oder Python)
+ Pipeline-Name
+ Erforderliche Pipeline-Stufen

**Anmerkung**  
Step Functions orchestriert die Pipeline-Erstellung mithilfe mehrerer AWS-Services. Weitere Informationen zu den in dieser Lösung verwendeten AWS-Services finden Sie im Abschnitt **Tools** dieses Musters.

## Voraussetzungen und Einschränkungen
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein Amazon S3 S3-Bucket in derselben AWS-Region, in der diese Lösung bereitgestellt wird
+ Ein AWS Identity and Access Management (IAM) [-Prinzipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html), der über die CloudFormation AWS-Berechtigungen verfügt, die zum Erstellen der für diese Lösung benötigten Ressourcen erforderlich sind

**Einschränkungen**
+ Dieses Muster unterstützt nur Java- und Python-Projekte.
+ Die in diesem Muster bereitgestellten IAM-Rollen folgen dem Prinzip der geringsten Rechte. Die Berechtigungen der IAM-Rollen müssen auf der Grundlage der spezifischen Ressourcen aktualisiert werden, die Ihre CI-Pipeline erstellen muss.

## Architektur
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-architecture"></a>

**Zieltechnologie-Stack**
+ AWS CloudFormation
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS CodePipeline
+ IAM
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS Systems Manager
+ AWS Step Functions
+ AWS Lambda
+ Amazon DynamoDB

**Zielarchitektur**

Das folgende Diagramm zeigt einen Beispiel-Workflow für die automatische Erstellung dynamischer CI-Pipelines für Java- und Python-Projekte mithilfe von AWS-Entwicklertools.

![\[Workflow zur automatischen Erstellung dynamischer CI-Pipelines für Java- und Python-Projekte mithilfe von AWS-Tools.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/bef2ccb8-68b3-4c0f-9ee7-4b93e9422d9c/images/b5ed003f-cf16-4130-8bfb-2bc2cb9a0d33.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein AWS-Benutzer stellt die Eingabeparameter für die CI-Pipeline-Erstellung im JSON-Format bereit. Diese Eingabe startet einen Step Functions Functions-Workflow (*State Machine*), der mithilfe von AWS-Entwicklertools eine CI-Pipeline erstellt.

1. **Eine Lambda-Funktion liest einen Ordner mit dem Namen **input-reference**, der in einem Amazon S3 S3-Bucket gespeichert ist, und generiert dann eine buildspec.yml-Datei.** Diese generierte Datei definiert die CI-Pipeline-Stufen und wird wieder in demselben Amazon S3 S3-Bucket gespeichert, in dem die Parameterreferenzen gespeichert sind.

1. Step Functions überprüft die Abhängigkeiten des Workflows zur Erstellung der CI-Pipeline auf Änderungen und aktualisiert den Abhängigkeitsstapel nach Bedarf.

1. Step Functions erstellt die CI-Pipeline-Ressourcen in einem CloudFormation Stack, einschließlich eines CodeCommit Repositorys, eines CodeBuild Projekts und einer CodePipeline Pipeline.

1. Der CloudFormation Stack kopiert den Beispielquellcode für den ausgewählten Technologie-Stack (Java oder Python) und die Datei **buildspec.yml** in das Repository. CodeCommit 

1. Die Laufzeitdetails der CI-Pipeline werden in einer DynamoDB-Tabelle gespeichert.

**Automatisierung und Skalierung**
+ Dieses Muster ist nur für die Verwendung in einer einzigen Entwicklungsumgebung vorgesehen. Für die Verwendung in mehreren Entwicklungsumgebungen sind Konfigurationsänderungen erforderlich.
+ Um Unterstützung für mehr als einen CloudFormation Stack hinzuzufügen, können Sie zusätzliche CloudFormation Vorlagen erstellen. Weitere Informationen finden Sie CloudFormation in der CloudFormation Dokumentation unter [Erste Schritte mit AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html).

## Tools
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-tools"></a>

**Tools**
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Lambda-Funktionen und andere AWS-Services kombinieren können, um geschäftskritische Anwendungen zu erstellen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ Mit [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.

**Code**

Der Code für dieses Muster ist im GitHub [automated-ci-pipeline-creation](https://github.com/aws-samples/automated-ci-pipeline-creation)Repository verfügbar. Das Repository enthält die CloudFormation Vorlagen, die zur Erstellung der in diesem Muster beschriebenen Zielarchitektur erforderlich sind.

## Best Practices
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-best-practices"></a>
+ Geben Sie Anmeldeinformationen (*Geheimnisse*) wie Token oder Passwörter nicht direkt in CloudFormation Vorlagen oder Aktionskonfigurationen von Step Functions ein. Wenn Sie dies tun, werden die Informationen in den DynamoDB-Protokollen angezeigt. Verwenden Sie stattdessen AWS Secrets Manager, um Secrets einzurichten und zu speichern. Verweisen Sie dann nach Bedarf in den Aktionskonfigurationen der CloudFormation Vorlagen und Step Functions auf die im Secrets Manager gespeicherten Geheimnisse. Weitere Informationen finden Sie unter [Was ist AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) in der Secrets Manager-Dokumentation.
+ Konfigurieren Sie die serverseitige Verschlüsselung für in Amazon S3 gespeicherte CodePipeline Artefakte. Weitere Informationen finden [Sie in der CodePipeline Dokumentation unter Serverseitige Verschlüsselung für in Amazon S3 gespeicherte Artefakte konfigurieren](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html). CodePipeline
+ Wenden Sie bei der Konfiguration von IAM-Rollen Berechtigungen mit den geringsten Rechten an. Weitere Informationen finden Sie unter [Geringste Berechtigungen anwenden](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) in der IAM-Dokumentation.
+ Stellen Sie sicher, dass Ihr Amazon S3 S3-Bucket nicht öffentlich zugänglich ist. Weitere Informationen finden Sie unter [Konfiguration der Einstellung zum Blockieren des öffentlichen Zugriffs für Ihre S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configuring-block-public-access-bucket.html) in der Amazon S3 S3-Dokumentation.
+ Stellen Sie sicher, dass Sie die Versionierung für Ihren Amazon S3 S3-Bucket aktivieren. Weitere Informationen finden Sie unter [Verwenden der Versionierung in S3-Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) in der Amazon S3 S3-Dokumentation.
+ Verwenden Sie IAM Access Analyzer bei der Konfiguration von IAM-Richtlinien. Das Tool bietet umsetzbare Empfehlungen, die Sie bei der Erstellung sicherer und funktionaler IAM-Richtlinien unterstützen. Weitere Informationen finden Sie unter [Verwenden von AWS Identity and Access Management Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) in der IAM-Dokumentation.
+ Definieren Sie nach Möglichkeit spezifische Zugriffsbedingungen bei der Konfiguration von IAM-Richtlinien.
+ Aktivieren Sie die CloudWatch Amazon-Protokollierung für Überwachungs- und Prüfungszwecke. Weitere Informationen finden Sie unter [Was ist Amazon CloudWatch Logs?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) in der CloudWatch Dokumentation.

## Epen
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-epics"></a>

### Konfigurieren Sie die Voraussetzungen
<a name="configure-the-prerequisites"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Amazon-S3-Bucket. | Erstellen Sie einen Amazon S3 S3-Bucket (oder verwenden Sie einen vorhandenen Bucket), um die erforderlichen CloudFormation Vorlagen, den Quellcode und die Eingabedateien für die Lösung zu speichern.Weitere Informationen finden Sie unter [Schritt 1: Erstellen Sie Ihren ersten S3-Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) in der Amazon S3 S3-Dokumentation.Der Amazon S3 S3-Bucket muss sich in derselben AWS-Region befinden, in der Sie die Lösung bereitstellen. | AWS DevOps | 
| Klonen Sie das GitHub Repository. | Klonen Sie das GitHub [automated-ci-pipeline-creation](https://github.com/aws-samples/automated-ci-pipeline-creation)Repository, indem Sie den folgenden Befehl in einem Terminalfenster ausführen:<pre>git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git</pre>Weitere Informationen finden Sie in der GitHub Dokumentation unter [Ein Repository klonen](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). | AWS DevOps | 
| Laden Sie den Ordner Solution Templates aus dem geklonten GitHub Repository in Ihren Amazon S3 S3-Bucket hoch.  | Kopieren Sie den Inhalt aus dem geklonten **Solution-Templates-Ordner** und laden Sie ihn in den Amazon S3 S3-Bucket hoch, den Sie erstellt haben.Weitere Informationen finden Sie unter [Hochladen von Objekten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) in der Amazon S3 S3-Dokumentation.Stellen Sie sicher, dass Sie nur den Inhalt des Ordners **Solution-Templates** hochladen. Sie können die Dateien nur auf der Stammebene des Amazon S3 S3-Buckets hochladen. | AWS DevOps | 

### Bereitstellen der Lösung
<a name="deploy-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen CloudFormation Stack, um die Lösung mithilfe der Datei template.yml im geklonten Repository bereitzustellen. GitHub  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)Während Ihr Stack erstellt wird, wird er auf der Seite **Stacks** mit dem Status **CREATE\$1IN\$1PROGRESS** aufgeführt. Stellen Sie sicher, dass Sie warten, bis sich der Status des Stacks auf **CREATE\$1COMPLETE** ändert, bevor Sie die verbleibenden Schritte in diesem Muster abschließen. | AWS-Administrator, AWS DevOps | 

### Testen der Einrichtung
<a name="test-the-setup"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die Schrittfunktion aus, die Sie erstellt haben.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)**JSON-Formatierung**<pre>{<br />  "details": {<br />    "tech_stack": "Name of the Tech Stack (python/java)",<br />    "project_name": "Name of the Project that you want to create with",<br />    "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />  }<br />}</pre>**Beispiel für eine Java-JSON-Eingabe**<pre>{<br />  "details": {<br />    "tech_stack": "java",<br />    "project_name": "pipeline-java-pjt",<br />    "pre_build": "yes",<br />    "build": "yes",<br />    "post_build": "yes",<br />    "reports": "yes"<br />  }<br />}</pre>**Beispiel für Python-JSON-Eingabe**<pre>{<br />  "details": {<br />    "tech_stack": "python",<br />    "project_name": "pipeline-python-pjt",<br />    "pre_build": "yes",<br />    "build": "yes",<br />    "post_build": "yes",<br />    "reports": "yes"<br />  }<br />}</pre> | AWS-Administrator, AWS DevOps | 
| Vergewissern Sie sich, dass das CodeCommit Repository für die CI-Pipeline erstellt wurde. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Überprüfen Sie die CodeBuild Projektressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Validieren Sie die CodePipeline Stufen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Vergewissern Sie sich, dass die CI-Pipeline erfolgreich ausgeführt wurde. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 

### Bereinigen Ihrer Ressourcen
<a name="clean-up-your-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie den Ressourcenstapel CloudFormation. | Löschen Sie den Ressourcen-Stack in der CI-Pipeline CloudFormation.Weitere Informationen finden Sie in der CloudFormation Dokumentation unter [Löschen eines Stacks auf der CloudFormation AWS-Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html).Stellen Sie sicher, dass Sie den Stack mit dem Namen **-stack** <project\$1name>löschen. | AWS DevOps | 
| Löschen Sie die Abhängigkeiten der CI-Pipeline in Amazon S3 und CloudFormation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)Stellen Sie sicher, dass Sie den genannten Stack löschen **pipeline-creation-dependencies-stack**. | AWS DevOps | 
| Löschen Sie den Amazon S3 S3-Vorlagen-Bucket. | Löschen Sie den Amazon S3-Bucket, den Sie im Abschnitt **Voraussetzungen konfigurieren** dieses Musters erstellt haben, in dem die Vorlagen für diese Lösung gespeichert sind.Weitere Informationen finden Sie unter [Löschen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) in der Amazon S3 S3-Dokumentation. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-resources"></a>
+ [Erstellen einer Step Functions Functions-Zustandsmaschine, die Lambda verwendet](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html) (AWS Step Functions Functions-Dokumentation)
+ [AWS Step Functions WorkFlow Studio](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html) (Dokumentation zu AWS Step Functions)
+ [DevOps und AWS](https://aws.amazon.com/devops/)
+ [Wie CloudFormation funktioniert AWS?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html) ( CloudFormation AWS-Dokumentation)
+ [Komplett CI/CD mit AWS CodeCommit, AWS CodeBuild CodeDeploy, AWS und AWS CodePipeline (AWS-Blogbeitrag](https://aws.amazon.com/blogs/devops/complete-ci-cd-with-aws-codecommit-aws-codebuild-aws-codedeploy-and-aws-codepipeline/))
+ [IAM- und AWS-STS-Kontingente, Namensanforderungen und Zeichenbeschränkungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) (IAM-Dokumentation)

# Stellen Sie CloudWatch Synthetics Canaries mithilfe von Terraform bereit
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform"></a>

*Dhrubajyoti Mukherjee und Jean-Francois Landreau, Amazon Web Services*

## Zusammenfassung
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-summary"></a>

Es ist wichtig, den Zustand eines Systems aus Kundensicht zu überprüfen und sicherzustellen, dass Kunden eine Verbindung herstellen können. Dies ist schwieriger, wenn die Kunden den Endpunkt nicht ständig anrufen. [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) unterstützt die Erstellung von Canaries, mit denen sowohl öffentliche als auch private Endgeräte getestet werden können. Durch die Verwendung von Canaries können Sie den Status eines Systems ermitteln, auch wenn es nicht verwendet wird. Diese Kanarien sind entweder Node.js Puppeteer-Skripte oder Python Selenium-Skripte.

Dieses Muster beschreibt, wie HashiCorp Terraform verwendet wird, um Canaries bereitzustellen, die private Endpunkte testen. Es bettet ein Puppeteer-Skript ein, das testet, ob eine URL zurückkehrt. `200-OK` Das Terraform-Skript kann dann in das Skript integriert werden, das den privaten Endpunkt bereitstellt. Sie können die Lösung auch ändern, um öffentliche Endpunkte zu überwachen.

## Voraussetzungen und Einschränkungen
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Services (AWS) -Konto mit einer Virtual Private Cloud (VPC) und privaten Subnetzen
+ Die URL des Endpunkts, der von den privaten Subnetzen aus erreicht werden kann
+ Terraform ist in der Bereitstellungsumgebung installiert

**Einschränkungen**

Die aktuelle Lösung funktioniert für die folgenden CloudWatch Synthetics-Laufzeitversionen:
+ syn-nodejs-puppeteer-3.4
+ syn-nodejs-puppeteer-3,5
+ syn-nodejs-puppeteer-3,6
+ syn-nodejs-puppeteer-3,7

Wenn neue Runtime-Versionen veröffentlicht werden, müssen Sie möglicherweise die aktuelle Lösung aktualisieren. Sie müssen die Lösung auch ändern, um mit den Sicherheitsupdates Schritt zu halten.

**Produktversionen**
+ Terraform 1.3.0

## Architektur
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-architecture"></a>

Amazon CloudWatch Synthetics basiert auf CloudWatch Lambda und Amazon Simple Storage Service (Amazon S3). Amazon CloudWatch bietet einen Assistenten zum Erstellen der Canaries und ein Dashboard, das den Status der Canaries Runs anzeigt. Die Lambda-Funktion führt das Skript aus. Amazon S3 speichert die Protokolle und Screenshots der Canary Runs.

Dieses Muster simuliert einen privaten Endpunkt über eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance, die in den Zielsubnetzen bereitgestellt wird. Die Lambda-Funktion erfordert elastische Netzwerkschnittstellen in der VPC, in der der private Endpunkt bereitgestellt wird.

![\[Die Beschreibung folgt dem Diagramm.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/73ed0103-ec45-4653-bb29-f402a88f0c64/images/39aaed0f-f259-4f2a-98fb-8e3a340d0b02.png)


Das Diagramm zeigt Folgendes:

1. Der Synthetics Canary initiiert die kanarische Lambda-Funktion.

1. Die kanarische Lambda-Funktion stellt eine Verbindung zur elastic network interface her.

1. Die Canary-Lambda-Funktion überwacht den Status des Endpunkts.

1. Der Synthetics Canary überträgt Laufdaten und CloudWatch Metriken in den S3-Bucket.

1. Auf der Grundlage der Metriken wird ein CloudWatch Alarm ausgelöst.

1. Der CloudWatch Alarm leitet das Thema Amazon Simple Notification Service (Amazon SNS) ein.

## Tools
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Metriken Ihrer AWS-Ressourcen und der Anwendungen, die Sie auf AWS ausführen, in Echtzeit zu überwachen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS. Dieses Muster verwendet VPC-Endpunkte und elastische Netzwerkschnittstellen.

**Andere Dienste**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. Dieses Muster verwendet Terraform zur Bereitstellung der Infrastruktur.
+ [Puppeteer ist eine Node.js](https://pptr.dev/) Bibliothek. Die CloudWatch Synthetics-Laufzeit verwendet das Puppeteer-Framework.

**Code**

[Die Lösung ist im Cloud-Repository verfügbar. GitHub watch-synthetics-canary-terraform](https://github.com/aws-samples/cloudwatch-synthetics-canary-terraform) Weitere Informationen finden Sie im Abschnitt *Zusätzliche Informationen*.

## Epen
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-epics"></a>

### Implementieren Sie die Lösung für die Überwachung einer privaten URL
<a name="implement-the-solution-for-monitoring-a-private-url"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ermitteln Sie die Anforderungen für die Überwachung der privaten URL. | Erfassen Sie die vollständige URL-Definition: Domäne, Parameter und Header. Verwenden Sie VPC-Endpunkte CloudWatch, um privat mit Amazon S3 und Amazon zu kommunizieren. Beachten Sie, wie der Endpunkt auf die VPC und die Subnetze zugreifen kann. Beachten Sie die Häufigkeit von Canary Runs. | Cloud-Architekt, Netzwerkadministrator | 
| Ändern Sie die bestehende Lösung, um die private URL zu überwachen. | Ändern Sie die `terraform.tfvars` Datei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Cloud-Architekt | 
| Stellen Sie die Lösung bereit und betreiben Sie sie. | Gehen Sie wie folgt vor, um die Lösung bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Cloud-Architekt, DevOps Ingenieur | 

## Fehlerbehebung
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Das Löschen der bereitgestellten Ressourcen bleibt hängen. | Löschen Sie die Canary-Lambda-Funktion, die entsprechende elastic network interface und die Sicherheitsgruppe manuell in dieser Reihenfolge. | 

## Zugehörige Ressourcen
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-resources"></a>
+ [Synthetische Überwachung verwenden](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)
+ [Überwachen Sie API Gateway Gateway-Endpunkte mit Amazon CloudWatch Synthetics](https://aws.amazon.com/blogs/mt/monitor-api-gateway-endpoints-with-amazon-cloudwatch-synthetics/) (Blogbeitrag)

## Zusätzliche Informationen
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-additional"></a>

**Artefakte aus dem Repository**

Die Repository-Artefakte haben die folgende Struktur.

```
.
├── README.md
├── main.tf
├── modules
│   ├── canary
│   └── canary-infra
├── terraform.tfvars
├── tf.plan
└── variable.tf
```

Die `main.tf` Datei enthält das Kernmodul und stellt zwei Untermodule bereit:
+ `canary-infra`stellt die für die Kanaren benötigte Infrastruktur bereit.
+ `canary`setzt die Kanarischen Inseln ein.

Die Eingabeparameter für die Lösung befinden sich in der `terraform.tfvars` Datei. Sie können das folgende Codebeispiel verwenden, um einen Canary zu erstellen.

```
module "canary" {
    source = "./modules/canary"
    name   = var.name
    runtime_version = var.runtime_version
    take_screenshot = var.take_screenshot
    api_hostname = var.api_hostname
    api_path = var.api_path
    reports-bucket = module.canary_infra.reports-bucket
    role = module.canary_infra.role
    security_group_id = module.canary_infra.security_group_id
    subnet_ids = var.subnet_ids
    frequency = var.frequency
    alert_sns_topic = var.alert_sns_topic
}
```

Es folgt die entsprechende .var-Datei.

```
name   = "my-canary"
runtime_version = "syn-nodejs-puppeteer-3.7"
take_screenshot = false
api_hostname = "mydomain.internal"
api_path = "/path?param=value"
vpc_id = "vpc_id"
subnet_ids = ["subnet_id1"]
frequency = 5
alert_sns_topic = "arn:aws:sns:eu-central-1:111111111111:yyyyy"
```

**Die Lösung aufräumen**

Wenn Sie dies in einer Entwicklungsumgebung testen, können Sie die Lösung bereinigen, um Kosten zu vermeiden.

1. Navigieren Sie in der AWS-Managementkonsole zur Amazon S3 S3-Konsole. Leeren Sie den Amazon S3 S3-Bucket, den die Lösung erstellt hat. Stellen Sie sicher, dass Sie bei Bedarf eine Sicherungskopie der Daten erstellen.

1. Führen Sie in Ihrer Entwicklungsumgebung den `destroy` Befehl aus dem `cloudwatch-synthetics-canary-terraform` Verzeichnis aus.

   ```
   terraform destroy
   ```

# Stellen Sie eine ChatOps Lösung zur Verwaltung von SAST-Scanergebnissen bereit, indem Sie Amazon Q Developer in Chat-Anwendungen verwenden, benutzerdefinierte Aktionen und CloudFormation
<a name="deploy-chatops-solution-to-manage-sast-scan-results"></a>

*Anand Bukkapatnam Tirumala, Amazon Web Services*

## Zusammenfassung
<a name="deploy-chatops-solution-to-manage-sast-scan-results-summary"></a>

Dieses Muster stellt eine umfassende Lösung dar, die Amazon Q Developer in Chat-Anwendungen verwendet, um die Verwaltung von SAST-Scanfehlern (Static Application Security Testing) zu optimieren, die gemeldet wurden. SonarQube Dieser innovative Ansatz integriert benutzerdefinierte Aktionen und Benachrichtigungen in eine Konversationsoberfläche und ermöglicht so effiziente Zusammenarbeit und Entscheidungsprozesse innerhalb der Entwicklungsteams.

In der heutigen schnelllebigen Softwareentwicklungsumgebung ist die effiziente Verwaltung der SAST-Scanergebnisse entscheidend für die Aufrechterhaltung der Codequalität und -sicherheit. Viele Unternehmen stehen jedoch vor den folgenden großen Herausforderungen:
+ Verspätete Erkennung kritischer Sicherheitslücken aufgrund ineffizienter Meldesysteme
+ Langsame Entscheidungsprozesse aufgrund unzusammenhängender Genehmigungsabläufe
+ Mangel an sofortigen, umsetzbaren Reaktionen auf SAST-Scanfehler
+ Fragmentierte Kommunikation und Zusammenarbeit im Zusammenhang mit Sicherheitsergebnissen
+ Zeitaufwändige und fehleranfällige manuelle Einrichtung der Infrastruktur für Sicherheitstools

Diese Probleme führen häufig zu erhöhten Sicherheitsrisiken, verzögerten Releases und verminderter Teamproduktivität. Um diesen Herausforderungen effektiv zu begegnen, ist eine Lösung erforderlich, die das SAST-Ergebnismanagement rationalisiert, die Teamzusammenarbeit verbessert und die Bereitstellung der Infrastruktur automatisiert.

Zu den wichtigsten Funktionen der Lösung gehören:
+ **Maßgeschneiderte Benachrichtigungen** — Warnmeldungen und Benachrichtigungen in Echtzeit werden direkt an die Chat-Kanäle des Teams gesendet, sodass Sicherheitslücken oder Fehler beim SAST-Scan umgehend erkannt und entsprechende Maßnahmen ergriffen werden können.
+ **Genehmigungen per Konversation — Beteiligte können Genehmigungsworkflows** für SAST-Scanergebnisse nahtlos über die Chat-Oberfläche initiieren und abschließen, wodurch die Entscheidungsprozesse beschleunigt werden.
+ **Benutzerdefinierte Aktionen** — Teams können auf der Grundlage von SAST-Scanergebnissen benutzerdefinierte Aktionen definieren und ausführen, z. B. das automatische Auslösen von E-Mail-Nachrichten bei Quality-Gate-Ausfällen, wodurch die Reaktionsfähigkeit bei Sicherheitsproblemen verbessert wird.
+ **Zentralisierte Zusammenarbeit** — Alle Diskussionen, Entscheidungen und Aktionen im Zusammenhang mit SAST-Scans werden in einer einheitlichen Chat-Umgebung abgehalten, wodurch die Zusammenarbeit und der Wissensaustausch zwischen den Teammitgliedern verbessert werden.
+ **Infrastructure as Code (IaC)** — Die gesamte Lösung ist mit AWS CloudFormation Vorlagen ausgestattet, die eine schnellere und zuverlässigere Bereitstellung der Infrastruktur ermöglichen und gleichzeitig Fehler bei der manuellen Einrichtung reduzieren.

## Voraussetzungen und Einschränkungen
<a name="deploy-chatops-solution-to-manage-sast-scan-results-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ Eine AWS Identity and Access Management (IAM-) Rolle mit Berechtigungen zum Erstellen und Verwalten von Ressourcen, die mit den unter [Tools AWS-Services](#deploy-chatops-solution-to-manage-sast-scan-results-tools) aufgelisteten Ressourcen verknüpft sind.
+ Ein Slack-Workspace.
+ Amazon Q Developer in Chat-Anwendungen wurde dem erforderlichen Slack-Workspace als Plugin hinzugefügt. Weitere Informationen findest du unter [Apps zu deinem Slack-Workspace hinzufügen in der Slack-Dokumentation](https://slack.com/intl/en-in/help/articles/202035138-Add-apps-to-your-Slack-workspace). Notiere dir die Workspace-ID von Slack, wie sie auf der AWS-Managementkonsole nach erfolgreicher Registrierung angegeben ist.
+ Ein konfigurierter Client für Amazon Q Developer in Chat-Anwendungen, bei dem die Workspace-ID sofort zur Eingabe in der CloudFormation Konsole verfügbar ist. Anweisungen finden [Sie unter Konfiguration eines Slack-Clients](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup) im *Administratorhandbuch für Amazon Q Developer in Chat-Anwendungen*.
+ Ein Quell-E-Mail-Konto, das in Amazon Simple Email Service (Amazon SES) erstellt und verifiziert wurde, um Genehmigungs-E-Mail-Nachrichten zu versenden. Anweisungen zur Einrichtung finden Sie unter [E-Mail-Identitäten erstellen und verifizieren](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure) im *Amazon Simple Email Service Developer Guide*.
+ Eine Ziel-E-Mail-Adresse für den Empfang von Genehmigungsbenachrichtigungen. Diese Adresse kann ein gemeinsam genutzter Posteingang oder eine bestimmte Team-Verteilerliste sein.
+ Eine betriebsbereite SonarQube Instanz, auf die von Ihrem aus zugegriffen werden kann AWS-Konto. Weitere Informationen finden Sie in den [SonarQube Installationsanweisungen](https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/introduction/).
+ Ein SonarQube [Benutzertoken](https://docs.sonarsource.com/sonarqube-server/latest/user-guide/managing-tokens/) mit Berechtigungen zum Auslösen und Erstellen von Projekten über die Pipeline.

**Einschränkungen**
+ Die Erstellung von benutzerdefinierten Aktionsschaltflächen ist in dieser Lösung ein manueller Prozess. 
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="deploy-chatops-solution-to-manage-sast-scan-results-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Workflow zur Bereitstellung automatisierter Code-Qualitätssicherung für das Release-Management mithilfe von Amazon Q Developer.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/198312ed-e379-49a7-b706-8e79e2142f21/images/a977924c-957e-4f91-99d6-ed790e343ea6.png)


Das Diagramm zeigt den automatisierten Arbeitsablauf zur Sicherung der Codequalität:

1. Codevorbereitung und Upload:
   + Der Entwickler komprimiert die Codebasis in eine ZIP-Datei.
   + Der Entwickler lädt die ZIP-Datei manuell in einen dafür vorgesehenen Amazon Simple Storage Service (Amazon S3) -Bucket hoch.

1. Amazon S3 S3-Ereignisauslösung und AWS Step Functions Orchestrierung:
   + Das Amazon S3 S3-Upload-Ereignis löst einen Step Functions Functions-Workflow aus.
   + Step Functions orchestriert einen SAST-Scan mit. SonarQube
   + Der Workflow überwacht den AWS CodeBuild Auftragsstatus, um die nächsten Aktionen festzulegen. Wenn der CodeBuild Vorgang erfolgreich ist (Quality Gate bestanden), wird der Workflow beendet. CodeBuild Schlägt dies fehl, wird eine AWS Lambda Funktion zur Diagnose aufgerufen. Weitere Einzelheiten finden Sie weiter unten in diesem Abschnitt unter **AWS Step Functions Logik**.

1. AWS CodeBuild Ausführung:
   + Der CodeBuild Job führt einen SonarQube Scan der hochgeladenen Codebasis aus.
   + Scan-Artefakte werden zur Prüfung und Analyse in einem separaten Amazon S3 S3-Bucket gespeichert.

1. Fehleranalyse (Lambda-Funktion):
   +  CodeBuild Bei einem Fehler wird die `CheckBuildStatus` Lambda-Funktion ausgelöst.
   + Bei CodeBuild Erfolg wird der Prozess beendet und es sind keine weiteren Maßnahmen erforderlich.

1. Die Lambda-Funktion analysiert die Fehlerursache (Quality-Gate-Ausfall oder andere Probleme)
   + Die `CheckBuildStatus` Funktion erstellt eine benutzerdefinierte Nutzlast mit detaillierten Fehlerinformationen.
   + Die `CheckBuildStatus` Funktion veröffentlicht die benutzerdefinierte Nutzlast in einem Amazon Simple Notification Service (Amazon SNS) -Thema.

1. Benachrichtigungssystem:
   + Amazon SNS leitet die Nutzdaten in Chat-Anwendungen für die Slack-Integration an Amazon Q Developer weiter.

1. Slack-Integration:
   + Amazon Q Developer in Chat-Anwendungen veröffentlicht eine Benachrichtigung im dafür vorgesehenen Slack-Kanal.

1. Genehmigungsprozess:
   + Genehmigende Personen überprüfen die Fehlerdetails in der Slack-Benachrichtigung.
   + Genehmiger können die Genehmigung über die Schaltfläche **Genehmigen** in Slack einleiten.

1. Genehmigungshandler:
   + Eine Approval Lambda-Funktion verarbeitet die Genehmigungsaktion von Slack.
   + Die Genehmigungsfunktion veröffentlicht die benutzerdefinierte Nachricht an Amazon SES.

1. Generierte Nachricht:
   + Die Genehmigungsfunktion generiert eine benutzerdefinierte Nachricht für die Benachrichtigung des Entwicklers.

1. Benachrichtigung für Entwickler:
   + Amazon SES sendet eine E-Mail-Nachricht mit den nächsten Schritten oder erforderlichen Aktionen an den Entwickler.

Dieser Workflow kombiniert manuelles Hochladen von Code mit automatisierten Qualitätsprüfungen, bietet sofortiges Feedback über Slack und ermöglicht bei Bedarf menschliches Eingreifen, wodurch ein robuster und flexibler Codeüberprüfungsprozess gewährleistet wird.

**AWS Step Functions Logik**

Wie im vorherigen Architekturdiagramm gezeigt, geht der Workflow zur `CheckBuildStatus` Lambda-Funktion über, wenn der Quality Gate-Passon SonarQube fehlschlägt. Die `CheckBuildStatus` Funktion löst eine Benachrichtigung im Slack-Channel aus. Jede Benachrichtigung enthält Informationen mit Vorschlägen für die nächsten Schritte. Im Folgenden sind die Arten von Benachrichtigungen aufgeführt:
+ Die **Anwendung ist beim Code-Sicherheitsscan fehlgeschlagen** — Der Benutzer erhält diese Benachrichtigung, wenn der hochgeladene Code den SonarQube Sicherheitsscan nicht bestanden hat. Der Benutzer kann APPROVE **wählen**, um den Build zu akzeptieren. In der Benachrichtigung wird der Benutzer jedoch darauf hingewiesen, sich vor potenziell schlechter Codequalität und Sicherheitsrisiken zu hüten. Die Benachrichtigung enthält die folgenden Einzelheiten:
  + Nächste Schritte: Fehler: Quality Gate-Status: FEHLGESCHLAGEN — Details finden Sie unter der angegebenen URL.
  + Untersuchen Sie die Sicherheitslücken, wie sie im Dokument unter der angegebenen URL erwähnt werden.
  + CodeBuild Einzelheiten sind an der Stelle unter der angegebenen URL verfügbar.
+ Die **Pipeline für Anwendungsscans ist aus einem anderen Grund ausgefallen** — Der Benutzer erhält diese Benachrichtigung, wenn die Pipeline aus einem anderen Grund als dem fehlgeschlagenen Code-Sicherheitsscan ausgefallen ist. Die Benachrichtigung enthält die folgenden Details:
  + Die nächsten Schritte finden Sie unter dem angegebenen Link zur weiteren Fehlerbehebung.

Um Screenshots der Benachrichtigungen zu sehen, wie sie in einem Slack-Channel erscheinen, gehe zum [Assets-Ordner](https://github.com/aws-samples/chatops-slack/tree/main/assets) im GitHub chatops-Slack-Repository.

Das folgende Diagramm zeigt ein Beispiel für den Schrittstatus von Step Functions, nachdem der Quality-Gate-Pass fehlgeschlagen ist.

![\[Ablauf des Schrittstatus von AWS Step Functions nach einem Fehlschlagen des Quality Gate-Passes.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/198312ed-e379-49a7-b706-8e79e2142f21/images/40b7ebf0-2518-4413-9717-0bfb7559adde.png)


## Tools
<a name="deploy-chatops-solution-to-manage-sast-scan-results-tools"></a>

**AWS-Services**
+ Mit [Amazon Q Developer in Chat-Anwendungen](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) können Sie die Chat-Kanäle Amazon Chime, Microsoft Teams und Slack verwenden, um betriebliche Ereignisse in Ihren AWS Anwendungen zu überwachen und darauf zu reagieren. *Hinweis zum Ende des Supports:* Am 20. Februar 2026 AWS wird der Support für den Amazon Chime Chime-Service eingestellt. Nach dem 20. Februar 2026 können Sie nicht mehr auf die Amazon Chime-Konsole oder die Amazon Chime Chime-Anwendungsressourcen zugreifen. [Weitere Informationen finden Sie im Blogbeitrag.](https://aws.amazon.com/blogs/messaging-and-targeting/update-on-support-for-amazon-chime/) Dies hat keine Auswirkungen auf die Verfügbarkeit des [Amazon Chime SDK-Dienstes](https://aws.amazon.com/chime/chime-sdk/).
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und AWS-Regionen zu verwalten.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ Mit [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) können Sie fest codierte Anmeldeinformationen im Code (einschließlich Passwörter) durch einen API-Aufruf an Secrets Manager ersetzen und das Geheimnis programmgesteuert abrufen.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) unterstützt Sie beim Senden und Empfangen von E-Mail-Nachrichten mithilfe Ihrer eigenen E-Mail-Adressen und Domains.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.

**Andere Tools**
+ [Slack](https://slack.com/help/articles/115004071768-What-is-Slack-), ein Salesforce-Angebot, ist eine KI-gestützte Konversationsplattform, die Chat- und Videozusammenarbeit ermöglicht, Prozesse ohne Code automatisiert und den Informationsaustausch unterstützt.
+ [SonarQube](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/)ist ein lokales Analysetool, das entwickelt wurde, um Codierungsprobleme in über 30 Sprachen, Frameworks und IaC-Plattformen zu erkennen.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Chatops-Slack-Repository](https://github.com/aws-samples/chatops-slack) verfügbar.

## Best Practices
<a name="deploy-chatops-solution-to-manage-sast-scan-results-best-practices"></a>
+ **CloudFormation Stack-Management** — Wenn Sie bei der CloudFormation Stack-Ausführung auf Fehler stoßen, empfehlen wir Ihnen, den ausgefallenen Stack zu löschen. Erstellen Sie ihn anschließend mit den richtigen Parameterwerten neu. Dieser Ansatz unterstützt eine saubere Bereitstellung und hilft, potenzielle Konflikte oder teilweise Implementierungen zu vermeiden.
+ **E-Mail-Konfiguration für gemeinsam genutzten Posteingang** — Verwenden Sie bei der Konfiguration des `SharedInboxEmail` Parameters eine gemeinsame Verteilerliste, auf die alle relevanten Entwickler zugreifen können. Dieser Ansatz fördert die Transparenz und trägt dazu bei, dass wichtige Benachrichtigungen die zuständigen Teammitglieder erreichen.
+ **Workflow für Produktionsgenehmigungen** — Beschränken Sie für Produktionsumgebungen den Zugriff auf den Slack-Channel, der für Build-Genehmigungen verwendet wird. Nur designierte Genehmiger sollten Mitglieder dieses Channels sein. Diese Vorgehensweise gewährleistet eine klare Verantwortungskette und erhöht die Sicherheit, indem begrenzt wird, wer kritische Änderungen genehmigen kann.
+ **IAM-Berechtigungen** — Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie nur die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html).

## Epen
<a name="deploy-chatops-solution-to-manage-sast-scan-results-epics"></a>

### Führen Sie die Ersteinrichtung durch
<a name="perform-initial-setup"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Verwenden Sie den folgenden Befehl, um das [Chatops-Slack-Repository](https://github.com/aws-samples/chatops-slack) für dieses Muster zu klonen.`git clone "git@github.com:aws-samples/chatops-slack.git"` | AWS DevOps, Build-Leiter, DevOps Ingenieur, Cloud-Administrator | 
| Erstellen Sie die ZIP-Dateien, die Lambda-Code enthalten. | Erstellen Sie die .zip-Dateien für den AWS Lambda Funktionscode für die `CheckBuildStatus` und -Funktionalität. `ApprovalEmail` Verwenden Sie die folgenden Befehle`approval.zip`, um `notification.zip` und zu erstellen.<pre>cd chatops-slack/src</pre><pre>chmod -R 775 *</pre><pre>zip -r approval.zip approval</pre><pre>zip -r notification.zip notification</pre> | AWS DevOps, Build-Leiter, DevOps Ingenieur, Cloud-Administrator | 

### Stellen Sie die Stack-Datei prerequisite.yml bereit
<a name="deploy-the-pre-requisite-yml-stack-file"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die `pre-requisite.yml` Stack-Datei aus. | Die `pre-requisite.yml` CloudFormation Stack-Datei stellt die anfänglichen Ressourcen bereit, die benötigt werden, bevor Sie die `app-security.yml` Stack-Datei ausführen. Gehen Sie wie folgt vor, um die `pre-requisite.yml` Datei auszuführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | AWS-Administrator, AWS DevOps, Build-Leiter, DevOps Ingenieur | 
| Laden Sie die ZIP-Dateien in den Amazon S3 S3-Bucket hoch. | Laden Sie die `approval.zip` Dateien `notification.zip` und, die Sie zuvor erstellt haben, in den Amazon S3 S3-Bucket mit dem Namen hoch`S3LambdaBucket`. Die `app-security.yml` CloudFormation Stack-Datei wird `S3LambdaBucket` zur Bereitstellung der Lambda-Funktion verwendet. | AWS DevOps, Build-Leiter, DevOps Ingenieur, AWS-Systemadministrator | 

### Führen Sie die Stack-Datei app-security.yml aus
<a name="execute-the-app-security-yml-stack-file"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die `app-security.yml` Stack-Datei aus. | Die `app-security.yml` Stack-Dateien stellen die verbleibende Infrastruktur für das Benachrichtigungs- und Genehmigungssystem bereit. Gehen Sie wie folgt vor, um die `app-security.yml` Datei auszuführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | AWS DevOps, AWS-Systemadministrator, DevOps Ingenieur, Build-Leiter | 
| Testen Sie das Benachrichtigungs-Setup. | Gehen Sie wie folgt vor, um das Benachrichtigungs-Setup zu testen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html)Nachdem die Testnachricht erfolgreich zugestellt wurde, solltest du im Slack-Kanal eine Benachrichtigung sehen. Weitere Informationen findest du unter [Testbenachrichtigungen von AWS-Services zu Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#test-notifications-slack) im *Administratorhandbuch für Amazon Q Developer in Chat-Anwendungen*. | AWS DevOps, AWS-Systemadministrator, DevOps Ingenieur, Build-Leiter | 

### Richten Sie den Genehmigungsablauf ein
<a name="set-up-approval-flow"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie eine benutzerdefinierte Lambda-Aktion. | Gehen Sie wie folgt vor, um die benutzerdefinierte AWS Lambda Aktion einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | AWS-Administrator, AWS DevOps, Build-Leiter, DevOps Ingenieur, Slack-Administrator | 
| Bestätigen Sie den Genehmigungsablauf. | Um zu überprüfen, ob der Genehmigungsablauf wie erwartet funktioniert, wähle in Slack die Schaltfläche **Genehmigen**.Slackbot sollte im Nachrichten-Thread eine Benachrichtigung mit der Bestätigungszeichenfolge **Approval Email** successfully sent successfully sendeten. | AWS-Administrator, AWS DevOps, DevOps Ingenieur, Slack-Administrator | 

## Fehlerbehebung
<a name="deploy-chatops-solution-to-manage-sast-scan-results-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Fehlkonfigurationen bei Slack | Informationen zur Behebung von Problemen im Zusammenhang mit Fehlkonfigurationen von Slack finden Sie unter Troubleshooting Amazon Q Developer im *Administratorhandbuch für Amazon Q Developer in Chat-Anwendungen*. | 
| Der Scan ist aus einem anderen Grund fehlgeschlagen | Dieser Fehler bedeutet, dass die Aufgabe zur Codeerstellung fehlgeschlagen ist. Um das Problem zu beheben, rufen Sie den Link in der Nachricht auf. Der Fehler bei der Codeerstellungsaufgabe kann folgende Ursachen haben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | 

## Zugehörige Ressourcen
<a name="deploy-chatops-solution-to-manage-sast-scan-results-resources"></a>

**AWS Dokumentation**
+ [Konfiguriere einen Slack-Client](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup)
+ [Eine benutzerdefinierte Aktion erstellen](https://docs.aws.amazon.com/chatbot/latest/adminguide/custom-actions.html#creating-custom-actions)
+ [Ein [Verfahren](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure) zur Identifizierung von E-Mail-Adressen erstellen](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure)
+ [Tutorial: Erste Schritte mit Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html)

**Sonstige Ressourcen**
+ [Füge Apps zu deinem Slack-Workspace hinzu (Slack-Dokumentation](https://slack.com/intl/en-in/help/articles/202035138-Add-apps-to-your-Slack-workspace))
+ [Generierung und Verwendung von Tokens (Dokumentation](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/)) SonarQube 
+ [Einführung in die Serverinstallation](https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/introduction/) (SonarQube Dokumentation)

## Zusätzliche Informationen
<a name="deploy-chatops-solution-to-manage-sast-scan-results-additional"></a>

Diese Lösung konzentriert sich auf benutzerdefinierte Aktionen von Amazon Q Developer in Chat-Anwendungen für das Release-Management. Sie können die Lösung jedoch wiederverwenden, indem Sie den Lambda-Code für Ihren speziellen Anwendungsfall ändern und darauf aufbauen.

**Parameter von CloudFormation Stack-Dateien**

Die folgende Tabelle zeigt die Parameter und ihre Beschreibungen für die CloudFormation Stack-Datei`pre-requisite.yml`.


| 
| 
| **Key** (Schlüssel) | **Beschreibung** | 
| --- |--- |
| `StackName` | Der Name des CloudFormation Stacks. | 
| `S3LambdaBucket` | Der Name des Amazon S3 S3-Buckets, in den Sie den Lambda-Code hochladen. Der Name muss global eindeutig sein. | 
| `SonarToken` | Das SonarQube Benutzertoken, wie unter [Voraussetzungen](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs) beschrieben. | 

Die folgende Tabelle zeigt die Parameter und ihre Beschreibungen für die CloudFormation Stack-Datei`app-security.yml`.


| 
| 
| **Key** (Schlüssel) | **Beschreibung** | 
| --- |--- |
| `CKMSKeyArn` | Der AWS KMS key Amazon-Ressourcenname (ARN), der in IAM-Rollen und Lambda-Funktionen verwendet wird, die in diesem Stack erstellt wurden. | 
| `CKMSKeyId` | Die AWS KMS key ID, die im Amazon SNS SNS-Thema verwendet wird, das in diesem Stack erstellt wurde. | 
| `EnvironmentType` | Der Name der Client-Umgebung für die Bereitstellung der Application-Scan-Pipeline. Wählen Sie den Umgebungsnamen aus der Dropdownliste der zulässigen Werte aus. | 
| `S3LambdaBucket` | Der Name des Amazon S3 S3-Buckets, der die `notification.zip` Dateien `approval.zip` und enthält. | 
| `SESEmail` | Der Name der registrierten E-Mail-Identität in Amazon SES, wie unter [Voraussetzungen](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs) beschrieben. Diese Identität ist die Quell-E-Mail-Adresse. | 
| `SharedInboxMail` | Die Ziel-E-Mail-Adresse, an die die Scan-Benachrichtigungen gesendet werden. | 
| `SlackChannelId` | Die Kanal-ID des Slack-Channels, an den die Benachrichtigungen gesendet werden sollen. Um die Kanal-ID zu finden, klicke in der Slack-App in den **Kanaldetails** mit der rechten Maustaste auf den Kanalnamen. Die Kanal-ID befindet sich unten. | 
| `SlackWorkspaceId` | Die Workspace-ID von Slack, wie unter [Voraussetzungen](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs) beschrieben. **Um die Workspace-ID von Slack zu finden, melden Sie sich bei der an AWS-Managementkonsole, öffnen Sie die Amazon Q Developer in Chat-Anwendungskonsole und wählen Sie **Konfigurierte Clients**, **Slack**, WorkspaceID aus.** | 
| `StackName` | Der Name des Stacks. CloudFormation  | 
| `SonarFileDirectory` | Das Verzeichnis, das die `sonar.project.<env>.properties` Datei enthält. | 
| `SonarFileName` | Der Name der `sonar.project.<env>properties` Datei. | 
| `SourceCodeZip` | Der Name der ZIP-Datei, die die `sonar.project.<env>properties` Datei und den Quellcode enthält. | 

# Stellen Sie mithilfe von Terraform Agentensysteme auf Amazon Bedrock mit dem CrewAI-Framework bereit
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework"></a>

*Vanitha Dontireddy, Amazon Web Services*

## Zusammenfassung
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-summary"></a>

[Dieses Muster zeigt, wie skalierbare KI-Systeme mit mehreren Agenten mithilfe des in [Amazon Bedrock](https://aws.amazon.com/bedrock/?nc1=h_ls) und Terraform integrierten [CrewAI-Frameworks](https://www.crewai.com/) implementiert werden können.](https://registry.terraform.io/) Die Lösung ermöglicht es Unternehmen, anspruchsvolle KI-Agenten-Workflows über Infrastructure as Code (IaC) zu erstellen, bereitzustellen und zu verwalten. In diesem Muster werden die Multi-Agent-Orchestrierungsfunktionen von CrewAI mit den Fundamentmodellen von Amazon Bedrock und der Terraform-Infrastrukturautomatisierung kombiniert. Dadurch können Teams produktionsreife KI-Systeme entwickeln, die komplexe Aufgaben mit minimaler menschlicher Aufsicht bewältigen. Das Muster implementiert Sicherheit, Skalierbarkeit und bewährte betriebliche Verfahren auf Unternehmensebene. 

## Voraussetzungen und Einschränkungen
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-prereqs"></a>

**Voraussetzungen**
+ Ein Aktiv AWS-Konto mit den entsprechenden Berechtigungen für den [Zugriff auf Amazon Bedrock Foundation-Modelle](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ [Terraform Version 1.5 oder höher ist installiert](https://developer.hashicorp.com/terraform/install)
+ Python-Version 3.9 oder höher [installiert](https://www.python.org/downloads/)
+ [Das CrewAI-Framework ist installiert](https://docs.crewai.com/installation)

**Einschränkungen**
+ Agenteninteraktionen werden durch Modellkontextfenster begrenzt.
+ Überlegungen zur Terraform-Statusverwaltung für umfangreiche Bereitstellungen gelten auch für dieses Muster.
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture"></a>

In diesem Muster treten die folgenden Interaktionen auf:
+ Amazon Bedrock bietet mit seiner Suite von Basismodellen (FMs) die Grundlage für Agentenintelligenz. Es ermöglicht den KI-Agenten Funktionen zur Verarbeitung natürlicher Sprache (NLP), Argumentation und Entscheidungsfindung bei gleichzeitiger Beibehaltung einer hohen Verfügbarkeit und Skalierbarkeit.
+ Das CrewAI-Framework dient als zentrale Orchestrierungsebene für die Erstellung und Verwaltung von KI-Agenten. Es verwaltet Kommunikationsprotokolle für Agenten, die Delegierung von Aufgaben und das Workflow-Management und ist gleichzeitig in Amazon Bedrock integriert.
+ Terraform verwaltet den gesamten Infrastrukturstapel mithilfe von Code, einschließlich Rechenressourcen, Netzwerken, Sicherheitsgruppen und AWS Identity and Access Management (IAM-) Rollen. Es gewährleistet konsistente, versionskontrollierte Bereitstellungen in allen Umgebungen. Die Terraform-Bereitstellung erstellt Folgendes:
  + AWS Lambda Funktion zum Ausführen der CrewAI-Anwendung
  + Amazon Simple Storage Service (Amazon S3) -Buckets für Code und Berichte
  + IAM-Rollen mit entsprechenden Berechtigungen
  +  CloudWatch Amazon-Protokollierung
  + Geplante Ausführung durch Amazon EventBridge

Das folgende Diagramm veranschaulicht die Architektur für die Bereitstellung von CrewAI Multi-Agent-Systemen mithilfe von Amazon Bedrock und Terraform.

![\[Workflow zur Bereitstellung von CrewAI Multi-Agenten-Systemen mit Terraform und Amazon Bedrock.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b46069e9-4c38-405f-b0f0-310eabb06b06/images/b3296b17-e388-46ba-8d71-2ec7ce3ed3e0.png)


Das Diagramm zeigt den folgenden Workflow:

1. Der Benutzer klont das Repository.

1. Der Benutzer führt den Befehl aus`terraform apply`, um die AWS Ressourcen bereitzustellen.

1. Die Amazon Bedrock-Modellkonfiguration umfasst die Angabe des Foundation Model (FM), das für die Konfiguration der CrewAI-Agenten verwendet werden soll.

1. Es wird eine EventBridge Regel eingerichtet, um die Lambda-Funktion gemäß dem definierten Zeitplan auszulösen.

1. Wenn sie ausgelöst wird (entweder nach einem Zeitplan oder manuell), initialisiert die Lambda-Funktion und übernimmt die IAM-Rolle mit Zugriffsberechtigungen und Amazon Bedrock. AWS-Services 

1. *Das CrewAI-Framework lädt Agentenkonfigurationen aus YAML-Dateien und erstellt spezialisierte KI-Agenten (das Auditteam für die Infrastruktursicherheit).AWS * Die Lambda-Funktion führt diese Agenten sequentiell aus, um AWS Ressourcen zu scannen, Sicherheitslücken zu analysieren und umfassende Auditberichte zu erstellen.

1. CloudWatch Logs erfasst detaillierte Ausführungsinformationen aus der Lambda-Funktion mit einer Aufbewahrungsfrist von 365 Tagen und AWS Key Management Service (AWS KMS) Verschlüsselung für Compliance-Anforderungen. Die Protokolle bieten Einblick in die Agentenaktivitäten, die Fehlerverfolgung und Leistungskennzahlen und ermöglichen so eine effektive Überwachung und Fehlerbehebung des Sicherheitsauditprozesses.

1. Der Sicherheitsauditbericht wird automatisch generiert und im dafür vorgesehenen Amazon S3 S3-Bucket gespeichert. Die automatisierte Einrichtung trägt dazu bei, eine konsistente Sicherheitsüberwachung bei minimalem Betriebsaufwand aufrechtzuerhalten.

Nach der ersten Bereitstellung bietet der Workflow fortlaufende Sicherheitsüberprüfungen und Berichte für Ihre AWS Infrastruktur ohne manuelles Eingreifen.

**Überblick über KI-Agenten**

Dieses Muster erzeugt mehrere KI-Agenten mit jeweils eigenen Rollen, Zielen und Tools:
+ Der **Security Analyst Agent** sammelt und analysiert AWS Ressourceninformationen.
+ Der **Penetrationstester-Agent** identifiziert Schwachstellen in AWS Ressourcen.
+ Der **Compliance-Experte überprüft** Konfigurationen anhand von Konformitätsstandards.
+ Der **Report Writer Agent** fasst die Ergebnisse zu umfassenden Berichten zusammen.

Diese Agenten arbeiten bei einer Reihe von Aufgaben zusammen und nutzen dabei ihre kollektiven Fähigkeiten, um Sicherheitsaudits durchzuführen und umfassende Berichte zu erstellen. (In der `config/agents.yaml` Datei werden die Fähigkeiten und Konfigurationen der einzelnen Agenten dieser Crew beschrieben.)

Die Verarbeitung der Sicherheitsanalyse umfasst die folgenden Aktionen:

1. Der Security Analyst Agent untersucht die gesammelten Daten über AWS Ressourcen wie die folgenden:
   + Amazon Elastic Compute Cloud (Amazon EC2) -Instances und Sicherheitsgruppen
   + Amazon S3 S3-Buckets und Konfigurationen
   + IAM-Rollen, -Richtlinien und -Berechtigungen
   + Virtual Private Cloud (VPC) -Konfigurationen und Netzwerkeinstellungen
   + Amazon RDS-Datenbanken und Sicherheitseinstellungen
   + Lambda-Funktionen und Konfigurationen
   + Andere AWS-Services im Prüfungsumfang

1. Der Penetrationstester-Agent identifiziert potenzielle Sicherheitslücken.

1. Die Agenten arbeiten im Rahmen des CrewAI-Frameworks zusammen, um ihre Ergebnisse auszutauschen.

Die Berichtsgenerierung umfasst die folgenden Aktionen:

1. Der Report Writer-Agent stellt die Ergebnisse aller anderen Agenten zusammen.

1. Sicherheitsprobleme sind nach Service, Schweregrad und Auswirkungen auf die Einhaltung der Vorschriften geordnet.

1. Für jedes identifizierte Problem werden Empfehlungen zur Behebung erstellt.

1. Ein umfassender Sicherheitsauditbericht wird im Markdown-Format erstellt und in den dafür vorgesehenen Amazon S3 S3-Bucket hochgeladen. Historische Berichte werden zur Nachverfolgung der Einhaltung von Vorschriften und zur Verbesserung der Sicherheitslage aufbewahrt.

Zu den Protokollierungs- und Überwachungsaktivitäten gehören:
+ CloudWatch In den Protokollen werden Ausführungsdetails und etwaige Fehler erfasst.
+ Lambda-Ausführungsmetriken werden zur Überwachung aufgezeichnet.

**Anmerkung**  
Der Code für `aws-security-auditor-crew` stammt aus dem Repository GitHub [3P-Agentic\$1Frameworks](https://github.com/aws-samples/3P-Agentic-Frameworks/blob/main/crewai/aws-security-auditor-crew/README.md), das in der Samples-Sammlung verfügbar ist. AWS 

**Verfügbarkeit und Umfang**

Sie können die verfügbaren Agenten auf mehr als die vier Kernagenten erweitern. Um mit zusätzlichen spezialisierten Agenten zu skalieren, sollten Sie die folgenden neuen Agententypen in Betracht ziehen:
+ Ein auf *Threat Intelligence spezialisierter* Agent kann Folgendes tun:
  + Überwacht externe Bedrohungsfeeds und korreliert mit internen Ergebnissen
  + Bietet Hintergrundinformationen zu neu auftretenden Bedrohungen, die für Ihre Infrastruktur relevant sind
  + Priorisiert Sicherheitslücken, die auf aktiver Ausnutzung in freier Wildbahn basieren
+ Mitarbeiter *des Compliance-Frameworks* können sich auf bestimmte regulatorische Bereiche wie die folgenden konzentrieren:
  + Beauftragter für die Einhaltung des PCI DSS (Payment Card Industry Data Security Standard)
  + Compliance-Beauftragter des Health Insurance Portability and Accountability Act von 1996 (HIPAA)
  + Beauftragter für die Einhaltung von System and Organization Controls 2 (SOC 2)
  + Beauftragter für die Einhaltung der Allgemeinen Datenschutzverordnung (DSGVO)

Durch die sorgfältige Erweiterung der verfügbaren Agenten kann diese Lösung tiefere, spezialisiertere Einblicke in die Sicherheit bieten und gleichzeitig die Skalierbarkeit in großen AWS Umgebungen aufrechterhalten. Weitere Informationen zu einem Implementierungsansatz, zur Entwicklung von Tools und Überlegungen zur Skalierung finden Sie unter [Zusätzliche](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional) Informationen.

## Tools
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-tools"></a>

**AWS-Services**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) ist ein vollständig verwalteter KI-Service, der leistungsstarke Fundamentmodelle (FMs) über eine einheitliche API zur Nutzung verfügbar macht.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) hilft Ihnen dabei, die Protokolle all Ihrer Systeme und Anwendungen zu zentralisieren, AWS-Services sodass Sie sie überwachen und sicher archivieren können.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten In diesem Muster wird es für die Planung und Orchestrierung von Agenten-Workflows verwendet.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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 SDK für Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt. In diesem Muster bietet es Objektspeicher für Agentenartefakte und Statusverwaltung.

**Andere Tools**
+ [CrewAI](https://www.crewai.com/open-source) ist ein Open-Source-Framework auf Python-Basis für den Aufbau von KI-Systemen mit mehreren Agenten.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code), mit dem Sie Cloud- und lokale Ressourcen HashiCorp erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [deploy-crewai-agents-terraform](https://github.com/aws-samples/deploy-crewai-agents-terraform.git)Repository verfügbar.

## Best Practices
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-best-practices"></a>
+ Implementieren Sie die richtige Statusverwaltung für Terraform, indem Sie ein Amazon S3 S3-Backend mit Amazon DynamoDB-Sperre verwenden. Weitere Informationen finden Sie unter Bewährte Methoden für das [Backend unter Bewährte Methoden](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/backend.html) für die Verwendung des *Terraform-Anbieters*. AWS 
+ Verwenden Sie Workspaces, um Entwicklungs-, Staging- und Produktionsumgebungen voneinander zu trennen.
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie nur die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).
+ Aktivieren Sie die detaillierte Protokollierung und Überwachung mithilfe von CloudWatch Logs.
+ Implementieren Sie Wiederholungsmechanismen und Fehlerbehandlung für Agentenoperationen.

## Epen
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-epics"></a>

### Stellen Sie das CrewAI-Framework bereit
<a name="deploy-crewai-framework"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository dieses Musters auf Ihrem lokalen Computer zu klonen:<pre>git clone "git@github.com:aws-samples/deploy-crewai-agents-terraform.git"<br />cd deploy-crewai-agents-terraform</pre> | DevOps Ingenieur | 
| Bearbeiten Sie die Umgebungsvariablen. | Gehen Sie wie folgt vor, um die Umgebungsvariablen zu bearbeiten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps Ingenieur | 
| Erstellen Sie die Infrastruktur. | Führen Sie die folgenden Befehle aus, um die Infrastruktur zu erstellen:<pre>cd terraform</pre><pre>terraform init</pre><pre>terraform plan</pre>Überprüfen Sie den Ausführungsplan sorgfältig. Wenn die geplanten Änderungen akzeptabel sind, führen Sie den folgenden Befehl aus:<pre>terraform apply --auto-approve</pre> | DevOps Ingenieur | 

### Auf CrewAI-Agenten zugreifen
<a name="access-crewai-agents"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Greifen Sie auf die Agenten zu. | Die Agenten der AWS Infrastructure Security Audit and Reporting Crew werden als Lambda-Funktion eingesetzt. Gehen Sie wie folgt vor, um auf die Agenten zuzugreifen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps Ingenieur | 
| (Optional) Konfigurieren Sie die manuelle Ausführung der Agenten. | Die Agenten sind so konfiguriert, dass sie automatisch nach einem täglichen Zeitplan (Mitternacht UTC) ausgeführt werden. Sie können sie jedoch manuell auslösen, indem Sie die folgenden Schritte ausführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)Weitere Informationen finden Sie in der [Lambda-Dokumentation unter Testen von Lambda-Funktionen in der Konsole](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html). | DevOps Ingenieur | 
| Greifen Sie zum Debuggen auf Agentenprotokolle zu. | Die CrewAI-Agenten werden in einer Lambda-Umgebung ausgeführt und verfügen über die erforderlichen Berechtigungen, um Sicherheitsüberprüfungen durchzuführen und Berichte in Amazon S3 zu speichern. Das Ergebnis ist ein Markdown-Bericht, der eine umfassende Sicherheitsanalyse Ihrer Infrastruktur bietet. AWS Gehen Sie wie folgt vor, um das detaillierte Debuggen des Agentenverhaltens zu unterstützen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps Ingenieur | 
| Ergebnisse der Agentenausführung anzeigen | Gehen Sie wie folgt vor, um die Ergebnisse einer Agentenausführung anzuzeigen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)Berichte werden mit auf Zeitstempeln basierenden Dateinamen wie folgt gespeichert: `security-audit-report-YYYY-MM-DD-HH-MM-SS.md)` | DevOps Ingenieur | 
| Überwachen Sie die Ausführung des Agenten. | Gehen Sie wie folgt vor, um die Ausführung der Agenten anhand von CloudWatch Protokollen zu überwachen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps Ingenieur | 
|  Passen Sie das Verhalten der Agenten an. | Gehen Sie wie folgt vor, um die Agenten oder ihre Aufgaben zu ändern:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)<pre>cd terraform </pre><pre>terraform apply</pre> | DevOps Ingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die erstellten Ressourcen. | Führen Sie den folgenden Befehl aus, um die gesamte nach diesem Muster erstellte Infrastruktur zu löschen:<pre>terraform plan -destroy </pre>Mit dem folgenden Befehl werden alle Ressourcen, die nach diesem Muster erstellt wurden, dauerhaft gelöscht. Der Befehl fordert Sie zur Bestätigung auf, bevor Ressourcen entfernt werden.Prüfen Sie den Vernichtungsplan sorgfältig. Wenn die geplanten Löschungen akzeptabel sind, führen Sie den folgenden Befehl aus:<pre>terraform destroy</pre> | DevOps Ingenieur | 

## Fehlerbehebung
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Verhalten der Agenten | Informationen zu diesem Problem finden Sie unter [Testen und Beheben von Problemen mit dem Verhalten von Agenten](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) in der Amazon Bedrock-Dokumentation. | 
| Probleme mit dem Lambda-Netzwerk | Informationen zu diesen Problemen finden Sie unter [Problembehandlung bei Netzwerkproblemen in Lambda](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) in der Lambda-Dokumentation. | 
| IAM-Berechtigungen | Informationen zu diesen Problemen finden Sie unter [Problembehandlung bei IAM in der IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html). | 

## Zugehörige Ressourcen
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-resources"></a>

**AWS Blogs**
+ [Entwickeln Sie Agentensysteme mit CrewAI und Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/build-agentic-systems-with-crewai-and-amazon-bedrock/)

**AWS Dokumentation**
+ [Dokumentation zu Amazon Bedrock](https://docs.aws.amazon.com/bedrock/)
+ [So funktioniert Amazon Bedrock Agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html)

**Sonstige Ressourcen**
+ [CrewAI-Dokumentation](https://docs.crewai.com/introduction)
+ [Dokumentation für Terraform Provider AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Zusätzliche Informationen
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional"></a>

Dieser Abschnitt enthält Informationen zu einem Implementierungsansatz, zur Toolentwicklung und zu Überlegungen zur Skalierung im Zusammenhang mit der vorherigen Diskussion in [Automatisierung und](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture) Skalierung.

**Implementierungsansatz**

Ziehen Sie beim Hinzufügen von Agenten den folgenden Ansatz in Betracht:

1. Agentenkonfiguration:
   + Fügen Sie der Datei neue Agentendefinitionen `config/agents.yaml` hinzu.
   + Definieren Sie spezielle Hintergrundinformationen, Ziele und Tools für jeden Agenten.
   + Konfigurieren Sie Speicher- und Analysefunktionen auf der Grundlage der Spezialisierung der Agenten.

1. Orchestrierung von Aufgaben:
   + Aktualisieren Sie die `config/tasks.yaml` Datei, sodass sie neue agentenspezifische Aufgaben enthält.
   + Erstellen Sie Abhängigkeiten zwischen Aufgaben, um einen ordnungsgemäßen Informationsfluss sicherzustellen.
   + Implementieren Sie gegebenenfalls die parallel Ausführung von Aufgaben.

**Technische Umsetzung**

Im Folgenden finden Sie eine Ergänzung zur `agents.yaml` Datei für einen vorgeschlagenen Threat Intelligence Specialist-Agenten:

```
Example new agent configuration in agents.yaml
threat_intelligence_agent:
 name: "Threat Intelligence Specialist"
 role: "Cybersecurity Threat Intelligence Analyst"
 goal: "Correlate AWS security findings with external threat intelligence"
 backstory: "Expert in threat intelligence with experience in identifying emerging threats and attack patterns relevant to cloud infrastructure." 
verbose: true 
allow_delegation: true 
tools: 
- "ThreatIntelligenceTool" 
- "AWSResourceAnalyzer"
```

**Entwicklung von Tools**

Mit dem CrewAI-Framework können Sie die folgenden Maßnahmen ergreifen, um die Effektivität Ihres Sicherheitsprüfungsteams zu verbessern:
+ Erstellen Sie benutzerdefinierte Tools für neue Agenten.
+ Integrieren Sie externe Systeme, APIs um Bedrohungsinformationen zu erhalten.
+ Entwickeln Sie spezialisierte Analysatoren für verschiedene AWS-Services.

**Überlegungen zur Skalierung**

Bei der Erweiterung Ihres Systems zur Prüfung und Berichterstattung zur AWS Infrastruktursicherheit auf größere Umgebungen oder umfassendere Audits sollten Sie die folgenden Skalierungsfaktoren berücksichtigen:
+ **Rechenressourcen**
  + Erhöhen Sie die Lambda-Speicherzuweisung, um zusätzliche Agenten zu verarbeiten.
  + Erwägen Sie, die Workloads der Agenten auf mehrere Lambda-Funktionen aufzuteilen.
+ **Kostenmanagement**
  + Überwachen Sie die Nutzung der Amazon Bedrock API, wenn die Anzahl der Agenten steigt.
  + Implementieren Sie eine selektive Agentenaktivierung auf der Grundlage des Prüfungsumfangs.
+ **Effizienz der Zusammenarbeit**
  + Optimieren Sie den Informationsaustausch zwischen Agenten.
  + Implementieren Sie hierarchische Agentenstrukturen für komplexe Umgebungen.
+ **Erweiterung der Wissensbasis**
  + Stellen Sie Agenten spezialisierte Wissensdatenbanken für ihre Domänen zur Verfügung.
  + Aktualisieren Sie das Wissen der Agenten regelmäßig mit neuen bewährten Sicherheitsmethoden.

# Stellen Sie einen AWS Glue Glue-Job mit einer AWS CodePipeline CI/CD-Pipeline bereit
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline"></a>

*Bruno Klein und Luis Henrique Massao Yamada, Amazon Web Services*

## Zusammenfassung
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-summary"></a>

Dieses Muster zeigt, wie Sie AWS CodeCommit und AWS CodePipeline mit AWS Glue integrieren und AWS Lambda verwenden können, um Jobs zu starten, sobald ein Entwickler seine Änderungen in ein CodeCommit AWS-Remote-Repository überträgt. 

Wenn ein Entwickler eine Änderung an ein ETL-Repository (Extrahieren, Transformieren und Laden) übermittelt und die Änderungen an AWS überträgt CodeCommit, wird eine neue Pipeline aufgerufen. Die Pipeline initiiert eine Lambda-Funktion, die einen AWS Glue Glue-Job mit diesen Änderungen startet. Der AWS Glue Glue-Job führt die ETL-Aufgabe aus.

Diese Lösung ist in Situationen hilfreich, in denen Unternehmen, Entwickler und Dateningenieure Jobs starten möchten, sobald die Änderungen festgeschrieben und in die Ziel-Repositorys übertragen wurden. Sie trägt zu einem höheren Grad an Automatisierung und Reproduzierbarkeit bei und vermeidet so Fehler bei der Auftragseinführung und im Lebenszyklus.

## Voraussetzungen und Einschränkungen
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [Git](https://git-scm.com/) ist auf dem lokalen Computer installiert
+ [Amazon Cloud Development Kit (Amazon CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist auf dem lokalen Computer installiert
+ [Python](https://www.python.org/) ist auf dem lokalen Computer installiert
+ Der Code im Abschnitt *Anlagen*

**Einschränkungen**
+ Die Pipeline ist abgeschlossen, sobald der AWS Glue Glue-Job erfolgreich gestartet wurde. Es wartet nicht auf den Abschluss des Jobs.
+ Der im Anhang enthaltene Code dient nur zu Demo-Zwecken.

## Architektur
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Glue
+ AWS Lambda
+ AWS CodePipeline
+ AWS CodeCommit

**Zielarchitektur**

![\[Verwenden von Lambda zum Starten eines Glue-Jobs, sobald ein Entwickler Änderungen an ein CodeCommit Repo überträgt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/99a67388-5939-4267-8324-b6ca8bfa7962/images/917c9041-b94d-4e95-a3c4-9a1115ead228.png)


 

Der Prozess besteht aus den folgenden Schritten:

1. Der Entwickler oder Dateningenieur nimmt eine Änderung am ETL-Code vor, überträgt die Änderung und überträgt sie an AWS. CodeCommit

1. Der Push initiiert die Pipeline.

1. Die Pipeline initiiert eine Lambda-Funktion, die das Repository aufruft und die Datei `codecommit:GetFile` auf Amazon Simple Storage Service (Amazon S3) hochlädt.

1. Die Lambda-Funktion startet einen neuen AWS Glue Glue-Job mit dem ETL-Code.

1. Die Lambda-Funktion beendet die Pipeline.

**Automatisierung und Skalierung**

Der Beispielanhang zeigt, wie Sie AWS Glue in AWS integrieren können CodePipeline. Es bietet ein Basisbeispiel, das Sie für Ihren eigenen Gebrauch anpassen oder erweitern können. Einzelheiten finden Sie im Abschnitt *Epics*.

## Tools
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-tools"></a>
+ [AWS CodePipeline — AWS](https://aws.amazon.com/codepipeline/) CodePipeline ist ein vollständig verwalteter [Continuous Delivery](https://aws.amazon.com/devops/continuous-delivery/) Service, der Sie bei der Automatisierung Ihrer Release-Pipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates unterstützt.
+ [AWS CodeCommit — AWS](https://aws.amazon.com/codecommit/) CodeCommit ist ein vollständig verwalteter [Quellcodeverwaltungsservice](https://aws.amazon.com/devops/source-control/), der sichere, Git-basierte Repositorys hostet.
+ [AWS Lambda](https://aws.amazon.com/lambda/) — AWS Lambda ist ein serverloser Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitzustellen oder zu verwalten.
+ [AWS Glue](https://aws.amazon.com/glue) — AWS Glue ist ein serverloser Datenintegrationsservice, der es einfach macht, Daten für Analysen, maschinelles Lernen und Anwendungsentwicklung zu entdecken, aufzubereiten und zu kombinieren.
+ [Git-Client](https://git-scm.com/downloads) — Git stellt GUI-Tools bereit, oder Sie können die Befehlszeile oder ein Desktop-Tool verwenden, um die erforderlichen Artefakte auszuchecken GitHub. 
+ [AWS CDK](https://aws.amazon.com/cdk/) — Das AWS CDK ist ein Open-Source-Framework für die Softwareentwicklung, mit dem Sie Ihre Cloud-Anwendungsressourcen mithilfe vertrauter Programmiersprachen definieren können.

## Epen
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-epics"></a>

### Stellen Sie den Beispielcode bereit
<a name="deploy-the-sample-code"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die AWS CLI. | Konfigurieren Sie die AWS-Befehlszeilenschnittstelle (AWS CLI), um Ihr aktuelles AWS-Konto anzusprechen und sich mit diesem zu authentifizieren. Anweisungen finden Sie in der [AWS-CLI-Dokumentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). | Entwickler, DevOps Ingenieur | 
| Extrahieren Sie die Beispielprojektdateien. | Extrahieren Sie die Dateien aus dem Anhang, um einen Ordner zu erstellen, der die Beispielprojektdateien enthält. | Entwickler, DevOps Ingenieur | 
| Stellen Sie den Beispielcode bereit. | Führen Sie nach dem Extrahieren der Dateien die folgenden Befehle vom Extraktionsverzeichnis aus, um ein Basisbeispiel zu erstellen:<pre>cdk bootstrap<br />cdk deploy<br />git init<br />git remote add origin <code-commit-repository-url><br />git stage .<br />git commit -m "adds sample code"<br />git push --set-upstream origin main</pre>Nach dem letzten Befehl können Sie den Status der Pipeline und des AWS Glue Glue-Jobs überwachen. | Entwickler, DevOps Ingenieur | 
| Passen Sie den Code an. | Passen Sie den Code für die Datei etl.py an Ihre Geschäftsanforderungen an. Sie können den ETL-Code überarbeiten, die Pipeline-Phasen ändern oder die Lösung erweitern. | Dateningenieur | 

## Zugehörige Ressourcen
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-resources"></a>
+ [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)
+ [Hinzufügen von Aufträgen in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Finden Sie Action-Integrationen in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/integrations-action-type.html#integrations-source)
+ [Rufen Sie eine AWS-Lambda-Funktion in einer Pipeline auf in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html)
+ [AWS Glue Glue-Programmierung](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming.html)
+ [ CodeCommit GetFile AWS-API](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFile.html)

## Anlagen
<a name="attachments-99a67388-5939-4267-8324-b6ca8bfa7962"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/99a67388-5939-4267-8324-b6ca8bfa7962/attachments/attachment.zip)

# Stellen Sie mithilfe von AWS CodePipeline, AWS und AWS Code in mehreren CodeCommit AWS-Regionen bereit CodeBuild
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Zusammenfassung
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-summary"></a>

Dieses Muster zeigt, wie mithilfe von AWS eine Infrastruktur oder Architektur in mehreren Amazon Web Services (AWS) -Regionen aufgebaut werden kann CloudFormation. Es umfasst Continuous Integration (CI) /Continuous Deployment (CD) in mehreren AWS-Regionen für schnellere Bereitstellungen. ****Die Schritte in diesem Muster wurden beispielsweise für die Erstellung eines CodePipeline AWS-Jobs zur Bereitstellung in drei AWS-Regionen getestet. Sie können die Anzahl der Regionen je nach Anwendungsfall ändern.

## Voraussetzungen und Einschränkungen
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ 
  + Eine CodeBuild Rolle bei *AmazonS3 FullAccess* und *CloudWatchFullAccess*den Richtlinien. Diese Richtlinien ermöglichen CodeBuild den Zugriff auf die Überwachung von AWS-Ereignissen CodeCommit über Amazon CloudWatch und die Nutzung von Amazon Simple Storage Service (Amazon S3) als Artefaktspeicher.
  + Eine CloudFormation AWS-Rolle mit den folgenden Richtlinien, die AWS CloudFormation in der letzten Build-Phase die Möglichkeit geben, AWS Lambda-Funktionen zu erstellen oder zu aktualisieren, CloudWatch Amazon-Protokolle zu übertragen oder zu überwachen und Änderungssätze zu erstellen und zu aktualisieren. 
    + *AWSLambdaFullAccess*
    + *AWSCodeDeployFullAccess*
    + *CloudWatchFullAccess*
    + *AWSCloudFormationFullAccess*
    + *AWSCodePipelineFullAccess*
**Anmerkung**  
Zwei AWS Identity and Access Management (IAM) -Rollen für AWS CodeBuild und AWS CloudFormation mit geeigneten Richtlinien für CodeBuild die parallel Ausführung der CI-Aufgaben wie Testen, Bündeln, Verpacken der Artefakte und Bereitstellung in mehreren AWS-Regionen.  Überprüfen Sie die von erstellten Richtlinien, CodePipeline um sicherzustellen, dass AWS in den CI CodeBuild - und CD-Phasen CloudFormation über die entsprechenden Berechtigungen verfügt.

## Architektur
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-architecture"></a>

![\[Ein CodePipeline AWS-Job, der in drei AWS-Regionen bereitgestellt wird.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d44c393c-7243-4d4e-8b84-88a8503af98f/images/5c27fc35-5e62-4292-8b18-a7bc7faf2631.png)


Die Architektur und der Workflow dieses Musters für mehrere Regionen umfassen die folgenden Schritte.

1. Sie senden Ihren Code an ein Repository. CodeCommit 

1. Ruft beim Empfang einer Codeaktualisierung oder CodeCommit eines Commits ein CloudWatch Ereignis auf, das wiederum einen CodePipeline Job startet.

1. CodePipeline aktiviert das CI, das von verwaltet wird. CodeBuild Die folgenden Aufgaben werden ausgeführt.
   + Testen der CloudFormation AWS-Vorlagen (optional)
   + Paketierung der CloudFormation AWS-Vorlagen für jede Region, die in der Bereitstellung enthalten ist. Dieses Muster wird beispielsweise parallel in drei AWS-Regionen bereitgestellt, sodass die CloudFormation AWS-Vorlagen in drei S3-Buckets CodeBuild gepackt werden, einen in jeder angegebenen Region. Die S3-Buckets werden nur CodeBuild als Artefakt-Repositorys verwendet.

1. CodeBuild packt die Artefakte als Eingabe für die nächste Bereitstellungsphase, die parallel in den drei AWS-Regionen läuft. Wenn Sie eine andere Anzahl von Regionen angeben, CodePipeline erfolgt die Bereitstellung in diesen Regionen.

## Tools
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-tools"></a>

**Tools**
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — CodePipeline ist ein Continuous Delivery Service, mit dem Sie die Schritte modellieren, visualisieren und automatisieren können, die für die kontinuierliche Veröffentlichung Ihrer Softwareänderungen erforderlich sind.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — CodeBuild ist ein vollständig verwalteter Build-Service, der Ihren Quellcode kompiliert, Komponententests durchführt und Artefakte erzeugt, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — CodeCommit ist ein von Amazon Web Services gehosteter Service zur Versionskontrolle, mit dem Sie Ressourcen (wie Quellcode und Binärdateien) privat in der Cloud speichern und verwalten können.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation ist ein Service, der Sie bei der Modellierung und Einrichtung Ihrer Amazon Web Services Services-Ressourcen unterstützt, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können, die in AWS ausgeführt werden.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) ist ein Webservice, mit dem Sie den Zugriff auf AWS-Ressourcen sicher kontrollieren können.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist ein Speicher für das Internet. Der Service ist darauf ausgelegt, Cloud Computing für Entwickler zu erleichtern.

**Code**

Der folgende Beispielcode bezieht sich auf die `BuildSpec.yaml` Datei (Erstellungsphase).

```
---
artifacts:
discard-paths: true
files:
- packaged-first-region.yaml
- packaged-second-region.yaml
- packaged-third-region.yaml
phases:
build:
commands:
- echo "********BUILD PHASE - CF PACKAGING**********"
- "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION"
- "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION"
- "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION"
install:
commands:
- echo "********BUILD PHASE - PYTHON SETUP**********"
runtime-versions:
python: 3.8
post_build:
commands:
- echo "********BUILD PHASE - PACKAGING COMPLETION**********"
pre_build:
commands:
- echo "********BUILD PHASE - DEPENDENCY SETUP**********"
- "npm install --silent --no-progress"
- echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********"
version: 0.2
```

## Epen
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-epics"></a>

### Bereiten Sie den Code und das CodeCommit Repository vor
<a name="prepare-the-code-and-the-codecommit-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Wählen Sie die primäre AWS-Region für die Bereitstellung aus. | Melden Sie sich bei Ihrem AWS-Konto an und wählen Sie die primäre Region für die Bereitstellung aus. Das CodeCommit Repository wird sich in der primären Region befinden. | DevOps | 
| Erstellen Sie das CodeCommit Repository. | Erstellen Sie das CodeCommit Repository und übertragen Sie den erforderlichen Code hinein. Der Code umfasst im Allgemeinen die AWS CloudFormation - oder AWS-SAM-Vorlagen, Lambda-Code, falls vorhanden, und die CodeBuild `buildspec.yaml` Dateien als Eingabe für AWS CodePipeline. | DevOps | 
| Schieben Sie den Code in das CodeCommit Repository. | Laden Sie im Bereich *Anlagen* den Code für dieses Beispiel herunter und übertragen Sie dann den erforderlichen Code hinein. Im Allgemeinen kann der Code AWS CloudFormation - oder AWS-SAM-Vorlagen, Lambda-Code und die CodeBuild `buildspec.yaml` Dateien als Eingabe für die Pipeline enthalten. | DevOps | 

### Quellphase: Erstellen Sie die Pipeline
<a name="source-phase-create-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den CodePipeline Job. | Wählen Sie in der CodePipeline Konsole die Option **Pipeline erstellen** aus. | DevOps | 
| Geben Sie dem CodePipeline Job einen Namen und wählen Sie die Einstellung für die Servicerolle aus. | Geben Sie einen Namen für den Job ein und behalten Sie die Standardeinstellung für die Servicerolle bei, sodass die Rolle mit den erforderlichen Richtlinien CodePipeline erstellt wird. | DevOps | 
| Geben Sie den Speicherort für den Artefaktspeicher an. | Behalten Sie unter **Erweiterte Einstellungen** die Standardoption bei, sodass ein S3-Bucket CodePipeline erstellt wird, der für die Speicherung von Codeartefakten verwendet wird. Wenn Sie stattdessen einen vorhandenen S3-Bucket verwenden, muss sich der Bucket in der primären Region befinden, die Sie im ersten Epic angegeben haben. | DevOps | 
| Geben Sie den Verschlüsselungsschlüssel an. | Behalten Sie die Standardoption **AWS Managed Key** bei oder entscheiden Sie sich dafür, Ihren eigenen vom Kunden verwalteten AWS Key Management Service (AWS KMS) -Schlüssel zu verwenden. | DevOps | 
| Geben Sie den Quellanbieter an. | Wählen Sie unter **Quellanbieter** die Option **AWS** aus CodeCommit. | DevOps | 
| Geben Sie das Repository an. | Wähle das CodeCommit Repository aus, das du im ersten Epos erstellt hast. Wenn du den Code in einer Filiale platziert hast, wähle die Filiale aus. | DevOps | 
| Geben Sie an, wie Codeänderungen erkannt werden. | Behalten Sie die Standardeinstellung **Amazon CloudWatch Events** als Auslöser für die Änderung bei CodeCommit , um den CodePipeline Job zu starten. | DevOps | 

### Erstellungsphase: Konfigurieren Sie die Pipeline
<a name="build-phase-configure-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Geben Sie den Build-Anbieter an. | Wählen Sie als Build-Anbieter **AWS** aus CodeBuild. | DevOps | 
| Geben Sie die AWS-Region an. | Wählen Sie die primäre Region aus, die Sie im ersten Epic angegeben haben. | DevOps | 

### Erstellungsphase: Erstellen und konfigurieren Sie das Projekt
<a name="build-phase-create-and-configure-the-project"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen des Projekts | Wählen Sie **Projekt erstellen** und geben Sie einen Namen für das Projekt ein. | DevOps | 
| Geben Sie das Umgebungsbild an. | Verwenden Sie für diese Musterdemonstration das standardmäßige CodeBuild verwaltete Image. Sie haben auch die Möglichkeit, ein benutzerdefiniertes Docker-Image zu verwenden, falls Sie eines haben. | DevOps | 
| Geben Sie das Betriebssystem an. | Wählen Sie entweder Amazon Linux 2 oder Ubuntu.Amazon Linux 2 nähert sich dem Ende des Supports. Weitere Informationen finden Sie unter [Amazon Linux FAQs 2.](https://aws.amazon.com/amazon-linux-2/faqs/) | DevOps | 
| Geben Sie die Servicerolle an. | Wählen Sie die Rolle aus, für die Sie erstellt haben, CodeBuild bevor Sie mit der Erstellung des CodePipeline Jobs begonnen haben. (Weitere Informationen finden Sie im Abschnitt *Voraussetzungen*.) | DevOps | 
| Legen Sie zusätzliche Optionen fest. | Behalten Sie für **Timeout** und **Queued Timeout** die Standardwerte bei. Behalten Sie für das Zertifikat die Standardeinstellung bei, es sei denn, Sie haben ein benutzerdefiniertes Zertifikat, das Sie verwenden möchten. | DevOps | 
| Erstellen Sie die Umgebungsvariablen. | Erstellen Sie für jede AWS-Region, in der Sie die Bereitstellung durchführen möchten, Umgebungsvariablen, indem Sie den S3-Bucket-Namen und den Regionsnamen angeben (z. B. us-east-1). | DevOps | 
| Geben Sie den Namen der Buildspec-Datei an, falls es sich nicht um buildspec.yml handelt. | Lassen Sie dieses Feld leer, wenn der Dateiname der Standardname ist. `buildspec.yaml` Wenn Sie die Buildspec-Datei umbenannt haben, geben Sie den Namen hier ein. Stellen Sie sicher, dass er dem Namen der Datei entspricht, die sich im Repository befindet. CodeCommit  | DevOps | 
| Geben Sie die Protokollierung an. | Um Protokolle für Amazon CloudWatch Events zu sehen, behalten Sie die Standardeinstellung bei. Sie können auch beliebige Gruppen- oder Logger-Namen definieren. | DevOps | 

### Überspringen Sie die Bereitstellungsphase
<a name="skip-the-deploy-phase"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überspringen Sie die Bereitstellungsphase und schließen Sie die Erstellung der Pipeline ab. | Wenn Sie die Pipeline einrichten, CodePipeline können Sie nur eine Phase in der Bereitstellungsphase erstellen. Um die Bereitstellung in mehreren AWS-Regionen durchzuführen, überspringen Sie diese Phase. Nachdem die Pipeline erstellt wurde, können Sie mehrere Phasen der Bereitstellungsphase hinzufügen. | DevOps | 

### Bereitstellungsphase: Konfigurieren Sie die Pipeline für die Bereitstellung in der ersten Region
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-first-region"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie der Bereitstellungsphase eine Phase hinzu. | Bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase die Option Phase **hinzufügen** aus. Diese erste Phase ist für die primäre Region vorgesehen. | DevOps | 
| Geben Sie einen Aktionsnamen für die Phase ein. | Geben Sie einen eindeutigen Namen ein, der die erste (primäre) Phase und Region widerspiegelt. <region>Geben Sie beispielsweise **primary\$1 \$1deploy** ein. | DevOps | 
| Geben Sie den Aktionsanbieter an. | Wählen Sie für **Action Provider** die Option AWS aus CloudFormation. | DevOps | 
| Konfigurieren Sie die Region für die erste Phase. | Wählen Sie die erste (primäre) Region aus, dieselbe Region, in der CodePipeline und eingerichtet CodeBuild sind. Dies ist die primäre Region, in der Sie den Stack bereitstellen möchten. | DevOps | 
| Geben Sie das Eingabeartefakt an. | Wählen Sie **BuildArtifact**. Dies ist das Ergebnis der Erstellungsphase. | DevOps | 
| Geben Sie die Aktion an, die ausgeführt werden soll. | Wählen Sie für **den Aktionsmodus** die Option **Stack erstellen oder aktualisieren** aus. | DevOps | 
| Geben Sie einen Namen für den CloudFormation Stack ein. |  | DevOps | 
| Geben Sie die Vorlage für die erste Region an. | Wählen Sie den regionsspezifischen Paketnamen aus, der vom S3-Bucket für die erste (primäre) Region gepackt CodeBuild und dort abgelegt wurde. | DevOps | 
| Geben Sie die Funktionen an. | Funktionen sind erforderlich, wenn die Stack-Vorlage IAM-Ressourcen enthält oder wenn Sie einen Stack direkt aus einer Vorlage erstellen, die Makros enthält. Verwenden Sie für dieses Muster CAPABILITY\$1IAM, CAPABILITY\$1NAMED\$1IAM, CAPABILITY\$1AUTO\$1EXPAND. | DevOps | 

### Bereitstellungsphase: Konfigurieren Sie die Pipeline für die Bereitstellung in der zweiten Region
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-second-region"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie die zweite Phase zur Bereitstellungsphase hinzu. | Um eine Phase für die zweite Region hinzuzufügen, bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase die Option Phase **hinzufügen** aus. Wichtig: Die zweite Region wird genauso erstellt wie die erste Region, mit Ausnahme der folgenden Werte. | DevOps | 
| Geben Sie einen Aktionsnamen für die zweite Phase ein. | Geben Sie einen eindeutigen Namen ein, der die zweite Phase und die zweite Region widerspiegelt. | DevOps | 
| Konfigurieren Sie die Region für die zweite Phase. | Wählen Sie die zweite Region aus, in der Sie den Stack bereitstellen möchten. | DevOps | 
| Geben Sie die Vorlage für die zweite Region an. | Wählen Sie den regionsspezifischen Paketnamen aus, der von der zweiten Region gepackt CodeBuild und in den S3-Bucket abgelegt wurde. | DevOps | 

### Bereitstellungsphase: Konfigurieren Sie die Pipeline für die Bereitstellung in der dritten Region
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-third-region"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie die dritte Phase zur Bereitstellungsphase hinzu. | Um eine Phase für die dritte Region hinzuzufügen, bearbeiten Sie die Pipeline und wählen Sie in der Bereitstellungsphase die Option Phase **hinzufügen** aus. Wichtig: Der Vorgang zum Erstellen der zweiten Region entspricht dem der beiden vorherigen Regionen, mit Ausnahme der folgenden Werte. | DevOps | 
| Geben Sie einen Aktionsnamen für die dritte Phase ein. | Geben Sie einen eindeutigen Namen ein, der die dritte Phase und die dritte Region widerspiegelt. | DevOps | 
| Konfigurieren Sie die Region für die dritte Stufe. | Wählen Sie die dritte Region aus, in der Sie den Stack bereitstellen möchten. | DevOps | 
| Geben Sie die Vorlage für die dritte Region an. | Wählen Sie den regionsspezifischen Paketnamen aus, der von der dritten Region gepackt CodeBuild und in den S3-Bucket abgelegt wurde. | DevOps | 

### Bereinigen Sie die Bereitstellung
<a name="clean-up-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die AWS-Ressourcen. | Um die Bereitstellung zu bereinigen, löschen Sie die CloudFormation Stacks in jeder Region. Löschen Sie anschließend die CodePipeline Ressourcen CodeCommit CodeBuild, und aus der primären Region. | DevOps | 

## Zugehörige Ressourcen
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-resources"></a>
+ [Was ist AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Serverloses AWS-Anwendungsmodell](https://aws.amazon.com/serverless/sam/)
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [Referenz zur CloudFormation AWS-Architekturstruktur für AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html)

## Anlagen
<a name="attachments-d44c393c-7243-4d4e-8b84-88a8503af98f"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/d44c393c-7243-4d4e-8b84-88a8503af98f/attachments/attachment.zip)

# Stellen Sie Workloads aus DevOps Azure-Pipelines auf private Amazon EKS-Cluster bereit
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters"></a>

*Mahendra Revanasiddappa, Amazon Web Services*

## Zusammenfassung
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-summary"></a>

Dieses Muster zeigt, wie Continuous Integration und Continuous Delivery (CI/CD) von DevOps Azure-Pipelines zu privaten Amazon Elastic Kubernetes Service (Amazon EKS) -Clustern implementiert werden. Es befasst sich mit einer kritischen Herausforderung, mit der Unternehmen konfrontiert sind, die ihre Sicherheitslage verbessern, indem sie für ihre Amazon EKS-Cluster auf private API-Serverendpunkte umsteigen.

Ein öffentlicher Endpunkt macht den Kubernetes-API-Server direkt mit dem Internet verbunden, wodurch eine größere Angriffsfläche entsteht, auf die böswillige Akteure potenziell abzielen könnten. Durch den Wechsel zu einem privaten Endpunkt ist der Zugriff auf die Steuerungsebene des Clusters auf die virtuelle private Cloud (VPC) des Kunden beschränkt.

Die Umstellung eines Amazon EKS-Clusters auf einen privaten API-Endpunkt verbessert zwar die Sicherheit erheblich, bringt jedoch Konnektivitätsprobleme für externe CI/CD Plattformen wie Azure DevOps mit sich. Auf den privaten Endpunkt kann nur innerhalb der VPC oder der Peering-Netzwerke des Clusters zugegriffen werden. Daher können von Microsoft gehostete DevOps Standard-Azure-Agenten, die außerhalb des AWS privaten Netzwerks arbeiten, den Kubernetes-API-Server nicht direkt erreichen. Dadurch werden typische Bereitstellungsworkflows unterbrochen, die auf Tools wie kubectl oder Helm angewiesen sind, die auf diesen Agenten ausgeführt werden, da sie keine Verbindung zum Cluster herstellen können.

Um dieses Problem zu lösen, zeigt dieses Muster einen effizienten Ansatz, bei dem selbst gehostete DevOps Azure-Agenten in privaten Amazon EKS-Clustern verwendet werden. Diese Lösung bietet hervorragende Kostenoptimierung, betriebliche Effizienz und Skalierbarkeit bei gleichzeitiger Wahrung der Sicherheitsanforderungen. Dieser Ansatz kommt insbesondere Unternehmen zugute, die ihre DevOps Multi-Cloud-Prozesse rationalisieren möchten, ohne Kompromisse bei Leistung oder Sicherheit einzugehen.

## Voraussetzungen und Einschränkungen
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ AWS Command Line Interface [(AWS CLI) Version 2.13.17 oder höher, installiert.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [kubectl Version 1.25.1 oder höher, installiert.](https://kubernetes.io/docs/tasks/tools/)
+ [Ein privater Amazon EKS-Cluster, Version 1.24 oder höher, [erstellt](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), mit Berechtigungen zum Erstellen von Namespaces, Geheimnissen und Bereitstellungen.](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ Worker-Knoten in einem Amazon EKS-Cluster mit ausgehender Konnektivität zum Internet, sodass der auf ihnen ausgeführte DevOps Azure-Agent eine Verbindung zum DevOps Azure-Agentenpool herstellen kann.
+ GitHub Konto [erstellt](https://github.com/signup).
+ [Es wurde ein DevOps Azure-Projekt mit Zugriff auf die Konfiguration von Dienstverbindungen erstellt. Dabei handelt es sich um authentifizierte Verbindungen zwischen Azure-Pipelines und externen Diensten oder Remotediensten.](https://learn.microsoft.com/en-us/azure/devops/user-guide/sign-up-invite-teammates?view=azure-devops&tabs=microsoft-account)
+ Die AWS Toolkit für Azure DevOps Version 1.15 oder höher wurde für das im vorherigen Punkt beschriebene DevOps Azure-Projekt installiert. Installationsanweisungen finden Sie [AWS Toolkit für Azure DevOps](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools)unter Visual Studio Marketplace.

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-architecture"></a>

Dieses Muster erzeugt Folgendes:
+ **Amazon ECR-Repository** — Das Amazon Elastic Container Registry (Amazon ECR) -Repository speichert das Docker-Image mit dem DevOps Azure-Agenten und der bereitgestellten Beispiel-App.
+ ** DevOps Azure-Agentenpool** — Ein DevOps selbst gehosteter Azure-Agentenpool registriert den Agenten, der auf dem privaten Amazon EKS-Cluster ausgeführt wird.
+ **IAM-Rolle** — Eine AWS Identity and Access Management (IAM) -Rolle für die Azure-Dienstverbindung, um den erforderlichen Zugriff auf den Agenten bereitzustellen, der auf einem privaten Amazon EKS-Cluster ausgeführt wird.
+ ** DevOps Azure-Dienstverbindung** — Eine Dienstverbindung in einem DevOps Azure-Konto zur Verwendung der IAM-Rolle, die den erforderlichen Zugriff für den Zugriff auf die Pipeline-Jobs bereitstellt. AWS-Services

Das folgende Diagramm zeigt die Architektur der Bereitstellung eines selbst gehosteten DevOps Azure-Agenten auf einem privaten Amazon EKS-Cluster und der Bereitstellung einer Beispielanwendung auf demselben Cluster.

![\[Bereitstellung eines selbst gehosteten DevOps Azure-Agenten und einer Beispielanwendung auf einem privaten Amazon EKS-Cluster.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a965834f-a1e2-4679-bd8c-15eed4f57b55/images/ee22bd3e-311c-46e0-8024-9b7e7752080a.png)


Das Diagramm zeigt den folgenden Workflow:

1. Stellen Sie einen selbst gehosteten DevOps Azure-Agenten als Bereitstellung in einem Amazon EKS-Cluster bereit.

1. Ein DevOps Azure-Agent stellt mithilfe eines persönlichen Zugriffstoken (PAT) zur Authentifizierung eine Verbindung zum Agentenpool auf einem DevOps Azure-Konto her.

1. Azure Pipelines konfiguriert eine Pipeline für die Bereitstellung mithilfe von Code aus einem GitHub Repository.

1. Die Pipeline wird auf dem Agenten aus dem Agentpool ausgeführt, der in der Pipeline-Konfiguration konfiguriert wurde. Der DevOps Azure-Agent ruft die Auftragsinformationen der Pipeline ab, indem er ständig das DevOps Azure-Konto abfragt.

1. Der DevOps Azure-Agent erstellt als Teil des Pipeline-Jobs ein Docker-Image und überträgt das Image in das Amazon ECR-Repository.

1. Der DevOps Azure-Agent stellt die Beispielanwendung auf einem privaten Amazon EKS-Cluster in einem Namespace namens bereit. `webapp` 

## Tools
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-tools"></a>

**Tools**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) ist eine Befehlszeilenschnittstelle, mit der Sie Befehle für Kubernetes-Cluster ausführen können.

**Code-Repository**
+ Der Code für dieses Muster ist im Repository GitHub [deploy-kubernetes-resources-to- amazon-eks-using-azure -devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops) verfügbar.

## Best Practices
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-best-practices"></a>
+ Informationen zu Amazon EKS finden Sie im [Amazon EKS Best Practices Guide](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html).
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-epics"></a>

### Erstellen Sie eine Dienstverbindung
<a name="create-a-service-connection"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Suchen Sie die DevOps Azure-Organisations-GUID. | Melden Sie sich bei Ihrem DevOps Azure-Konto an, und verwenden Sie dann die folgende URL, um die Organisations-GUID zu finden: `https://dev.azure.com/{DevOps_Org_ID}/_apis/projectCollections?api-version=6.0` `{DevOps_org_ID}` Ersetzen Sie die URL durch Ihre DevOps Azure-Organisations-ID. | AWS DevOps | 
| Konfigurieren Sie einen IdP in der AWS-Konto. | Gehen Sie wie folgt vor, um einen Identitätsanbieter (IdP) in der AWS-Konto für eine Azure-Dienstverbindung zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie unter [So stellen Sie DevOps mithilfe AWS von OpenID Connect eine Verbindung zu Azure](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/) her. | AWS DevOps | 
| Erstellen Sie eine IAM-Richtlinie in der AWS-Konto. | Gehen Sie wie folgt vor, um eine IAM-Richtlinie zu erstellen, um die erforderlichen Berechtigungen für die von der DevOps Azure-Pipeline verwendete IAM-Rolle bereitzustellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Erstellen Sie eine IAM-Rolle in der AWS-Konto. | Gehen Sie wie folgt vor, um eine IAM-Rolle AWS-Konto für die Azure-Dienstverbindung zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Federated": "arn:aws:iam::{account_id}:oidc-provider/vstoken.dev.azure.com/{OrganizationGUID}"<br />      },<br />      "Action": "sts:AssumeRoleWithWebIdentity",<br />      "Condition": {<br />        "StringEquals": {<br />          "vstoken.dev.azure.com/{OrganizationGUID}:aud": "api://AzureADTokenExchange",<br />          "vstoken.dev.azure.com/{OrganizationGUID}:sub": "sc://{OrganizationName}/{ProjectName}/{ServiceConnectionName}"<br />        }<br />      }<br />    }<br />  ]<br />}</pre>Geben Sie in der Richtlinie Ihre Informationen für die folgenden Platzhalter an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Erstellen Sie eine Dienstverbindung im DevOps Azure-Konto. | Gehen Sie wie folgt vor, um eine Azure-Dienstverbindung zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie in der Microsoft-Dokumentation unter [Erstellen einer Dienstverbindung](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#create-a-service-connection). | AWS DevOps | 
| Fügen Sie die IAM-Rolle zur Amazon EKS-Konfigurationsdatei hinzu. | Die IAM-Rolle muss über die erforderlichen Berechtigungen verfügen, um die erforderlichen Operationen auf dem Amazon EKS-Cluster auszuführen. Da es sich um eine Pipeline-Rolle handelt, muss die IAM-Rolle in der Lage sein, fast alle Arten von Ressourcen im Cluster zu verwalten. Daher ist die `system:masters` Gruppenberechtigung für diese Rolle geeignet.Verwenden Sie den folgenden Code, um die erforderliche Konfiguration `aws-auth ConfigMap` innerhalb von Kubernetes hinzuzufügen:<pre>- groups:<br />  - system:masters<br />  rolearn: arn:aws:iam::{account_id}:role/ADO-role<br />  username: ADO-role</pre>Ersetze es `{account_id}` durch deine ID AWS-Konto .Weitere Informationen finden Sie unter [So funktioniert Amazon EKS mit IAM](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-service-with-iam.html#security-iam-service-with-iam-roles) in der Amazon EKS-Dokumentation. | AWS DevOps | 

### Erstellen Sie einen Agentenpool
<a name="create-an-agent-pool"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen selbst gehosteten Agentenpool. | Gehen Sie wie folgt vor, um einen selbst gehosteten Agentpool im DevOps Azure-Konto zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie in der Microsoft-Dokumentation unter [Agentenpools erstellen und verwalten](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser). |  | 

### Erstellen Sie ein DevOps Azure-Agent-Image und übertragen Sie es auf Amazon ECR
<a name="build-azure-devops-agent-image-and-push-to-ecr"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Amazon-ECR-Repository. | Die Docker-Images, die zur Bereitstellung des DevOps Azure-Agenten und der Beispielanwendung (`webapp`) auf dem privaten Amazon EKS-Cluster verwendet werden, müssen in einem Amazon ECR-Repository gespeichert werden. Gehen Sie wie folgt vor, um ein Amazon ECR-Repository zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Weitere Informationen finden Sie unter [Erstellen eines privaten Amazon ECR-Repositorys zum Speichern von Bildern](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) in der Amazon ECR-Dokumentation. | AWS DevOps | 
| Erstellen Sie ein Dockerfile, um den DevOps Azure-Agenten zu erstellen. | Erstellen Sie ein Dockerfile, um das Docker-Image zu erstellen, auf dem der Azure-Agent installiert ist. DevOps Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen: `Dockerfile`<pre><br />FROM ubuntu:22.04 <br />ENV TARGETARCH="linux-x64"<br />RUN apt update && apt upgrade -y && apt install -y curl git jq libicu70 unzip wget<br /><br />RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />RUN unzip awscliv2.zip<br />RUN ./aws/install<br />RUN rm -rf aws awscliv2.zip<br /><br />RUN curl -sSL https://get.docker.com/ | sh<br /><br />RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash<br />RUN mkdir -p azp <br />WORKDIR /azp/<br /><br />COPY ./start.sh ./ <br />RUN chmod +x ./start.sh<br /><br />RUN useradd -m -d /home/agent agent <br />RUN chown -R agent:agent /azp /home/agent<br />RUN groupadd -f docker <br />RUN usermod -aG docker agent<br />USER agent<br /><br />ENTRYPOINT [ "./start.sh" ]</pre> | AWS DevOps | 
| Erstellen Sie ein Skript für den DevOps Azure-Agenten. | Gehen Sie wie folgt vor, um das `start.sh` Skript zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Erstellen Sie ein Docker-Image mit dem DevOps Azure-Agenten.  | Um ein Docker-Image für die Installation des DevOps Azure-Agenten zu erstellen, verwenden Sie das Dockerfile, das Sie zuvor erstellt haben, um das Image zu erstellen. Führen Sie in demselben Verzeichnis, in dem das Dockerfile gespeichert ist, die folgenden Befehle aus:<pre>aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com<br /><br />docker build --platform linux/amd64 -t ado-agent:latest .<br /><br />docker tag ado-agent:latest aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br /><br />docker push aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest</pre>Ersetzen Sie `aws_account_id` und `region` durch Ihre AWS-Konto ID und. AWS-Region | AWS DevOps | 

### Stellen Sie den DevOps Azure-Agenten in einem privaten Amazon EKS-Cluster bereit
<a name="deploy-the-azure-devops-agent-to-a-private-eks-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Generieren Sie ein Azure-Token für den persönlichen Zugriff. | Der Agent, der auf dem privaten Amazon EKS-Cluster ausgeführt wird, benötigt ein Personal Access Token (PAT), damit er sich mit dem DevOps Azure-Konto authentifizieren kann. Gehen Sie wie folgt vor, um eine PAT zu generieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>apiVersion: v1<br />kind: Secret<br />metadata:<br />  name: azdevops-pat<br />  namespace: default<br />type: Opaque<br />stringData:<br />  AZP_TOKEN: <PAT Token></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>kubectl create -f ado-secret.yaml</pre>Weitere Informationen finden Sie in der Microsoft-Dokumentation unter [Registrieren eines Agenten mithilfe eines Personal Access Tokens (PAT)](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/personal-access-token-agent-registration?view=azure-devops). | AWS DevOps | 
| Verwenden Sie die Kubernetes-Manifestdatei für die Agentenbereitstellung. | Um den DevOps Azure-Agenten auf dem privaten Amazon EKS-Cluster bereitzustellen, kopieren Sie die folgende Manifestdatei und speichern Sie die Datei als`agent-deployment.yaml`: <pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: azure-pipelines-agent-eks<br />  labels:<br />    app: azure-pipelines-agent<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: azure-pipelines-agent<br />  template:<br />    metadata:<br />      labels:<br />        app: azure-pipelines-agent<br />    spec:<br />      containers:<br />      - name: docker<br />        image: docker:dind<br />        securityContext: <br />          privileged: true<br />        volumeMounts:<br />        - name: shared-workspace<br />          mountPath: /workspace<br />        - name: dind-storage<br />          mountPath: /var/lib/docker<br />        env:<br />        - name: DOCKER_TLS_CERTDIR<br />          value: ""<br />      - name: azure-pipelines-agent<br />        image: aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br />        env:<br />        - name: AZP_URL<br />          value: "<Azure account URL>"<br />        - name: AZP_POOL<br />          value: "eks-agent"<br />        - name: AZP_TOKEN<br />          valueFrom:<br />            secretKeyRef:<br />              name: azdevops-pat<br />              key: AZP_TOKEN<br />        - name: AZP_AGENT_NAME<br />          valueFrom:<br />            fieldRef:<br />              fieldPath: metadata.name<br />        - name: DOCKER_HOST<br />          value: tcp://localhost:2375<br />        volumeMounts:<br />        - mountPath: /workspace<br />          name: shared-workspace<br />      volumes:<br />      - name: dind-storage<br />        emptyDir: {}<br />      - name: shared-workspace<br />        emptyDir: {}</pre>Ersetzen Sie `aws_account_id` und `<Azure account URL>` durch Ihre AWS-Konto ID und die DevOps Azure-Konto-URL. | AWS DevOps | 
| Stellen Sie den Agenten auf dem privaten Amazon EKS-Cluster bereit. | Verwenden Sie den folgenden Befehl, um den Azure DevOps-Agenten auf dem privaten Amazon EKS-Cluster bereitzustellen:<pre>kubectl create -f agent-deployment.tf</pre> | AWS DevOps | 
| Stellen Sie sicher, dass der Agent läuft. | Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der DevOps Azure-Agent ausgeführt wird:<pre>kubectl get deploy azure-pipelines-agent-eks<br /></pre>Die erwartete Ausgabe sollte der folgenden ähneln:<pre><br />NAME                        READY   UP-TO-DATE   AVAILABLE   AGE<br />azure-pipelines-agent-eks   1/1     1            1           58s</pre>Vergewissern Sie sich, dass die `READY ` Spalte angezeigt wird`1/1`. | AWS DevOps | 
| Stellen Sie sicher, dass der Agent im DevOps Azure-Agentenpool registriert ist. | Gehen Sie wie folgt vor, um zu überprüfen, ob der Agent auf dem privaten Amazon EKS-Cluster bereitgestellt und im Agentenpool `eks-agent` registriert ist:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)**Es sollte ein Agent mit dem **Status** **Online** aufgeführt sein, und der Name des Agenten sollte mit azure-pipelines-agent-eks -\$1 beginnen.** | AWS DevOps | 

### Beispielanwendung bereitstellen
<a name="deploy-sample-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Forken Sie das Repository für die Beispielanwendung in Ihr GitHub Konto ab.  | Forke das folgende AWS Beispiel-Repository zu deinem GitHub Konto:[https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure -devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops) | AWS DevOps | 
| Erstellen Sie eine Pipeline. | Gehen Sie wie folgt vor, um eine Pipeline in Ihrem DevOps Azure-Konto zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>pool:<br />  name: eks-agent<br />#pool: self-hosted # If you are running self-hosted Azure DevOps Agents<br /><br />stages:<br /># Refering the pipeline template, input parameter that are not specified will be added with defaults<br />- template: ./pipeline_templates/main_template.yaml<br />  parameters:<br />    serviceConnectionName: aws-sc<br />    awsRegion: <your region><br />    awsEKSClusterName: <name of your EKS cluster><br />    projectName: webapp<br /></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Stellen Sie sicher, dass die Beispielanwendung bereitgestellt wurde. | Überprüfen Sie nach Abschluss der Pipeline die erfolgreiche Bereitstellung der Beispielanwendung, indem Sie sowohl das Amazon ECR-Repository als auch den Amazon EKS-Cluster überprüfen.Gehen Sie wie folgt vor, um Artefakte im Amazon ECR-Repository zu verifizieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Beispiel: `20250501.1-image` und `20250501.1-helm`.Verwenden Sie den folgenden Befehl, um die Bereitstellung auf dem privaten Amazon EKS-Cluster im Namespace `webapp` zu überprüfen:<pre>kubectl get deploy -n webapp </pre>Die erwartete Ausgabe sieht wie folgt aus:<pre><br />NAME     READY   UP-TO-DATE   AVAILABLE<br />webapp   1/1     1            1           </pre>Hinweis: Wenn dies Ihr erster Pipeline-Lauf ist, müssen Sie möglicherweise die Serviceverbindung und den Agentenpool autorisieren. Suchen Sie in der DevOps Azure-Pipeline-Oberfläche nach Berechtigungsanfragen und genehmigen Sie sie, um fortzufahren. | AWS DevOps | 

## Fehlerbehebung
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Pipeline schlägt fehl, wenn der Name des Amazon ECR-Repositorys nicht übereinstimmt `webapp` | Die Beispielanwendung erwartet, dass der Name des Amazon ECR-Repositorys mit dem `projectName: webapp` Parameter in `azure_pipeline.yml` übereinstimmt.Um dieses Problem zu beheben, benennen Sie Ihr Amazon ECR-Repository um `webapp` oder aktualisieren Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 
| Fehler: Der Kubernetes-Cluster ist nicht erreichbar: Der Server hat den Client aufgefordert, Anmeldeinformationen bereitzustellen | Wenn Sie im Schritt „Helm Chart abrufen und bereitstellen“ in Ihrer Azure-Pipeline auf diesen Fehler stoßen, ist die Hauptursache in der Regel auf eine falsche IAM-Rollenkonfiguration in Ihrem Amazon EKS-Cluster zurückzuführen. `aws-auth ConfigMap`Um dieses Problem zu beheben, überprüfen Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 

## Zugehörige Ressourcen
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-resources"></a>

**AWS Blogs**
+ [So stellen Sie mithilfe AWS von OpenID Connect eine Verbindung zu DevOps Azure her](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/)

**AWS-Services Dokumentation**
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)

**Microsoft-Dokumentation**
+ [Was ist Azure DevOps?](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)
+ [Was ist Azure Pipelines?](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops)

# Führen Sie Amazon Redshift SQL-Abfragen mithilfe von Terraform aus
<a name="execute-redshift-sql-queries-using-terraform"></a>

*Sylvia Qi und Aditya Ambati, Amazon Web Services*

## Zusammenfassung
<a name="execute-redshift-sql-queries-using-terraform-summary"></a>

Die Verwendung von Infrastructure as Code (IaC) für die Bereitstellung und Verwaltung von Amazon Redshift ist in diesem Bereich weit verbreitet. DevOps IaC erleichtert die Bereitstellung und Konfiguration verschiedener Amazon Redshift Redshift-Ressourcen wie Cluster, Snapshots und Parametergruppen. IaC erstreckt sich jedoch nicht auf die Verwaltung von Datenbankressourcen wie Tabellen, Schemas, Ansichten und gespeicherten Prozeduren. Diese Datenbankelemente werden über SQL-Abfragen verwaltet und nicht direkt von IaC-Tools unterstützt. Obwohl es Lösungen und Tools für die Verwaltung dieser Ressourcen gibt, ziehen Sie es möglicherweise vor, keine zusätzlichen Tools in Ihren Technologie-Stack aufzunehmen.

Dieses Muster beschreibt eine Methode, die Terraform verwendet, um Amazon Redshift Redshift-Datenbankressourcen wie Tabellen, Schemas, Ansichten und gespeicherte Prozeduren bereitzustellen. Das Muster unterscheidet zwischen zwei Arten von SQL-Abfragen:
+ **Nicht wiederholbare Abfragen** — Diese Abfragen werden einmal während der ersten Amazon Redshift Redshift-Bereitstellung ausgeführt, um die wesentlichen Datenbankkomponenten einzurichten. 
+ **Wiederholbare Abfragen — Diese Abfragen** sind unveränderlich und können erneut ausgeführt werden, ohne die Datenbank zu beeinträchtigen. Die Lösung verwendet Terraform, um Änderungen an wiederholbaren Abfragen zu überwachen und sie entsprechend anzuwenden.

[Weitere Informationen finden Sie unter *Exemplarische Vorgehensweise zur Lösung* unter Zusätzliche Informationen.](#execute-redshift-sql-queries-using-terraform-additional)

## Voraussetzungen und Einschränkungen
<a name="execute-redshift-sql-queries-using-terraform-prereqs"></a>

**Voraussetzungen**

Sie müssen über ein aktives System verfügen AWS-Konto und Folgendes auf Ihrem Bereitstellungscomputer installieren:
+ [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (AWS CLI)
+ Ein mit Amazon Redshift read/write Redshift-Berechtigungen konfiguriertes [AWS CLI Profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) Version 1.6.2 oder höher
+ [Python 3](https://www.python.org/downloads/)
+ [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)

**Einschränkungen**
+ Diese Lösung unterstützt eine einzelne Amazon Redshift Redshift-Datenbank, da Terraform bei der Clustererstellung nur die Erstellung einer Datenbank ermöglicht.
+ Dieses Muster beinhaltet keine Tests zur Validierung von Änderungen an den wiederholbaren Abfragen, bevor sie angewendet werden. Wir empfehlen, solche Tests zu integrieren, um die Zuverlässigkeit zu erhöhen.
+ Zur Veranschaulichung der Lösung enthält dieses Muster eine `redshift.tf` Beispieldatei, die eine lokale Terraform-Statusdatei verwendet. Für Produktionsumgebungen empfehlen wir jedoch dringend, eine Remote-Statusdatei mit einem Sperrmechanismus zu verwenden, um die Stabilität und Zusammenarbeit zu verbessern.
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**

Diese Lösung wurde auf [Amazon Redshift Patch 179](https://docs.aws.amazon.com/redshift/latest/mgmt/cluster-versions.html#cluster-version-179) entwickelt und getestet.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [amazon-redshift-sql-deploy-terraform](https://github.com/aws-samples/amazon-redshift-sql-deploy-terraform) verfügbar.

## Architektur
<a name="execute-redshift-sql-queries-using-terraform-architecture"></a>

Das folgende Diagramm zeigt, wie Terraform die Amazon Redshift Redshift-Datenbankressourcen verwaltet, indem es sowohl nicht wiederholbare als auch wiederholbare SQL-Abfragen verarbeitet.

![\[Prozess für Terraform zur Verwaltung von Amazon Redshift Redshift-Datenbankressourcen mithilfe von SQL-Abfragen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/0f4467ac-761b-4b6b-a32f-e18a2ca2245d/images/3b6ff9e8-e3d1-48ed-9fa1-4b14f7d3d65b.png)


Das Diagramm zeigt die folgenden Schritte:

1. Terraform wendet während der ersten Bereitstellung des Amazon Redshift Redshift-Clusters nicht wiederholbare SQL-Abfragen an.

1. Der Entwickler überträgt Änderungen an den wiederholbaren SQL-Abfragen.

1. Terraform überwacht Änderungen in den wiederholbaren SQL-Abfragen.

1. Terraform wendet wiederholbare SQL-Abfragen auf die Amazon Redshift Redshift-Datenbank an.

Die durch dieses Muster bereitgestellte Lösung basiert auf dem [Terraform-Modul für Amazon](https://registry.terraform.io/modules/terraform-aws-modules/redshift/aws/latest) Redshift. Das Terraform-Modul stellt einen Amazon Redshift Redshift-Cluster und eine Datenbank bereit. Um das Modul zu verbessern, haben wir `terraform_data` Ressourcen verwendet, die ein benutzerdefiniertes Python-Skript aufrufen, um SQL-Abfragen mithilfe der Amazon Redshift [ExecuteStatement](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html)Redshift-API-Operation auszuführen. Infolgedessen kann das Modul Folgendes tun:
+ Stellen Sie eine beliebige Anzahl von Datenbankressourcen mithilfe von SQL-Abfragen bereit, nachdem die Datenbank bereitgestellt wurde.
+ Überwachen Sie kontinuierlich die wiederholbaren SQL-Abfragen auf Änderungen und wenden Sie diese Änderungen mithilfe von Terraform an.

[Weitere Informationen finden Sie unter *Exemplarische Vorgehensweise zur Lösung* unter Zusätzliche Informationen.](#execute-redshift-sql-queries-using-terraform-additional)

## Tools
<a name="execute-redshift-sql-queries-using-terraform-tools"></a>

**AWS-Services**
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html) ist ein vollständig verwalteter Data-Warehouse-Service im Petabyte-Bereich in der. AWS Cloud

**Andere Tools**
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [Python](https://www.python.org/) ist eine Allzweck-Programmiersprache, die in diesem Muster zur Ausführung von SQL-Abfragen verwendet wird. 

## Best Practices
<a name="execute-redshift-sql-queries-using-terraform-best-practices"></a>
+ [Bewährte Methoden für Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/best-practices.html)
+ [Verwenden der Amazon Redshift Data API zur Interaktion mit Amazon Redshift Redshift-Clustern](https://aws.amazon.com/blogs/big-data/using-the-amazon-redshift-data-api-to-interact-with-amazon-redshift-clusters/)

## Epen
<a name="execute-redshift-sql-queries-using-terraform-epics"></a>

### Stellen Sie die Lösung mit Terraform bereit
<a name="deploy-the-solution-using-terraform"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| **Klonen Sie das Repository.** | Verwenden Sie den folgenden Befehl, um das Git-Repository zu klonen, das den Terraform-Code für die Bereitstellung eines Amazon Redshift Redshift-Clusters enthält.<pre>git clone https://github.com/aws-samples/amazon-redshift-sql-deploy-terraform.git</pre> | DevOps Ingenieur | 
| **Aktualisieren Sie die Terraform-Variablen.** | Um die Amazon Redshift Redshift-Cluster-Bereitstellung an Ihre spezifischen Anforderungen anzupassen, aktualisieren Sie die folgenden Parameter in der `terraform.tfvars` Datei.<pre>region                    = "<AWS_REGION>"<br />cluster_identifier        = "<REDSHIFT_CLUSTER_IDENTIFIER>"<br />node_type                 = "<REDSHIFT_NODE_TYPE>"<br />number_of_nodes           = "<REDSHIFT_NODE_COUNT>"<br />database_name             = "<REDSHIFT_DB_NAME>"<br />subnet_ids                = "<REDSHIFT_SUBNET_IDS>"<br />vpc_security_group_ids    = "<REDSHIFT_SECURITY_GROUP_IDS>"<br />run_nonrepeatable_queries = true<br />run_repeatable_queries    = true<br />sql_path_bootstrap        = "<BOOTSTRAP_SQLS_PATH>"<br />sql_path_nonrepeatable    = "<NON-REPEATABLE_SQLS_PATH>"<br />sql_path_repeatable       = "<REPEATABLE_SQLS_PATH>"<br />sql_path_finalize         = "<FINALIZE_SQLS_PATH>"<br />create_random_password    = false<br />master_username           = "<REDSHIFT_MASTER_USERNAME>"</pre> | DevOps Ingenieur | 
| Stellen Sie die Ressourcen mithilfe von Terraform bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/execute-redshift-sql-queries-using-terraform.html) | DevOps Ingenieur | 
| (Optional) Führen Sie zusätzliche SQL-Abfragen aus. | Das Beispiel-Repository bietet mehrere SQL-Abfragen für Demo-Zwecke. Um Ihre eigenen SQL-Abfragen auszuführen, fügen Sie sie den folgenden Ordnern hinzu:`/bootstrap` `/nonrepeatable` `/repeatable` `/finalize` |  | 

### Überwachen Sie die Ausführung von SQL-Anweisungen
<a name="monitor-the-execution-of-sql-statements"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überwachen Sie die Bereitstellung von SQL-Anweisungen. | Sie können die Ergebnisse der SQL-Ausführungen in einem Amazon Redshift Redshift-Cluster überwachen. Beispiele für Ausgaben, die eine fehlgeschlagene und eine erfolgreiche SQL-Ausführung zeigen, finden Sie unter *Beispiel-SQL-Anweisungen* unter [Zusätzliche](#execute-redshift-sql-queries-using-terraform-additional) Informationen.  | DBA, Ingenieur DevOps  | 
| Bereinigen Sie die Ressourcen. | Führen Sie den folgenden Befehl aus, um alle von Terraform bereitgestellten Ressourcen zu löschen.<pre>terraform destroy</pre> | DevOps Ingenieur | 

### Validieren Sie die Ergebnisse
<a name="validate-the-results"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Daten im Amazon Redshift Redshift-Cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/execute-redshift-sql-queries-using-terraform.html) | DBA, AWS DevOps | 

## Zugehörige Ressourcen
<a name="execute-redshift-sql-queries-using-terraform-resources"></a>

**AWS Dokumentation**
+ [Von Amazon Redshift bereitgestellte Cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)
+ [Behebung von Problemen mit der Amazon Redshift Data API](https://docs.aws.amazon.com/redshift/latest/mgmt/data-api-troubleshooting.html)

**Sonstige Ressourcen**
+ [Befehl: apply](https://developer.hashicorp.com/terraform/cli/commands/apply) (Terraform-Dokumentation)

## Zusätzliche Informationen
<a name="execute-redshift-sql-queries-using-terraform-additional"></a>

**Exemplarische Vorgehensweise zur Lösung**

Um die Lösung verwenden zu können, müssen Sie Ihre Amazon Redshift SQL-Abfragen auf eine bestimmte Weise organisieren. Alle SQL-Abfragen müssen in Dateien mit einer `.sql` Erweiterung gespeichert werden.

In dem mit diesem Muster bereitgestellten Codebeispiel sind die SQL-Abfragen in der folgenden Ordnerstruktur organisiert. Sie können den Code (`sql-queries.tf`und`sql-queries.py`) so ändern, dass er mit jeder Struktur funktioniert, die Ihrem individuellen Anwendungsfall entspricht.

```
/bootstrap
     |- Any # of files
     |- Any # of sub-folders
/nonrepeatable
     |- Any # of files
     |- Any # of sub-folders
/repeatable
     /udf
          |- Any # of files
          |- Any # of sub-folders
     /table
          |- Any # of files
          |- Any # of sub-folders
     /view
          |- Any # of files
          |- Any # of sub-folders
     /stored-procedure
          |- Any # of files
          |- Any # of sub-folders
/finalize
     |- Any # of files
     |- Any # of sub-folders
```

Angesichts der obigen Ordnerstruktur führt Terraform während der Bereitstellung von Amazon Redshift Redshift-Clustern die Abfragen in der folgenden Reihenfolge aus:

1. `/bootstrap`

1. `/nonrepeatable`

1. `/repeatable`

1. `/finalize`

Der `/repeatable` Ordner enthält vier Unterordner:`/udf`,, und. `/table` `/view` `/stored-procedure` Diese Unterordner geben die Reihenfolge an, in der Terraform die SQL-Abfragen ausführt.

Das Python-Skript, das die SQL-Abfragen ausführt, ist`sql-queries.py`. Zunächst liest das Skript alle Dateien und Unterordner eines bestimmten Quellverzeichnisses, z. B. den `sql_path_bootstrap` Parameter. Anschließend führt das Skript die Abfragen aus, indem es den Amazon Redshift [ExecuteStatement](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html)Redshift-API-Vorgang aufruft. Möglicherweise haben Sie eine oder mehrere SQL-Abfragen in einer Datei. Der folgende Codeausschnitt zeigt die Python-Funktion, die in einer Datei gespeicherte SQL-Anweisungen für einen Amazon Redshift Redshift-Cluster ausführt.

```
def execute_sql_statement(filename, cluster_id, db_name, secret_arn, aws_region):
    """Execute SQL statements in a file"""
    redshift_client = boto3.client(
        'redshift-data', region_name=aws_region)
    contents = get_contents_from_file(filename),
    response = redshift_client.execute_statement(
        Sql=contents[0],
        ClusterIdentifier=cluster_id,
        Database=db_name,
        WithEvent=True,
        StatementName=filename,
        SecretArn=secret_arn
    )
    ...
```

Das Terraform-Skript `sql-queries.tf` erstellt die terraform\$1data-Ressourcen, die das Skript [aufrufen](https://developer.hashicorp.com/terraform/language/resources/terraform-data). `sql-queries.py` Für jeden der vier Ordner gibt es eine `terraform_data` Ressource:,, und. `/bootstrap` `/nonrepeatable` `/repeatable` `/finalize` Der folgende Codeausschnitt zeigt die `terraform_data` Ressource, die die SQL-Abfragen im `/bootstrap` Ordner ausführt.

```
locals {
  program               = "${path.module}/sql-queries.py"
  redshift_cluster_name = try(aws_redshift_cluster.this[0].id, null)
}

resource "terraform_data" "run_bootstrap_queries" {
  count      = var.create && var.run_nonrepeatable_queries && (var.sql_path_bootstrap != "") && (var.snapshot_identifier == null) ? 1 : 0
  depends_on = [aws_redshift_cluster.this[0]]

  provisioner "local-exec" {
    command = "python3 ${local.program} ${var.sql_path_bootstrap} ${local.redshift_cluster_name} ${var.database_name} ${var.redshift_secret_arn} ${local.aws_region}"
  }
}
```

Mithilfe der folgenden Variablen können Sie steuern, ob diese Abfragen ausgeführt werden sollen. Wenn Sie keine Abfragen in`sql_path_bootstrap`,, oder ausführen möchten `sql_path_nonrepeatable` `sql_path_repeatable``sql_path_finalize`, legen Sie deren Werte auf fest`""`.

```
  run_nonrepeatable_queries = true
  run_repeatable_queries    = true
  sql_path_bootstrap        = "src/redshift/bootstrap"
  sql_path_nonrepeatable    = "src/redshift/nonrepeatable"
  sql_path_repeatable       = "src/redshift/repeatable"
  sql_path_finalize         = "src/redshift/finalize"
```

Bei der Ausführung berücksichtigt Terraform die `terraform_data` Ressource`terraform apply`, die nach Abschluss des Skripts hinzugefügt wurde, unabhängig von den Ergebnissen des Skripts. Wenn einige SQL-Abfragen fehlgeschlagen sind und Sie sie erneut ausführen möchten, können Sie die Ressource manuell aus dem Terraform-Status entfernen und erneut ausführen. `terraform apply` Mit dem folgenden Befehl wird die `run_bootstrap_queries` Ressource beispielsweise aus dem Terraform-Status entfernt.

`terraform state rm module.redshift.terraform_data.run_bootstrap_queries[0]`

Das folgende Codebeispiel zeigt, wie die `run_repeatable_queries` Ressource Änderungen im `repeatable` Ordner mithilfe des [sha256-Hashs](https://developer.hashicorp.com/terraform/language/functions/sha256) überwacht. Wenn eine Datei innerhalb des Ordners aktualisiert wird, markiert Terraform das gesamte Verzeichnis für ein Update. Dann führt Terraform die Abfragen im Verzeichnis im nächsten Schritt erneut aus. `terraform apply`

```
resource "terraform_data" "run_repeatable_queries" {
  count      = var.create_redshift && var.run_repeatable_queries && (var.sql_path_repeatable != "") ? 1 : 0
  depends_on = [terraform_data.run_nonrepeatable_queries]

  # Continuously monitor and apply changes in the repeatable folder
  triggers_replace = {
    dir_sha256 = sha256(join("", [for f in fileset("${var.sql_path_repeatable}", "**") : filesha256("${var.sql_path_repeatable}/${f}")]))
  }

  provisioner "local-exec" {
    command = "python3 ${local.sql_queries} ${var.sql_path_repeatable} ${local.redshift_cluster_name} ${var.database_name} ${var.redshift_secret_arn}"
  }
}
```

Um den Code zu verfeinern, können Sie einen Mechanismus implementieren, mit dem Änderungen nur an den Dateien erkannt und angewendet werden, die innerhalb des `repeatable` Ordners aktualisiert wurden, anstatt Änderungen wahllos auf alle Dateien anzuwenden.

**Beispiel für SQL-Anweisungen**

Die folgende Ausgabe zeigt eine fehlgeschlagene SQL-Ausführung zusammen mit einer Fehlermeldung.

```
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Executing: ["/bin/sh" "-c" "python3 modules/redshift/sql-queries.py src/redshift/nonrepeatable testcluster-1 db1 arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:/redshift/master_user/password-8RapGH us-east-1"]
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): src/redshift/nonrepeatable/table/admin/admin.application_family.sql
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Status: FAILED
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): SQL execution failed.
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Error message: ERROR: syntax error at or near ")"
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec):   Position: 244
module.redshift.terraform_data.run_nonrepeatable_queries[0]: Creation complete after 3s [id=ee50ba6c-11ae-5b64-7e2f-86fd8caa8b76]
```

Die folgende Ausgabe zeigt eine erfolgreiche SQL-Ausführung.

```
module.redshift.terraform_data.run_bootstrap_queries[0]: Provisioning with 'local-exec'...
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): Executing: ["/bin/sh" "-c" "python3 modules/redshift/sql-queries.py src/redshift/bootstrap testcluster-1 db1 arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:/redshift/master_user/password-8RapGH us-east-1"]
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): src/redshift/bootstrap/db.sql
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): Status: FINISHED
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): SQL execution successful.
module.redshift.terraform_data.run_bootstrap_queries[0]: Creation complete after 2s [id=d565ef6d-be86-8afd-8e90-111e5ea4a1be]
```

# Exportieren Sie AWS Backup Backup-Berichte aus einer gesamten Organisation in AWS Organizations als CSV-Datei
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file"></a>

*Aromal Raj Jayarajan und Purushotham GK, Amazon Web Services*

## Zusammenfassung
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-summary"></a>

Dieses Muster zeigt, wie AWS Backup Backup-Jobberichte aus einer Organisation in AWS Organizations als CSV-Datei exportiert werden. Die Lösung verwendet AWS Lambda und Amazon, EventBridge um AWS Backup Backup-Jobberichte nach ihrem Status zu kategorisieren, was bei der Konfiguration statusbasierter Automatisierungen hilfreich sein kann.

AWS Backup unterstützt Unternehmen dabei, den Datenschutz für alle AWS-Services, in der Cloud und vor Ort zentral zu verwalten und zu automatisieren. Für innerhalb von AWS Organizations konfigurierte AWS-Backup-Jobs ist die konsolidierte Berichterstattung jedoch nur in der AWS-Managementkonsole des Verwaltungskontos der jeweiligen Organisation verfügbar. Wenn Sie diese Berichterstattung außerhalb des Verwaltungskontos platzieren, kann der für die Prüfung erforderliche Aufwand reduziert und der Umfang für Automatisierungen, Benachrichtigungen und Warnmeldungen erweitert werden.

## Voraussetzungen und Einschränkungen
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Eine aktive [Organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html) in AWS Organizations, die mindestens ein Verwaltungskonto und ein Mitgliedskonto umfasst
+ AWS Backup, konfiguriert auf Organisationsebene in AWS Organizations (weitere Informationen finden Sie im AWS-Blog unter [Automatisieren zentraler Backups in großem Umfang für alle AWS-Services mithilfe von AWS Backup](https://aws.amazon.com/blogs/storage/automate-centralized-backup-at-scale-across-aws-services-using-aws-backup/)).
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), auf Ihrem lokalen Computer installiert und konfiguriert

**Einschränkungen**

Die in diesem Muster bereitgestellte Lösung identifiziert AWS-Ressourcen, die nur für AWS-Backup-Jobs konfiguriert sind. Der Bericht kann keine AWS-Ressourcen identifizieren, die nicht für die Sicherung über AWS Backup konfiguriert sind.

## Architektur
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Backup
+ AWS CloudFormation
+ Amazon EventBridge
+ AWS Lambda
+ AWS Security Token Service (AWS STS)
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS Identity and Access Management (IAM)

**Zielarchitektur**

Das folgende Diagramm zeigt einen Beispiel-Workflow für den Export von AWS Backup Backup-Jobberichten aus einer gesamten Organisation in AWS Organizations als CSV-Datei.

![\[Verwendung von EventBridge Lambda, AWS STS und IAM zum Exportieren von AWS Backup Backup-Jobberichten aus einer gesamten Organisation im CSV-Format.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/74955aad-cc6d-488b-aa34-ae43f50fec60/images/5c39c79f-e731-4ad0-b404-51ebe0976420.png)


Das Diagramm zeigt den folgenden Workflow:

1. Eine Regel für geplante EventBridge Ereignisse ruft eine Lambda-Funktion im AWS-Mitgliedskonto (Berichtskonto) auf.

1. Die Lambda-Funktion verwendet dann AWS STS, um eine IAM-Rolle anzunehmen, die über die erforderlichen Berechtigungen verfügt, um eine Verbindung mit dem Verwaltungskonto herzustellen.

1. Die Lambda-Funktion macht dann Folgendes:
   + Fordert den konsolidierten Bericht über AWS-Backup-Jobs vom AWS Backup Backup-Service an
   + Kategorisiert die Ergebnisse basierend auf dem Status des AWS Backup Backup-Jobs
   + Konvertiert die Antwort in eine CSV-Datei
   + Lädt die Ergebnisse in einen Amazon S3 S3-Bucket im Berichtskonto in Ordnern hoch, die anhand ihres Erstellungsdatums gekennzeichnet sind

## Tools
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-tools"></a>

**Tools**
+ [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) ist ein vollständig verwalteter Service, mit dem Sie den Datenschutz für alle AWS-Services, in der Cloud und vor Ort zentralisieren und automatisieren können.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS-Lambda-Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen AWS-Konten.
+ Mit [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Code**

Der Code für dieses Muster ist im GitHub [aws-backup-report-generator](https://github.com/aws-samples/aws-backup-report-generator)Repository verfügbar.

## Best Practices
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-best-practices"></a>
+ [Bewährte Sicherheitsmethoden für Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) (*Amazon S3 S3-Benutzerhandbuch*)
+ [Bewährte Methoden für die Arbeit mit AWS Lambda-Funktionen](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) (*AWS Lambda Developer Guide*)
+ [Bewährte Methoden für das Verwaltungskonto](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html) (*AWS Organizations User Guide*)

## Epen
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-epics"></a>

### Stellen Sie die Lösungskomponenten bereit
<a name="deploy-the-solution-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das GitHub Repository. | Klonen Sie das GitHub [aws-backup-report-generator](https://github.com/aws-samples/aws-backup-report-generator)Repository, indem Sie den folgenden Befehl in einem Terminalfenster ausführen:<pre>git clone https://github.com/aws-samples/aws-backup-report-generator.git</pre>Weitere Informationen finden Sie in der GitHub Dokumentation unter [Ein Repository klonen](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). | AWS DevOps, DevOps Ingenieur | 
| Stellen Sie die Lösungskomponenten im AWS-Mitgliedskonto (Berichtskonto) bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | DevOps Ingenieur, AWS DevOps | 

### Testen der Lösung
<a name="test-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie vor dem Testen sicher, dass die EventBridge Regel ausgeführt wird. | Stellen Sie sicher, dass die EventBridge Regel ausgeführt wird, indem Sie mindestens 24 Stunden warten oder indem Sie die Häufigkeit der Berichte in der Datei CloudFormation **template-reporting.yml** der Vorlage erhöhen.**Um die Häufigkeit der Berichte zu erhöhen**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps Ingenieur | 
| Suchen Sie im Amazon S3 S3-Bucket nach dem generierten Bericht. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps Ingenieur | 

### Bereinigen Ihrer Ressourcen
<a name="clean-up-your-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die Lösungskomponenten aus dem Mitgliedskonto (Berichtskonto). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps Ingenieur | 
| Löschen Sie die Lösungskomponenten aus dem Verwaltungskonto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-resources"></a>
+ [Tutorial: Verwenden von AWS Lambda mit geplanten Ereignissen](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents-tutorial.html) (AWS Lambda Lambda-Dokumentation)
+ [Erstellen von geplanten Ereignissen zur Ausführung von AWS Lambda Lambda-Funktionen](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/scheduled-events-invoking-lambda-example.html) (AWS-SDK zur JavaScript Dokumentation)
+ [IAM-Tutorial: Delegieren des Zugriffs über AWS-Konten hinweg mithilfe von IAM-Rollen (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html))
+ [Terminologie und Konzepte von AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) (Dokumentation zu AWS Organizations)
+ [Erstellen von Berichtsplänen mit der AWS Backup Backup-Konsole](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-report-plan-console.html) (AWS Backup Backup-Dokumentation)
+ [Einen Auditbericht erstellen](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-audit-report.html) (AWS Backup Backup-Dokumentation)
+ [Erstellung von On-Demand-Berichten](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-on-demand-reports.html) (AWS Backup Backup-Dokumentation)
+ [Was ist AWS Backup?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) (AWS-Backup-Dokumentation)
+ [Automatisieren Sie zentralisierte Backups in großem Umfang für alle AWS-Services mithilfe von AWS Backup](https://aws.amazon.com/blogs/storage/automate-centralized-backup-at-scale-across-aws-services-using-aws-backup/) (AWS-Blogbeitrag)

# Exportieren Sie Tags für eine Liste von EC2 Amazon-Instances in eine CSV-Datei
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file"></a>

*Sida Ju und Pac Joonhyun, Amazon Web Services*

## Zusammenfassung
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-summary"></a>

Dieses Muster zeigt, wie Tags für eine Liste von Amazon Elastic Compute Cloud (Amazon EC2) -Instances programmgesteuert in eine CSV-Datei exportiert werden.

Mithilfe des bereitgestellten Python-Beispielskripts können Sie den Zeitaufwand für die Überprüfung und Kategorisierung Ihrer EC2 Amazon-Instances nach bestimmten Tags reduzieren. Sie könnten das Skript beispielsweise verwenden, um schnell eine Liste von Instances zu identifizieren und zu kategorisieren, die Ihr Sicherheitsteam für Softwareupdates gekennzeichnet hat.

## Voraussetzungen und Einschränkungen
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-prereqs"></a>

**Voraussetzungen**
+ Python 3 installiert und konfiguriert
+ AWS-Befehlszeilenschnittstelle (AWS CLI) installiert und konfiguriert

**Einschränkungen**

Das in diesem Muster bereitgestellte Beispiel-Python-Skript kann EC2 Amazon-Instances nur anhand der folgenden Attribute durchsuchen:
+ Instanz IDs
+ Private IPv4 Adressen
+ Öffentliche IPv4 Adressen

## Tools
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-tools"></a>
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.
+ [virtualenv](https://virtualenv.pypa.io/en/latest/) hilft Ihnen, isolierte Python-Umgebungen zu erstellen.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.

**Code-Repository**

Das Python-Beispielskript für dieses Muster ist im GitHub [search-ec2-Repository](https://github.com/aws-samples/search-ec2-instances-export-tags) verfügbar. instances-export-tags

## Epen
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-epics"></a>

### Installieren und konfigurieren Sie die Voraussetzungen
<a name="install-and-configure-the-prerequisites"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das GitHub Repository. | Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, [stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html).Klonen GitHub [Sie das instances-export-tags search-ec2-Repository](https://github.com/aws-samples/search-ec2-instances-export-tags), indem Sie den folgenden Git-Befehl in einem Terminalfenster ausführen:<pre>git clone https://github.com/aws-samples/search-ec2-instances-export-tags.git</pre> | DevOps Ingenieur | 
| Installieren und aktivieren Sie virtualenv. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.html)Weitere Informationen finden Sie im [virtualenv-Benutzerhandbuch](https://virtualenv.pypa.io/en/latest/user_guide.html). | DevOps Ingenieur | 
| Installieren Sie die Abhängigkeiten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.html) | DevOps Ingenieur | 
| Konfigurieren Sie ein benanntes AWS-Profil.  | Falls Sie dies noch nicht getan haben, konfigurieren Sie ein benanntes AWS-Profil, das die erforderlichen Anmeldeinformationen für die Ausführung des Skripts enthält. Um ein benanntes Profil zu erstellen, führen Sie den Befehl [aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) aus.Weitere Informationen finden Sie unter [Verwenden von benannten Profilen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) in der AWS-CLI-Dokumentation. | DevOps Ingenieur | 

### Das Python-Skript konfigurieren und ausführen
<a name="configure-and-run-the-python-script"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Eingabedatei. | Erstellen Sie eine Eingabedatei, die eine Liste der EC2 Amazon-Instances enthält, nach denen das Skript Tags suchen und exportieren soll. Sie können Instances IDs, private IPv4 Adressen oder öffentliche IPv4 Adressen auflisten.Stellen Sie sicher, dass jede EC2 Amazon-Instance in der Eingabedatei in einer eigenen Zeile aufgeführt ist.**Beispiel für eine Eingabedatei**<pre>1    i-0547c351bdfe85b9f<br />2    54.157.194.156<br />3    172.31.85.33<br />4    54.165.198.144<br />5    i-0b6223b5914111a4b<br />6    172.31.85.44<br />7    54.165.198.145<br />8    172.31.80.219<br />9    172.31.94.199</pre> | DevOps Ingenieur | 
| Führen Sie das Python-Skript aus. | Führen Sie das Skript aus, indem Sie den folgenden Befehl im Terminal ausführen:<pre>python search_instances.py -i INPUTFILE -o OUTPUTFILE -r REGION [-p PROFILE]</pre>`INPUTFILE`Ersetzen Sie es durch den Namen Ihrer Eingabedatei. `OUTPUTFILE`Ersetzen Sie durch den Namen, den Sie der CSV-Ausgabedatei geben möchten. `REGION`Ersetzen Sie durch die AWS-Region, in der sich Ihre EC2 Amazon-Ressourcen befinden. Wenn Sie ein benanntes AWS-Profil verwenden, `PROFILE` ersetzen Sie es durch das benannte Profil, das Sie verwenden.Führen Sie den folgenden Befehl aus, um eine Liste der unterstützten Parameter und deren Beschreibung abzurufen:<pre>python search_instances.py -h</pre>Weitere Informationen und ein Beispiel für eine Ausgabedatei finden Sie in der `README.md` Datei im GitHub [search-ec2-Repository](https://github.com/aws-samples/search-ec2-instances-export-tags). instances-export-tags | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-resources"></a>
+ [Konfiguration der AWS-CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) (*AWS-CLI-Benutzerhandbuch*)

# Generieren Sie mithilfe von Troposphere eine CloudFormation AWS-Vorlage, die von AWS Config verwaltete Regeln enthält
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere"></a>

*Lucas Nation und Freddie Wilson, Amazon Web Services*

## Zusammenfassung
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-summary"></a>

Viele Organisationen verwenden [verwaltete Regeln von AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html), um die Konformität ihrer Amazon Web Services (AWS) -Ressourcen anhand gängiger bewährter Methoden zu bewerten. Die Pflege dieser Regeln kann jedoch zeitaufwändig sein, und dieses Muster hilft Ihnen, [Troposphere](https://troposphere.readthedocs.io/en/latest/quick_start.html), eine Python-Bibliothek, zu nutzen, um verwaltete AWS Config-Regeln zu generieren und zu verwalten.

Das Muster hilft Ihnen bei der Verwaltung Ihrer von AWS Config verwalteten Regeln, indem Sie ein Python-Skript verwenden, um eine Microsoft Excel-Tabelle mit verwalteten AWS-Regeln in eine CloudFormation AWS-Vorlage zu konvertieren. Troposphere fungiert als Infrastruktur als Code (IaC). Das bedeutet, dass Sie die Excel-Tabelle mit verwalteten Regeln aktualisieren können, anstatt eine Datei im JSON- oder YAML-Format zu verwenden. Anschließend verwenden Sie die Vorlage, um einen CloudFormation AWS-Stack zu starten, der die verwalteten Regeln in Ihrem AWS-Konto erstellt und aktualisiert.

Die CloudFormation AWS-Vorlage definiert jede von AWS Config verwaltete Regel mithilfe der Excel-Tabelle und hilft Ihnen, die manuelle Erstellung einzelner Regeln in der AWS-Managementkonsole zu vermeiden. *Das Skript verwendet für die Parameter jeder verwalteten Regel standardmäßig ein leeres Wörterbuch und für den Geltungsbereich die `ComplianceResourceTypes` Standardwerte von. `THE_RULE_IDENTIFIER.template file`* Weitere Informationen zur Regel-ID finden Sie unter [Creating AWS Config managed Rules with CloudFormation AWS-Vorlagen](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html) in der AWS Config-Dokumentation.

## Voraussetzungen und Einschränkungen
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Vertrautheit mit der Verwendung von CloudFormation AWS-Vorlagen zur Erstellung von verwalteten AWS Config-Regeln. Weitere Informationen dazu finden Sie unter [Creating AWS Config Managed Rules with CloudFormation AWS-Vorlagen](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html) in der AWS Config-Dokumentation.  
+ Python 3, installiert und konfiguriert. Weitere Informationen dazu finden Sie in der [Python-Dokumentation](https://www.python.org/).
+ Eine bestehende integrierte Entwicklungsumgebung (IDE).  
+ Identifizieren Sie Ihre Organisationseinheiten (OUs) in einer Spalte in der `excel_config_rules.xlsx` Excel-Beispieltabelle (im Anhang).

## Epen
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-epics"></a>

### Passen Sie die verwalteten Regeln von AWS Config an und konfigurieren Sie sie
<a name="customize-and-configure-the-aws-config-managed-rules"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren Sie die Excel-Beispieltabelle. | Laden Sie die `excel_config_rules.xlsx` Excel-Beispieltabelle (beigefügt) herunter und kennzeichnen Sie sie als `Implemented` die von AWS Config verwalteten Regeln, die Sie verwenden möchten. Als markierte Regeln `Implemented` werden der CloudFormation AWS-Vorlage hinzugefügt. | Developer | 
| (Optional) Aktualisieren Sie die Datei config\$1rules\$1params.json mit den AWS Config-Regelparametern. | Einige von AWS Config verwaltete Regeln erfordern Parameter und sollten mithilfe der `--param-file` Option als JSON-Datei an das Python-Skript übergeben werden. Die `access-keys-rotated` verwaltete Regel verwendet beispielsweise den folgenden `maxAccessKeyAge` Parameter:<pre>{<br />         "access-keys-rotated": {<br />             "InputParameters": {<br />                 "maxAccessKeyAge": 90<br />             }<br />         }<br />     }</pre>In diesem Beispielparameter `maxAccessKeyAge` ist der auf 90 Tage festgelegt. Das Skript liest die Parameterdatei und fügt alle gefundenen Parameter `InputParameters` hinzu. | Developer | 
| (Optional) Aktualisieren Sie die Datei config\$1rules\$1params.json mit AWS Config. ComplianceResourceTypes | Standardmäßig ruft das Python-Skript die `ComplianceResourceTypes` von AWS definierten Vorlagen ab. Wenn Sie den Geltungsbereich einer bestimmten verwalteten AWS Config-Regel überschreiben möchten, müssen Sie sie mit der `--param-file` Option als JSON-Datei an das Python-Skript übergeben.Der folgende Beispielcode zeigt beispielsweise, wie der Wert `ComplianceResourceTypes` für in der `["AWS::EC2::Volume"]` Liste festgelegt `ec2-volume-inuse-check` ist:<pre>{<br />         "ec2-volume-inuse-check": {<br />             "Scope": {<br />                 "ComplianceResourceTypes": [<br />                     "AWS::EC2::Volume"<br />                 ]<br />             }<br />         }<br />     }</pre> | Developer | 

### Führen Sie das Python-Skript aus
<a name="run-the-python-script"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Pip-Pakete aus der Datei requirements.txt.  | Laden Sie die `requirements.txt` Datei (angehängt) herunter und führen Sie den folgenden Befehl in Ihrer IDE aus, um die Python-Pakete zu installieren:`pip3 install -r requirements.txt` | Developer | 
| Führen Sie das Python-Skript aus.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html)Sie können auch die folgenden optionalen Parameter hinzufügen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | Developer | 

### Stellen Sie die verwalteten Regeln von AWS Config bereit
<a name="deploy-the-aws-config-managed-rules"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | Developer | 

## Anlagen
<a name="attachments-07c1cfff-fc9e-4a1f-bd36-48f025808bd8"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/07c1cfff-fc9e-4a1f-bd36-48f025808bd8/attachments/attachment.zip)

# Geben Sie SageMaker Notebook-Instances temporären Zugriff auf ein CodeCommit Repository in einem anderen AWS-Konto
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account"></a>

*Helge Aufderheide, Amazon Web Services*

## Zusammenfassung
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-summary"></a>

Dieses Muster zeigt, wie Amazon SageMaker Notebook-Instances und Benutzern temporären Zugriff auf ein CodeCommit AWS-Repository gewährt wird, das sich in einem anderen AWS-Konto befindet. Dieses Muster zeigt auch, wie Sie detaillierte Berechtigungen für bestimmte Aktionen gewähren können, die jede Entität in jedem Repository ausführen kann.

Organizations speichern CodeCommit Repositorys häufig in einem anderen AWS-Konto als dem Konto, das ihre Entwicklungsumgebung hostet. Diese Einrichtung mit mehreren Konten hilft bei der Kontrolle des Zugriffs auf die Repositorys und reduziert das Risiko, dass sie versehentlich gelöscht werden. Um diese kontoübergreifenden Berechtigungen zu gewähren, empfiehlt es sich, AWS Identity and Access Management (IAM) -Rollen zu verwenden. Anschließend können vordefinierte IAM-Identitäten in jedem AWS-Konto vorübergehend die Rollen übernehmen, um eine kontrollierte Vertrauenskette zwischen den Konten aufzubauen.

**Anmerkung**  
Sie können ein ähnliches Verfahren anwenden, um anderen IAM-Identitäten kontoübergreifenden Zugriff auf ein Repository zu gewähren. CodeCommit Weitere Informationen finden [Sie unter Kontenübergreifendes Zugriff auf ein CodeCommit AWS-Repository mithilfe von Rollen konfigurieren](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) im * CodeCommit AWS-Benutzerhandbuch*.

## Voraussetzungen und Einschränkungen
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto mit einem CodeCommit Repository (*Konto A*)
+ Ein zweites aktives AWS-Konto mit einer SageMaker Notebook-Instance (*Konto B*)
+ Ein AWS-Benutzer mit ausreichenden Berechtigungen zum Erstellen und Ändern von IAM-Rollen in Konto A
+ Ein zweiter AWS-Benutzer mit ausreichenden Berechtigungen zum Erstellen und Ändern von IAM-Rollen in Konto B

## Architektur
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-architecture"></a>

Das folgende Diagramm zeigt einen Beispiel-Workflow, um einer SageMaker Notebook-Instance und Benutzern in einem AWS-Konto kontoübergreifenden Zugriff auf ein CodeCommit Repository zu gewähren:

![\[Workflow für kontoübergreifenden Zugriff auf CodeCommit\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/54d0fdb3-6d25-4433-9f67-c87846633d61/images/97a799af-ce88-4495-a61c-d0cd22493ce2.png)


Das Diagramm zeigt den folgenden Workflow:

1. Die AWS-Benutzerrolle und die SageMaker Notebook-Instance-Rolle in Konto B gehen von einem [benannten Profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) aus.

1. Die Berechtigungsrichtlinie des benannten Profils spezifiziert eine CodeCommit Zugriffsrolle in Konto A, die das Profil dann annimmt.

1. Die Vertrauensrichtlinie der CodeCommit Zugriffsrolle in Konto A ermöglicht es dem benannten Profil in Konto B, die CodeCommit Zugriffsrolle zu übernehmen.

1. Die IAM-Berechtigungsrichtlinie des CodeCommit Repositorys in Konto A ermöglicht der CodeCommit Zugriffsrolle den Zugriff auf das CodeCommit Repository.

**Technologie-Stack**
+ CodeCommit
+ Git
+ IAM
+ pip
+ SageMaker

## Tools
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-tools"></a>
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Git](https://git-scm.com/) ist ein verteiltes Versionskontrollsystem zur Nachverfolgung von Änderungen im Quellcode während der Softwareentwicklung.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)ist ein Hilfsprogramm, mit dem du Code aus CodeCommit Repositorys pushen und abrufen kannst, indem es Git erweitert.
+ [pip](https://pypi.org/project/pip/) ist der Paket-Installer für Python. Sie können pip verwenden, um Pakete aus dem Python-Paketindex und anderen Indizes zu installieren.

## Best Practices
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-best-practices"></a>

Wenn Sie Berechtigungen mit IAM-Richtlinien festlegen, stellen Sie sicher, dass Sie nur die für die Ausführung einer Aufgabe erforderlichen Berechtigungen gewähren. Weitere Informationen finden Sie unter [Geringste Berechtigungen anwenden](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) in der IAM-Dokumentation.

Achten Sie bei der Implementierung dieses Musters darauf, dass Sie wie folgt vorgehen:
+ Vergewissern Sie sich, dass die IAM-Prinzipien nur über die Berechtigungen verfügen, die für die Durchführung bestimmter, erforderlicher Aktionen innerhalb jedes Repositorys erforderlich sind. Es wird beispielsweise empfohlen, genehmigten IAM-Prinzipien die Übertragung und Zusammenführung von Änderungen an bestimmten Repository-Branches zu gestatten, aber nur Zusammenführungen mit geschützten Branches anzufordern. 
+ Vergewissern Sie sich, dass den IAM-Prinzipien je nach ihren jeweiligen Rollen und Verantwortlichkeiten für jedes Projekt unterschiedliche IAM-Rollen zugewiesen werden. Ein Entwickler hat beispielsweise andere Zugriffsberechtigungen als ein Release-Manager oder AWS-Administrator. 

## Epen
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-epics"></a>

### Konfigurieren Sie die IAM-Rollen
<a name="configure-the-iam-roles"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die CodeCommit Zugriffsrolle und die Berechtigungsrichtlinie. | Um den in diesem Epos dokumentierten manuellen Einrichtungsprozess zu automatisieren, können**** Sie eine [ CloudFormation AWS-Vorlage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) verwenden.Gehen Sie in dem Konto, das das CodeCommit Repository enthält (*Konto A*), wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Bevor Sie dieses Setup in Ihre Produktionsumgebung verschieben, empfiehlt es sich, Ihre eigene IAM-Richtlinie zu schreiben, die Berechtigungen mit den geringsten Rechten [anwendet.](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) Weitere Informationen finden Sie im Abschnitt **Zusätzliche Informationen dieses Musters**. | Allgemein AWS, AWS DevOps | 
| Erteilen Sie der Rolle der SageMaker Notebook-Instance in Konto B die Berechtigungen, um die CodeCommit Zugriffsrolle in Konto A zu übernehmen. | Gehen Sie in dem Konto, das die IAM-Rolle der SageMaker Notebook-Instanz enthält (*Konto B),* wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Informationen zum Amazon-Ressourcennamen (ARN) Ihres Repositorys finden Sie unter [ CodeCommit Repository-Details anzeigen](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-view-repository-details.html) im * CodeCommit AWS-Benutzerhandbuch*. | Allgemein AWS, AWS DevOps | 

### Richten Sie Ihre SageMaker Notebook-Instanz in Konto B ein
<a name="set-up-your-sagemaker-notebook-instance-in-account-b"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie ein Benutzerprofil auf der SageMaker AWS-Notebook-Instance ein, um die Rolle in Konto A zu übernehmen.  | [Stellen Sie sicher, dass Sie die neueste Version der AWS-Befehlszeilenschnittstelle (AWS CLI) installiert haben](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).Gehen Sie in dem Konto, das die SageMaker Notebook-Instance enthält (*Konto B),* wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)<pre>------.aws/config--------------<br />[profile remoterepouser]<br />role_arn = arn:aws:iam::<ID of Account A>:role/<rolename><br />role_session_name = remoteaccesssession<br />region = eu-west-1<br />credential_source  = Ec2InstanceMetadata<br />----------------------------------</pre> | Allgemein AWS, AWS DevOps | 
| Installieren Sie das Hilfsprogramm git-remote-codecommit. | Folgen Sie den Anweisungen in [Schritt 2: Installation git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install) im * CodeCommit AWS-Benutzerhandbuch*. | Datenwissenschaftler | 

### Greifen Sie auf das Repository zu
<a name="access-the-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Greifen Sie mit Git-Befehlen oder auf das CodeCommit Repository zu SageMaker. | **Um Git zu verwenden**IAM-Prinzipale, die die Rolle der SageMaker Notebook-Instanz in Konto B übernehmen, können jetzt Git-Befehle ausführen, um auf das CodeCommit Repository in Konto A zuzugreifen. Benutzer können beispielsweise Befehle wie `git clone``git pull`, und ausführen. `git push`Anweisungen finden Sie unter [Connect zu einem CodeCommit AWS-Repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) herstellen im * CodeCommit AWS-Benutzerhandbuch*.Informationen zur Verwendung von Git mit CodeCommit finden Sie unter [Erste Schritte mit AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started-cc.html) *im CodeCommit AWS-Benutzerhandbuch*.**Zu verwenden SageMaker**Um Git von der SageMaker Konsole aus zu verwenden, müssen Sie Git erlauben, Anmeldeinformationen aus Ihrem CodeCommit Repository abzurufen. Anweisungen finden Sie in der SageMaker Dokumentation unter [Verknüpfen eines CodeCommit Repositorys in einem anderen AWS-Konto mit einer Notebook-Instance](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-cross.html). | Git, Bash-Konsole | 

## Zugehörige Ressourcen
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-resources"></a>
+ [Kontenübergreifenden Zugriff auf ein CodeCommit AWS-Repository mithilfe von Rollen konfigurieren](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) ( CodeCommit AWS-Dokumentation)
+ [IAM-Tutorial: Delegieren des Zugriffs über AWS-Konten hinweg mithilfe von IAM-Rollen (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html))

## Zusätzliche Informationen
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-additional"></a>

**Beschränken CodeCommit von Berechtigungen auf bestimmte Aktionen**

Um die Aktionen einzuschränken, die ein IAM-Principal im CodeCommit Repository ausführen kann, ändern Sie die Aktionen, die in der CodeCommit Zugriffsrichtlinie zulässig sind.

Weitere Informationen zu CodeCommit API-Vorgängen finden Sie in der [CodeCommit Berechtigungsreferenz](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-permissions-reference.html) im * CodeCommit AWS-Benutzerhandbuch*.

**Anmerkung**  
Sie können die von [AWSCodeCommitPowerUser](https://docs.aws.amazon.com/codecommit/latest/userguide/security-iam-awsmanpol.html#managed-policies-poweruser)AWS verwaltete Richtlinie auch an Ihren Anwendungsfall anpassen.

**Beschränkung der CodeCommit Berechtigungen auf bestimmte Repositorys**

Gehen Sie wie folgt vor, um eine mandantenfähige Umgebung zu erstellen, in der mehr als ein Code-Repository nur bestimmten Benutzern zugänglich ist:

1. Erstellen Sie mehrere CodeCommit Zugriffsrollen in Konto A. Konfigurieren Sie anschließend die Vertrauensrichtlinie jeder Zugriffsrolle so, dass bestimmte Benutzer in Konto B die Rolle übernehmen können.

1. Schränken Sie ein, welche Code-Repositorys jede Rolle annehmen kann, indem Sie der Richtlinie jeder CodeCommit Zugriffsrolle die Bedingung **„Ressource“** hinzufügen.

**Beispiel für eine „Ressource“ -Bedingung, die den Zugriff eines IAM-Prinzipals auf ein bestimmtes Repository einschränkt CodeCommit **

```
"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]
```

**Anmerkung**  
Um mehrere Code-Repositorys in demselben AWS-Konto identifizieren und unterscheiden zu können, können Sie den Namen der Repositorys unterschiedliche Präfixe zuweisen. ****Beispielsweise können Sie Code-Repositorys mit Präfixen benennen, die unterschiedlichen Entwicklergruppen zugeordnet sind, wie myproject-subproject1-repo1 und myproject-subproject2-repo1.**** Anschließend können Sie eine IAM-Rolle für jede Entwicklergruppe auf der Grundlage der ihnen zugewiesenen Präfixe erstellen. **Sie könnten beispielsweise eine Rolle mit dem Namen **myproject-subproject1-repoaccess erstellen und ihr Zugriff auf alle Code-Repositorys** gewähren, die das Präfix myproject-subproject1 enthalten.**

**Beispiel für eine „Ressource“ -Bedingung, die sich auf einen Code-Repository-ARN bezieht, der ein bestimmtes Präfix enthält**

```
"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*
```

# Implementieren Sie eine GitHub Flow-Branching-Strategie für Umgebungen mit mehreren Konten DevOps
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens und Abhilash Vinod, Amazon Web Services*

## Zusammenfassung
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-summary"></a>

Bei der Verwaltung eines Quellcode-Repositorys wirken sich unterschiedliche Verzweigungsstrategien auf die Softwareentwicklungs- und Release-Prozesse aus, die von Entwicklungsteams verwendet werden. Beispiele für gängige Branching-Strategien sind Trunk, GitHub Flow und Gitflow. Diese Strategien verwenden unterschiedliche Branches, und die Aktivitäten, die in jeder Umgebung ausgeführt werden, sind unterschiedlich. Organizations, die DevOps Prozesse implementieren, würden von einem visuellen Leitfaden profitieren, der ihnen hilft, die Unterschiede zwischen diesen Verzweigungsstrategien zu verstehen. Die Verwendung dieser Grafik in Ihrem Unternehmen hilft Entwicklungsteams dabei, ihre Arbeit besser aufeinander abzustimmen und die Unternehmensstandards einzuhalten. Dieses Muster bietet dieses Bild und beschreibt den Prozess der Implementierung einer GitHub Flow-Branching-Strategie in Ihrem Unternehmen.

Dieses Muster ist Teil einer Dokumentationsserie über die Auswahl und Implementierung von DevOps Branching-Strategien für Organisationen mit mehreren. AWS-Konten Diese Serie soll Ihnen helfen, von Anfang an die richtige Strategie und die richtigen Best Practices anzuwenden, um Ihre Erfahrung in der Cloud zu optimieren. GitHub Flow ist nur eine mögliche Verzweigungsstrategie, die Ihr Unternehmen anwenden kann. Diese Dokumentationsreihe behandelt auch [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) - und [Gitflow-Verzweigungsmodelle](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html). Falls Sie dies noch nicht getan haben, empfehlen wir Ihnen, den Artikel [Auswahl einer Git-Branching-Strategie für DevOps Umgebungen mit mehreren Konten](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) zu lesen, bevor Sie die Anleitung in diesem Muster implementieren. Bitte wählen Sie mit der gebotenen Sorgfalt die richtige Branching-Strategie für Ihr Unternehmen aus.

Dieser Leitfaden enthält ein Diagramm, das zeigt, wie eine Organisation die GitHub Flow-Strategie umsetzen könnte. Es wird empfohlen, die [AWS Well-Architected DevOps Guidance zu lesen, um sich über bewährte](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Verfahren zu informieren. Dieses Muster enthält empfohlene Aufgaben, Schritte und Einschränkungen für jeden Schritt im DevOps Prozess.

## Voraussetzungen und Einschränkungen
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Voraussetzungen**
+ Git, [installiert](https://git-scm.com/downloads). Dies wird als Quellcode-Repository-Tool verwendet.
+ [Draw.io, installiert.](https://github.com/jgraph/drawio-desktop/releases) Diese Anwendung wird verwendet, um das Diagramm anzuzeigen und zu bearbeiten.

## Architektur
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm kann wie ein [Punnett-Quadrat](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia) verwendet werden. Sie richten die Zweige auf der vertikalen Achse mit den AWS Umgebungen auf der horizontalen Achse aus, um zu bestimmen, welche Aktionen in den einzelnen Szenarien ausgeführt werden sollen. Die Zahlen geben die Reihenfolge der Aktionen im Workflow an. Dieses Beispiel führt Sie von einer `feature` Filiale bis zur Bereitstellung in der Produktion.

![\[Summieren Sie die GitHub Flow-Aktivitäten in jeder Filiale und Umgebung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/780a5bce-3cd2-4092-8537-b7a77c3d6b8d/images/8a2a774a-cd85-466e-838e-a9a1f3b58a63.png)


Weitere Informationen zu Umgebungen und [Branches in einem GitHub Flow-Ansatz findest du unter Auswahl einer Git-Branching-Strategie für Umgebungen mit mehreren Konten DevOps ](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach). AWS-Konten

**Automatisierung und Skalierung**

Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDPipelines) bieten den Entwicklungsteams auch Kontrolle und Richtlinien, indem sie Konsistenz, Standards, bewährte Verfahren und Mindestakzeptanzniveaus für die Akzeptanz und Bereitstellung von Funktionen durchsetzen. Weitere Informationen finden Sie unter [Practicing Continuous Integration and Continuous Delivery](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) am. AWS

AWS bietet eine Reihe von Entwicklerservices, die Sie beim Aufbau von CI/CD Pipelines unterstützen sollen. [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)Ist beispielsweise ein vollständig verwalteter Continuous Delivery Service, der Sie bei der Automatisierung Ihrer Release-Pipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates unterstützt. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)kompiliert Quellcode, führt Tests durch und produziert ready-to-deploy Softwarepakete. Weitere Informationen finden Sie unter [Entwicklertools unter AWS](https://aws.amazon.com/products/developer-tools/).

## Tools
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS Dienste und Tools**

AWS stellt eine Suite von Entwicklerdiensten bereit, mit denen Sie dieses Muster implementieren können:
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)ist ein hoch skalierbarer, verwalteter Artefakt-Repository-Service, mit dem Sie Softwarepakete für die Anwendungsentwicklung speichern und gemeinsam nutzen können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatisiert Bereitstellungen in Amazon Elastic Compute Cloud (Amazon EC2) oder lokalen Instances, AWS Lambda Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.

**Andere Tools**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) ist eine Anwendung zum Erstellen von Flussdiagrammen und Diagrammen. Das Code-Repository enthält Vorlagen im .drawio-Format für Draw.io.
+ [Figma ist ein Online-Designtool](https://www.figma.com/design-overview/), das für die Zusammenarbeit entwickelt wurde. Das Code-Repository enthält Vorlagen im .fig-Format für Figma.

**Code-Repository**

Diese Quelldatei für das Diagramm in diesem Muster ist im Repository GitHub [Git Branching Strategy for GitHub Flow](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/github-flow) verfügbar. Sie enthält Dateien in den Formaten PNG, Draw.io und Figma. Sie können diese Diagramme ändern, um die Prozesse Ihres Unternehmens zu unterstützen.

## Best Practices
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Folgen Sie den Best Practices und Empfehlungen in [AWS Well-Architected DevOps Guidance](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) und Choosing [a Git Branching Strategy for](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) Multi-Account-Umgebungen. DevOps Diese helfen Ihnen dabei, die GitHub Flow-basierte Entwicklung effektiv zu implementieren, die Zusammenarbeit zu fördern, die Codequalität zu verbessern und den Entwicklungsprozess zu rationalisieren.

## Epen
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Überprüfung der GitHub Flow-Workflows
<a name="reviewing-the-github-flow-workflows"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie den GitHub Standard-Flow-Prozess. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) | DevOps Ingenieur | 
| Überprüfen Sie den Bugfix GitHub Flow-Prozess. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) | DevOps Ingenieur | 
| Überprüfen Sie den Hotfix GitHub Flow-Prozess. | GitHub Flow ist so konzipiert, dass es eine kontinuierliche Bereitstellung ermöglicht, bei der Codeänderungen häufig und zuverlässig in höheren Umgebungen implementiert werden. Der Schlüssel ist, dass jede `feature` Filiale jederzeit einsatzbereit ist.`Hotfix`Zweige, die `feature` `bugfix` OD-Zweigen ähneln, können dem gleichen Prozess folgen wie jeder dieser anderen Zweige. Aufgrund ihrer Dringlichkeit haben Hotfixes jedoch in der Regel eine höhere Priorität. Abhängig von den Richtlinien des Teams und der Unmittelbarkeit der Situation können bestimmte Schritte im Prozess beschleunigt werden. Beispielsweise könnten Codeüberprüfungen für Hotfixes beschleunigt werden. Daher entspricht der Hotfix-Prozess zwar dem Feature- oder Bugfix-Prozess, die Dringlichkeit der Hotfixes kann jedoch Änderungen bei der Einhaltung der Verfahren rechtfertigen. Es ist wichtig, Richtlinien für die Verwaltung von Hotfixes festzulegen, um sicherzustellen, dass diese effizient und sicher behandelt werden. | DevOps Ingenieur | 

## Fehlerbehebung
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Konflikte in der Branche | Ein häufiges Problem, das beim GitHub Flow-Modell auftreten kann, besteht darin, dass ein Hotfix in der Produktion ausgeführt werden muss, aber eine entsprechende Änderung in einem `feature``bugfix`, oder `hotfix` -Zweig erfolgen muss, in dem dieselben Ressourcen geändert werden. Wir empfehlen, dass Sie Änderungen häufig aus `main` untergeordneten Zweigen zusammenführen, um erhebliche Konflikte beim Zusammenführen mit zu `main` vermeiden. | 
| Reife des Teams | GitHub Flow fördert tägliche Implementierungen in höheren Umgebungen und setzt auf echte Continuous Integration und Continuous Delivery (CI/CD). Es ist unerlässlich, dass das Team über die nötige technische Reife verfügt, um Funktionen zu entwickeln und Automatisierungstests für diese zu erstellen. Das Team muss eine umfassende Prüfung der Zusammenführungsanfrage durchführen, bevor die Änderungen genehmigt werden. Dies fördert eine solide technische Kultur, die Qualität, Rechenschaftspflicht und Effizienz im Entwicklungsprozess fördert. | 

## Zugehörige Ressourcen
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-resources"></a>

In diesem Leitfaden sind keine Schulungen für Git enthalten. Es stehen jedoch viele hochwertige Ressourcen im Internet zur Verfügung, falls Sie diese Schulung benötigen. Wir empfehlen, dass Sie mit der [Git-Dokumentationsseite](https://git-scm.com/doc) beginnen.

Die folgenden Ressourcen können Ihnen bei Ihrer Reise zur GitHub Flow-Verzweigung in der AWS Cloud helfen.

**AWS DevOps Anleitung**
+ [AWS DevOps Empfehlung](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Referenzarchitektur für die Bereitstellungspipeline](https://pipelines.devops.aws.dev/)
+ [Was ist DevOps?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps Ressourcen](https://aws.amazon.com/devops/resources/)

**GitHub Strömungsführung**
+ [GitHub Flow-Schnellstart-Tutorial](https://docs.github.com/en/get-started/using-github/github-flow) () GitHub
+ [Warum GitHub Flow?](https://githubflow.github.io/)

**Sonstige Ressourcen**
+ [Zwölf-Faktoren-App-Methodik](https://12factor.net/) (12factor.net)

# Implementieren Sie eine Gitflow-Branching-Strategie für Umgebungen mit mehreren Konten DevOps
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens, Stephen DiCato, Abhilash Vinod und Tim Wondergem, Amazon Web Services*

## Zusammenfassung
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-summary"></a>

Bei der Verwaltung eines Quellcode-Repositorys wirken sich unterschiedliche Branching-Strategien auf die Softwareentwicklungs- und Release-Prozesse aus, die Entwicklungsteams verwenden. Beispiele für gängige Branching-Strategien sind Trunk, Gitflow und Flow. GitHub Diese Strategien verwenden unterschiedliche Branches, und die Aktivitäten, die in jeder Umgebung ausgeführt werden, sind unterschiedlich. Organizations, die DevOps Prozesse implementieren, würden von einem visuellen Leitfaden profitieren, der ihnen hilft, die Unterschiede zwischen diesen Verzweigungsstrategien zu verstehen. Die Verwendung dieser Grafik in Ihrem Unternehmen hilft Entwicklungsteams dabei, ihre Arbeit besser aufeinander abzustimmen und die Unternehmensstandards einzuhalten. Dieses Muster bietet dieses Bild und beschreibt den Prozess der Implementierung einer Gitflow-Branching-Strategie in Ihrer Organisation.

Dieses Muster ist Teil einer Dokumentationsserie über die Auswahl und Implementierung von DevOps Branching-Strategien für Organisationen mit mehreren. AWS-Konten Diese Serie soll Ihnen helfen, von Anfang an die richtige Strategie und die richtigen Best Practices anzuwenden, um Ihre Erfahrung in der Cloud zu optimieren. Gitflow ist nur eine mögliche Branching-Strategie, die Ihr Unternehmen anwenden kann. Diese Dokumentationsreihe behandelt auch [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) - und [GitHub Flow-Verzweigungsmodelle](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html). Falls Sie dies noch nicht getan haben, empfehlen wir Ihnen, den Artikel [Auswahl einer Git-Branching-Strategie für DevOps Umgebungen mit mehreren Konten](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) zu lesen, bevor Sie die Anleitung in diesem Muster implementieren. Bitte wählen Sie mit der gebotenen Sorgfalt die richtige Branching-Strategie für Ihr Unternehmen aus.

Dieser Leitfaden enthält ein Diagramm, das zeigt, wie eine Organisation die Gitflow-Strategie umsetzen könnte. Es wird empfohlen, die [AWS Well-Architected DevOps Guidance zu lesen, um sich über bewährte](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Verfahren zu informieren. Dieses Muster enthält empfohlene Aufgaben, Schritte und Einschränkungen für jeden Schritt im DevOps Prozess.

## Voraussetzungen und Einschränkungen
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Voraussetzungen**
+ Git, [installiert](https://git-scm.com/downloads). Dies wird als Quellcode-Repository-Tool verwendet.
+ [Draw.io, installiert.](https://github.com/jgraph/drawio-desktop/releases) Diese Anwendung wird zum Anzeigen und Bearbeiten des Diagramms verwendet.
+ (Optional) Gitflow-Plugin, [installiert](https://github.com/nvie/gitflow).

## Architektur
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm kann wie ein [Punnett-Quadrat](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia) verwendet werden. Sie richten die Zweige auf der vertikalen Achse mit den AWS Umgebungen auf der horizontalen Achse aus, um zu bestimmen, welche Aktionen in den einzelnen Szenarien ausgeführt werden sollen. Die Zahlen geben die Reihenfolge der Aktionen im Workflow an. Dieses Beispiel führt Sie von einem Feature-Branch bis zur Bereitstellung in der Produktion.

![\[Zusammenfassung der Gitflow-Aktivitäten in jeder Filiale und Umgebung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/1dee2a06-cc54-4797-b9a9-78b6685edd33/images/d8be49bf-dca1-4892-ac4c-11996a7258c2.png)


Weitere Informationen zu den AWS-Konten Umgebungen und [Branches in einem Gitflow-Ansatz findest du unter Auswahl einer Git-Branching-Strategie für Umgebungen mit mehreren DevOps Konten](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/).

**Automatisierung und Skalierung**

Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDPipelines) bieten den Entwicklungsteams auch Kontrolle und Richtlinien, indem sie Konsistenz, Standards, bewährte Verfahren und Mindestakzeptanzniveaus für die Akzeptanz und Bereitstellung von Funktionen durchsetzen. Weitere Informationen finden Sie unter [Practicing Continuous Integration and Continuous Delivery](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) auf. AWS

AWS bietet eine Reihe von Entwicklerservices, die Sie beim Aufbau von CI/CD Pipelines unterstützen sollen. [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)Ist beispielsweise ein vollständig verwalteter Continuous Delivery Service, der Sie bei der Automatisierung Ihrer Release-Pipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates unterstützt. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)kompiliert Quellcode, führt Tests durch und produziert ready-to-deploy Softwarepakete. Weitere Informationen finden Sie unter [Entwicklertools unter AWS](https://aws.amazon.com/products/developer-tools/).

## Tools
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS Dienste und Tools**

AWS stellt eine Suite von Entwicklerdiensten bereit, mit denen Sie dieses Muster implementieren können:
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)ist ein hoch skalierbarer, verwalteter Artefakt-Repository-Service, mit dem Sie Softwarepakete für die Anwendungsentwicklung speichern und gemeinsam nutzen können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatisiert Bereitstellungen in Amazon Elastic Compute Cloud (Amazon EC2) oder lokalen Instances, AWS Lambda Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.

**Andere Tools**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) ist eine Anwendung zum Erstellen von Flussdiagrammen und Diagrammen. Das Code-Repository enthält Vorlagen im .drawio-Format für Draw.io.
+ [Figma ist ein Online-Designtool](https://www.figma.com/design-overview/), das für die Zusammenarbeit entwickelt wurde. Das Code-Repository enthält Vorlagen im .fig-Format für Figma.
+ (Optional) Das [Gitflow-Plugin](https://github.com/nvie/gitflow) ist eine Sammlung von Git-Erweiterungen, die Repository-Operationen auf hoher Ebene für das Gitflow-Verzweigungsmodell bereitstellen.

**Code-Repository**

Diese Quelldatei für das Diagramm in diesem Muster ist in der GitHub [Git Branching Strategy for GitFlow](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/gitflow) Repository verfügbar. Sie enthält Dateien in den Formaten PNG, Draw.io und Figma. Sie können diese Diagramme ändern, um die Prozesse Ihres Unternehmens zu unterstützen.

## Best Practices
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Folgen Sie den Best Practices und Empfehlungen in [AWS Well-Architected DevOps Guidance](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) und Choosing [a Git Branching Strategy for](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) Multi-Account-Umgebungen. DevOps Diese helfen dir dabei, die GitFlow-basierte Entwicklung effektiv zu implementieren, die Zusammenarbeit zu fördern, die Codequalität zu verbessern und den Entwicklungsprozess zu rationalisieren.

## Epen
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Überprüfung der Gitflow-Workflows
<a name="reviewing-the-gitflow-workflows"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfe den Standard-Gitflow-Prozess. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps Ingenieur | 
| Überprüfen Sie den Hotfix-Gitflow-Prozess. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps Ingenieur | 
| Überprüfe den Bugfix-Gitflow-Prozess. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Konflikte in der Branche | Ein häufiges Problem, das beim Gitflow-Modell auftreten kann, besteht darin, dass ein Hotfix in der Produktion ausgeführt werden muss, eine entsprechende Änderung jedoch in einer niedrigeren Umgebung vorgenommen werden muss, in der ein anderer Zweig dieselben Ressourcen ändert. Wir empfehlen, dass jeweils nur ein einziger Release-Zweig aktiv ist. Wenn mehr als ein Branch gleichzeitig aktiv ist, kollidieren die Änderungen in den Umgebungen möglicherweise und Sie können einen Branch möglicherweise nicht in die Produktion überführen. | 
| Zusammenführen | Releases sollten so schnell wie möglich wieder in die Hauptversionen integriert und weiterentwickelt werden, um die Arbeit wieder in den primären Zweigen zu konsolidieren. | 
| Zusammenführung von Squash | Verwenden Sie eine Squash-Merge nur, wenn Sie von einem `feature` Zweig zu einem Zweig zusammenführen. `develop` Die Verwendung von Squash-Merges in höheren Zweigen führt zu Schwierigkeiten, wenn Änderungen wieder in niedrigere Zweige zurückgeführt werden. | 

## Zugehörige Ressourcen
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-resources"></a>

In diesem Leitfaden sind keine Schulungen für Git enthalten. Es stehen jedoch viele hochwertige Ressourcen im Internet zur Verfügung, falls Sie diese Schulung benötigen. Wir empfehlen, dass Sie mit der [Git-Dokumentationsseite](https://git-scm.com/doc) beginnen.

Die folgenden Ressourcen können Ihnen bei Ihrer Reise nach Gitflow-Branches in der helfen. AWS Cloud

**AWS DevOps Anleitung**
+ [AWS DevOps Empfehlung](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Referenzarchitektur für die Bereitstellungspipeline](https://pipelines.devops.aws.dev/)
+ [Was ist DevOps?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps Ressourcen](https://aws.amazon.com/devops/resources/)

**Gitflow-Anleitung**
+ [Der ursprüngliche Gitflow-Blog (Blogbeitrag](https://nvie.com/posts/a-successful-git-branching-model/) von Vincent Driessen)
+ [Gitflow-Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) (Atlassian)
+ [Gitflow on GitHub: So verwendest du Git Flow-Workflows mit GitHub Based Repos (Video](https://youtu.be/WQuxeEvaCxs)) YouTube 
+ [Beispiel für Git Flow Init](https://www.youtube.com/watch?v=d4cDLBFbekw) (YouTube Video)
+ [Der Gitflow-Release-Zweig von Anfang bis Ende (Video](https://www.youtube.com/watch?v=rX80eKPdA28)) YouTube 

**Sonstige Ressourcen**

[Zwölf-Faktoren-App-Methodik](https://12factor.net/) (12factor.net)

# Implementieren Sie eine Trunk-Branching-Strategie für Umgebungen mit mehreren Konten DevOps
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens und Rayjan Wilson, Amazon Web Services*

## Zusammenfassung
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-summary"></a>

Bei der Verwaltung eines Quellcode-Repositorys wirken sich unterschiedliche Verzweigungsstrategien auf die Softwareentwicklungs- und Release-Prozesse aus, die von Entwicklungsteams verwendet werden. Beispiele für gängige Branching-Strategien sind Trunk, GitHub Flow und Gitflow. Diese Strategien verwenden unterschiedliche Branches, und die Aktivitäten, die in jeder Umgebung ausgeführt werden, sind unterschiedlich. Organizations, die DevOps Prozesse implementieren, würden von einem visuellen Leitfaden profitieren, der ihnen hilft, die Unterschiede zwischen diesen Verzweigungsstrategien zu verstehen. Die Verwendung dieser Grafik in Ihrem Unternehmen hilft Entwicklungsteams dabei, ihre Arbeit besser aufeinander abzustimmen und die Unternehmensstandards einzuhalten. Dieses Muster bietet dieses Bild und beschreibt den Prozess der Implementierung einer Trunk-Branching-Strategie in Ihrer Organisation.

Dieses Muster ist Teil einer Dokumentationsreihe über die Auswahl und Implementierung von DevOps Branching-Strategien für Organisationen mit mehreren Filialen. AWS-Konten Diese Serie soll Ihnen helfen, von Anfang an die richtige Strategie und die richtigen Best Practices anzuwenden, um Ihre Erfahrung in der Cloud zu optimieren. Trunk ist nur eine mögliche Verzweigungsstrategie, die Ihr Unternehmen anwenden kann. Diese Dokumentationsreihe behandelt auch die [GitHub Branching-Modelle Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) und [Gitflow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html). Falls Sie dies noch nicht getan haben, empfehlen wir Ihnen, den Artikel [Auswahl einer Git-Branching-Strategie für DevOps Umgebungen mit mehreren Konten](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) zu lesen, bevor Sie die Anleitung in diesem Muster implementieren. Bitte wählen Sie mit der gebotenen Sorgfalt die richtige Branching-Strategie für Ihr Unternehmen aus.

Dieser Leitfaden enthält ein Diagramm, das zeigt, wie ein Unternehmen die Trunk-Strategie umsetzen könnte. Es wird empfohlen, die offiziellen [AWS DevOps Well-Architected-Leitlinien zu lesen, um sich über bewährte](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Verfahren zu informieren. Dieses Muster enthält empfohlene Aufgaben, Schritte und Einschränkungen für jeden Schritt im DevOps Prozess.

## Voraussetzungen und Einschränkungen
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Voraussetzungen**
+ Git, [installiert](https://git-scm.com/downloads). Dies wird als Quellcode-Repository-Tool verwendet.
+ [Draw.io, installiert.](https://github.com/jgraph/drawio-desktop/releases) Diese Anwendung wird verwendet, um das Diagramm anzuzeigen und zu bearbeiten.

## Architektur
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm kann wie ein [Punnett-Quadrat](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia) verwendet werden. Sie richten die Zweige auf der vertikalen Achse mit den AWS Umgebungen auf der horizontalen Achse aus, um zu bestimmen, welche Aktionen in den einzelnen Szenarien ausgeführt werden sollen. Die Zahlen geben die Reihenfolge der Aktionen im Workflow an. Dieses Beispiel führt Sie von einer `feature` Filiale bis zur Bereitstellung in der Produktion.

![\[Punnett Square of the Trunk-Aktivitäten in jeder Filiale und Umgebung\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/5df23e4d-84fe-4ab3-a54f-96b6406abc57/images/ad549ef4-90ad-47c1-bd01-f21d6ce5511a.png)


Weitere Informationen zu Umgebungen und [Branches in einem Trunk-Ansatz finden Sie unter Auswahl einer Git-Branching-Strategie für Umgebungen mit mehreren Konten DevOps ](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach). AWS-Konten

**Automatisierung und Skalierung**

Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDPipelines) bieten den Entwicklungsteams auch Kontrolle und Richtlinien, indem sie Konsistenz, Standards, bewährte Verfahren und Mindestakzeptanzniveaus für die Akzeptanz und Bereitstellung von Funktionen durchsetzen. Weitere Informationen finden Sie unter [Practicing Continuous Integration and Continuous Delivery](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html) auf. AWS

AWS bietet eine Reihe von Entwicklerservices, die Sie beim Aufbau von CI/CD Pipelines unterstützen sollen. [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)Ist beispielsweise ein vollständig verwalteter Continuous Delivery-Service, der Sie bei der Automatisierung Ihrer Release-Pipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates unterstützt. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)kompiliert Quellcode, führt Tests durch und produziert ready-to-deploy Softwarepakete. Weitere Informationen finden Sie unter [Entwicklertools unter AWS](https://aws.amazon.com/products/developer-tools/).

## Tools
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS Dienste und Tools**

AWS stellt eine Suite von Entwicklerdiensten bereit, mit denen Sie dieses Muster implementieren können:
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)ist ein hoch skalierbarer, verwalteter Artefakt-Repository-Service, mit dem Sie Softwarepakete für die Anwendungsentwicklung speichern und gemeinsam nutzen können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatisiert Bereitstellungen in Amazon Elastic Compute Cloud (Amazon EC2) oder lokalen Instances, AWS Lambda Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.

**Andere Tools**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) — Eine Anwendung zum Erstellen von Flussdiagrammen und Diagrammen.
+ [Figma](https://www.figma.com/design-overview/) ist ein Online-Design-Tool, das für die Zusammenarbeit entwickelt wurde. Das Code-Repository enthält Vorlagen im .fig-Format für Figma.

**Code-Repository**

Diese Quelldatei für das Diagramm in diesem Muster ist im Repository GitHub [Git Branching Strategy for Trunk](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/trunk) verfügbar. Sie enthält Dateien in den Formaten PNG, Draw.io und Figma. Sie können diese Diagramme ändern, um die Prozesse Ihres Unternehmens zu unterstützen.

## Best Practices
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Folgen Sie den Best Practices und Empfehlungen in [AWS Well-Architected DevOps Guidance](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) und Choosing [a Git Branching Strategy for](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) Multi-Account-Umgebungen. DevOps Diese helfen dir dabei, Trunk-basierte Entwicklung effektiv zu implementieren, die Zusammenarbeit zu fördern, die Codequalität zu verbessern und den Entwicklungsprozess zu rationalisieren.

## Epen
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Überprüfung des Trunk-Workflows
<a name="reviewing-the-trunk-workflow"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie den Standard-Trunk-Prozess. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Konflikte in der Branche | Ein häufiges Problem, das beim Trunk-Modell auftreten kann, besteht darin, dass ein Hotfix in der Produktion ausgeführt werden muss, eine entsprechende Änderung jedoch in einer `feature` Filiale vorgenommen werden muss, in der dieselben Ressourcen geändert werden. Wir empfehlen, dass Sie Änderungen häufig aus `main` untergeordneten Zweigen zusammenführen, um erhebliche Konflikte beim Zusammenführen zu `main` vermeiden. | 

## Zugehörige Ressourcen
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-resources"></a>

In diesem Leitfaden sind keine Schulungen für Git enthalten. Es stehen jedoch viele hochwertige Ressourcen im Internet zur Verfügung, falls Sie diese Schulung benötigen. Wir empfehlen, dass Sie mit der [Git-Dokumentationsseite](https://git-scm.com/doc) beginnen.

Die folgenden Ressourcen können Ihnen bei Ihrer Trunk-Branching-Reise in der AWS Cloud helfen.

**AWS DevOps Anleitung**
+ [AWS DevOps Empfehlung](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Deployment Pipeline Reference Architecture](https://pipelines.devops.aws.dev/)
+ [Was ist DevOps?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps Ressourcen](https://aws.amazon.com/devops/resources/)

**Führung des Rumpfes**
+ [Entwicklung auf Trunk-Basis](https://trunkbaseddevelopment.com/)

**Sonstige Ressourcen**
+ [Zwölf-Faktor-App-Methodik](https://12factor.net/) (12factor.net)

# Implementieren Sie zentralisiertes benutzerdefiniertes Checkov-Scanning, um Richtlinien vor der Bereitstellung AWS der Infrastruktur durchzusetzen
<a name="centralized-custom-checkov-scanning"></a>

*Benjamin Morris, Amazon Web Services*

## Zusammenfassung
<a name="centralized-custom-checkov-scanning-summary"></a>

Dieses Muster bietet ein GitHub Actions-Framework für das Schreiben benutzerdefinierter Checkov-Richtlinien in einem Repository, die unternehmensweit wiederverwendet werden können. GitHub Wenn dieses Muster befolgt wird, kann ein Informationssicherheitsteam benutzerdefinierte Richtlinien auf der Grundlage der Unternehmensanforderungen schreiben, hinzufügen und verwalten. Die benutzerdefinierten Richtlinien können automatisch in alle Pipelines der GitHub Organisation übernommen werden. Dieser Ansatz kann verwendet werden, um Unternehmensstandards für Ressourcen durchzusetzen, bevor die Ressourcen eingesetzt werden.

## Voraussetzungen und Einschränkungen
<a name="centralized-custom-checkov-scanning-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine GitHub Organisation, die GitHub Aktionen verwendet
+ AWS Infrastruktur, die entweder mit HashiCorp Terraform oder bereitgestellt wurde AWS CloudFormation

**Einschränkungen**
+ Dieses Muster wurde für GitHub Aktionen geschrieben. Es kann jedoch an ähnliche Frameworks für kontinuierliche Integration und kontinuierliche Lieferung (CI/CD) angepasst werden, wie z. GitLab Es ist keine spezielle kostenpflichtige Version von GitHub erforderlich.
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur regionalen Verfügbarkeit finden Sie in der AWS Dokumentation unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) und wählen Sie den Link für den Dienst.

## Architektur
<a name="centralized-custom-checkov-scanning-architecture"></a>

Dieses Muster ist für die Bereitstellung als GitHub Repository konzipiert, das einen GitHub wiederverwendbaren Workflow und benutzerdefinierte Checkov-Richtlinien enthält. Der wiederverwendbare Workflow kann sowohl Terraform- als auch CloudFormation Infrastructure-as-Code-Repositorys (IaC) scannen.

Das folgende Diagramm zeigt das Repository für **wiederverwendbare GitHub Workflows und das Repository** für **benutzerdefinierte Checkov-Richtlinien als separate Symbole**. Sie können diese Repositorys jedoch entweder als separate Repositorys oder als einzelnes Repository implementieren. Der Beispielcode verwendet ein einzelnes Repository mit Dateien für Workflows (`.github/workflows`) und Dateien für benutzerdefinierte Richtlinien (`custom_policies`Ordner und `.checkov.yml` Konfigurationsdatei) im selben Repository.

![\[GitHub Actions verwendet wiederverwendbare GitHub Workflows und benutzerdefinierte Checkov-Richtlinien, um IaC zu evaluieren.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/6c0c941f-14f9-4569-92da-9f81ab3e525c/images/a1539ce5-0ee6-4af1-bd01-cafad0f71708.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein Benutzer erstellt eine Pull-Anfrage in einem GitHub Repository.

1. Pipeline-Workflows beginnen in GitHub Aktionen, einschließlich eines Verweises auf einen wiederverwendbaren Checkov-Workflow.

1. Der Pipeline-Workflow lädt den referenzierten wiederverwendbaren Checkov-Workflow aus einem externen Repository herunter und führt diesen Checkov-Workflow mithilfe von Aktionen aus. GitHub 

1. Der wiederverwendbare Checkov-Workflow lädt die benutzerdefinierten Richtlinien aus einem externen Repository herunter.

1. Der wiederverwendbare Checkov-Workflow bewertet die IaC im GitHub Repository anhand integrierter und benutzerdefinierter Checkov-Richtlinien. Der wiederverwendbare Checkov-Workflow ist erfolgreich oder schlägt fehl, je nachdem, ob Sicherheitsprobleme gefunden wurden.

**Automatisierung und Skalierung**

Dieses Muster ermöglicht die zentrale Verwaltung der Checkov-Konfiguration, sodass Richtlinienaktualisierungen an einem Ort angewendet werden können. Dieses Muster erfordert jedoch, dass jedes Repository einen Workflow verwendet, der einen Verweis auf den zentralen wiederverwendbaren Workflow enthält. Sie können diesen Verweis manuell hinzufügen oder Skripts verwenden, um die Datei in den `.github/workflows` Ordner für jedes Repository zu verschieben.

## Tools
<a name="centralized-custom-checkov-scanning-tools"></a>

**AWS-Services**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten. Checkov kann scannen CloudFormation.

**Andere Tools**
+ [Checkov](https://www.checkov.io/) ist ein statisches Codeanalyse-Tool, das IaC auf Sicherheits- und Compliance-Fehlkonfigurationen überprüft.
+ [GitHub Actions](https://github.com/features/actions) ist in die GitHub Plattform integriert, um Sie bei der Erstellung, gemeinsamen Nutzung und Ausführung von Workflows in Ihren Repositorys zu unterstützen. GitHub Mithilfe von GitHub Aktionen können Sie Aufgaben wie das Erstellen, Testen und Bereitstellen Ihres Codes automatisieren.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool von HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können. Checkov kann Terraform scannen.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [centralized-custom-checkov-sast](https://github.com/aws-samples/centralized-custom-checkov-sast)Repository verfügbar.

## Best Practices
<a name="centralized-custom-checkov-scanning-best-practices"></a>
+ Um einen konsistenten Sicherheitsstatus aufrechtzuerhalten, sollten Sie die Sicherheitsrichtlinien Ihres Unternehmens an die Checkov-Richtlinien anpassen.
+ In den frühen Phasen der Implementierung der benutzerdefinierten Richtlinien von Checkov können Sie die Soft-Fail-Option in Ihrem Checkov-Scan verwenden, damit IaC und Sicherheitsprobleme zusammengeführt werden können. Wenn der Prozess ausgereift ist, wechseln Sie von der Soft-Fail-Option zur Hard-Fail-Option.

## Epen
<a name="centralized-custom-checkov-scanning-epics"></a>

### Erstellen Sie ein zentrales Checkov-Repository für benutzerdefinierte Richtlinien
<a name="create-a-central-checkov-repository-for-custom-policies"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein zentrales Checkov-Repository. | Erstellen Sie ein Repository, um benutzerdefinierte Checkov-Richtlinien zu speichern, die innerhalb der Organisation verwendet werden.Für einen schnellen Start können Sie den Inhalt des Repositorys dieses Patterns in Ihr zentrales GitHub [centralized-custom-checkov-sast ](https://github.com/aws-samples/centralized-custom-checkov-sast)Checkov-Repository kopieren. | DevOps Ingenieur | 
| Erstellen Sie ein Repository für wiederverwendbare Workflows. | Wenn bereits ein Repository für wiederverwendbare Workflows existiert oder Sie planen, wiederverwendbare Workflow-Dateien in dasselbe Repository aufzunehmen wie die benutzerdefinierten Checkov-Richtlinien, können Sie diesen Schritt überspringen.Erstellen Sie ein GitHub Repository für wiederverwendbare Workflows. Die Pipelines anderer Repositorien werden auf dieses Repository verweisen. | DevOps Ingenieur | 

### Erstellen Sie wiederverwendbare Checkov-Workflows und Beispielworkflows
<a name="create-reusable-and-example-checkov-workflows"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie einen wiederverwendbaren Checkov-Workflow hinzu. | Erstellen Sie einen wiederverwendbaren GitHub Checkov-Aktions-Workflow (YAML-Datei) im Repository für wiederverwendbare Workflows. Sie können diesen wiederverwendbaren Workflow anhand der in diesem Muster bereitgestellten Workflow-Datei anpassen.Ein Beispiel für eine Änderung, die Sie möglicherweise vornehmen möchten, besteht darin, den wiederverwendbaren Workflow so zu ändern, dass er die Soft-Fail-Option verwendet. `true`Durch die Einstellung `soft-fail` auf kann der Job auch dann erfolgreich abgeschlossen werden, wenn ein Checkov-Scan fehlschlägt. Anweisungen finden Sie unter [Hard and Soft Fail](https://www.checkov.io/2.Basics/Hard%20and%20soft%20fail.html) in der Checkov-Dokumentation. | DevOps Ingenieur | 
| Fügen Sie einen Beispiel-Workflow hinzu. | Fügen Sie einen Checkov-Beispiel-Workflow hinzu, der auf den `reusable` Workflow verweist. Dadurch wird eine Vorlage für die Wiederverwendung des `reusable` Workflows bereitgestellt. Im Beispiel-Repository `checkov-source.yaml` befindet sich der wiederverwendbare Workflow und `checkov-scan.yaml` ist das Beispiel, das verbraucht. `checkov-source`Weitere Informationen zum Schreiben eines Checkov-Beispiel-Workflows finden Sie unter [Zusätzliche](#centralized-custom-checkov-scanning-additional) Informationen. | DevOps Ingenieur | 

### Ordnen Sie Unternehmensrichtlinien den benutzerdefinierten Richtlinien von Checkov zu
<a name="associate-company-policies-to-checkov-custom-policies"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ermitteln Sie Richtlinien, die mit Checkov durchgesetzt werden können. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralized-custom-checkov-scanning.html)Weitere Informationen zur Erstellung von benutzerdefinierten Checkov-Richtlinien finden Sie unter [Übersicht über benutzerdefinierte Richtlinien](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html) in der Checkov-Dokumentation. | Sicherheit und Compliance | 
| Fügen Sie benutzerdefinierte Checkov-Richtlinien hinzu. | Konvertieren Sie die identifizierten Unternehmensrichtlinien in benutzerdefinierte Checkov-Richtlinien im zentralen Repository. Sie können einfache Checkov-Richtlinien entweder in Python oder YAML schreiben. | Sicherheit | 

### Implementieren Sie zentralisierte benutzerdefinierte Checkov-Richtlinien
<a name="implement-centralized-checkov-custom-policies"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie den wiederverwendbaren Checkov-Workflow zu allen Repositorys hinzu. | Zu diesem Zeitpunkt sollten Sie über ein Beispiel für einen Checkov-Workflow verfügen, der auf den wiederverwendbaren Workflow verweist. Kopieren Sie den Checkov-Beispiel-Workflow, der auf den wiederverwendbaren Workflow verweist, in jedes Repository, das ihn benötigt. | DevOps Ingenieur | 
| Erstellen Sie einen Mechanismus, um sicherzustellen, dass Checkov vor Zusammenführungen ausgeführt wird. | Um sicherzustellen, dass der Checkov-Workflow für jede Pull-Anfrage ausgeführt wird, erstellen Sie eine [Statusprüfung](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks), die einen erfolgreichen Checkov-Workflow voraussetzt, bevor Pull-Requests zusammengeführt werden können. GitHub ermöglicht es Ihnen, zu verlangen, dass bestimmte Workflows ausgeführt werden, bevor Pull-Requests zusammengeführt werden können. | DevOps Ingenieur | 
| Erstellen Sie eine unternehmensweite PAT und geben Sie sie als geheim weiter. | Wenn Ihre GitHub Organisation öffentlich sichtbar ist, können Sie diesen Schritt überspringen.Dieses Muster erfordert, dass der Checkov-Workflow in der Lage ist, benutzerdefinierte Richtlinien aus dem Repository für benutzerdefinierte Richtlinien in Ihrer GitHub Organisation herunterzuladen. Sie müssen Berechtigungen bereitstellen, damit der Checkov-Workflow auf diese Repositorys zugreifen kann.[Erstellen Sie dazu ein Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) (PAT) mit Berechtigungen zum Lesen von Organisations-Repositorys. Teilen Sie dieses PAT mit Repositorys, entweder als unternehmensweites Geheimnis (bei einem kostenpflichtigen Tarif) oder als Geheimnis in jedem Repository (kostenlose Version). Im Beispielcode lautet der Standardname für das Geheimnis. `ORG_PAT` | DevOps Ingenieur | 
| (Optional) Schützen Sie die Checkov-Workflow-Dateien vor Änderungen. | Um die Checkov-Workflow-Dateien vor unerwünschten Änderungen zu schützen, können Sie eine `CODEOWNERS` Datei verwenden. Die `CODEOWNERS` Datei wird normalerweise im Stammverzeichnis bereitgestellt.Um beispielsweise Genehmigungen von der `secEng` Gruppe Ihrer GitHub Organisation einzuholen, wenn die `checkov-scan.yaml` Datei geändert wird, fügen Sie Folgendes an die Datei eines Repositorys `CODEOWNERS` an:<pre>[Checkov]<br />.github/workflows/checkov-scan.yaml @myOrg/secEng</pre>Eine `CODEOWNERS` Datei ist spezifisch für das Repository, in dem sie sich befindet. Um den vom Repository verwendeten Checkov-Workflow zu schützen, müssen Sie in jedem Repository eine `CODEOWNERS` Datei hinzufügen (oder aktualisieren).Weitere Informationen zum Schutz von Checkov-Workflow-Dateien finden Sie unter [Zusätzliche](#centralized-custom-checkov-scanning-additional) Informationen. Weitere Informationen zu `CODEOWNERS` Dateien finden Sie in der offiziellen Dokumentation Ihres CI/CD Anbieters (z. B. [GitHub](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)). | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="centralized-custom-checkov-scanning-resources"></a>
+ [Überblick über die benutzerdefinierten Richtlinien von Checkov](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html)
+ [CloudFormation Scannen von Konfigurationen](https://www.checkov.io/7.Scan%20Examples/Cloudformation.html)
+ [GitHub Aktionen Wiederverwendbare Workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows)

## Zusätzliche Informationen
<a name="centralized-custom-checkov-scanning-additional"></a>

**Checkov-Workflow-Dateien schreiben**

Überlegen Sie sich beim Schreiben`checkov-scan.yaml`, wann es ausgeführt werden soll. Der `on` Schlüssel der obersten Ebene bestimmt, wann der Workflow ausgeführt wird. Im Beispiel-Repository wird der Workflow ausgeführt, wenn eine Pull-Anfrage auf den `main` Branch abzielt (und jedes Mal, wenn der Quell-Branch dieser Pull-Anfrage geändert wird). Aufgrund des `workflow_dispatch` Schlüssels kann der Workflow auch nach Bedarf ausgeführt werden.

Sie können die Workflow-Auslösebedingungen ändern, je nachdem, wie oft der Workflow ausgeführt werden soll. Sie könnten beispielsweise den Workflow so ändern, dass er jedes Mal ausgeführt wird, wenn Code an einen Zweig übertragen wird, indem Sie den Schlüssel durch den `branches` Schlüssel `pull_request` ersetzen `push` und ihn entfernen.

Sie können die Workflow-Beispieldatei ändern, die Sie in einem einzelnen Repository erstellt haben. Sie könnten beispielsweise den Namen des Ziel-Branches von bis ändern`main`, `production` wenn ein Repository um einen `production` Branch herum strukturiert ist.

**Schutz der Checkov-Workflow-Dateien**

Der Checkov-Scan liefert nützliche Informationen über mögliche Sicherheitsfehler. Einige Entwickler könnten dies jedoch als Hindernis für ihre Produktivität empfinden und versuchen, den Scan-Workflow zu entfernen oder zu deaktivieren.

Es gibt mehrere Möglichkeiten, dieses Problem zu lösen, darunter bessere Informationen über den langfristigen Wert von Sicherheitsscans und eine klarere Dokumentation zur Bereitstellung einer sicheren Infrastruktur. Dies sind wichtige „sanfte“ Ansätze für die DevSecOps Zusammenarbeit, die als Lösung für die eigentliche Ursache dieses Problems angesehen werden können. Sie können jedoch auch technische Kontrollen wie eine `CODEOWNERS` Datei als Leitplanken verwenden, um Entwickler auf dem richtigen Weg zu halten.

**Testmuster in einer Sandbox**

Gehen Sie folgendermaßen vor, um dieses Muster in einer Sandbox-Umgebung zu testen:

1. Erstellen Sie eine neue GitHub Organisation. Erstellen Sie ein Token mit schreibgeschütztem Zugriff auf alle Repositorys in der Organisation. Da dieses Token für eine Sandbox-Umgebung und nicht für eine kostenpflichtige Umgebung bestimmt ist, können Sie dieses Token nicht in einem unternehmensweiten Geheimnis speichern.

1. Erstellen Sie ein `checkov` Repository für die Checkov-Konfiguration und ein `github-workflows` Repository für die wiederverwendbare Workflow-Konfiguration. Füllen Sie die Repositorys mit dem Inhalt des Beispiel-Repositorys.

1. Erstellen Sie ein Anwendungs-Repository, kopieren Sie den `checkov-scan.yaml` Workflow und fügen Sie ihn in den entsprechenden Ordner ein. `.github/workflows` Fügen Sie dem Repository einen geheimen Schlüssel hinzu, der die PAT enthält, die Sie für den schreibgeschützten Organisationszugriff erstellt haben. Das Standardgeheimnis ist. `ORG_PAT`

1. Erstellen Sie eine Pull-Anfrage, die dem Anwendungs-Repository etwas Terraform oder CloudFormation Code hinzufügt. Checkov sollte scannen und ein Ergebnis zurückgeben.

# Implementieren Sie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung mit der Integration von K8SGPT und Amazon Bedrock
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration"></a>

*Ishwar Chauthaiwale, Muskan., und Prafful Gupta, Amazon Web Services*

## Zusammenfassung
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-summary"></a>

Dieses Muster zeigt, wie KI-gestützte Kubernetes-Diagnose und -Fehlerbehebung implementiert werden können, indem K8SGPT in das auf Amazon Bedrock verfügbare Anthropic Claude v2-Modell integriert wird. Die Lösung bietet mithilfe einer sicheren Bastion-Host-Architektur Analysen in natürlicher Sprache und Schritte zur Behebung von Problemen mit Kubernetes-Clustern. Durch die Kombination von K8SGPT Kubernetes-Expertise mit den erweiterten Sprachfunktionen von Amazon Bedrock können DevOps Teams Clusterprobleme schnell identifizieren und lösen. Mit diesen Funktionen ist es möglich, die mittlere Zeit bis zur Problemlösung (MTTR) um bis zu 50 Prozent zu reduzieren. 

Dieses cloudnative Muster nutzt Amazon Elastic Kubernetes Service (Amazon EKS) für das Kubernetes-Management. Das Muster implementiert bewährte Sicherheitsmethoden durch geeignete AWS Identity and Access Management (IAM-) Rollen und Netzwerkisolierung. Diese Lösung ist besonders wertvoll für Unternehmen, die ihren Kubernetes-Betrieb rationalisieren und ihre Fähigkeiten zur Fehlerbehebung mit KI-Unterstützung verbessern möchten.

## Voraussetzungen und Einschränkungen
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-prereqs"></a>

**Voraussetzungen**
+ Ein Aktiv mit entsprechenden Berechtigungen AWS-Konto 
+ AWS Command Line Interface (AWS CLI) [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Ein Amazon-EKS-Cluster
+ Zugriff auf das Modell Anthropic Claude 2 auf [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ Ein Bastion-Host mit den erforderlichen Sicherheitsgruppeneinstellungen
+ [K8SGPT ist installiert](https://docs.k8sgpt.ai/getting-started/installation/)

**Einschränkungen**
+ Die K8sGPT-Analyse ist durch die Größe des Kontextfensters des Claude v2-Modells begrenzt.
+ Amazon Bedrock API-Tariflimits gelten auf der Grundlage Ihrer Kontokontingente.
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ Amazon EKS [Version 1.31 oder höher](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ [Modell Claude 2](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) auf Amazon Bedrock
+ [k8SGPT v0.4.2 oder höher](https://github.com/k8sgpt-ai/k8sgpt/releases)

## Architektur
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-architecture"></a>

Das folgende Diagramm zeigt die Architektur für KI-gestützte Kubernetes-Diagnosen unter Verwendung von K8SGPT, das in Amazon Bedrock integriert ist. AWS Cloud

![\[Workflow für die Kubernetes-Diagnose mithilfe von K8SGPT, das in Amazon Bedrock integriert ist.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/09bc08f6-e191-4cef-b26b-dcb6225b15cc/images/8789891d-4a90-44b0-a108-387f6d96496b.png)


Die Architektur zeigt den folgenden Workflow:

1. Entwickler greifen über eine sichere Verbindung zum Bastion-Host auf die Umgebung zu. Diese EC2 Amazon-Instance dient als sicherer Einstiegspunkt und enthält die Installation der K8SGPT-Befehlszeilenschnittstelle (CLI) und die erforderlichen Konfigurationen.

1. Der mit bestimmten IAM-Rollen konfigurierte Bastion-Host stellt sichere Verbindungen sowohl zum Amazon EKS-Cluster als auch zu den Amazon Bedrock-Endpunkten her. K8SGPT ist auf dem Bastion-Host installiert und konfiguriert, um die Kubernetes-Clusteranalyse durchzuführen.

1. Amazon EKS verwaltet die Kubernetes-Steuerebene und die Worker-Knoten und stellt die Zielumgebung für die K8SGPT-Analyse bereit. Der Service läuft über mehrere Availability Zones innerhalb einer Virtual Private Cloud (VPC), was zu hoher Verfügbarkeit und Ausfallsicherheit beiträgt. Amazon EKS stellt Betriebsdaten über die Kubernetes-API bereit und ermöglicht so eine umfassende Clusteranalyse.

1. K8sgpt sendet Analysedaten an Amazon Bedrock, das das Claude v2 Foundation Model (FM) für die Verarbeitung natürlicher Sprache bereitstellt. Der Service verarbeitet die K8SGPT-Analyse, um für Menschen lesbare Erklärungen zu generieren, und bietet detaillierte Lösungsvorschläge auf der Grundlage der identifizierten Probleme. Amazon Bedrock arbeitet als serverloser KI-Service mit hoher Verfügbarkeit und Skalierbarkeit.

**Anmerkung**  
Während dieses Workflows steuert IAM den Zugriff zwischen Komponenten über Rollen und Richtlinien und verwaltet die Authentifizierung für die Interaktionen mit dem Bastion-Host, Amazon EKS und Amazon Bedrock. IAM implementiert das Prinzip der geringsten Rechte und ermöglicht eine sichere dienstübergreifende Kommunikation in der gesamten Architektur.

**Automatisierung und Skalierung**

K8sGPT-Operationen können mithilfe verschiedener AND-Tools automatisiert und auf mehrere Amazon EKS-Cluster skaliert werden. AWS-Services [Diese Lösung unterstützt die Integration von Continuous Integration und Continuous Deployment (CI/CD) mithilfe von [Jenkins](https://www.jenkins.io/), Actions oder für geplante Analysen. GitHub [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)](https://docs.github.com/en/actions/get-started/understand-github-actions) Der K8SGPT-Operator ermöglicht eine kontinuierliche Überwachung im Cluster mit automatisierten Funktionen zur Problemerkennung und Berichterstattung. Für Bereitstellungen auf Unternehmensebene können Sie [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) verwenden, um Scans EventBridge zu planen und automatische Antworten mit benutzerdefinierten Skripten auszulösen. AWS Die SDK-Integration ermöglicht die programmatische Steuerung einer großen Clusterflotte.

## Tools
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

**Andere Tools**
+ [k8SGPT](https://k8sgpt.ai/) ist ein KI-gestütztes Open-Source-Tool, das das Kubernetes-Management transformiert. Es fungiert als Experte für Virtual Site Reliability Engineering (SRE) und scannt, diagnostiziert und behebt automatisch Probleme mit Kubernetes-Clustern. Administratoren können mit K8SGPT in natürlicher Sprache interagieren und klare, umsetzbare Einblicke in den Clusterstatus, Pod-Abstürze und Dienstausfälle erhalten. Die integrierten Analysatoren des Tools erkennen eine Vielzahl von Problemen, von falsch konfigurierten Komponenten bis hin zu Ressourcenbeschränkungen, und bieten Erklärungen und Lösungen. easy-to-understand

## Best Practices
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-best-practices"></a>
+ Implementieren Sie sichere Zugriffskontrollen, indem Sie AWS Systems Manager Session Manager den Hostzugriff für [Bastion](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) verwenden.
+ Stellen Sie sicher, dass die K8SGPT-Authentifizierung dedizierte IAM-Rollen mit den geringsten Berechtigungen für Amazon Bedrock- und Amazon EKS-Interaktionen verwendet. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).
+ Konfigurieren Sie das [Ressourcen-Tagging](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html), aktivieren Sie die CloudWatch [Amazon-Protokollierung für Prüfpfade](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html) und implementieren Sie die [Datenanonymisierung](https://aws.amazon.com/solutions/guidance/data-anonymization-on-aws/) für vertrauliche Informationen. 
+ Sorgen Sie für regelmäßige Backups der K8SGPT-Konfigurationen und richten Sie automatische Scan-Zeitpläne außerhalb der Spitzenzeiten ein, um die Auswirkungen auf den Betrieb zu minimieren.

## Epen
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-epics"></a>

### Fügen Sie Amazon Bedrock zur Liste der KI-Backend-Anbieter hinzu.
<a name="add-br-to-ai-backend-provider-list"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie Amazon Bedrock als KI-Backend-Anbieter für K8SGPT ein. | Verwenden Sie den folgenden Befehl, um Amazon Bedrock als [KI-Backend-Anbieter](https://docs.k8sgpt.ai/reference/providers/backend/) r für k8SGPT festzulegen: AWS CLI <pre>k8sgpt auth add -b amazonbedrock \<br /> -r us-west-2 \<br /> -m anthropic.claude-v2 \<br /> -n endpoint-name <br /></pre>Der Beispielbefehl verwendet für die. `us-west-2` AWS-Region Sie können jedoch eine andere Region auswählen, vorausgesetzt, dass sowohl der Amazon EKS-Cluster als auch das entsprechende Amazon Bedrock-Modell in dieser ausgewählten Region verfügbar und aktiviert sind.Führen Sie den folgenden `amazonbedrock` Befehl aus, um zu überprüfen, ob dieser zur Liste der AI-Backend-Anbieter hinzugefügt wurde und sich im `Active` Status befindet:<pre>k8sgpt auth list</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>Default: <br />> openai<br />Active: <br />> amazonbedrock<br />Unused: <br />> openai<br />> localai<br />> ollama<br />> azureopenai<br />> cohere<br />> amazonsagemaker<br />> google<br />> noopai<br />> huggingface<br />> googlevertexai<br />> oci<br />> customrest<br />> ibmwatsonxai</pre> | AWS DevOps | 

### Ressourcen mithilfe eines Filters scannen
<a name="scan-resources-using-a-filter"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Sehen Sie sich eine Liste der verfügbaren Filter an. | Verwenden Sie den folgenden AWS CLI Befehl, um die Liste aller verfügbaren Filter anzuzeigen:<pre>k8sgpt filters list</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>Active: <br />> Deployment<br />> ReplicaSet<br />> PersistentVolumeClaim<br />> Service<br />> CronJob<br />> Node<br />> MutatingWebhookConfiguration<br />> Pod<br />> Ingress<br />> StatefulSet<br />> ValidatingWebhookConfiguration</pre> | AWS DevOps | 
| Scannen Sie einen Pod in einem bestimmten Namespace mithilfe eines Filters. | Dieser Befehl ist nützlich für das gezielte Debuggen bestimmter Pod-Probleme innerhalb eines Kubernetes-Clusters. Dabei werden die KI-Funktionen von Amazon Bedrock verwendet, um die gefundenen Probleme zu analysieren und zu erklären.Verwenden Sie den folgenden Befehl, um einen Pod in einem bestimmten Namespace mithilfe eines Filters zu scannen: AWS CLI <pre>k8sgpt analyze --backend amazonbedrock --explain --filter Pod -n default</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>100% |████████████████████████████████████████████████████████| (1/1, 645 it/s)        <br />AI Provider: amazonbedrock<br /><br />0: Pod default/crashme()<br />- Error: the last termination reason is Error container=crashme pod=crashme<br />Error: The pod named crashme terminated because the container named crashme crashed.<br />Solution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.</pre> | AWS DevOps | 
| Scannen Sie eine Bereitstellung in einem bestimmten Namespace mithilfe eines Filters. | Dieser Befehl ist nützlich, um bereitstellungsspezifische Probleme zu identifizieren und zu beheben, insbesondere wenn der tatsächliche Status nicht dem gewünschten Status entspricht.Verwenden Sie den folgenden Befehl, um eine Bereitstellung in einem bestimmten Namespace mithilfe eines Filters zu scannen: AWS CLI <pre>k8sgpt analyze --backend amazonbedrock --explain --filter Deployment -n default</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>100% |██████████████████████████████████████████████████████████| (1/1, 10 it/min)        <br />AI Provider: amazonbedrock<br /><br />0: Deployment default/nginx()<br />- Error: Deployment default/nginx has 1 replicas but 2 are available<br /> Error: The Deployment named nginx in the default namespace has 1 replica specified but 2 pod replicas are running.<br />Solution: Check if any other controllers like ReplicaSet or StatefulSet have created extra pods. Delete extra pods or adjust replica count to match available pods.</pre> | AWS DevOps | 
| Scannen Sie einen Knoten in einem bestimmten Namespace mithilfe eines Filters. | Verwenden Sie den folgenden AWS CLI Befehl, um einen Knoten in einem bestimmten Namespace mithilfe eines Filters zu scannen:<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Node -n default </pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> | AWS DevOps | 

### Analysieren Sie detaillierte Ergebnisse
<a name="analyze-detailed-outputs"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erhalten Sie detaillierte Ergebnisse. |  Verwenden Sie den folgenden AWS CLI Befehl, um detaillierte Ausgaben zu erhalten:<pre>k8sgpt analyze --backend amazonbedrock --explain --ouput json</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>{<br />  "provider": "amazonbedrock",<br />  "errors": null,<br />  "status": "ProblemDetected",<br />  "problems": 1,<br />  "results": [<br />    {<br />      "kind": "Pod",<br />      "name": "default/crashme",<br />      "error": [<br />        {<br />          "Text": "the last termination reason is Error container=crashme pod=crashme",<br />          "KubernetesDoc": "",<br />          "Sensitive": []<br />        }<br />      ],<br />      "details": " Error: The pod named crashme terminated because the container named crashme crashed.\nSolution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.",<br />      "parentObject": ""<br />    }<br />  ]<br />}</pre> | AWS DevOps | 
| Überprüfen Sie problematische Pods. | Verwenden Sie den folgenden AWS CLI Befehl, um nach bestimmten problematischen Pods zu suchen:<pre>kubectl get pods --all-namespaces | grep -v Running</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>NAMESPACE    NAME      READY    STATUS          RESTARTS      AGE                                       <br />default     crashme     0/1   CrashLoopBackOff   260(91s ago)   21h</pre> | AWS DevOps | 
| Erhalten Sie anwendungsspezifische Einblicke. | Dieser Befehl ist besonders nützlich, wenn:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.html)Verwenden Sie den folgenden Befehl, um anwendungsspezifische Einblicke zu erhalten:<pre>k8sgpt analyze --backend amazonbedrock --explain -L app=nginx -n default</pre>Im Folgenden finden Sie ein Beispiel für die erwartete Ausgabe dieses Befehls:<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> |  | 

## Zugehörige Ressourcen
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-resources"></a>

**AWS-Blogs**
+ [Automatisieren Sie die Amazon EKS-Fehlerbehebung mithilfe eines Agenten-Workflows von Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/automate-amazon-eks-troubleshooting-using-an-amazon-bedrock-agentic-workflow/)
+ [Verwenden Sie K8SGPT und Amazon Bedrock für eine vereinfachte Wartung von Kubernetes-Clustern](https://aws.amazon.com/blogs/machine-learning/use-k8sgpt-and-amazon-bedrock-for-simplified-kubernetes-cluster-maintenance/)

**AWS Dokumentation**
+ AWS CLI [Befehle: [create-cluster und describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/eks/create-cluster.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-cluster.html)
+ [Erste Schritte mit Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) (Amazon EKS-Dokumentation)
+ [Bewährte Sicherheitsmethoden in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (IAM-Dokumentation)

**Sonstige Ressourcen**
+ [K8SGPT](https://k8sgpt.ai/)

# Automatische Erkennung von Änderungen und Initiierung verschiedener CodePipeline Pipelines für ein Monorepo in CodeCommit
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit"></a>

*Helton Ribeiro, Petrus Batalha und Ricardo Morais, Amazon Web Services*

## Zusammenfassung
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-summary"></a>

**Hinweis**: AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Dieses Muster hilft Ihnen dabei, Änderungen am Quellcode einer Monorepo-basierten Anwendung automatisch zu erkennen AWS CodeCommit und dann eine Pipeline zu initiieren, in der die Continuous Integration and Continuous Delivery (CI/CD) automation for each microservice. This approach means that each microservice in your monorepo-based application can have a dedicated CI/CDPipeline) ausgeführt wird. Dadurch wird eine bessere Sichtbarkeit, einfachere gemeinsame Nutzung von Code und eine verbesserte Zusammenarbeit, Standardisierung und Auffindbarkeit gewährleistet. AWS CodePipeline 

Die in diesem Muster beschriebene Lösung führt keine Abhängigkeitsanalyse zwischen den Microservices im Monorepo durch. Sie erkennt nur Änderungen im Quellcode und initiiert die passende Pipeline. CI/CD 

Das Muster dient AWS Cloud9 als integrierte Entwicklungsumgebung (IDE) und AWS Cloud Development Kit (AWS CDK) zur Definition einer Infrastruktur mithilfe von zwei CloudFormation Stacks: `MonoRepoStack` und. `PipelinesStack` Der `MonoRepoStack` Stack erstellt das Monorepo in AWS CodeCommit und die AWS Lambda Funktion, die die Pipelines initiiert. CI/CD Der `PipelinesStack` Stack definiert Ihre Pipeline-Infrastruktur.

**Wichtig**  
Der Workflow dieses Musters ist ein Machbarkeitsnachweis (PoC). Wir empfehlen, es nur in einer Testumgebung zu verwenden. Wenn Sie den Ansatz dieses Musters in einer Produktionsumgebung verwenden möchten, finden Sie in der AWS Identity and Access Management ([IAM-) Dokumentation unter Bewährte Sicherheitsmethoden](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) in IAM weitere Informationen und nehmen Sie die erforderlichen Änderungen an Ihren IAM-Rollen und vor. AWS-Services 

## Voraussetzungen und Einschränkungen
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Konto. AWS 
+ AWS Command Line Interface (AWS CLI), installiert und konfiguriert. Weitere Informationen finden Sie AWS CLI in der AWS CLI Dokumentation unter [Installation, Aktualisierung und Deinstallation von](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).  
+ Python 3 und`pip`, auf Ihrem lokalen Computer installiert. Weitere Informationen finden Sie in der [Python-Dokumentation](https://www.python.org/). 
+ AWS CDK, installiert und konfiguriert. Weitere Informationen finden Sie AWS CDK in [der AWS CDK Dokumentation unter Erste Schritte mit](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) dem. 
+ Eine AWS Cloud9 IDE, installiert und konfiguriert. Weitere Informationen finden Sie AWS Cloud9 in der AWS Cloud9 Dokumentation unter [Einrichtung](https://docs.aws.amazon.com/cloud9/latest/user-guide/setting-up.html). 
+ Die GitHub [AWS CodeCommit Monorepo-Multi-Pipeline löst ein Repository aus](https://github.com/aws-samples/monorepo-multi-pipeline-trigger), das auf Ihrem lokalen Computer geklont wurde. 
+ Ein vorhandenes Verzeichnis, das Anwendungscode enthält, mit dem Sie ihn erstellen und bereitstellen möchten. CodePipeline
+ Vertrautheit und Erfahrung mit DevOps bewährten Methoden auf dem AWS Cloud. Um sich besser damit vertraut zu machen DevOps, können Sie das Muster [Build a loose coupled architecture with microservices using DevOps practices und AWS Cloud9](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-loosely-coupled-architecture-with-microservices-using-devops-practices-and-aws-cloud9.html) auf der Prescriptive Guidance-Website verwenden. AWS  

## Architektur
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-architecture"></a>

Das folgende Diagramm zeigt, wie Sie mithilfe von eine Infrastruktur mit zwei AWS CDK Stacks definieren können: und. AWS CloudFormation `MonoRepoStack` `PipelinesStack`

![\[Workflow zur Verwendung des AWS-CDK zur Definition einer Infrastruktur mit zwei CloudFormation Stacks.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a3397158-a208-4033-844e-969af13ae8b6/images/b0bb1094-b598-4b3d-ab8b-ad9b0eb45f38.png)


Das Diagramm zeigt den folgenden Workflow:

1. Der Bootstrap-Prozess verwendet die, AWS CDK um die Stacks zu erstellen und. AWS CloudFormation `MonoRepoStack` `PipelinesStack`

1. Der `MonoRepoStack` Stack erstellt das CodeCommit Repository für Ihre Anwendung und die `monorepo-event-handler` Lambda-Funktion, die nach jedem Commit initiiert wird.

1. Der `PipelinesStack` Stack erstellt die Pipelines CodePipeline , die von der Lambda-Funktion initiiert werden. Jeder Microservice muss über eine definierte Infrastrukturpipeline verfügen.

1. Die Pipeline für `microservice-n` wird von der Lambda-Funktion initiiert und startet ihre isolierten CI/CD Phasen, die auf dem Quellcode in CodeCommit basieren.

1. Die Pipeline für `microservice-1` wird von der Lambda-Funktion initiiert und startet ihre isolierten CI/CD Phasen, die auf dem Quellcode in CodeCommit basieren.

Das folgende Diagramm zeigt die Bereitstellung der AWS CloudFormation Stacks `MonoRepoStack` und `PipelinesStack` in einem Konto.

![\[Bereitstellung der CloudFormation Stacks MonoRepoStack und PipelinesStack in einem AWS-Konto.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a3397158-a208-4033-844e-969af13ae8b6/images/39e60e49-dea2-486d-8a2c-6cae438f69b4.png)


1. Ein Benutzer ändert den Code in einem der Microservices der Anwendung.

1. Der Benutzer überträgt die Änderungen von einem lokalen Repository in ein CodeCommit Repository.

1. Die Push-Aktivität initiiert die Lambda-Funktion, die alle Pushs an das Repository empfängt. CodeCommit 

1. Die Lambda-Funktion liest einen Parameter im Parameter Store, eine Fähigkeit von AWS Systems Manager, um die neueste Commit-ID abzurufen. Der Parameter hat das Benennungsformat:`/MonoRepoTrigger/{repository}/{branch_name}/LastCommit`. Wenn der Parameter nicht gefunden wird, liest die Lambda-Funktion die letzte Commit-ID aus dem CodeCommit Repository und speichert den zurückgegebenen Wert im Parameter Store.

1. Nach der Identifizierung der Commit-ID und der geänderten Dateien identifiziert die Lambda-Funktion die Pipelines für jedes Microservice-Verzeichnis und initiiert die erforderliche Pipeline. CodePipeline 

## Tools
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Framework für die Softwareentwicklung, mit dem Cloud-Infrastruktur im Code definiert und bereitgestellt werden kann. CloudFormation
+ [Python](https://www.python.org/) ist eine Programmiersprache, mit der Sie schnell arbeiten und Systeme effektiver integrieren können.

**Code**

Der Quellcode und die Vorlagen für dieses Muster sind im GitHub [AWS CodeCommit Monorepo Multi-Pipeline-Trigger-Repository](https://github.com/aws-samples/monorepo-multi-pipeline-trigger) verfügbar.

## Best Practices
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-best-practices"></a>
+ Diese Beispielarchitektur beinhaltet keine Überwachungslösung für die bereitgestellte Infrastruktur. Wenn Sie diese Lösung in einer Produktionsumgebung einsetzen möchten, empfehlen wir Ihnen, die Überwachung zu aktivieren. Weitere Informationen finden Sie unter [Überwachen Ihrer serverlosen Anwendungen mit CloudWatch Application Insights](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/monitor-app-insights.html) in der Dokumentation AWS Serverless Application Model (AWS SAM).
+ Wenn Sie den in diesem Muster enthaltenen Beispielcode bearbeiten, befolgen Sie die [bewährten Methoden für die Entwicklung und Bereitstellung der Cloud-Infrastruktur](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) in der AWS CDK Dokumentation.
+ Lesen Sie bei der Definition Ihrer Microservice-Pipelines die [bewährten Sicherheitsmethoden](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-best-practices.html) in der AWS CodePipeline Dokumentation.
+ Sie können Ihren AWS CDK Code auch mithilfe des Dienstprogramms [cdk-nag](https://github.com/cdklabs/cdk-nag) auf bewährte Methoden überprüfen. Dieses Tool verwendet eine Reihe von Regeln, die nach Paketen gruppiert sind, um Ihren Code auszuwerten. Die verfügbaren Pakete sind:
  + [AWS Lösungsbibliothek](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#awssolutions)
  + [Sicherheit nach dem Gesetz über die Portabilität und Rechenschaftspflicht von Krankenversicherungen (HIPAA)](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#hipaa-security)
  + [Nationales Institut für Standards und Technologie (NIST) 800-53 Rev. 4](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#nist-800-53-rev-4)
  + [NIST 800-53 Rev. 5](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#nist-800-53-rev-5)
  + [Datensicherheitsstandard der Zahlungskartenindustrie (PCI DSS) 3.2.1](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#pci-dss-321)

## Epen
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-epics"></a>

### Richte die Umgebung ein
<a name="set-up-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine virtuelle Python-Umgebung. | Erstellen Sie in Ihrer AWS Cloud9 IDE eine virtuelle Python-Umgebung und installieren Sie die erforderlichen Abhängigkeiten, indem Sie den folgenden Befehl ausführen:`make install` | Developer | 
| Bootstrap das AWS-Konto und AWS-Region für das AWS CDK. | Führen Sie das Bootstrapping für die erforderlichen AWS-Konto Daten und die Region durch, indem Sie den folgenden Befehl ausführen:`make bootstrap account-id=<your-AWS-account-ID> region=<required-region>` | Developer | 

### Fügen Sie eine neue Pipeline für einen Microservice hinzu
<a name="add-a-new-pipeline-for-a-microservice"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Fügen Sie Ihren Beispielcode zu Ihrem Anwendungsverzeichnis hinzu. | Fügen Sie das Verzeichnis, das Ihren Beispielanwendungscode enthält, dem `monorepo-sample` Verzeichnis im GitHub [AWS CodeCommit geklonten Monorepo Multi-Pipeline-Trigger-Repository](https://github.com/aws-samples/monorepo-multi-pipeline-trigger) hinzu. | Developer | 
| Bearbeiten Sie die `monorepo-main.json`-Datei. | Fügen Sie den Verzeichnisnamen des Codes Ihrer Anwendung und den Namen der Pipeline zur `monorepo-main.json` Datei im geklonten Repository hinzu. | Developer | 
| Erstellen Sie die Pipeline. | Fügen Sie im `Pipelines` Verzeichnis für das Repository die Pipeline `class` für Ihre Anwendung hinzu. Das Verzeichnis enthält zwei Beispieldateien `pipeline_hotsite.py` und`pipeline_demo.py`. Jede Datei besteht aus drei Phasen: Quelle, Erstellung und Bereitstellung.Sie können eine der Dateien kopieren und entsprechend den Anforderungen Ihrer Anwendung Änderungen daran vornehmen.  | Developer | 
| Bearbeiten Sie die `monorepo_config.py`-Datei. | Fügen Sie `service_map` unter den Verzeichnisnamen für Ihre Anwendung und die Klasse hinzu, die Sie für die Pipeline erstellt haben.Der folgende Code zeigt beispielsweise eine Pipeline-Definition in dem `Pipelines` Verzeichnis, die eine `pipeline_mysample.py` mit einer `MySamplePipeline` Klasse benannte Datei verwendet:<pre>...<br /># Pipeline definition imports<br />from pipelines.pipeline_demo import DemoPipeline<br />from pipelines.pipeline_hotsite import HotsitePipeline<br />from pipelines.pipeline_mysample import MySamplePipeline<br /><br />### Add your pipeline configuration here<br />service_map: Dict[str, ServicePipeline]  = {<br />    # folder-name -> pipeline-class<br />    'demo': DemoPipeline(),<br />    'hotsite': HotsitePipeline(),<br />    'mysample': MySamplePipeline()<br />}</pre> | Developer | 

### Stellen Sie den MonoRepoStack Stack bereit
<a name="deploy-the-monorepostack-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den AWS CloudFormation Stack bereit. | Stellen Sie den AWS CloudFormation `MonoRepoStack` Stack mit Standardparameterwerten im Stammverzeichnis des geklonten Repositorys bereit, indem `make deploy-core` Sie den Befehl ausführen.Sie können den Namen des Repositorys ändern, indem Sie den `make deploy-core monorepo-name=<repo_name>` Befehl ausführen.Mit dem `make deploy monorepo-name=<repo_name>` Befehl können Sie beide Pipelines gleichzeitig bereitstellen. | Developer | 
| Überprüfen Sie das CodeCommit Repository. | Stellen Sie sicher, dass Ihre Ressourcen erstellt wurden, indem `aws codecommit get-repository --repository-name <repo_name>` Sie den Befehl ausführen. Da der CloudFormation Stack das CodeCommit Repository erstellt, in dem das Monorepo gespeichert ist, führen Sie den `cdk destroy MonoRepoStack ` Befehl nicht aus, wenn Sie damit begonnen haben, Änderungen in ihn zu übertragen. | Developer | 
| Überprüfen Sie die CloudFormation Stack-Ergebnisse. | Stellen Sie sicher, dass der CloudFormation `MonoRepoStack` Stack korrekt erstellt und konfiguriert wurde, indem Sie den folgenden Befehl ausführen:<pre>aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE --query 'StackSummaries[?StackName == 'MonoRepoStack']'</pre> | Developer | 

### Stellen Sie den PipelinesStack Stack bereit
<a name="deploy-the-pipelinesstack-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den CloudFormation Stack bereit. | Der AWS CloudFormation `PipelinesStack` Stack muss bereitgestellt werden, nachdem Sie den `MonoRepoStack` Stack bereitgestellt haben. Der Stack nimmt an Größe zu, wenn der Codebasis des Monorepo neue Microservices hinzugefügt werden, und er wird erneut bereitgestellt, wenn ein neuer Microservice hinzugefügt wird.Stellen Sie den Stack bereit, indem Sie den Befehl ausführen. PipelinesStack `make deploy-pipelines`Sie können auch beide Pipelines gleichzeitig bereitstellen und bereitstellen, indem Sie den `make deploy monorepo-name=<repo_name>` Befehl ausführen.Die folgende Beispielausgabe zeigt, wie die `PipelinesStacks` Bereitstellung die URLs für die Microservices am Ende der Implementierung ausgibt:<pre>Outputs:<br />PipelinesStack.demourl = .cloudfront.net<br />PipelinesStack.hotsiteurl = .cloudfront.net</pre> | Developer | 
| Überprüfen Sie die AWS CloudFormation Stack-Ergebnisse. | Stellen Sie sicher, dass der AWS CloudFormation `PipelinesStacks` Stack korrekt erstellt und konfiguriert wurde, indem Sie den folgenden Befehl ausführen:<pre>aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE --query 'StackSummaries[?StackName == 'PipelinesStack']'</pre> | Developer | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Lösche deine AWS CloudFormation Stapel. | Führen Sie den Befehl `make destroy` aus. | Developer | 
| Löschen Sie die S3-Buckets für Ihre Pipelines. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | Developer | 

## Fehlerbehebung
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Ich bin auf Probleme gestoßen AWS CDK . | Weitere Informationen finden Sie in der AWS CDK-Dokumentation unter [Behebung häufiger AWS CDK Probleme](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 
| Ich habe meinen Microservice-Code übertragen, aber die Microservice-Pipeline lief nicht. | **Überprüfung des Setups***Überprüfen Sie die Zweigkonfiguration:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)*Überprüfen Sie die Konfigurationsdateien:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)**Problembehandlung auf der Konsole***AWS CodePipeline prüft:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)*AWS Lambda Problembehebung:*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | 
| Ich muss alle meine Microservices erneut bereitstellen.  | Es gibt zwei Ansätze, um die Umverteilung aller Microservices zu erzwingen. Wählen Sie die Option, die Ihren Anforderungen entspricht.**Ansatz 1: Löschen Sie einen Parameter im Parameterspeicher**Bei dieser Methode wird ein bestimmter Parameter im Systems Manager Parameter Store gelöscht, der die letzte für die Bereitstellung verwendete Commit-ID verfolgt. Wenn Sie diesen Parameter entfernen, ist das System gezwungen, alle Microservices beim nächsten Trigger erneut bereitzustellen, da es diesen als neuen Zustand wahrnimmt.Schritte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Vorteile:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Nachteile:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)**Ansatz 2: Push einen Commit in jeden Monorepo-Unterordner**Bei dieser Methode wird eine geringfügige Änderung vorgenommen und diese in jeden Microservice-Unterordner innerhalb des Monorepos verschoben, um die einzelnen Pipelines zu initiieren.Schritte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Vorteile:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Nachteile:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | 

## Zugehörige Ressourcen
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-resources"></a>
+ [Kontinuierliche Integration und Bereitstellung (CI/CD) mithilfe von CDK Pipelines](https://docs.aws.amazon.com/cdk/latest/guide/cdk_pipeline.html) (Dokumentation)AWS CDK 
+ [aws-cdk/pipelines-Modul](https://docs.aws.amazon.com/cdk/api/latest/docs/pipelines-readme.html) (API-Referenz)AWS CDK 

# Integrieren Sie mithilfe von AWS ein Bitbucket-Repository mit AWS Amplify CloudFormation
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation"></a>

*Alwin Abraham, Amazon Web Services*

## Zusammenfassung
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-summary"></a>

Mit AWS Amplify können Sie statische Websites schnell bereitstellen und testen, ohne die normalerweise erforderliche Infrastruktur einrichten zu müssen. Sie können den Ansatz dieses Musters verwenden, wenn Ihr Unternehmen Bitbucket für die Quellcodeverwaltung verwenden möchte, sei es, um vorhandenen Anwendungscode zu migrieren oder eine neue Anwendung zu erstellen. Indem Sie AWS CloudFormation zur automatischen Einrichtung von Amplify verwenden, bieten Sie Einblick in die von Ihnen verwendeten Konfigurationen.

Dieses Muster beschreibt, wie Sie mithilfe von AWS eine Pipeline und Bereitstellungsumgebung für Continuous Integration and Continuous Deployment (CI/CD) im Front-End einrichten, CloudFormation um ein Bitbucket-Repository mit AWS Amplify zu integrieren. Der Ansatz des Musters bedeutet, dass Sie eine Amplify-Frontend-Pipeline für wiederholbare Bereitstellungen erstellen können.

## Voraussetzungen und Einschränkungen
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-prereqs"></a>

**Voraussetzungen******
+ Ein aktives Amazon Web Services (AWS) -Konto
+ Ein aktives Bitbucket-Konto mit Administratorzugriff
+ Zugriff auf ein Terminal, das [cURL](https://curl.se/) oder die [Postman-Anwendung](https://www.postman.com/) verwendet
+ Vertrautheit mit Amplify
+ Vertrautheit mit AWS CloudFormation
+ Vertrautheit mit Dateien im YAML-Format

## Architektur
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-architecture"></a>

![\[Diagram showing user interaction with Bitbucket repository connected to AWS Amplify in AWS Cloud region.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b/images/25d73a9d-d2ae-40bc-9ebc-57f9bd13884a.png)


**Technologie-Stack**
+ Amplify
+ AWS CloudFormation
+ Bitbucket

## Tools
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-tools"></a>
+ [AWS Amplify](https://docs.aws.amazon.com/amplify/) — Amplify unterstützt Entwickler bei der Entwicklung und Bereitstellung cloudgestützter Mobil- und Web-Apps.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation ist ein Service, der Sie bei der Modellierung und Einrichtung Ihrer AWS-Ressourcen unterstützt, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können, die in AWS ausgeführt werden.
+ [Bitbucket](https://bitbucket.org/) — Bitbucket ist eine Git-Repository-Management-Lösung, die für professionelle Teams entwickelt wurde. Es bietet dir einen zentralen Ort, um Git-Repositorys zu verwalten, gemeinsam an deinem Quellcode zu arbeiten und dich durch den Entwicklungsablauf zu führen.

 

**Code**

Die `bitbucket-amplify.yml` Datei (angehängt) enthält die CloudFormation AWS-Vorlage für dieses Muster.

## Epen
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-epics"></a>

### Konfiguriere das Bitbucket-Repository
<a name="configure-the-bitbucket-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| (Optional) Erstelle ein Bitbucket-Repository.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)Du kannst auch ein vorhandenes Bitbucket-Repository verwenden. | DevOps Ingenieur | 
| Öffnen Sie die Workspace-Einstellungen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html) | DevOps Ingenieur | 
| Schaffen Sie einen OAuth Verbraucher. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html) | DevOps Ingenieur | 
| Besorgen Sie sich ein OAuth Zugriffstoken  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)`curl -X POST -u "KEY:SECRET" https://bitbucket.org/site/oauth2/access_token -d grant_type=client_credentials `Ersetzen Sie `KEY` und `SECRET` durch den Schlüssel und das Geheimnis, die Sie zuvor aufgezeichnet haben. 2. Notieren Sie das Zugriffstoken ohne die Anführungszeichen. Das Token ist nur für eine begrenzte Zeit gültig und die Standardzeit beträgt zwei Stunden. Sie müssen die CloudFormation AWS-Vorlage in diesem Zeitraum ausführen. | DevOps Ingenieur | 

### CloudFormation AWS-Stack erstellen und bereitstellen
<a name="create-and-deploy-the-aws-cloudformation-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  Laden Sie die CloudFormation AWS-Vorlage herunter. | Laden Sie die `bitbucket-amplify.yml` CloudFormation AWS-Vorlage herunter (im Anhang). Diese Vorlage erstellt zusätzlich zum Amplify-Projekt und dem Amplify-Zweig die CI/CD Pipeline in Amplify. |  | 
| Erstellen und implementieren Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)5. Wählen Sie **Weiter** und dann **Stapel erstellen**. | DevOps Ingenieur | 

### Testen Sie die CI/CD Pipeline
<a name="test-the-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den Code für den Branch in Ihrem Repository bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)Weitere Informationen dazu findest du unter [Grundlegende Git-Befehle](https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html) in der Bitbucket-Dokumentation.  | App-Developer | 

## Zugehörige Ressourcen
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-resources"></a>

[Authentifizierungsmethoden](https://developer.atlassian.com/bitbucket/api/2/reference/meta/authentication) (Atlassian-Dokumentation)

## Anlagen
<a name="attachments-24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacke die folgende Datei: attachment.zip](samples/p-attach/24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b/attachments/attachment.zip)

# Starten Sie mithilfe von Step Functions und einer Lambda-Proxyfunktion ein CodeBuild Projekt für alle AWS-Konten
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function"></a>

*Richard Milner-Watts und Amit Anjarlekar, Amazon Web Services*

## Zusammenfassung
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-summary"></a>

Dieses Muster zeigt, wie ein CodeBuild AWS-Projekt mithilfe von AWS AWS Step Functions und einer AWS Lambda-Proxyfunktion asynchron über mehrere AWS-Konten hinweg gestartet wird. Sie können die Step Functions-Beispielstatusmaschine des Musters verwenden, um den Erfolg Ihres CodeBuild Projekts zu testen.

CodeBuild hilft Ihnen dabei, betriebliche Aufgaben mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) in einer vollständig verwalteten Laufzeitumgebung zu starten. Sie können das Verhalten Ihres CodeBuild Projekts zur Laufzeit ändern, indem Sie Umgebungsvariablen überschreiben. Darüber hinaus können Sie es CodeBuild zur Verwaltung von Workflows verwenden. Weitere Informationen finden Sie unter [Service Catalog Tools](https://service-catalog-tools-workshop.com/tools.html) auf der AWS Workshop-Website und [Schedule jobs in Amazon RDS for PostgreSQL using AWS CodeBuild and EventBridge Amazon](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/) im AWS Database Blog.

## Voraussetzungen und Einschränkungen
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**Voraussetzungen**
+ Zwei aktive AWS-Konten: ein Quellkonto zum Aufrufen einer Lambda-Proxyfunktion mit Step Functions und ein Zielkonto zum Erstellen eines Remote-Beispielprojekts CodeBuild 

**Einschränkungen**
+ Dieses Muster kann nicht verwendet werden, um [Artefakte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) zwischen Konten zu kopieren.

## Architektur
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-architecture"></a>

Das folgende Diagramm zeigt die Architektur, die dieses Muster aufbaut.

![\[Architekturdiagramm des Starts eines CodeBuild Projekts über mehrere AWS-Konten\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


Das Diagramm zeigt den folgenden Workflow:

1. Die Step Functions Functions-Zustandsmaschine analysiert die bereitgestellte Eingabemap und ruft die Lambda-Proxyfunktion (`codebuild-proxy-lambda`) für jedes Konto, jede Region und jedes Projekt auf, das Sie definiert haben.

1. Die Lambda-Proxyfunktion verwendet AWS Security Token Service (AWS STS), um eine IAM-Proxyrolle (`codebuild-proxy-role`) anzunehmen, die mit einer IAM-Richtlinie (`codebuild-proxy-policy`) im Zielkonto verknüpft ist.

1. Unter Verwendung der angenommenen Rolle startet die Lambda-Funktion das CodeBuild Projekt und gibt die CodeBuild Job-ID zurück. Die Step Functions Functions-Zustandsmaschine wiederholt den CodeBuild Job und fragt ihn ab, bis er einen Erfolgs- oder Fehlerstatus erhält.

Die Logik der Zustandsmaschine ist in der folgenden Abbildung dargestellt.

![\[Arbeitsablauf von Step Functions State Machine\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Technologie-Stack**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Tools
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
+ [AWS CloudFormation Designer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) bietet einen integrierten JSON- und YAML-Editor, mit dem Sie CloudFormation Vorlagen anzeigen und bearbeiten können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, mit dem Sie Quellcode kompilieren, Komponententests ausführen und bereitstellungsbereite Artefakte erstellen können.
+ Mit [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) können Sie den Zugriff auf Ihre AWS-Ressourcen sicher verwalten, indem Sie kontrollieren, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Lambda-Funktionen und andere AWS-Services kombinieren können, um geschäftskritische Anwendungen zu erstellen.
+ [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) hilft Ihnen dabei, Daten über die Anfragen zu sammeln, die Ihre Anwendung bedient, und bietet Tools, mit denen Sie diese Daten anzeigen, filtern und Einblicke in sie gewinnen können, um Probleme und Optimierungsmöglichkeiten zu identifizieren.

**Code**

Der Beispielcode für dieses Muster ist im GitHub [Cross Account CodeBuild Proxy](https://github.com/aws-samples/cross-account-codebuild-proxy) Repository verfügbar. Dieses Muster verwendet die Bibliothek AWS Lambda Powertools for Python, um Protokollierungs- und Ablaufverfolgungsfunktionen bereitzustellen. Weitere Informationen zu dieser Bibliothek und ihren Dienstprogrammen finden Sie unter [Powertools for AWS Lambda (Python)](https://docs.powertools.aws.dev/lambda/python/latest/).

## Best Practices
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-best-practices"></a>

1. Passen Sie die Wartezeitwerte in der Step Function-Zustandsmaschine an, um die Anzahl der Abfragen für den Jobstatus zu minimieren. Verwenden Sie die erwartete Ausführungszeit für das CodeBuild Projekt.

1. Passen Sie die `MaxConcurrency` Eigenschaft der Map in Step Functions an, um zu steuern, wie viele CodeBuild Projekte parallel ausgeführt werden können.

1. Prüfen Sie bei Bedarf den Beispielcode auf Produktionsreife. Überlegen Sie, welche Daten von der Lösung protokolliert werden könnten und ob die standardmäßige CloudWatch Amazon-Verschlüsselung ausreichend ist.

## Epen
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-epics"></a>

### Erstellen Sie die Lambda-Proxyfunktion und die zugehörige IAM-Rolle im Quellkonto
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erfassen Sie das AWS-Konto IDs. | AWS AWS-Konto IDs ist erforderlich, um den kontenübergreifenden Zugriff einzurichten.Notieren Sie sich die AWS-Konto-ID für Ihre Quell- und Zielkonten. Weitere Informationen [finden Sie in der IAM-Dokumentation unter Finden Ihrer AWS-Konto-ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId). | AWS DevOps | 
| Laden Sie die CloudFormation AWS-Vorlagen herunter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)In den CloudFormation AWS-Vorlagen `<SourceAccountId>` ist dies die AWS-Konto-ID für das Quellkonto und `<TargetAccountId>` die AWS-Konto-ID für das Zielkonto. | AWS DevOps | 
| Erstellen und implementieren Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Sie müssen den CloudFormation AWS-Stack für die Proxy-Lambda-Funktion erstellen, bevor Sie Ressourcen in Zielkonten erstellen. Wenn Sie eine Vertrauensrichtlinie in einem Zielkonto erstellen, wird die IAM-Rolle vom Rollennamen in eine interne Kennung übersetzt. Aus diesem Grund muss die IAM-Rolle bereits existieren. | AWS DevOps | 
| Bestätigen Sie die Erstellung der Proxyfunktion und der State-Machine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Erstellen Sie eine IAM-Rolle im Zielkonto und starten Sie ein Beispielprojekt CodeBuild
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen und implementieren Sie den CloudFormation AWS-Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Überprüfen Sie die Erstellung des CodeBuild Beispielprojekts.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Testen Sie die kontoübergreifende Lambda-Proxyfunktion
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie die Zustandsmaschine. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Validieren Sie die Umgebungsvariablen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## Fehlerbehebung
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Ausführung von Step Functions dauert länger als erwartet. | Passen Sie die `MaxConcurrency` Eigenschaft der Map in der Step Function-Zustandsmaschine an, um zu steuern, wie viele CodeBuild Projekte parallel ausgeführt werden können. | 
| Die Ausführung der CodeBuild Jobs dauert länger als erwartet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 

# Multi-AZ-Failover für EMR-Cluster mithilfe von Application Recovery Controller verwalten
<a name="multi-az-failover-spark-emr-clusters-arc"></a>

*Aarti Rajput, Ashish Bhatt, Neeti Mishra und Nidhi Sharma, Amazon Web Services*

## Zusammenfassung
<a name="multi-az-failover-spark-emr-clusters-arc-summary"></a>

Dieses Muster bietet eine effiziente Notfallwiederherstellungsstrategie für Amazon EMR-Workloads, um eine hohe Verfügbarkeit und Datenkonsistenz in mehreren Availability Zones innerhalb einer einzigen sicherzustellen. AWS-Region Das Design verwendet [Amazon Application Recovery Controller und einen Application](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) [Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html), um Failover-Operationen und die Verkehrsverteilung für einen Apache Spark-basierten EMR-Cluster zu verwalten. 

Unter Standardbedingungen hostet die primäre Availability Zone einen aktiven EMR-Cluster und eine Anwendung mit vollem read/write Funktionsumfang. Wenn eine Availability Zone unerwartet ausfällt, wird der Datenverkehr automatisch zur sekundären Availability Zone umgeleitet, wo ein neuer EMR-Cluster gestartet wird. Beide Availability Zones greifen über spezielle [Gateway-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) auf einen gemeinsamen Amazon Simple Storage Service (Amazon S3) -Bucket zu, wodurch eine konsistente Datenverwaltung gewährleistet wird. Dieser Ansatz minimiert Ausfallzeiten und ermöglicht eine schnelle Wiederherstellung kritischer Big-Data-Workloads bei Ausfällen in der Availability Zone. Die Lösung ist in Branchen wie dem Finanzwesen oder dem Einzelhandel nützlich, in denen Echtzeitanalysen von entscheidender Bedeutung sind.

## Voraussetzungen und Einschränkungen
<a name="multi-az-failover-spark-emr-clusters-arc-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver [AWS-Konto](https://aws.amazon.com/resources/create-account/)
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) auf Amazon Elastic Compute Cloud (Amazon EC2)
+ Zugriff vom Master-Knoten des EMR-Clusters auf Amazon S3.
+ AWS Multi-AZ-Infrastruktur

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ [Amazon EMR 6.x und spätere Versionen](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)

## Architektur
<a name="multi-az-failover-spark-emr-clusters-arc-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon EMR-Cluster
+ Amazon Application Recovery Controller
+ Application Load Balancer
+ Amazon-S3-Bucket
+ Gateway-Endpunkte für Amazon S3

**Zielarchitektur**

![\[Architektur für einen automatisierten Wiederherstellungsmechanismus mit Application Recovery Controller.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e5ecdb66-0eef-4a6a-8367-982a55104748/images/e982d580-13db-4bdd-9f6b-6400d7c31c01.png)


Diese Architektur bietet Ausfallsicherheit für Anwendungen, indem sie mehrere Availability Zones verwendet und einen automatisierten Wiederherstellungsmechanismus über den Application Recovery Controller implementiert.

1. Der Application Load Balancer leitet den Datenverkehr an die aktive Amazon EMR-Umgebung weiter, bei der es sich in der Regel um den primären EMR-Cluster in der primären Availability Zone handelt.

1. Der aktive EMR-Cluster verarbeitet die Anwendungsanfragen und stellt über seinen speziellen Amazon S3-Gateway-Endpunkt für Lese- und Schreibvorgänge eine Verbindung zu Amazon S3 her.

1. Amazon S3 dient als zentrales Datenrepository und wird möglicherweise als Checkpoint oder als gemeinsam genutzter Speicher zwischen EMR-Clustern verwendet. EMR-Cluster behalten die Datenkonsistenz bei, wenn sie über `s3://` das Protokoll und das [EMR-Dateisystem (EMRFS](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs.html)) direkt in Amazon S3 schreiben. 

1. Application Recovery Controller überwacht kontinuierlich den Zustand der primären Availability Zone und verwaltet bei Bedarf automatisch Failover-Operationen.

1. Wenn der Application Recovery Controller einen Fehler im primären EMR-Cluster feststellt, ergreift er die folgenden Aktionen:
   + Initiiert den Failover-Prozess für den sekundären EMR-Cluster in Availability Zone 2.
   + Aktualisiert die Routingkonfigurationen, um den Verkehr zum sekundären Cluster weiterzuleiten.

## Tools
<a name="multi-az-failover-spark-emr-clusters-arc-tools"></a>

**AWS-Services**
+ [Amazon Application Recovery Controller****](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) unterstützt Sie bei der Verwaltung und Koordination der Wiederherstellung Ihrer Anwendungen in allen AWS-Regionen Availability Zones. Dieser Service vereinfacht den Prozess und verbessert die Zuverlässigkeit der Anwendungswiederherstellung, indem er die manuellen Schritte reduziert, die bei herkömmlichen Tools und Prozessen erforderlich sind.
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) arbeitet auf der Anwendungsebene, der siebten Schicht des Open Systems Interconnection (OSI) -Modells. Er verteilt den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. EC2 Instanzen, in mehreren Availability Zones. Dies erhöht die Verfügbarkeit Ihrer Anwendung.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) ist eine Big-Data-Plattform, die Datenverarbeitung, interaktive Analyse und maschinelles Lernen für Open-Source-Frameworks wie Apache Spark, Apache Hive und Presto bietet.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) bietet eine einfache Webservice-Schnittstelle, mit der Sie beliebige Datenmengen zu jeder Zeit und von überall speichern und abrufen können. Mit diesem Service können Sie ganz einfach Anwendungen erstellen, die Cloud-nativen Speicher nutzen.
+ [Gateway-Endpunkte für Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) sind Gateways, die Sie in Ihrer Routing-Tabelle angeben, um von Ihrer Virtual Private Cloud (VPC) aus über das Netzwerk auf Amazon S3 zuzugreifen. AWS 

## Best Practices
<a name="multi-az-failover-spark-emr-clusters-arc-best-practices"></a>
+ Folgen Sie den [AWS Best Practices für Sicherheit, Identität und Compliance,](https://aws.amazon.com/architecture/security-identity-compliance/?cards-all.sort-by=%5b…%5d.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all) um eine robuste und sichere Architektur zu gewährleisten.
+ Richten Sie die Architektur auf das [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) aus.
+ Verwenden Sie Amazon S3 Access Grants, um den Zugriff von Ihrem Spark-basierten EMR-Cluster auf Amazon S3 zu verwalten. Einzelheiten finden Sie im Blogbeitrag [Use Amazon EMR with S3 Access Grants to Scale Spark access to Amazon S3](https://aws.amazon.com/blogs/big-data/use-amazon-emr-with-s3-access-grants-to-scale-spark-access-to-amazon-s3/).
+ [Verbessern Sie die Spark-Leistung mit Amazon S3](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-performance.html).

## Epen
<a name="multi-az-failover-spark-emr-clusters-arc-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Melden Sie sich bei der an AWS-Managementkonsole. | Melden Sie sich als IAM-Benutzer bei der [AWS-Managementkonsole](https://console.aws.amazon.com/) an. Anweisungen finden Sie in der [AWS Dokumentation](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-iam-user-sign-in-tutorial.html). | AWS DevOps | 
| Konfigurieren Sie die AWS CLI. **** | Installieren Sie die AWS CLI oder aktualisieren Sie sie auf die neueste Version, damit Sie mit AWS-Services der interagieren können AWS-Managementkonsole. Anweisungen finden Sie in der [AWS CLI Dokumentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). | AWS DevOps | 

### Stellen Sie eine Spark-Anwendung auf Ihrem EMR-Cluster bereit
<a name="deploy-a-spark-application-on-your-emr-cluster"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen S3-Bucket. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Erstellen Sie einen EMR-Cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Konfigurieren Sie die Sicherheitseinstellungen für den EMR-Cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Connect zum EMR-Cluster her. | Stellen Sie mithilfe des bereitgestellten key pair über SSH eine Connect zum Master-Knoten des EMR-Clusters her.Stellen Sie sicher, dass sich die Schlüsselpaardatei im selben Verzeichnis wie Ihre Anwendung befindet.Führen Sie die folgenden Befehle aus, um die richtigen Berechtigungen für das key pair festzulegen und die SSH-Verbindung herzustellen:<pre>chmod 400 <key-pair-name><br />ssh -i ./<key-pair-name> hadoop@<master-node-public-dns></pre> | AWS DevOps | 
| Stellen Sie die Spark-Anwendung bereit. | Nachdem Sie die SSH-Verbindung hergestellt haben, befinden Sie sich in der Hadoop-Konsole.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Überwachen Sie die Spark-Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 

### Verkehr in eine andere Availability Zone verlagern
<a name="shift-traffic-to-another-availability-zone"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Application Load Balancer. | Richten Sie die Zielgruppe ein, die den Verkehr zwischen Amazon EMR-Masterknoten weiterleitet, die in zwei Availability Zones innerhalb einer AWS-Region bereitgestellt werden.Anweisungen finden Sie in der Elastic Load Balancing-Dokumentation unter [Eine Zielgruppe für Ihren Application Load Balancer erstellen](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html). | AWS DevOps | 
| Konfigurieren Sie die Zonenverschiebung im Application Recovery Controller. | In diesem Schritt verwenden Sie die [Zonal Shift-Funktion](https://docs.aws.amazon.com/r53recovery/latest/dg/arc-zonal-shift.html) in Application Recovery Controller, um den Datenverkehr in eine andere Availability Zone zu verlagern.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html)Informationen zur AWS CLI Verwendung von finden Sie unter [Beispiele für die Verwendung von AWS CLI with Zonal Shift](https://docs.aws.amazon.com/r53recovery/latest/dg/getting-started-cli-zonalshift.html) in der Dokumentation zu Application Recovery Controller. | AWS DevOps | 
| Überprüfen Sie die Konfiguration und den Fortschritt der Zonenschicht. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 

## Zugehörige Ressourcen
<a name="multi-az-failover-spark-emr-clusters-arc-resources"></a>
+ AWS CLI Befehle:
  + [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/create-cluster.html)
  + [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/describe-cluster.html)
  + [arc-zonal-shift](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/arc-zonal-shift/index.html)
+ [Konfiguration von Amazon EMR-Cluster-Instance-Typen und Best Practices für Spot-Instances](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-instances-guidelines.html) (Amazon EMR-Dokumentation)
+ [Bewährte Sicherheitsmethoden in IAM (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html))
+ [Verwenden Sie Instanzprofile](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) (IAM-Dokumentation)
+ [Verwenden Sie Zonal Shift und Zonal Autoshift, um Anwendungen in ARC wiederherzustellen (Application Recovery](https://docs.aws.amazon.com/r53recovery/latest/dg/multi-az.html) Controller-Dokumentation)

# Verwalten Sie blue/green Bereitstellungen von Microservices für mehrere Konten und Regionen mithilfe von AWS-Code-Services und AWS KMS-Schlüsseln für mehrere Regionen
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys"></a>

*Balaji Vedagiri, Vanitha Dontireddy, Ashish Kumar, Faisal Shahdad, Vivek Thangamuthu und Anand Krishna Varanasi, Amazon Web Services*

## Zusammenfassung
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-summary"></a>

Dieses Muster beschreibt, wie eine globale Microservices-Anwendung von einem zentralen AWS-Konto aus gemäß einer blue/green Bereitstellungsstrategie für mehrere Workload-Konten und Regionen bereitgestellt wird. Das Muster unterstützt Folgendes:
+ Software wird in einem zentralen Konto entwickelt, wohingegen Workloads und Anwendungen auf mehrere Konten und AWS-Regionen verteilt sind.
+ Ein einziger regionsübergreifender Schlüssel für das AWS Key Management System (AWS KMS) wird für die Verschlüsselung und Entschlüsselung verwendet, um die Notfallwiederherstellung abzudecken.
+ Der KMS-Schlüssel ist regionsspezifisch und muss für Pipeline-Artefakte in drei verschiedenen Regionen verwaltet oder erstellt werden. Ein regionsübergreifender KMS-Schlüssel hilft dabei, dieselbe Schlüssel-ID in allen Regionen beizubehalten.
+ Das Git-Workflow-Verzweigungsmodell ist mit zwei Branches (Development und Main) implementiert und der Code wird mithilfe von Pull Requests (PRs) zusammengeführt. Die AWS Lambda Lambda-Funktion, die von diesem Stack aus bereitgestellt wird, erstellt eine PR vom Entwicklungszweig zum Hauptzweig. Die PR-Zusammenführung mit der Hauptzweig initiiert eine CodePipeline AWS-Pipeline, die den CI/CD-Fluss (Continuous Integration and Continuous Delivery) orchestriert und die Stacks kontenübergreifend bereitstellt.

Dieses Muster bietet ein Beispiel für die Einrichtung einer Infrastruktur als Code (IaC) über CloudFormation AWS-Stacks, um diesen Anwendungsfall zu demonstrieren. Die blue/green Bereitstellung von Microservices wird mithilfe von AWS CodeDeploy implementiert.

## Voraussetzungen und Einschränkungen
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-prereqs"></a>

**Voraussetzungen**
+ Vier aktive AWS-Konten:
  + Ein Tools-Konto zur Verwaltung der Code-Pipeline und zur Wartung des CodeCommit AWS-Repositorys.
  + Drei Workload-Konten (Testkonten) für die Bereitstellung des Microservices-Workloads.
+ Dieses Muster verwendet die folgenden Regionen. Wenn Sie andere Regionen verwenden möchten, müssen Sie die entsprechenden Änderungen an den mehrregionalen AWS CodeDeploy - und AWS KMS KMS-Stacks vornehmen.
  + Tools-Konto (AWS CodeCommit): `ap-south-1`
  + Workload- (Test-) Konto 1: `ap-south-1`
  + Workload- (Test-) Konto 2: `eu-central-1`
  + Workload- (Test-) Konto 3: `us-east-1`
+ Drei Amazon Simple Storage Service (Amazon S3) -Buckets für die Bereitstellungsregionen in jedem Workload-Konto. (Diese werden aufgerufen `S3BUCKETNAMETESTACCOUNT1` `S3BUCKETNAMETESTACCOUNT2 ` und `S3BUCKETNAMETESTACCOUNT3 ` später in diesem Muster aufgeführt.)

  Sie können diese Buckets beispielsweise in bestimmten Konten und Regionen mit eindeutigen Bucket-Namen wie folgt erstellen (ersetzen Sie *xxxx* durch eine Zufallszahl):

  ```
  ##In Test Account 1
  aws s3 mb s3://ecs-codepipeline-xxxx-ap-south-1 --region ap-south-1
  ##In Test Account 2
  aws s3 mb s3://ecs-codepipeline-xxxx-eu-central-1 --region eu-central-1
  ##In Test Account 3
  aws s3 mb s3://ecs-codepipeline-xxxx-us-east-1 --region us-east-1
  
  #Example
  ##In Test Account 1
  aws s3 mb s3://ecs-codepipeline-18903-ap-south-1 --region ap-south-1
  ##In Test Account 2
  aws s3 mb s3://ecs-codepipeline-18903-eu-central-1 --region eu-central-1
  ##In Test Account 3
  aws s3 mb s3://ecs-codepipeline-18903-us-east-1 --region us-east-1
  ```

**Einschränkungen**

Das Muster verwendet AWS CodeBuild und andere Konfigurationsdateien, um einen Beispiel-Microservice bereitzustellen. Wenn Sie einen anderen Workload-Typ verwenden (z. B. serverlos), müssen Sie alle relevanten Konfigurationen aktualisieren.

## Architektur
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-architecture"></a>

**Zieltechnologie-Stack**
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodeBuild
+ AWS CodeDeploy
+ AWS CodePipeline

**Zielarchitektur**

![\[Zielarchitektur für die Bereitstellung von Microservices für mehrere Konten und Regionen\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a144c977-6823-4b08-a215-fae779b3ce7c/images/eedfabdb-f266-4190-b271-5caf7ac9b47b.png)


**Automatisierung und Skalierung**

Die Einrichtung wird mithilfe von CloudFormation AWS-Stack-Vorlagen (IaC) automatisiert. Es kann problemlos für mehrere Umgebungen und Konten skaliert werden.

## Tools
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatisiert Bereitstellungen auf Amazon Elastic Compute Cloud (Amazon EC2) oder lokalen Instances, AWS Lambda Lambda-Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Beenden und Verwalten von Containern in einem Cluster vereinfacht.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Zusätzliche Tools**
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem, das mit dem CodeCommit AWS-Repository zusammenarbeitet.
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen. Dieses Muster verwendet Docker, um Container-Images lokal zu erstellen und zu testen.
+ [cfn-lint](https://github.com/aws-cloudformation/cfn-lint) und [cfn-nag](https://github.com/stelligent/cfn_nag) sind Open-Source-Tools, mit denen Sie CloudFormation Stacks auf Fehler und Sicherheitsprobleme überprüfen können.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [Globale Blue/Green Bereitstellungen in mehreren Regionen und Konten](https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline) verfügbar.

## Epen
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-epics"></a>

### Umgebungsvariablen festlegen
<a name="set-up-environment-variables"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Exportieren Sie Umgebungsvariablen für die CloudFormation Stack-Bereitstellung. | Definieren Sie Umgebungsvariablen, die später in diesem Muster als Eingabe für die CloudFormation Stacks verwendet werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Package und Bereitstellen der CloudFormation Stacks für die Infrastruktur
<a name="package-and-deploy-the-cloudformation-stacks-for-the-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Klonen Sie das [Beispiel-Repository](https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline) in ein neues Repository an Ihrem Arbeitsplatz:<pre>##In work location<br />git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git</pre> | AWS DevOps | 
| Package Sie die Cloudformation-Ressourcen. | In diesem Schritt packen Sie die lokalen Artefakte, auf die sich die CloudFormation Vorlagen beziehen, um die Infrastrukturressourcen zu erstellen, die für Dienste wie Amazon Virtual Private Cloud (Amazon VPC) und Application Load Balancer erforderlich sind.Die Vorlagen sind im `Infra` Ordner des Code-Repositorys verfügbar.<pre>##In TestAccount1##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT1 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT1REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT1}.template</pre><pre>##In TestAccount2##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT2 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT2REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT2}.template</pre><pre>##In TestAccount3##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT3 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT3REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT3}.template</pre> | AWS DevOps | 
| Validieren Sie die Paketvorlagen. | Überprüfen Sie die Paketvorlagen:<pre>aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT1}.template<br /><br />aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT2}.template<br /><br />aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT3}.template</pre> | AWS DevOps | 
| Stellen Sie die Paketdateien in den Workload-Konten bereit, | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Senden Sie ein Beispielbild und skalieren Sie Amazon ECS
<a name="push-a-sample-image-and-scale-amazon-ecs"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Senden Sie ein Beispielbild in das Amazon ECR-Repository. | Senden Sie ein Beispielbild (NGINX) in das Amazon Elastic Container Registry (Amazon ECR) -Repository mit dem Namen `web` (wie in den Parametern festgelegt). Sie können das Bild nach Bedarf anpassen.Folgen Sie den Anweisungen in der Amazon ECR-Dokumentation, um sich anzumelden und die Anmeldeinformationen für die Übertragung eines Bilds an [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) festzulegen.Die Befehle lauten:<pre>  docker pull nginx<br />  docker images<br />  docker tag <imageid> aws_account_id.dkr.ecr.region.amazonaws.com/<web>:latest<br />  docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<web>:tag </pre> | AWS DevOps | 
| Skalieren Sie Amazon ECS und überprüfen Sie den Zugriff. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Richten Sie Code-Services und Ressourcen ein
<a name="set-up-code-services-and-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein CodeCommit Repository im Tools-Konto. | Erstellen Sie mithilfe der `codecommit.yaml` Vorlage, die sich im `code` Ordner des CodeCommit Repositorys befindet, ein GitHub Repository im Tools-Konto. Sie dürfen dieses Repository nur in der Region erstellen, in der Sie den Code entwickeln möchten.<pre>aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides  CodeCommitReponame=$CODECOMMITREPONAME \<br />ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml  --region $TOOLSACCOUNTREGION \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Erstellen Sie einen S3-Bucket zur Verwaltung von Artefakten, die von generiert wurden CodePipeline. | Erstellen Sie einen S3-Bucket für die Verwaltung CodePipeline von Artefakten, die mithilfe der `pre-reqs-bucket.yaml` Vorlage generiert wurden, die sich im `code` Ordner des GitHub Repositorys befindet. Die Stacks müssen in allen drei Workload- (Test-) und Tools-Konten und Regionen bereitgestellt werden.<pre>aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Richten Sie einen KMS-Schlüssel für mehrere Regionen ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 
| Richten Sie das CodeBuild Projekt im Tools-Konto ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 
|  CodeDeploy In Workload-Konten einrichten. | Verwenden Sie die `codedeploy.yaml` Vorlage im `code` Ordner des GitHub Repositorys, um sie CodeDeploy in allen drei Workload-Konten einzurichten. Die Ausgabe von `mainInfraStack` umfasst die Amazon-Ressourcennamen (ARNs) des Amazon ECS-Clusters und des Application Load Balancer Balancer-Listeners.Die Werte aus den Infrastruktur-Stacks wurden bereits exportiert, sodass sie von den CodeDeploy Stack-Vorlagen importiert werden.<pre>##WorkloadAccount1##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides  ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />##WorkloadAccount2##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />##WorkloadAccount3##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 

### CodePipeline Im Tools-Konto einrichten
<a name="set-up-codepipeline-in-the-tools-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Code-Pipeline im Tools-Konto. | Führen Sie im Tools-Konto den folgenden Befehl aus:<pre>aws cloudformation deploy --stack-name ecscodepipelinestack --parameter-overrides  \<br />TestAccount1=$TESTACCOUNT1 TestAccount1Region=$TESTACCOUNT1REGION \<br />TestAccount2=$TESTACCOUNT2 TestAccount2Region=$TESTACCOUNT2REGION \<br />TestAccount3=$TESTACCOUNT3 TestAccount3Region=$TESTACCOUNT3REGION \<br />CMKARNTools=$CMKTROOLSARN CMKARN1=$CMKARN1 CMKARN2=$CMKARN2 CMKARN3=$CMKARN3 \<br />CodeCommitRepoName=$CODECOMMITREPONAME BucketStartName=$BUCKETSTARTNAME \<br />--template-file codepipeline.yaml --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Stellen Sie Zugriff auf CodePipeline und CodeBuild Rollen in der AWS-KMS-Schlüsselrichtlinie und der S3-Bucket-Richtlinie bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Rufen Sie an und testen Sie die Pipeline
<a name="call-and-test-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Änderungen in das CodeCommit Repository übertragen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) |  | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie alle eingesetzten Ressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) |  | 

## Fehlerbehebung
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Änderungen, die Sie für das Repository übernommen haben, werden nicht bereitgestellt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | 

## Zugehörige Ressourcen
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-resources"></a>
+ [Ein Docker-Image pushen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) (Amazon ECR-Dokumentation)
+ Stellen Sie eine [Connect zu einem CodeCommit AWS-Repository](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) her ( CodeCommit AWS-Dokumentation)
+ [AWS-Fehlerbehebung CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html) ( CodeBuild AWS-Dokumentation)

# Überwachen Sie Amazon ECR-Repositorys mit AWS und AWS CloudFormation Config auf Platzhalterberechtigungen
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config"></a>

*Vikrant Telkar, Wassim Benhallam und Sajid Momin, Amazon Web Services*

## Zusammenfassung
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-summary"></a>

In der Amazon Web Services (AWS) -Cloud ist Amazon Elastic Container Registry (Amazon ECR) ein verwalteter Container-Image-Registry-Service, der private Repositorys mit ressourcenbasierten Berechtigungen mithilfe von AWS Identity and Access Management (IAM) unterstützt.

IAM unterstützt den Platzhalter "`*`" sowohl in den Ressourcen- als auch in den Aktionsattributen, was die automatische Auswahl mehrerer übereinstimmender Elemente erleichtert. In Ihrer Testumgebung können Sie allen authentifizierten AWS-Benutzern den Zugriff auf ein Amazon ECR-Repository ermöglichen, indem Sie die `ecr:*` [Platzhalterberechtigung](https://docs.aws.amazon.com/lambda/latest/operatorguide/wildcard-permissions-iam.html) in einem Hauptelement für Ihre [Repository-Richtlinienerklärung](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html) verwenden. Die `ecr:*` Platzhalterberechtigung kann nützlich sein, wenn Sie in Entwicklungskonten entwickeln und testen, die nicht auf Ihre Produktionsdaten zugreifen können.

Sie müssen jedoch sicherstellen, dass die `ecr:*` Platzhalterberechtigung in Ihren Produktionsumgebungen nicht verwendet wird, da sie schwerwiegende Sicherheitslücken verursachen kann. Der Ansatz dieses Musters hilft Ihnen dabei, Amazon ECR-Repositorys zu identifizieren, die die `ecr:*` Platzhalterberechtigung in Repository-Richtlinienerklärungen enthalten.   Das Muster enthält Schritte und eine CloudFormation AWS-Vorlage zum Erstellen einer benutzerdefinierten Regel in AWS Config. Eine AWS Lambda Lambda-Funktion überwacht dann Ihre Amazon ECR-Repository-Richtlinienerklärungen auf `ecr:*` Platzhalterberechtigungen. Wenn Lambda nicht konforme Repository-Richtlinienerklärungen findet, benachrichtigt es AWS Config, ein Ereignis an Amazon zu senden, EventBridge und leitet EventBridge dann ein Amazon Simple Notification Service (Amazon SNS) -Thema ein. Das SNS-Thema informiert Sie per E-Mail über die nicht konformen Repository-Richtlinienerklärungen.

## Voraussetzungen und Einschränkungen
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ AWS-Befehlszeilenschnittstelle (AWS CLI), installiert und konfiguriert. Weitere Informationen dazu finden Sie unter [Installation, Aktualisierung und Deinstallation der AWS-CLI in der AWS-CLI-Dokumentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).
+ Ein vorhandenes Amazon ECR-Repository mit einer angehängten Richtlinienerklärung, das in Ihrer Testumgebung installiert und konfiguriert wurde. Weitere Informationen dazu finden Sie unter [Erstellen eines privaten Repositorys](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) und [Einrichten einer Repository-Richtlinienerklärung](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html) in der Amazon ECR-Dokumentation.
+ AWS Config, konfiguriert in Ihrer bevorzugten AWS-Region. Weitere Informationen dazu finden Sie unter [Erste Schritte mit AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html) in der AWS Config-Dokumentation.
+ Die `aws-config-cloudformation.template` Datei (angehängt), die auf Ihren lokalen Computer heruntergeladen wurde.

 

**Einschränkungen**
+ Die Lösung dieses Musters ist Regional und Ihre Ressourcen müssen in derselben Region erstellt werden. 

## Architektur
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-architecture"></a>

Das folgende Diagramm zeigt, wie AWS Config die Amazon ECR-Repository-Richtlinienerklärungen auswertet. 

![\[AWS Config workflow with Lambda, Amazon ECR, EventBridge, SNS, and email notification components.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/01bbf5f8-27aa-4c64-9a03-7fcccc0955b8/images/49bbf14b-0a18-4d4a-86ab-162d37708e01.png)


Das Diagramm zeigt den folgenden Workflow:

1. AWS Config initiiert eine benutzerdefinierte Regel. 

1. Die benutzerdefinierte Regel ruft eine Lambda-Funktion auf, um die Einhaltung der Amazon ECR-Repository-Richtlinienerklärungen zu bewerten. Die Lambda-Funktion identifiziert dann nicht konforme Repository-Richtlinienanweisungen.

1. Die Lambda-Funktion sendet den Status der Nichtkonformität an AWS Config.

1. AWS Config sendet ein Ereignis an EventBridge.

1. EventBridge veröffentlicht die Benachrichtigungen über Verstöße zu einem SNS-Thema.

1. Amazon SNS sendet eine E-Mail-Benachrichtigung an Sie oder einen autorisierten Benutzer.

**Automatisierung und Skalierung**

Die Lösung dieses Musters kann eine beliebige Anzahl von Amazon ECR-Repository-Richtlinienerklärungen überwachen, aber alle Ressourcen, die Sie auswerten möchten, müssen in derselben Region erstellt werden.

## Tools
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation hilft Ihnen dabei, Ihre AWS-Ressourcen zu modellieren und einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus zu verwalten. Sie können eine Vorlage verwenden, um Ihre Ressourcen und ihre Abhängigkeiten zu beschreiben und sie zusammen als Stapel zu starten und zu konfigurieren, anstatt Ressourcen einzeln zu verwalten. Sie können Stacks für mehrere AWS-Konten und AWS-Regionen verwalten und bereitstellen.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) — AWS Config bietet eine detaillierte Ansicht der Konfiguration der AWS-Ressourcen in Ihrem AWS-Konto. Dazu gehört auch, wie die Ressourcen jeweils zueinander in Beziehung stehen und wie sie in der Vergangenheit konfiguriert wurden, damit Sie sehen können, wie sich die Konfigurationen und Beziehungen im Laufe der Zeit verändern.
+ [Amazon ECR****](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) —**** Amazon Elastic Container Registry (Amazon ECR) ist ein von AWS verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist. Amazon ECR unterstützt private Container-Image-Repositories mit ressourcenbasierten Berechtigungen unter Verwendung von IAM.                                 
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) — Amazon EventBridge ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Daten aus einer Vielzahl von Quellen verbinden können. EventBridge liefert einen Stream von Echtzeitdaten aus Ihren Anwendungen, SaaS-Anwendungen (Software as a Service) und AWS-Services an Ziele wie AWS Lambda-Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen Konten.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. Sie bezahlen nur für die Datenverarbeitungszeit, die Sie wirklich nutzen und es werden keine Gebühren in Rechnung gestellt, wenn Ihr Code nicht ausgeführt wird.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notification Service (Amazon SNS) koordiniert und verwaltet die Zustellung oder den Versand von Nachrichten zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen. Abonnenten erhalten die veröffentlichten Mitteilungen zu den Themen, die sie abonniert haben. Alle Abonnenten eines Themas erhalten dieselben Mitteilungen. 

**Code**

Der Code für dieses Muster ist in der `aws-config-cloudformation.template` Datei (angehängt) verfügbar.

## Epen
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-epics"></a>

### Den CloudFormation AWS-Stack erstellen
<a name="create-the-aws-cloudformation-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den CloudFormation AWS-Stack. | Erstellen Sie einen CloudFormation AWS-Stack, indem Sie den folgenden Befehl in der AWS-CLI ausführen:<pre>$ aws cloudformation create-stack --stack-name=AWSConfigECR \<br />    --template-body  file://aws-config-cloudformation.template \<br />    --parameters ParameterKey=<email>,ParameterValue=<myemail@example.com> \<br />    --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 

### Testen Sie die benutzerdefinierte AWS Config-Regel
<a name="test-the-aws-config-custom-rule"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die benutzerdefinierte AWS Config-Regel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.html) | AWS DevOps | 

## Anlagen
<a name="attachments-01bbf5f8-27aa-4c64-9a03-7fcccc0955b8"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/01bbf5f8-27aa-4c64-9a03-7fcccc0955b8/attachments/attachment.zip)

# Optimieren Sie serverlose Bereitstellungen mit mehreren Konten mithilfe der AWS CDK Workflows und Aktionen GitHub
<a name="optimize-multi-account-serverless-deployments"></a>

*Sarat Chandra Pothula und VAMSI KRISHNA SUNKAVALLI, Amazon Web Services*

## Zusammenfassung
<a name="optimize-multi-account-serverless-deployments-summary"></a>

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
<a name="optimize-multi-account-serverless-deployments-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ AWS Identity and Access Management (IAM) [-Rollen und -Berechtigungen](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam.html) 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 [https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ AWS Cloud Development Kit (AWS CDK) [https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)
+ [Go 1.22 oder höher, installiert.](https://go.dev/doc/install)
+ [Docker 24.0.6 oder höher, installiert.](https://docs.docker.com/engine/install/)

**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\$1, 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
<a name="optimize-multi-account-serverless-deployments-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Architektur der AWS CDK- und GitHub Actions-Workflows für die serverlose Infrastrukturverwaltung mit mehreren Konten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/8d61917b-bd27-44fa-ae95-55358aaf8812/images/a4b36793-95c7-42f7-a92f-99b4722c9c64.png)


Diese Lösung führt die folgenden Schritte aus:

1. Der Entwickler klont das Repository, erstellt einen neuen Branch und nimmt Änderungen am Anwendungscode in seiner lokalen Umgebung vor.

1. Der Entwickler überträgt diese Änderungen und überträgt den neuen Branch in das Repository. GitHub 

1. 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.

1. 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.

1. Der CI-Workflow richtet die erforderliche Umgebung ein, generiert ein Docker-Tag für das Image und erstellt das Docker-Image mithilfe des Anwendungscodes. 

1. 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

1. Der CI-Workflow überträgt das erstellte Docker-Image an Amazon ECR.

1. Der CI-Workflow speichert das Image-Tag im Systems Manager Manager-Parameterspeicher.

1. Nachdem der CI-Workflow erfolgreich abgeschlossen wurde, wird das Docker-Image-Tag ausgegeben. 

1. 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.

1. Der Entwickler löst den CD-Workflow manuell aus, wobei der Workflow für wiederverwendbare CDs verwendet wird. 

1. 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. 

1. Der CD-Workflow verwendet die, um Vorlagen AWS CDK zu synthetisieren. AWS CloudFormation 

1. 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
<a name="optimize-multi-account-serverless-deployments-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung von AWS Cloud Infrastruktur im Code unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft 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)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) 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](https://go.dev/doc/install) 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](https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions) verfügbar.

## Best Practices
<a name="optimize-multi-account-serverless-deployments-best-practices"></a>
+ **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 PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)um 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
<a name="optimize-multi-account-serverless-deployments-epics"></a>

### Richten Sie die Umgebungen ein
<a name="set-up-the-environments"></a>


| Aufgabe | Description | 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:<pre>aws ecr create-repository --repository-name sample-repo</pre>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:<pre>{<br />  "Version": "2008-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "LambdaECRImageRetrievalPolicy",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Service": "lambda.amazonaws.com"<br />      },<br />      "Action": [<br />        "ecr:BatchGetImage",<br />        "ecr:GetDownloadUrlForLayer",<br />      ],<br />      "Condition": {<br />        "StringLike": {<br />          "aws:sourceArn": "arn:aws:lambda:<Target_Region>:<Target_Account_ID>:function:*"<br />        }<br />      }<br />    },<br />    {<br />      "Sid": "new statement",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "AWS": "arn:aws:iam::<Target_Account_ID>:root"<br />        },<br />      "Action": [<br />        "ecr:BatchGetImage",<br />        "ecr:GetDownloadUrlForLayer",<br />      ],<br />    }<br />  ] <br />}</pre> | AWS DevOps | 
| Konfigurieren Sie eine Rolle für die GitHub OIDC-Rolle in der Zentrale. AWS-Konto | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 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](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html):<pre>cdk bootstrap aws://<Target_Account_ID>/<Target_Region> --trust <Central_Account_ID> --cloudformation-execution-policies arn:aws:iam::aws:policy/<Least_Privilege_Policy></pre> | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)Jede Rolle verfügt über spezifische Berechtigungen, die auf ihren Zweck zugeschnitten sind und dem Prinzip der geringsten Rechte folgen. Das „`Target_Account_ID`und“ `Target_Region` in jedem Rollennamen weist darauf hin, dass diese Rollen in verschiedenen AWS-Konten Regionen einzigartig sind. Dieser Ansatz unterstützt eine klare Identifizierung und Verwaltung in Konfigurationen mit mehreren Konten und mehreren Regionen.<pre>Target Account CDK Bootstrap Roles<br />arn:aws:iam::<Target_Account_ID>:role/cdk-deploy-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-file-publishing-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-image-publishing-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-lookup-role-<Target_Account_ID>-<Target_Region></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)Verwenden Sie den folgenden Code, um die Berechtigungsrichtlinie für die OIDC-Rolle in der Zentrale AWS-Konto zu aktualisieren:<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "sts:AssumeRole",<br />            "Resource": [<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-deploy-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-file-publishing-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-image-publishing-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-lookup-role-<Target_Account_ID>-<Target_Region>"<br />            ]<br />        }<br />    ]<br /> }<br /></pre> | AWS DevOps | 

### Erstellen Sie das Docker-Image
<a name="build-the-docker-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Projekt-Repository. | Führen Sie den folgenden Befehl aus, um das [GitHub Repository](https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions) dieses Musters zu klonen:<pre>git clone https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions.git</pre> | AWS DevOps | 
| Gehen Sie zum Dockerfile-Pfad. | Führen Sie den folgenden Befehl aus, um zum Dockerfile-Pfad zu navigieren:<pre>cd lambda</pre> | 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:<pre>aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com</pre>Überarbeiten Sie die Platzhalter `AWS_REGION` und fügen Sie Ihre Informationen hinzu. `AWS_Account_ID` | AWS DevOps | 
| Erstellen Sie das Docker-Image. | Führen Sie den folgenden Befehl aus, um das Docker-Image zu erstellen:<pre>docker build --platform linux/arm64 -t sample-app .</pre> | 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:<pre>docker tag sample-app:latest <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<ECR_REPOSITORY>:<DOCKER_TAG></pre><pre>docker push <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<ECR_REPOSITORY>:<DOCKER_TAG></pre>Überarbeiten Sie die Platzhalter`AWS_Account_ID`, `AWS_REGION``ECR_REPOSITORY`, und `DOCKER_TAG` mit Ihren Informationen. | AWS DevOps | 

### Stellen Sie die AWS CDK App bereit
<a name="deploy-the-cdk-app"></a>


| Aufgabe | Description | 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:<pre>ENV=<environment> IMAGETAG=<image_tag> ECR_ARN=<ecr_repo_arn> cdk synth</pre>Überarbeiten Sie die folgenden Platzhalter mit Ihren Informationen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 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 `--require-approval never` Flag bedeutet, dass das CDK *alle* Änderungen automatisch genehmigt und ausführt. Dazu gehören auch Änderungen, die das CDK normalerweise als manuell überprüfbar kennzeichnen würde (z. B. Änderungen der IAM-Richtlinien oder das Entfernen von Ressourcen). Stellen Sie sicher, dass Ihr CDK-Code und Ihre CI/CD Pipeline gut getestet und sicher sind, bevor Sie das `--require-approval never` Flag in Produktionsumgebungen verwenden.<pre>ENV=<environment> IMAGETAG=<image_tag> ECR_ARN=<ecr_repo_arn> cdk deploy --require-approval never</pre> | AWS DevOps | 

### Automatisieren Sie CI/CD mithilfe von GitHub Aktions-Workflows
<a name="automate-ci-cd-using-github-actions-workflows"></a>


| Aufgabe | Description | 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:<pre>git checkout -b <feature_branch><br />git add .<br />git commit -m "add your changes"<br />git push origin <feature_branch></pre>Im Folgenden finden Sie Beispiele für Änderungen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)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
<a name="optimize-multi-account-serverless-deployments-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `AccessDenied`Fehler beim Bereitstellen von Ressourcen auf AWS-Konten, zum Beispiel`AccessDenied: User not authorized to perform: "sts:AssumeRole"`. | Gehen Sie wie folgt vor, um die kontoübergreifenden Berechtigungen zu überprüfen, um dieses Problem zu beheben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 
| Kompatibilitätsprobleme aufgrund von Versionskonflikten, z. B. `undefined: awscdkStack` Fehler mit einer veralteten CDK-Version. | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 
| CI/CD-Pipeline-Fehler, z. B. `Error: No such file or directory` aufgrund einer falschen YAML-Konfiguration oder `Permission denied` aufgrund geschützter Zweige. | Um Probleme mit der GitHub Aktionskonfiguration zu lösen, stellen Sie sicher, dass die wiederverwendbaren Workflows ordnungsgemäß referenziert und konfiguriert sind. | 

## Zugehörige Ressourcen
<a name="optimize-multi-account-serverless-deployments-resources"></a>

**AWS-Ressourcen**
+ [AWS Bewährte Methoden für Sicherheit, Identität und Compliance](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [AWS CDK Workshop](https://cdkworkshop.com/60-go.html)
+ [AWS Bibliothek Cloud Development Kit](https://pkg.go.dev/github.com/aws/aws-cdk-go/awscdk/v2)
+ [Erstellen Sie eine Lambda-Funktion mit einem Container-Image](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)
+ [Identity and Access Management für Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam.html)
+ [Arbeiten mit dem AWS CDK in Go](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-go.html)

**Sonstige Ressourcen**
+ [Konfiguration von OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) (GitHub Dokumentation)
+ [Golang-Dokumentation](https://golang.org/doc/)
+ [Schnellstart für GitHub Aktionen (Dokumentation](https://docs.github.com/en/actions/writing-workflows/quickstart)) GitHub 
+ [Wiederverwendung von Workflows (Dokumentation](https://docs.github.com/en/actions/sharing-automations/reusing-workflows)) GitHub 

# Bereitstellen von AWS Service Catalog Produkten auf der Grundlage von AWS CloudFormation Vorlagen mithilfe von GitHub Aktionen
<a name="provision-aws-service-catalog-products-using-github-actions"></a>

*Ashish Bhatt und Ruchika Modi, Amazon Web Services*

## Zusammenfassung
<a name="provision-aws-service-catalog-products-using-github-actions-summary"></a>

Dieses Muster bietet Unternehmen einen optimierten Ansatz, bei dem [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)Produkte und Portfolios verwendet werden, um teamübergreifend standardisierte und konforme Lösungen bereitzustellen. AWS-Services [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft dabei, wichtige Komponenten in Service Catalog-Produkten und -Portfolios für die Bereitstellung der Basisnetzwerkinfrastruktur zu AWS Cloud kombinieren. [Dieses Muster fördert auch DevOps Praktiken, indem Infrastructure-as-Code (IaC) mithilfe GitHub von Aktionen in automatisierte Entwicklungsworkflows integriert wird.](https://github.com/features/actions)

AWS Service Catalog ermöglicht es Unternehmen, zugelassene IT-Services zu erstellen und zu verwalten AWS, was Vorteile wie Standardisierung, zentrale Steuerung, Self-Service-Bereitstellung und Kostenmanagement bietet. Durch die Automatisierung der Bereitstellung von Service Catalog-Portfolios und -Produkten durch GitHub Aktionen können Unternehmen Folgendes tun:
+ Erzielen Sie konsistente und wiederholbare Bereitstellungen. 
+ Verwenden Sie die Versionskontrolle für IaC. 
+ Integrieren Sie das Cloud-Ressourcenmanagement in bestehende Entwicklungsworkflows. 

Diese Kombination rationalisiert den Cloud-Betrieb, sorgt für die Einhaltung von Vorschriften und beschleunigt die Bereitstellung genehmigter Dienste. Gleichzeitig werden manuelle Fehler reduziert und die Gesamteffizienz verbessert.

## Voraussetzungen und Einschränkungen
<a name="provision-aws-service-catalog-products-using-github-actions-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto 
+ Zugriff auf das [GitHub Repository](https://docs.github.com/en/get-started/quickstart/create-a-repo)
+ Grundlegendes Verständnis von AWS CloudFormation und AWS Service Catalog
+ Ein Amazon Simple Storage Service (Amazon S3) -Bucket zum Hosten von CloudFormation Vorlagen
+ Eine benannte AWS Identity and Access Management (IAM-) Rolle`github-actions`, die für die Konnektivität zwischen und GitHub verwendet wird AWS

**Einschränkungen**
+ Der wiederverwendbare Code dieses Musters wurde nur mit GitHub Aktionen getestet.
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**

Die Lösung dieses Musters wurde mithilfe der folgenden [GitHub Marketplace-Aktionen](https://github.com/marketplace) und ihrer jeweiligen Versionen erstellt:
+ `actions/checkout@v4`
+ `aws-actions/configure-aws-credentials@v2`
+ `aws-actions/aws-cloudformation-github-deploy@v1.2.0`

## Architektur
<a name="provision-aws-service-catalog-products-using-github-actions-architecture"></a>

Das folgende Diagramm zeigt die Architektur für diese Lösung.

![\[Verwenden von GitHub Aktionen zur Bereitstellung von Service Catalog-Produkten auf der Grundlage von CloudFormation Vorlagen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/49f82fa7-0c74-4581-bf92-95505dca264c/images/a13c7b41-534e-4a9e-bdca-2974fa40a49a.png)


1. Administratoren oder Plattformingenieure übertragen standardisierte CloudFormation Vorlagen in ein GitHub Repository, in dem die Vorlagen verwaltet werden. Das GitHub Repo enthält auch Workflows, die die Bereitstellung von AWS Service Catalog Using GitHub Actions automatisieren.

1. GitHub Aktionen lösen einen Workflow aus, der eine Verbindung AWS Cloud mit dem herstellt, der einen OpenID Connect (OIDC) -Anbieter verwendet, um Service Catalog bereitzustellen.

1. Der Service Catalog enthält das Portfolio und die Produkte, mit denen Entwickler direkt standardisierte AWS Ressourcen bereitstellen können. Dieses Muster bündelt AWS Ressourcen wie virtuelle private Clouds (VPCs), Subnetze, NAT- und Internet-Gateways sowie Routing-Tabellen.

1. Nachdem der Entwickler ein Service Catalog-Produkt erstellt hat, konvertiert Service Catalog es in vorkonfigurierte und standardisierte AWS Ressourcen. Dadurch sparen Entwickler Zeit, da sie keine einzelnen Ressourcen bereitstellen und manuell konfigurieren müssen.

## Tools
<a name="provision-aws-service-catalog-products-using-github-actions-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft 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. Es handelt sich um einen Infrastructure-as-Code-Service (IaC), der problemlos als einer der Produkttypen mit AWS Service Catalog verwendet werden kann.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted.html)unterstützt Sie bei der zentralen Verwaltung des Katalogs von IT-Services, für die eine Genehmigung erteilt wurde. AWS Endbenutzer können schnell nur die jeweils benötigten genehmigten IT-Services bereitstellen, wobei die Einschränkungen Ihrer Organisation berücksichtigt werden.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere**
+ [GitHub Actions](https://docs.github.com/en/actions) ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorien integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [service-catalog-with-github-actions](https://github.com/aws-samples/service-catalog-with-github-actions) verfügbar. Das Repo enthält die folgenden interessanten Dateien:
+ `github/workflows`:
  + `e2e-test.yaml`— Diese Datei ruft auf`workflow.yaml`, was der [wiederverwendbare Workflow](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) ist. Dieser Workflow wird ausgelöst, sobald ein Commit und ein Push für einen Branch erfolgt.
  + `workflow.yaml`— Diese Datei enthält den wiederverwendbaren Workflow für diese Lösung und ist `workflow_call` als Auslöser konfiguriert. Als wiederverwendbarer Workflow `workflow.yaml` kann er von jedem anderen Workflow aus aufgerufen werden.
+ `templates`:
  + `servicecatalog-portfolio.yaml`— Diese CloudFormation Vorlage enthält Ressourcen, die das Service Catalog-Portfolio und das Service Catalog-Produkt bereitstellen. Die Vorlage enthält eine Reihe von Parametern, die bei der Bereitstellung des Service Catalog-Portfolios und der Produkte verwendet werden. Ein Parameter akzeptiert eine Amazon S3 S3-Datei-URL, in die die Vorlage hochgeladen `vpc.yaml` wird. Dieses Muster beinhaltet zwar die `vpc.yaml` Datei zur Bereitstellung von AWS Ressourcen, Sie können jedoch auch den Parameter S3-Datei-URL für die Konfiguration verwenden.
  + `vpc.yaml`— Diese CloudFormation Vorlage enthält AWS Ressourcen, die dem Service Catalog-Produkt hinzugefügt werden sollen. AWS Zu den Ressourcen gehören VPCs Subnetze, Internet-Gateways, NAT-Gateways und Routing-Tabellen. Die `vpc.yaml` Vorlage ist ein Beispiel dafür, wie Sie eine beliebige CloudFormation Vorlage mit einer Produkt- und Portfoliovorlage für einen Service Catalog verwenden können.

## Best Practices
<a name="provision-aws-service-catalog-products-using-github-actions-best-practices"></a>
+ Weitere Informationen finden Sie AWS Service Catalog in der AWS Service Catalog Dokumentation unter [Bewährte Sicherheitsmethoden für](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-best-practices.html). 
+ Weitere Informationen finden Sie in der GitHub Dokumentation unter [Sicherheitshärtung für GitHub Aktionen](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions).

## Epen
<a name="provision-aws-service-catalog-products-using-github-actions-epics"></a>

### Richten Sie eine lokale Workstation ein
<a name="set-up-local-workstation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Einrichtung von Git auf Ihrer lokalen Workstation. | Um Git auf deiner lokalen Workstation zu installieren und zu konfigurieren, verwende die Anleitung [Erste Schritte — Installation von Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) in der Git-Dokumentation. | App-Developer | 
| Klonen Sie das GitHub Projekt-Repo. | Gehen Sie wie folgt vor, um das GitHub Projekt-Repo zu klonen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps Ingenieur | 

### Richten Sie den OIDC-Anbieter ein
<a name="set-up-the-oidc-provider"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie einen OIDC-Anbieter. | Erstellen Sie einen OpenID Connect (OIDC) -Anbieter, der den GitHub Actions-Workflows den Zugriff auf Ressourcen ermöglicht AWS, ohne dass die AWS Anmeldeinformationen als langlebige Geheimnisse gespeichert werden müssen. GitHub Anweisungen finden Sie in der GitHub Dokumentation unter [Konfiguration von OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services).Nach der Konfiguration eines OIDC-Anbieters wird die Vertrauensrichtlinie der IAM-Rolle`github-actions`, die bereits in den [Voraussetzungen erwähnt wurde, aktualisiert](#provision-aws-service-catalog-products-using-github-actions-prereqs). | AWS-Administrator, AWS DevOps, Allgemeines AWS | 

### Trigger GitHub Actions-Pipeline zur Bereitstellung des Service Catalog-Portfolios und der Produkte
<a name="trigger-github-actions-pipeline-to-deploy-sc-portfolio-and-products"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Aktualisieren von `e2e-test.yaml`. | Die `e2e-test.yaml` Datei löst den wiederverwendbaren Workflow unter aus`workflow.yaml`. Aktualisieren und validieren Sie die Werte für die folgenden Eingabeparameter in`e2e-test.yaml`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps Ingenieur | 

### Bereitstellung validieren
<a name="validate-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Service Catalog-Ressourcen. | Gehen Sie wie folgt vor, um die Service Catalog-Ressourcen zu validieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | AWS DevOps | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie den CloudFormation Stapel. | Gehen Sie wie folgt vor, um den CloudFormation Stapel zu löschen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html)Weitere Informationen finden Sie in der CloudFormation Dokumentation unter [Löschen eines Stacks aus der CloudFormation Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) | DevOps Ingenieur, AWS-Administrator | 

## Fehlerbehebung
<a name="provision-aws-service-catalog-products-using-github-actions-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `e2e-test``Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '*/home/runner/work/service-catalog-with-github-actions/service-catalog-with-github-actions``Did you forget to run actions/checkout before running your local action?` | Gehen Sie wie folgt vor, um sicherzustellen, dass Sie die richtigen Repository-Einstellungen aktiviert haben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | 

## Zugehörige Ressourcen
<a name="provision-aws-service-catalog-products-using-github-actions-resources"></a>

**AWS Dokumentation**
+ [Überblick über den Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)

**Sonstige Ressourcen**
+ [Informationen zu Ereignissen, die Workflows auslösen](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#about-events-that-trigger-workflows) (GitHub Dokumentation)
+ [Wiederverwendung von Workflows](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) (GitHub Dokumentation)

## Zusätzliche Informationen
<a name="provision-aws-service-catalog-products-using-github-actions-additional"></a>

Screenshots zu den [Epics](#provision-aws-service-catalog-products-using-github-actions-epics) finden Sie im Ordner **Images im Repo** dieses Patterns GitHub . Die folgenden Screenshots sind verfügbar:
+ [AWS Service Catalog Portfolio, Bereich Verwaltung](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_portfolio.png)
+ [AWS Service Catalog Produkt, Bereich Verwaltung](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product.png)
+ [AWS Service Catalog Produkt, User/Provisioning Abschnitt](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product_User.png)

# Stellen Sie IAM-Rollen mit den geringsten Rechten bereit, indem Sie eine Rollenautomatenlösung bereitstellen
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution"></a>

*Benjamin Morris, Nima Fotouhi, Aman Kaur Gandhi und Tschad Moon, Amazon Web Services*

## Zusammenfassung
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-summary"></a>

Rollenberechtigungen mit übermäßigem Geltungsbereich AWS Identity and Access Management (IAM) für Pipelines können zu unnötigen Risiken für ein Unternehmen führen. Entwickler gewähren manchmal während der Entwicklung weitreichende Berechtigungen, vernachlässigen es jedoch, nach der Fehlerbehebung im Code die Zugriffsrechte einzuschränken. Dies führt zu Problemen, wenn leistungsstarke Rollen ohne geschäftliche Notwendigkeit vorhanden sind und möglicherweise noch nie von einem Sicherheitsingenieur überprüft wurden.

Dieses Muster bietet eine Lösung für dieses Problem: der Rollenverkaufsautomat (RVM). Mithilfe eines sicheren und zentralisierten Bereitstellungsmodells demonstriert das RVM, wie IAM-Rollen mit den geringsten Rechten für die Pipelines einzelner GitHub Repositorys mit minimalem Aufwand für Entwickler bereitgestellt werden können. Da es sich bei der RVM um eine zentrale Lösung handelt, können Sie Ihre Sicherheitsteams als Prüfer konfigurieren, die Änderungen genehmigen müssen. Dieser Ansatz ermöglicht es der Sicherheitsabteilung, zu viele Anfragen an Pipeline-Rollen zurückzuweisen. 

Die RVM verwendet Terraform-Code als Eingabe und generiert Pipeline-bereite IAM-Rollen als Ausgabe. Die erforderlichen Eingaben sind die AWS-Konto ID, der GitHub Repository-Name und die Berechtigungsrichtlinie. Die RVM verwendet diese Eingaben, um die Vertrauensrichtlinie und die Berechtigungsrichtlinie der Rolle zu erstellen. Die daraus resultierende Vertrauensrichtlinie ermöglicht es dem angegebenen GitHub Repository, die Rolle zu übernehmen und sie für Pipeline-Operationen zu verwenden.

Die RVM verwendet eine IAM-Rolle (die beim Bootstrap konfiguriert wurde). Diese Rolle ist berechtigt, role-provisioning-role in jedem Konto der Organisation eine anzunehmen. Die Rolle wird entweder über AWS Control Tower Account Factory for Terraform (AFT) oder konfiguriert. AWS CloudFormation StackSets Dies role-provisioning-roles sind die Rollen, die tatsächlich die Pipeline-Rollen für Entwickler erstellen.

## Voraussetzungen und Einschränkungen
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ Eine GitHub Organisation, die zur Bereitstellung von Infrastructure as Code (IaC) im Rahmen von GitHub Aktionen verwendet wird. (GitHub Enterprise/Premium/Ultimatesind *nicht***** erforderlich.)
+ Eine AWS Umgebung mit mehreren Konten. Diese Umgebung muss nicht Teil davon AWS Organizations sein.
+ Ein Mechanismus für die Bereitstellung einer IAM-Rolle in allen Bereichen AWS-Konten (z. B. AFT oder CloudFormation StackSets).
+ Terraform Version 1.3 oder höher wurde [installiert](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) und konfiguriert.
+ [https://github.com/hashicorp/terraform-provider-aws/releases](https://github.com/hashicorp/terraform-provider-aws/releases)

**Einschränkungen**
+ Der Code dieses Musters ist spezifisch für GitHub Actions und Terraform. Die allgemeinen Konzepte des Musters können jedoch in anderen Continuous Integration and Delivery (CI/CD) -Frameworks wiederverwendet werden.
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie unter [AWS Dienste nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-architecture"></a>

Das folgende Diagramm veranschaulicht den Arbeitsablauf für dieses Muster.

![\[Workflow zur Automatisierung der Erstellung und Bereitstellung von IAM-Rollen mithilfe von GitHub Aktionen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/215c590e-0c84-411d-be6e-b1739f1e19d2/images/82fcdc9f-9576-4e7c-b7fe-b45046ba79d2.png)


Der Arbeitsablauf für die typische Verwendung der Rolle Verkaufsautomat besteht aus den folgenden Schritten:

1. Ein Entwickler überträgt Code, der Terraform-Code für eine neu angeforderte IAM-Rolle enthält, in das RVM-Repository. GitHub Diese Aktion löst die RVM-Aktionspipeline aus. GitHub 

1. Die Pipeline verwendet eine OpenID Connect (OIDC) -Vertrauensrichtlinie, um die Rolle der RVM-Rollenübernahme zu übernehmen.

1. Bei der Ausführung der RVM-Pipeline übernimmt sie die RVM-Workflow-Rolle in dem Konto, in dem sie die neue IAM-Rolle des Entwicklers bereitstellt. (Die RVM-Workflow-Rolle wurde mithilfe von AFT oder bereitgestellt.) CloudFormation StackSets

1. Die RVM erstellt die IAM-Rolle des Entwicklers mit den entsprechenden Berechtigungen und der entsprechenden Vertrauensstellung, sodass die Rolle von anderen Anwendungspipelines übernommen werden kann.

1. App-Entwickler können ihre App-Pipelines so konfigurieren, dass sie diese vom RVM bereitgestellte Rolle übernehmen.

Die erstellte Rolle umfasst die vom Entwickler angeforderten Berechtigungen und eine Richtlinie. `ReadOnlyAccess` Die Rolle kann nur von Pipelines übernommen werden, die für den `main` Zweig des vom Entwickler angegebenen Repositorys ausgeführt werden. Dieser Ansatz trägt dazu bei, dass Branch-Schutz und Überprüfungen erforderlich sein können, um die Rolle nutzen zu können.

**Automatisierung und Skalierung**

Bei den Berechtigungen mit den geringsten Rechten ist für jede Rolle, die bereitgestellt wird, besondere Aufmerksamkeit erforderlich. Dieses Modell reduziert die Komplexität, die für die Erstellung dieser Rollen erforderlich ist, und ermöglicht es Entwicklern, die Rollen zu erstellen, die sie benötigen, ohne dass viel zusätzliches Lernen oder Aufwand erforderlich ist.

## Tools
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-tools"></a>

**AWS-Services**
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.

**Andere Tools**
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem. Es beinhaltet die Möglichkeit, ein [Organisationskonto](https://docs.github.com/en/get-started/learning-about-github/types-of-github-accounts#organization-accounts) zu erstellen.
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) ist eine CI/CD-Plattform (Continuous Integration and Continuous Delivery), die eng in Repositorys integriert GitHub ist. Sie können GitHub Actions verwenden, um Ihre Build-, Test- und Bereitstellungspipeline zu automatisieren.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [role-vending-machine](https://github.com/aws-samples/role-vending-machine)Repository verfügbar.

## Best Practices
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-best-practices"></a>
+ **Machen Sie den richtigen Weg einfach und den falschen Weg schwer** — Machen Sie es einfach, das Richtige zu tun. Wenn Entwickler Probleme mit dem RVM-Bereitstellungsprozess haben, versuchen sie möglicherweise, Rollen auf andere Weise zu erstellen, wodurch der zentrale Charakter von RVM untergraben wird. Stellen Sie sicher, dass Ihr Sicherheitsteam klare Anweisungen zur sicheren und effektiven Verwendung der RVM gibt.

  Sie sollten es Entwicklern auch schwer machen, das Falsche zu tun. Verwenden Sie Dienststeuerungsrichtlinien (SCPs) oder Berechtigungsgrenzen, um einzuschränken, welche Rollen andere Rollen erstellen können. Dieser Ansatz kann dazu beitragen, die Rollenerstellung auf RVM und andere vertrauenswürdige Quellen zu beschränken.
+ **Nennen Sie gute Beispiele** — Es ist unvermeidlich, dass einige Entwickler bestehende Rollen im RVM-Repository als informelle Vorlagen für die Erteilung von Berechtigungen für ihre neuen Rollen anpassen. Wenn Sie über Beispiele mit den geringsten Berechtigungen verfügen, von denen sie kopieren können, kann das Risiko verringert werden, dass Entwickler umfassende Berechtigungen mit Platzhaltern anfordern. Wenn Sie mit Rollen mit hohen Rechten und vielen Platzhaltern beginnen, kann sich dieses Problem mit der Zeit noch vergrößern.
+ **Benennungskonventionen und -bedingungen verwenden** — Selbst wenn ein Entwickler nicht alle Ressourcennamen kennt, die seine Anwendung erstellen wird, sollte er dennoch die Rollenberechtigungen mithilfe einer Namenskonvention einschränken. Wenn sie beispielsweise Amazon S3 S3-Buckets erstellen, könnte der Wert ihres Ressourcenschlüssels `arn:aws:s3:::myorg-myapp-dev-*` so aussehen, dass ihre Rolle keine Berechtigungen hat, die über Buckets hinausgehen, die diesem Namen entsprechen. Die Durchsetzung der Namenskonvention durch eine IAM-Richtlinie hat den zusätzlichen Vorteil, dass die Einhaltung der Namenskonvention verbessert wird. Diese Verbesserung ist darauf zurückzuführen, dass nicht übereinstimmende Ressourcen nicht erstellt werden dürfen.
+ **Pull-Request-Reviews (PR) erforderlich** — Der Vorteil der RVM-Lösung besteht darin, dass sie einen zentralen Ort schafft, an dem neue Pipeline-Rollen überprüft werden können. Dieses Design ist jedoch nur dann sinnvoll, wenn es Schutzmaßnahmen gibt, die sicherstellen, dass sicherer, qualitativ hochwertiger Code an die RVM übergeben wird. Schützt die Branches, die zum Bereitstellen von Code verwendet werden (z. B.`main`), vor direkten Pushs und erfordert Genehmigungen für alle Merge-Anfragen, die auf sie abzielen.
+ **Schreibgeschützte Rollen konfigurieren** — Standardmäßig stellt die RVM eine `readonly` Version jeder angeforderten Rolle bereit. Diese Rolle kann in CI/CD Pipelines verwendet werden, die keine Daten schreiben, z. B. in einem Pipeline-Workflow. `terraform plan` Dieser Ansatz trägt dazu bei, unerwünschte Änderungen zu verhindern, wenn sich ein schreibgeschützter Workflow schlecht verhält.

  Standardmäßig ist die AWS verwaltete `ReadOnlyAccess` Richtlinie sowohl den Rollen mit Schreibzugriff als auch den Rollen mit Lese-/Schreibzugriff zugeordnet. Diese Richtlinie reduziert den Bedarf an Wiederholungen bei der Festlegung der erforderlichen Berechtigungen, kann jedoch für einige Organisationen zu freizügig sein. Wenn Sie möchten, können Sie die Richtlinie aus dem Terraform-Code entfernen.
+ **Mindestberechtigungen gewähren** — Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die Mindestberechtigungen, die zur Ausführung einer Aufgabe erforderlich sind. Weitere Informationen finden Sie in der IAM-Dokumentation unter [Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-epics"></a>

### Bereite die Umgebung vor
<a name="prepare-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopieren Sie das Beispiel-Repository in Ihre GitHub Organisation. | [Klonen](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) Sie das Repository dieses [Musters](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) oder teilen Sie dieses Repository auf Ihre GitHub Organisation ab, sodass Sie es an Ihre Bedürfnisse anpassen können.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps Ingenieur | 
| Ermitteln Sie den AWS-Konto für das RVM. | Ermitteln Sie, welche Infrastrukturbereitstellung für die RVM verwendet werden AWS-Konto soll. Verwenden Sie nicht das Management- oder Root-Konto. | Cloud-Architekt | 
| (Optional) Erlauben Sie, dass die Pipelines der Organisation erstellt PRs werden. | Dieser Schritt ist nur erforderlich, wenn Sie die Erstellung PRs des `generate_providers_and_account_vars` Workflows zulassen möchten.Gehen Sie wie folgt vor PRs, damit die Pipelines Ihrer Organisation erstellt werden können:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html)Weitere Informationen finden Sie in der GitHub Dokumentation unter [ GitHub Aktionseinstellungen für ein Repository verwalten](https://docs.github.com/en/enterprise-server@3.10/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests). | DevOps Ingenieur | 
| Gewähren Sie dem RVM-Konto nur Leseberechtigungen. | Erstellen Sie in Ihrem Verwaltungskonto eine Delegierungsrichtlinie, die Ihrem RVM-Konto nur Leseberechtigungen gewährt. Auf diese Weise können Ihre GitHub RVM-Workflows dynamisch eine Liste der Konten Ihrer AWS Organisation abrufen, wenn das Skript ausgeführt wird. `generate_providers_and_account_vars.py` Verwenden Sie den folgenden Code und `<YOUR RVM Account ID>` ersetzen Sie ihn durch die AWS-Konto ID, die Sie in Schritt 2 ausgewählt haben:<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "Statement",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "AWS": "arn:aws:iam::<YOUR RVM Account ID>:root"<br />      },<br />      "Action": [<br />        "organizations:ListAccounts",<br />        "organizations:DescribeOrganization",<br />        "organizations:DescribeOrganizationalUnit",<br />        "organizations:ListRoots",<br />        "organizations:ListAWSServiceAccessForOrganization",<br />        "organizations:ListDelegatedAdministrators"<br />      ],<br />      "Resource": "*"<br />    }<br />  ]<br />}</pre> | Cloud-Administrator | 
| Aktualisieren Sie die Standardwerte aus dem Beispiel-Repository. | Gehen Sie wie folgt vor, um die RVM für den Betrieb in Ihrer spezifischen Umgebung zu konfigurieren: AWS-Region[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps Ingenieur | 

### Infrastruktur initialisieren
<a name="initialize-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bootstrap für das RVM-Repo. | Dieser Schritt ist erforderlich, um die OIDC-Vertrauens- und IAM-Rollen zu erstellen, die von der RVM-Pipeline selbst verwendet werden, sodass sie den Betrieb aufnehmen und andere Rollen verkaufen kann.Führen Sie im Kontext Ihres RVM-Kontos manuell einen `terraform apply` Befehl aus dem Verzeichnis aus. `scripts/bootstrap` Geben Sie alle erforderlichen Werte auf der Grundlage der Variablendokumentation an. | DevOps Ingenieur | 

### Operationen konfigurieren
<a name="configure-operations"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die `github-workflow-rvm-readonly` Rollen `github-workflow-rvm` und für alle Konten bereit. | Wählen Sie eine Bereitstellungsmethode, die den Praktiken Ihres Unternehmens entspricht, z. B. AFT oder StackSets. Verwenden Sie diese Methode, um die beiden IAM-Rollen in der `scripts/assumed_role/main.tf` Datei (Standardnamen `github-workflow-rvm` und`github-workflow-rvm-readonly`) für jedes Konto bereitzustellen, für das die RVM Pipeline-Rollen erstellen soll.Diese IAM-Rollen verfügen über Vertrauensrichtlinien, die es der Rolle des RVM-Kontos (oder einer gleichwertigen Rolle) ermöglichen, diese Rolle zu übernehmen. `readonly` Die Rollen verfügen außerdem über IAM-Berechtigungsrichtlinien, die es ihnen ermöglichen, übereinstimmende Rollen zu lesen und zu schreiben (sofern sie nicht die `readonly` Rolle verwenden). `github-workflow-role-*` | AWS-Administrator | 
| Führen Sie den `generate_providers_and_account_vars` Workflow aus. | Gehen Sie wie folgt vor, um Ihre RVM so zu konfigurieren, dass sie bereit ist, Pipeline-Rollen zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html)Nach Abschluss des Workflows ist die RVM bereit für:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Ich habe mit dem RVM eine Rolle erstellt, kann sie aber GitHub nicht übernehmen. | Stellen Sie sicher, dass der Name des GitHub Repositorys mit dem Namen übereinstimmt, der dem `github_workflow_roles` Modul zur Verfügung gestellt wurde. Rollen sind so begrenzt, dass sie nur von einem Repository übernommen werden können.Stellen Sie auf ähnliche Weise sicher, dass der in der GitHub Pipeline verwendete Branch mit dem Namen des Branches übereinstimmt, der dem Modul zur Verfügung gestellt wurde. `github_workflow_roles` In der Regel können von RVM erstellte Rollen mit Schreibberechtigungen nur von Workflows verwendet werden, die auf den `main` Branch beschränkt sind (d. h. Bereitstellungen, aus denen sie stammen). `main` | 
| Meine schreibgeschützte Rolle kann ihre Pipeline nicht ausführen, da ihr die Berechtigungen zum Lesen einer bestimmten Ressource fehlen. | Die `ReadOnlyAccess` Richtlinie bietet zwar umfangreiche Leseberechtigungen, einige Leseaktionen (z. B. bestimmte Aktionen) sind in der Richtlinie jedoch nicht vorgesehen. AWS Security Hub CSPM Sie können spezifische Aktionsberechtigungen hinzufügen, indem Sie den `inline_policy_readonly` Parameter des `github-workflow-roles` Moduls verwenden. | 

## Zugehörige Ressourcen
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-resources"></a>
+ [Bewährte Methoden für die Verwendung AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)
+ [Organisieren Sie Ihre AWS Umgebung mithilfe mehrerer Konten](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html)
+ [Überblick über AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)
+ [Bewährte Methoden für Richtlinien](https://docs.aws.amazon.com/codepipeline/latest/userguide/security_iam_service-with-iam-policy-best-practices.html) 

## Zusätzliche Informationen
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-additional"></a>

** GitHub Umgebungen verwenden**

GitHub Umgebungen sind ein alternativer Ansatz zu branchenbasierten Einschränkungen des Rollenzugriffs. Wenn Sie lieber eine GitHub Umgebung verwenden möchten, finden Sie im Folgenden ein Beispiel für die Syntax für eine zusätzliche Bedingung in der IAM-Vertrauensrichtlinie. Diese Syntax gibt an, dass die Rolle nur verwendet werden kann, wenn die GitHub Aktion in der `Production` Umgebung ausgeführt wird.

```
"StringLike": {
    "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:environment:Production"
}
```

Die Beispielsyntax verwendet die folgenden Platzhalterwerte:
+ `octo-org`ist der Name der GitHub Organisation.
+ `octo-repo`ist der Name des Repositorys.
+ `Production`ist der spezifische GitHub Umgebungsname.

# Veröffentlichen Sie CloudWatch Amazon-Metriken in einer CSV-Datei
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Zusammenfassung
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-summary"></a>

Dieses Muster verwendet ein Python-Skript, um CloudWatch Amazon-Metriken abzurufen und die Metrikinformationen zur besseren Lesbarkeit in eine Datei mit kommagetrennten Werten (CSV) zu konvertieren. Das Skript verwendet den AWS-Service, dessen Metriken abgerufen werden sollen, als erforderliches Argument. Sie können die AWS-Region und das AWS-Anmeldeinformationsprofil als optionale Argumente angeben. Wenn Sie diese Argumente nicht angeben, verwendet das Skript die Standardregion und das Standardprofil, die für die Workstation konfiguriert sind, auf der das Skript ausgeführt wird. Nachdem das Skript ausgeführt wurde, generiert und speichert es eine CSV-Datei im selben Verzeichnis.

Im Abschnitt *Anlagen* finden Sie das Skript und die zugehörigen Dateien, die mit diesem Muster bereitgestellt werden.

## Voraussetzungen und Einschränkungen
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-prereqs"></a>

**Voraussetzungen**
+ Python 3.x
+ AWS-Befehlszeilenschnittstelle (AWS Command Line Interface, AWS CLI)

**Einschränkungen**

Das Skript unterstützt derzeit die folgenden AWS-Services:
+ AWS Lambda
+ Amazon Elastic Compute Cloud (Amazon EC2)
  + Standardmäßig erfasst das Skript keine Volumenmetriken für Amazon Elastic Block Store (Amazon EBS). Um Amazon EBS-Metriken zu sammeln, müssen Sie die angehängte `metrics.yaml` Datei ändern.
+ Amazon Relational Database Service (Amazon RDS)
  + Das Skript unterstützt Amazon Aurora jedoch nicht.
+ Application Load Balancer
+ Network Load Balancer
+ Amazon API Gateway

## Tools
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-tools"></a>
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ist ein Überwachungsservice, der sich an DevOps Ingenieure, Entwickler, Techniker für die Zuverlässigkeit von Standorten (SREs) und IT-Manager richtet. CloudWatch bietet Daten und umsetzbare Erkenntnisse, die Ihnen helfen, Ihre Anwendungen zu überwachen, auf systemweite Leistungsänderungen zu reagieren, die Ressourcennutzung zu optimieren und einen einheitlichen Überblick über den Betriebsstatus zu erhalten. CloudWatch sammelt Überwachungs- und Betriebsdaten in Form von Protokollen, Metriken und Ereignissen und bietet eine einheitliche Ansicht der AWS-Ressourcen, -Anwendungen und -Services, die auf AWS- und lokalen Servern ausgeführt werden.

## Epen
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-epics"></a>

### Installieren und konfigurieren Sie die Voraussetzungen
<a name="install-and-configure-the-prerequisites"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Voraussetzungen. | Führen Sie den folgenden Befehl aus:<pre>$ pip3 install -r requirements.txt</pre> | Developer | 
| Konfigurieren Sie die AWS CLI. | Führen Sie den folgenden Befehl aus: <pre>$ aws configure</pre> | Developer | 

### Das Python-Skript konfigurieren
<a name="configure-the-python-script"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Öffnen Sie das Skript. | Um die Standardkonfiguration des Skripts zu ändern, öffnen Sie`metrics.yaml`. | Developer | 
| Stellen Sie den Zeitraum für das Skript ein. | Dies ist der Zeitraum, der abgerufen werden soll. Der Standardzeitraum beträgt 5 Minuten (300 Sekunden). Sie können den Zeitraum ändern, beachten Sie jedoch die folgenden Einschränkungen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/publish-amazon-cloudwatch-metrics-to-a-csv-file.html)Andernfalls gibt der API-Vorgang keine Datenpunkte zurück. | Developer | 
| Legen Sie die Stunden für das Skript fest. | Dieser Wert gibt an, wie viele Stunden an Messwerten Sie abrufen möchten. Die Standardeinstellung ist 1 Stunde. Um Messwerte für mehrere Tage abzurufen, geben Sie den Wert in Stunden an. Geben Sie beispielsweise für 2 Tage 48 an. | Developer | 
| Ändern Sie die Statistikwerte für das Skript.  | (Optional) Der globale Statistikwert ist. Er wird verwendet`Average`, wenn Metriken abgerufen werden, denen kein bestimmter Statistikwert zugewiesen ist. Das Skript unterstützt die Statistikwerte `Maximum``SampleCount`, und`Sum`. | Developer | 

### Führen Sie das Python-Skript aus
<a name="run-the-python-script"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie das Skript aus. | Verwenden Sie den folgenden Befehl: <pre>$ python3 cwreport.py <service> </pre>Führen Sie den folgenden Befehl aus, um eine Liste der Dienstwerte `region ` und der optionalen `profile ` Parameter anzuzeigen:<pre> $ python3 cwreport.py -h</pre>Weitere Informationen zu den optionalen Parametern finden Sie im Abschnitt *Zusätzliche Informationen*. | Developer | 

## Zugehörige Ressourcen
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-resources"></a>
+ [Konfiguration der AWS-CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Verwenden von CloudWatch Amazon-Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)
+ [ CloudWatch Amazon-Dokumentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
+ [EC2 CloudWatch Metriken](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics)
+ [AWS Lambda Lambda-Metriken](https://docs.aws.amazon.com/lambda/latest/operatorguide/logging-metrics.html)
+ [Amazon RDS-Metriken](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html#rds-cw-metrics-instance)
+ [Metriken für den Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html)
+ [Metriken für den Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html)
+ [Amazon API Gateway Gateway-Metriken](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html)

## Zusätzliche Informationen
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-additional"></a>

**Verwendung von Skripten**

```
$ python3 cwreport.py -h
```

**Beispiel für eine Syntax**

```
python3 cwreport.py <service> <--region=Optional Region> <--profile=Optional credential profile>
```

**Parameter**
+ **service (erforderlich)** ‒ Der Dienst, für den Sie das Skript ausführen möchten. Das Skript unterstützt derzeit diese Dienste: AWS Lambda, Amazon, Amazon RDS EC2, Application Load Balancer, Network Load Balancer und API Gateway.
+ **Region (optional)** ‒ Die AWS-Region, aus der Metriken abgerufen werden sollen. Die Standardregion ist`ap-southeast-1`.
+ **profile (optional)** ‒ Das zu verwendende AWS-CLI benannte Profil. Wenn dieser Parameter nicht angegeben ist, wird das standardmäßig konfigurierte Anmeldeinformationsprofil verwendet.

**Beispiele**
+ So verwenden Sie die Standardregion `ap-southeast-1` und die konfigurierten Standardanmeldedaten zum Abrufen von EC2 Amazon-Metriken: `$ python3 cwreport.py ec2`
+ So geben Sie eine Region an und rufen API-Gateway-Metriken ab: `$ python3 cwreport.py apigateway --region us-east-1`
+ So geben Sie ein AWS-Profil an und rufen EC2 Amazon-Metriken ab: `$ python3 cwreport.py ec2 --profile testprofile`
+ So geben Sie sowohl die Region als auch das Profil zum Abrufen von EC2 Amazon-Metriken an: `$ python3 cwreport.py ec2 --region us-east-1 --profile testprofile`

## Anlagen
<a name="attachments-0a915a9d-2eef-4da1-8283-3cf4a115b3b2"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/0a915a9d-2eef-4da1-8283-3cf4a115b3b2/attachments/attachment.zip)

# Entfernen Sie EC2 Amazon-Einträge AWS Managed Microsoft AD mithilfe AWS-Konten von AWS Lambda Automatisierung
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad"></a>

*Dr. Rahul Sharad Gaikwad und Tamilselvan P, Amazon Web Services*

## Zusammenfassung
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-summary"></a>

Active Directory (AD) ist ein Microsoft-Skripttool, das Domäneninformationen und Benutzerinteraktionen mit Netzwerkdiensten verwaltet. Es wird häufig von Managed Services Providern (MSPs) verwendet, um die Anmeldeinformationen und Zugriffsberechtigungen von Mitarbeitern zu verwalten. Da AD-Angreifer mit inaktiven Konten versuchen können, sich in ein Unternehmen zu hacken, ist es wichtig, inaktive Konten zu finden und sie im Rahmen eines routinemäßigen Wartungsplans zu deaktivieren. Mit AWS Directory Service for Microsoft Active Directory können Sie Microsoft Active Directory als verwalteten Dienst ausführen. Dieses Muster kann Ihnen helfen, die AWS Lambda Automatisierung so zu konfigurieren, dass inaktive Konten schnell gefunden und entfernt werden.

Wenn die folgenden Szenarien auf Ihr Unternehmen zutreffen, kann Ihnen dieses Muster helfen:
+ **Zentralisierte AD-Verwaltung** — Wenn Ihr Unternehmen mehrere hat AWS-Konten, von denen jedes über eine eigene AD-Bereitstellung verfügt, kann es schwierig sein, Benutzerkonten und Zugriffsberechtigungen für alle Konten einheitlich zu verwalten. Mit einer kontenübergreifenden AD-Bereinigungslösung können Sie inaktive Konten aus allen AD-Instanzen zentral deaktivieren oder entfernen.
+ **AD-Restrukturierung oder -Migration** — Wenn Ihr Unternehmen plant, seine AD-Bereitstellung umzustrukturieren oder zu migrieren, kann Ihnen eine kontenübergreifende AD-Bereinigungslösung dabei helfen, die Umgebung vorzubereiten. Die Lösung kann Ihnen helfen, unnötige oder inaktive Konten zu entfernen, den Migrationsprozess zu vereinfachen und potenzielle Konflikte oder Probleme zu reduzieren.

Wenn Sie dieses Muster verwenden, können Sie die folgenden Vorteile nutzen:
+ Verbessern Sie die Datenbank- und Serverleistung und beheben Sie Sicherheitslücken, die auf inaktive Konten zurückzuführen sind.
+ Wenn Ihr AD-Server in der Cloud gehostet wird, kann das Entfernen inaktiver Konten auch die Speicherkosten senken und gleichzeitig die Leistung verbessern. Ihre monatlichen Rechnungen könnten sinken, da sowohl die Bandbreitenkosten als auch die Rechenressourcen sinken können.
+ Halten Sie potenzielle Angreifer mit einem sauberen Active Directory in Schach.

## Voraussetzungen und Einschränkungen
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Elternkonto AWS-Konto und ein oder mehrere Kinderkonten. In diesem Muster wird Active Directory für ein *übergeordnetes Konto* erstellt. *Untergeordnete Konten* hosten Windows-Server und werden über das übergeordnete Konto Active Directory miteinander verbunden.
+ Git [wurde auf einer lokalen Workstation installiert](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) und konfiguriert.
+ Terraform [wurde auf einer lokalen Workstation installiert](https://learn.hashicorp.com/tutorials/terraform/install-cli) und konfiguriert.
+ AWS Managed Microsoft AD Verzeichnis, das im übergeordneten Konto konfiguriert und für alle untergeordneten Konten gemeinsam genutzt wird. Weitere Informationen finden Sie im *AWS Directory Service Administratorhandbuch* unter [Tutorial: Teilen Ihres AWS Managed Microsoft AD Verzeichnisses für einen nahtlosen EC2 Domänenbeitritt](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html).
+ Eine Virtual Private Cloud (VPC) -Peering-Verbindung oder AWS Transit Gateway Verbindung, die zwischen der VPC von AWS Directory Service (übergeordnetem Konto) und der VPC der Amazon Elastic Compute Cloud (Amazon EC2) -Instances (untergeordnete Konten) verfügbar ist. Weitere Informationen finden [Sie unter Konfigurieren einer VPC-Peering-Verbindung zwischen dem Verzeichnisbesitzer und dem Directory-Consumer-Konto](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html#step1_configure_owner_account_vpc) im *AWS Directory Service Administratorhandbuch*.
+ Ein Windows-Computer, der mit dem `EC2WindowsUserdata` Skript für alle Eltern- und Kinderkonten konfiguriert wurde. Die Skriptdatei ist im Stammverzeichnis des [Code-Repositorys](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/tree/main/multiple-account-cleanup) dieses Musters verfügbar.
+ Eine kontoübergreifende Rolle AWS Identity and Access Management (IAM), die für jedes untergeordnete Konto verfügbar ist und mit einer Vertrauensrichtlinie konfiguriert ist, die die Verwendung einer AWS Lambda Funktion aus dem übergeordneten Konto ermöglicht. Weitere Informationen finden Sie unter [Senden und Empfangen von Ereignissen zwischen AWS-Konten EventBridge in Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEvents-CrossAccountEventDelivery.html) im * EventBridge Amazon-Benutzerhandbuch*.
+ Die folgenden geheimen Werte sind im AWS Systems Manager Parameter Store des übergeordneten Kontos verfügbar:
  + `domainJoinUser`— Benutzername des Verzeichnisdienstes
  + `domainJoinPassword`— Passwort des Verzeichnisdienstes

  Weitere Informationen zu Geheimnissen finden Sie unter [Create an AWS Secrets Manager Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) im *AWS Secrets Manager Benutzerhandbuch*.

**Einschränkungen**
+ Das Erstellen einer Ressource in einem Kinderkonto ist mit Terraform nicht automatisiert. Sie müssen die folgenden Ressourcen manuell mithilfe von erstellen: AWS-Managementkonsole
  +  EventBridge Amazon-Regel zum Senden der EC2 Kündigungsereignisse von Amazon an das übergeordnete Konto
  + Erstellung einer EC2 kontoübergreifenden Amazon-Rolle im Kinderkonto mit Vertrauensrichtlinie
  + VPC-Peering oder Transit Gateway Gateway-Verbindung
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ [Terraform Version 1.1.9 oder höher](https://developer.hashicorp.com/terraform/install)
+ [Terraform AWS Provider Version 3.0 oder höher](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Architektur
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-architecture"></a>

Das folgende Diagramm zeigt die High-Level-Architektur der Lösung.

![\[Prozess zur Verwendung von Lambda-Automatisierung zum Entfernen von EC2 Einträgen aus allen AWS-Konten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c397d873-e10d-44b6-8352-5f1380ab94ca/images/bd6c80a7-e490-47db-bd47-165314e1ea8a.png)


Das Architekturdiagramm veranschaulicht den folgenden Prozess:

1. Bei Kinderkonten erfasst die EventBridge Regel alle EC2 Kündigungsereignisse von Amazon. Die Regel sendet die Ereignisse, EventBridge die im übergeordneten Konto vorhanden sind.

1.  EventBridge Sammelt aus dem übergeordneten Konto alle Ereignisse und enthält die Regel zum Auslösen der Lambda-Funktion`ADcleanup-Lambda`.

1. Das übergeordnete Konto empfängt alle Kündigungsereignisse vom Eltern- oder Kinderkonto und löst die Lambda-Funktion aus.

1. Die Lambda-Funktion ruft Amazon EC2 Auto Scaling Scaling-Gruppen mithilfe des Python-Boto-Moduls auf und ruft die zufällige Instanz-ID ab. Die Instanz-ID wird verwendet, um Systems Manager Manager-Befehle auszuführen.

1. Die Lambda-Funktion ruft Amazon EC2 mithilfe des Boto-Moduls erneut auf. Die Lambda-Funktion ruft die privaten IP-Adressen der laufenden Windows-Server ab und speichert die Adressen in einer temporären Variablen. In den Schritten 5.1 und 5.2 werden die laufenden EC2 Windows-Instanzen von untergeordneten Konten erfasst.

1. Die Lambda-Funktion ruft Systems Manager erneut auf, um die Computerinformationen abzurufen, mit denen eine Verbindung hergestellt ist. AWS Directory Service

1. Ein AWS Systems Manager Dokument hilft dabei, den PowerShell Befehl auf Amazon EC2 Windows-Servern auszuführen, um die privaten IP-Adressen der Computer abzurufen, die mit AD verbunden sind. (Das Systems Manager Manager-Dokument verwendet die Instanz-ID, die in Schritt 4 abgerufen wurde.)

1. Der Benutzername und die Kennwörter der AD-Domäne werden im AWS Systems Manager Parameterspeicher gespeichert. AWS Lambda und Systems Manager rufen Parameter Store auf und rufen die Werte für Benutzername und Passwort ab, die für die Verbindung mit AD verwendet werden sollen.

1. Mithilfe des Systems Manager Manager-Dokuments wird das PowerShell Skript auf dem Amazon EC2 Windows-Server unter Verwendung der zuvor in Schritt 4 abgerufenen Instance-ID ausgeführt.

1. Amazon EC2 stellt mithilfe AWS Directory Service von PowerShell Befehlen eine Verbindung her und entfernt die Computer, die nicht verwendet oder inaktiv sind.

## Tools
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-tools"></a>

**AWS Dienstleistungen**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)bietet mehrere Möglichkeiten, Microsoft Active Directory (AD) mit anderen AWS-Services wie Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) für SQL Server und Amazon FSx für Windows File Server zu verwenden.
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)ermöglicht Ihren verzeichnissensitiven Workloads und AWS Ressourcen die Verwendung von Microsoft Active Directory in der. AWS Cloud
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden. Mit IAM können Sie festlegen, wer oder was auf Dienste und Ressourcen zugreifen kann AWS, detaillierte Berechtigungen zentral verwalten und den Zugriff analysieren, um die Berechtigungen zu verfeinern. AWS
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt AWS Cloud werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten.
+ [AWS Systems Manager Dokumente](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) definieren die Aktionen, die Systems Manager auf Ihren verwalteten Instanzen ausführt. Systems Manager umfasst mehr als 100 vorkonfigurierter Dokumente, die Sie verwenden können, indem Sie zur Laufzeit Parameter angeben. 
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) ist eine Funktion von AWS Systems Manager und bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)ist ein Automatisierungs- und Konfigurationsverwaltungsprogramm von Microsoft, das unter Windows, Linux und macOS läuft.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [aws-lambda-ad-cleanup-terraform-samples](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/tree/main/multiple-account-cleanup) verfügbar.

## Best Practices
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-best-practices"></a>
+ **Automatisch Domains beitreten.**Wenn Sie eine Windows-Instanz starten, die Teil einer Directory Service Domäne sein soll, treten Sie der Domäne während der Instanzerstellung bei, anstatt die Instanz später manuell hinzuzufügen. Um einer Domäne automatisch beizutreten, wählen Sie beim Starten einer neuen Instanz das richtige **Verzeichnis aus der Dropdownliste zum Domänenbeitrittsverzeichnis** aus. Weitere Informationen finden Sie unter [Nahtloses Hinzufügen einer Amazon EC2 Windows-Instance zu Ihrem AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) im *Directory Service Administratorhandbuch*.
+ **Löschen Sie ungenutzte Konten.**Es ist üblich, in AD Konten zu finden, die noch nie verwendet wurden. Wie deaktivierte oder inaktive Konten, die im System verbleiben, können vernachlässigte, ungenutzte Konten Ihr AD-System verlangsamen oder Ihr Unternehmen anfällig für Datenschutzverletzungen machen.
+ **Automatisieren Sie Active Directory-Säuberungen.**Um Sicherheitsrisiken zu minimieren und zu verhindern, dass veraltete Konten die AD-Leistung beeinträchtigen, sollten AD-Bereinigungen in regelmäßigen Abständen durchgeführt werden. Sie können die meisten AD-Verwaltungs- und Bereinigungsaufgaben erledigen, indem Sie Skripts schreiben. Zu den Aufgaben gehören beispielsweise das Entfernen deaktivierter und inaktiver Konten, das Löschen leerer und inaktiver Gruppen und das Auffinden abgelaufener Benutzerkonten und Kennwörter.

## Epen
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-epics"></a>

### Richten Sie Kinderkonten ein
<a name="set-up-child-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine kontoübergreifende Rolle im Kinderkonto. | Gehen Sie wie folgt vor, um eine kontoübergreifende Rolle in einem Kinderkonto zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 
| Erstellen Sie eine Ereignisregel im Kinderkonto. | Gehen Sie wie folgt vor, um für jedes Kinderkonto eine EventBridge Regel zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Weitere Informationen finden Sie im * EventBridge Amazon-Benutzerhandbuch unter Regeln erstellen, die auf Ereignisse EventBridge in Amazon* [reagieren](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html). | DevOps Ingenieur | 
| Erstellen Sie eine EC2 Instanz und treten Sie AD bei. | Gehen Sie wie folgt vor, um eine EC2 Instanz für Windows zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 

### Richten Sie die lokale Workstation ein
<a name="set-up-the-local-workstation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Projektordner und fügen Sie die Dateien hinzu. | Gehen Sie wie folgt vor, um das Repository zu klonen und einen Projektordner zu erstellen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 
| Erstellen Sie die `adcleanup.zip` Datei. | Führen Sie den folgenden Befehl aus, um die `lambda_function.py` Datei zu komprimieren:`zip -r adcleanup.zip lambda_function.py` | DevOps Ingenieur | 

### Stellen Sie die Zielarchitektur mithilfe der Terraform-Konfiguration bereit
<a name="provision-the-target-architecture-using-the-terraform-configuration"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Geben Sie Werte für die Terraform-Variablen an. | Geben Sie für das untergeordnete Konto Werte für die folgenden `arn` Variablen als Zeichenfolgentypen in der `terraform.tfvars` Datei an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 
| Initialisieren Sie die Terraform-Konfiguration. | Führen Sie den folgenden Befehl aus, um Ihr Arbeitsverzeichnis zu initialisieren, das die Terraform-Dateien enthält:`terraform init` | DevOps Ingenieur | 
| Änderungen in der Vorschau anzeigen. | Sie können eine Vorschau der Änderungen anzeigen, die Terraform an der Infrastruktur vornehmen wird, bevor Ihre Infrastruktur bereitgestellt wird. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Terraform die Änderungen nach Bedarf vornimmt:`terraform plan —-var-file=examples/terraform.tfvars` | DevOps Ingenieur | 
| Führen Sie die vorgeschlagenen Aktionen aus. | Gehen Sie wie folgt vor, um zu überprüfen, ob die Ergebnisse des `terraform plan` Befehls den Erwartungen entsprechen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 

### Überprüfen der Bereitstellung
<a name="verify-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die Lambda-Funktion aus und testen Sie sie. | Gehen Sie wie folgt vor, um zu überprüfen, ob die Bereitstellung erfolgreich durchgeführt wurde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Die Ausführungsergebnisse zeigen die Ausgabe der Funktion. | DevOps Ingenieur | 
| Ergebnisse der EventBridge Regelausführung vom übergeordneten Konto aus anzeigen. | Gehen Sie wie folgt vor, um die Ergebnisse der EventBridge Regel anzuzeigen, die auf EC2 Kündigungsereignissen durch Amazon vom übergeordneten Konto aus basiert:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)In der CloudWatch Konsole werden auf der Seite **Protokollgruppen** die Ergebnisse der Lambda-Funktion angezeigt. | DevOps Ingenieur | 
| Die Ergebnisse der EventBridge Regelausführung vom untergeordneten Konto aus anzeigen. | Gehen Sie wie folgt vor, um die Ergebnisse der EventBridge Regel anzuzeigen, die auf EC2 Kündigungsereignissen von Amazon für das Kinderkonto basiert:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)In der CloudWatch Konsole werden auf der Seite **Protokollgruppen** die Ergebnisse der Lambda-Funktion angezeigt. | DevOps Ingenieur | 

### Reinigen Sie die Infrastruktur nach dem Gebrauch
<a name="clean-up-infrastructure-after-use"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Säubere die Infrastruktur. | Verwenden Sie den folgenden Befehl, um die von Ihnen erstellte Infrastruktur zu bereinigen:`terraform destroy`Um den `destroy` Befehl zu bestätigen, geben Sie ein`yes`. | DevOps Ingenieur | 
| Nach der Säuberung überprüfen. | Stellen Sie sicher, dass die Ressourcen erfolgreich entfernt wurden. | DevOps Ingenieur | 

## Fehlerbehebung
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Verbindungsproblem zwischen AWS Directory Service (übergeordnetes Konto) und EC2 Amazon-Instance (untergeordnetes Konto) — Sie können die Computer des untergeordneten Kontos nicht mit AD verbinden, obwohl VPC-Peering verfügbar ist. | Fügen Sie Routing hinzu in. VPCs Anweisungen finden [Sie in der Dokumentation unter Konfigurieren einer VPC-Peering-Verbindung zwischen dem Verzeichnisbesitzer und dem Directory-Consumer-Konto](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html#step1_configure_owner_account_vpc). AWS Directory Service  | 

## Zugehörige Ressourcen
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-resources"></a>

**AWS Dokumentation**
+ [Amazon EventBridge und AWS Identity and Access Management](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Erforderliche Instance-Berechtigungen für Systems Manager konfigurieren](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Identitäts- und Zugriffsmanagement für Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Identitätsbasierte IAM-Richtlinien für Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)
+ [Manuelles Hinzufügen einer Amazon EC2 Windows-Instance zu Ihrem AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Entfernen Sie EC2 Amazon-Einträge in derselben AWS-Konto Form AWS Managed Microsoft AD mithilfe von AWS Lambda Automatisierung](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)

**Sonstige Ressourcen**
+ [AWS Anbieter](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Terraform-Dokumentation)
+ [Backend-Konfiguration (Terraform-Dokumentation](https://developer.hashicorp.com/terraform/language/backend))
+ [Installieren Sie Terraform (Terraform-Dokumentation](https://learn.hashicorp.com/tutorials/terraform/install-cli))
+ [Python-Boto-Modul](https://pypi.org/project/boto/) (Python-Paketindex-Repository)
+ Laden Sie die [Terraform-Binärdatei herunter](https://www.terraform.io/downloads) (Terraform-Dokumentation)

# Entfernen Sie EC2 Amazon-Einträge in derselben AWS-Konto Form AWS Managed Microsoft AD mithilfe von AWS Lambda Automatisierung
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad"></a>

*Dr. Rahul Sharad Gaikwad und Tamilselvan P, Amazon Web Services*

## Zusammenfassung
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-summary"></a>

Active Directory (AD) ist ein Microsoft-Skripttool, das Domäneninformationen und Benutzerinteraktionen mit Netzwerkdiensten verwaltet. Es wird häufig von Managed Services Providern (MSPs) verwendet, um die Anmeldeinformationen und Zugriffsberechtigungen von Mitarbeitern zu verwalten. Da AD-Angreifer mit inaktiven Konten versuchen können, sich in ein Unternehmen zu hacken, ist es wichtig, inaktive Konten zu finden und sie im Rahmen eines routinemäßigen Wartungsplans zu deaktivieren. Mit AWS Directory Service for Microsoft Active Directory können Sie Microsoft Active Directory als verwalteten Dienst ausführen. 

Dieses Muster kann Ihnen helfen, die AWS Lambda Automatisierung so zu konfigurieren, dass inaktive Konten schnell gefunden und entfernt werden. Wenn Sie dieses Muster verwenden, können Sie die folgenden Vorteile nutzen:
+ Verbessern Sie die Datenbank- und Serverleistung und beheben Sie Sicherheitslücken, die auf inaktive Konten zurückzuführen sind.
+ Wenn Ihr AD-Server in der Cloud gehostet wird, kann das Entfernen inaktiver Konten auch die Speicherkosten senken und gleichzeitig die Leistung verbessern. Ihre monatlichen Rechnungen könnten sinken, da sowohl die Bandbreitenkosten als auch die Rechenressourcen sinken können.
+ Halten Sie potenzielle Angreifer mit einem sauberen Active Directory in Schach.

## Voraussetzungen und Einschränkungen
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ Git [wurde auf einer lokalen Workstation installiert](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) und konfiguriert.
+ Terraform [wurde auf einer lokalen Workstation installiert](https://learn.hashicorp.com/tutorials/terraform/install-cli) und konfiguriert.
+ Windows-Computer mit Active Directory-Modulen ()`ActiveDirectory`.
+ Ein Verzeichnis in AWS Managed Microsoft AD und Anmeldeinformationen, die in einem [Parameter im AWS Systems Manager Parameter Store gespeichert sind.](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)
+ AWS Identity and Access Management *(IAM) -Rolle mit Berechtigungen für die in [Tools AWS-Services](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools) aufgelisteten Rollen.* Weitere Informationen zu IAM finden Sie unter [Verwandte](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources) Ressourcen.

**Einschränkungen**
+ Dieses Muster unterstützt keine kontenübergreifende Einrichtung.
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

**Produktversionen**
+ [Terraform Version 1.1.9 oder höher](https://developer.hashicorp.com/terraform/install)
+ [Terraform AWS Provider Version 3.0 oder höher](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Architektur
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Prozess zur Verwendung der Lambda-Automatisierung zum Entfernen von EC2 Einträgen aus Managed Microsoft AD.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/6b50dcc5-4f4b-4eea-85a7-04cebc9f7454/images/b7fc5962-bfb8-4f5a-968e-7487b1d48c4f.png)


Das Diagramm zeigt den folgenden Workflow:

1. Amazon EventBridge löst die AWS Lambda Funktion auf der Grundlage eines Cron-Ausdrucks aus. (Bei diesem Muster erfolgt der Zeitplan für Cron-Ausdrücke einmal täglich.)

1. Die erforderliche IAM-Rolle und -Richtlinie werden AWS Lambda über Terraform erstellt und angehängt.

1. Die AWS Lambda Funktion wird ausgeführt und ruft Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling Groups mithilfe des Python-Boto-Moduls auf. Die Lambda-Funktion ruft die zufällige Instanz-ID ab. Die Instanz-ID wird zur Ausführung von AWS Systems Manager Befehlen verwendet.

1. AWS Lambda ruft Amazon EC2 mithilfe des Boto-Moduls erneut auf und ruft die privaten IP-Adressen der laufenden Windows-Server ab und speichert die Adressen in einer temporären Variablen.

1. AWS Lambda ruft Systems Manager erneut auf, um die Computerinformationen abzurufen, mit denen eine Verbindung hergestellt ist Directory Service.

1. Ein AWS Systems Manager Dokument hilft dabei, das PowerShell Skript auf Amazon EC2 Windows-Servern auszuführen, um die privaten IP-Adressen der Computer abzurufen, die mit AD verbunden sind.

1. Der Benutzername und die Passwörter der AD-Domain werden im AWS Systems Manager Parameter Store gespeichert. AWS Lambda und Systems Manager rufen Parameter Store auf und rufen die Werte für Benutzername und Passwort ab, die für die Verbindung mit AD verwendet werden sollen.

1. Mithilfe des Systems Manager Manager-Dokuments wird das PowerShell Skript auf dem Amazon EC2 Windows-Server unter Verwendung der zuvor in Schritt 3 abgerufenen Instance-ID ausgeführt.

1. Amazon EC2 stellt mithilfe Directory Service von PowerShell Befehlen eine Verbindung her und entfernt die Computer, die nicht verwendet oder inaktiv sind.

## Tools
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools"></a>

**AWS-Services**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)bietet mehrere Möglichkeiten, Microsoft Active Directory (AD) mit anderen AWS-Services wie Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) für SQL Server und Amazon FSx für Windows File Server zu verwenden.
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)ermöglicht Ihren verzeichnissensitiven Workloads und AWS Ressourcen die Verwendung von Microsoft Active Directory in der. AWS Cloud
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. Zum Beispiel AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden. Mit IAM können Sie festlegen, wer oder was auf Dienste und Ressourcen zugreifen kann AWS, detaillierte Berechtigungen zentral verwalten und den Zugriff analysieren, um die Berechtigungen zu verfeinern. AWS
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt AWS Cloud werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten.
+ [AWS Systems Manager Dokumente](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) definieren die Aktionen, die Systems Manager auf Ihren verwalteten Instanzen ausführt. Systems Manager umfasst mehr als 100 vorkonfigurierter Dokumente, die Sie verwenden können, indem Sie zur Laufzeit Parameter angeben. 
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) ist eine Funktion von AWS Systems Manager und bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)ist ein Automatisierungs- und Konfigurationsverwaltungsprogramm von Microsoft, das unter Windows, Linux und macOS läuft.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

****C-Code-Repository****

Der Code für dieses Muster ist im [Lösungs-Repository für GitHub benutzerdefinierte AD Cleanup Automation](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/) verfügbar. 

## Best Practices
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-best-practices"></a>
+ **Automatisch Domänen beitreten.**Wenn Sie eine Windows-Instanz starten, die Teil einer Directory Service Domäne sein soll, treten Sie der Domäne während der Instanzerstellung bei, anstatt die Instanz später manuell hinzuzufügen. Um einer Domäne automatisch beizutreten, wählen Sie beim Starten einer neuen Instanz das richtige **Verzeichnis aus der Dropdownliste zum Domänenbeitrittsverzeichnis** aus. Weitere Informationen finden Sie unter [Nahtloses Hinzufügen einer Amazon EC2 Windows-Instance zu Ihrem AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) im *Directory Service Administratorhandbuch*.
+ **Löschen Sie ungenutzte Konten.**Es ist üblich, in AD Konten zu finden, die noch nie verwendet wurden. Wie deaktivierte oder inaktive Konten, die im System verbleiben, können vernachlässigte, ungenutzte Konten Ihr AD-System verlangsamen oder Ihr Unternehmen anfällig für Datenschutzverletzungen machen.
+ **Automatisieren Sie Active Directory-Säuberungen.**Um Sicherheitsrisiken zu minimieren und zu verhindern, dass veraltete Konten die AD-Leistung beeinträchtigen, sollten AD-Bereinigungen in regelmäßigen Abständen durchgeführt werden. Sie können die meisten AD-Verwaltungs- und Bereinigungsaufgaben erledigen, indem Sie Skripts schreiben. Zu den Aufgaben gehören beispielsweise das Entfernen deaktivierter und inaktiver Konten, das Löschen leerer und inaktiver Gruppen und das Auffinden abgelaufener Benutzerkonten und Kennwörter. 

## Epen
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-epics"></a>

### So richten Sie Ihre Umgebung ein
<a name="set-up-your-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Projektordner und fügen Sie die Dateien hinzu. | Gehen Sie wie folgt vor, um das Repository zu klonen und einen Projektordner zu erstellen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 

### Stellen Sie die Zielarchitektur mithilfe der Terraform-Konfiguration bereit
<a name="provision-the-target-architecture-by-using-the-terraform-configuration"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Initialisieren Sie die Terraform-Konfiguration. | Führen Sie den folgenden Befehl aus, um Ihr Arbeitsverzeichnis zu initialisieren, das die Terraform-Dateien enthält.`terraform init` | DevOps Ingenieur | 
| Änderungen in der Vorschau anzeigen. | Sie können eine Vorschau der Änderungen anzeigen, die Terraform an der Infrastruktur vornehmen wird, bevor Ihre Infrastruktur bereitgestellt wird. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Terraform die Änderungen nach Bedarf vornimmt.`terraform plan` | DevOps Ingenieur | 
| Führen Sie die vorgeschlagenen Aktionen aus. | Gehen Sie wie folgt vor, um zu überprüfen, ob die Ergebnisse des `terraform plan` Befehls den Erwartungen entsprechen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps Ingenieur | 
| Säubere die Infrastruktur. | Verwenden Sie den folgenden Befehl, um die von Ihnen erstellte Infrastruktur zu bereinigen.`terraform destroy`Geben Sie ein, um den Befehl destroy zu bestätigen`yes`. | DevOps Ingenieur | 

### Überprüfen der Bereitstellung
<a name="verify-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die Lambda-Funktion aus und testen Sie sie. | Gehen Sie wie folgt vor, um zu überprüfen, ob die Bereitstellung erfolgreich durchgeführt wurde:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)Die Ausführungsergebnisse zeigen die Ausgabe der Funktion. | DevOps Ingenieur | 
| Zeigen Sie die Ergebnisse der Lambda-Funktion an. | In diesem Muster führt eine EventBridge Regel die Lambda-Funktion einmal täglich aus. Gehen Sie wie folgt vor, um die Ergebnisse der Lambda-Funktion anzuzeigen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)In der CloudWatch Konsole werden auf der Seite **Protokollgruppen** die Ergebnisse der Lambda-Funktion angezeigt. | DevOps Ingenieur | 

### Infrastruktur nach Gebrauch reinigen
<a name="clean-up-infrastructure-after-use"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Infrastruktur aufräumen. | Verwenden Sie den folgenden Befehl, um die von Ihnen erstellte Infrastruktur zu bereinigen.`terraform destroy`Geben Sie ein, um den Befehl destroy zu bestätigen`yes`. | DevOps Ingenieur | 
| Nach der Säuberung überprüfen. | Stellen Sie sicher, dass die Ressourcen erfolgreich entfernt wurden. | DevOps Ingenieur | 

## Fehlerbehebung
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Wenn Sie versuchen, den AD-Computer zu entfernen, erhalten Sie die Meldung „Zugriff verweigert“. Der AD-Computer kann nicht entfernt werden, da die Aktion standardmäßig versucht, zwei private IP-Adressen zu entfernen, die als Teil der AD-Dienste miteinander verbunden sind. | Um diesen Fehler zu vermeiden, verwenden Sie den folgenden Python-Vorgang, um die ersten beiden Computer zu ignorieren, wenn Sie die Unterschiede zwischen einer AD-Computerausgabe und der Ausgabe Ihres Computers auflisten, auf dem Windows ausgeführt wird.<pre>Difference = Difference[2:]</pre> | 
| Wenn Lambda ein PowerShell Skript auf einem Windows-Server ausführt, erwartet es, dass Active Directory-Module standardmäßig verfügbar sind. Wenn die Module nicht verfügbar sind, erzeugt eine Lambda-Funktion einen Fehler, der besagt, dass „Get- AdComputer ist nicht auf der Instanz installiert“. | Um diesen Fehler zu vermeiden, installieren Sie die erforderlichen Module mithilfe der Benutzerdaten der EC2 Instanzen. Verwenden Sie das [EC2WindowsUserdata](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/blob/main/EC2WindowsUserdata)Skript, das sich im GitHub Repository dieses Musters befindet. | 

## Zugehörige Ressourcen
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources"></a>

**AWS Dokumentation**
+ [Amazon EventBridge und AWS Identity and Access Management](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Erforderliche Instance-Berechtigungen für Systems Manager konfigurieren](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Identitäts- und Zugriffsmanagement für Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Manuelles Hinzufügen einer Amazon EC2 Windows-Instance zu Ihrem AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Arbeiten mit identitätsbasierten IAM-Richtlinien in AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)

**Sonstige Ressourcen**
+ [AWS Anbieter (Terraform-Dokumentation](https://registry.terraform.io/providers/hashicorp/aws/latest/docs))
+ [Backend-Konfiguration (Terraform-Dokumentation](https://developer.hashicorp.com/terraform/language/backend))
+ [Installieren Sie Terraform (Terraform-Dokumentation](https://learn.hashicorp.com/tutorials/terraform/install-cli))
+ [Python-Boto-Modul](https://pypi.org/project/boto/) (Python-Paketindex-Repository)
+ Laden Sie die [Terraform-Binärdatei herunter](https://www.terraform.io/downloads) (Terraform-Dokumentation)

# Führen Sie Komponententests für Python-ETL-Jobs AWS Glue mithilfe des Pytest-Frameworks aus
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework"></a>

*Praveen Kumar Jeyarajan und Vaidy Sankaran, Amazon Web Services*

## Zusammenfassung
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-summary"></a>

Sie können Komponententests für Python-Jobs zum Extrahieren, Transformieren und Laden (ETL) für AWS Glue in einer [lokalen Entwicklungsumgebung](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html) ausführen, aber das Replizieren dieser Tests in einer DevOps Pipeline kann schwierig und zeitaufwändig sein. Unit-Tests können besonders schwierig sein, wenn Sie den Mainframe-ETL-Prozess auf AWS Technologie-Stacks modernisieren. Dieses Muster zeigt Ihnen, wie Sie Komponententests vereinfachen und gleichzeitig die bestehende Funktionalität beibehalten, Unterbrechungen wichtiger Anwendungsfunktionen bei der Veröffentlichung neuer Funktionen vermeiden und hochwertige Software beibehalten können. Sie können die Schritte und Codebeispiele in diesem Muster verwenden, um Komponententests für Python-ETL-Jobs auszuführen, AWS Glue indem Sie das Pytest-Framework in AWS CodePipeline verwenden. Sie können dieses Muster auch verwenden, um mehrere AWS Glue Jobs zu testen und bereitzustellen.

## Voraussetzungen und Einschränkungen
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine Amazon Elastic Container Registry (Amazon ECR) -Image-URI für Ihre AWS Glue Bibliothek, heruntergeladen von der [Amazon ECR Public Gallery](https://gallery.ecr.aws/glue/aws-glue-libs)
+ Bash-Terminal (auf jedem Betriebssystem) mit einem Profil für das Ziel und AWS-Konto AWS-Region
+ [Python 3.10](https://www.python.org/downloads/) oder höher
+ [Pytest](https://github.com/pytest-dev/pytest)
+ [Moto-Python-Bibliothek](https://github.com/getmoto/moto) zum Testen AWS-Services

## Architektur
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-architecture"></a>

Das folgende Diagramm beschreibt, wie Komponententests für AWS Glue ETL-Prozesse, die auf Python basieren, in eine typische Pipeline auf Unternehmensebene AWS DevOps integriert werden können.

![\[Komponententests für AWS Glue ETL-Prozesse.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/82781ca8-4da0-4df0-bf23-32992fece231/images/6286dafc-f1e0-4967-beed-4dedc6047c10.png)


Das Diagramm zeigt den folgenden Workflow:

1.  AWS CodePipeline Verwendet in der Quellphase einen versionierten Amazon Simple Storage Service (Amazon S3) -Bucket zum Speichern und Verwalten von Quellcode-Assets. Zu diesen Ressourcen gehören ein Beispiel für einen Python-ETL-Job (`sample.py`), eine Unit-Test-Datei (`test_sample.py`) und eine AWS CloudFormation Vorlage. CodePipeline Überträgt dann den neuesten Code aus dem Hauptzweig zur weiteren Verarbeitung in das AWS CodeBuild Projekt.

1. In der Erstellungs- und Veröffentlichungsphase wird der neueste Code aus der vorherigen Quellphase mithilfe eines AWS Glue öffentlichen Amazon ECR-Images auf Einheiten getestet. Anschließend wird der Testbericht für CodeBuild Berichtsgruppen veröffentlicht. Das Container-Image im öffentlichen Amazon ECR-Repository für AWS Glue Bibliotheken enthält alle Binärdateien, die für die lokale Ausführung und auf Unit-Tests [PySparkbasierende](https://spark.apache.org/docs/latest/api/python/) ETL-Aufgaben erforderlich sind. AWS Glue Das öffentliche Container-Repository hat drei Image-Tags, einen für jede Version, die von unterstützt wird. AWS Glue Zu Demonstrationszwecken verwendet dieses Muster das `glue_libs_4.0.0_image_01` Image-Tag. Um dieses Container-Image als Runtime-Image zu verwenden CodeBuild, kopieren Sie den Image-URI, der dem Image-Tag entspricht, den Sie verwenden möchten, und aktualisieren Sie dann die `pipeline.yml` Datei im GitHub Repository für die `TestBuild` Ressource.

1. In der Bereitstellungsphase wird das CodeBuild Projekt gestartet und der Code wird in einem Amazon S3 S3-Bucket veröffentlicht, wenn alle Tests erfolgreich sind.

1. Der Benutzer stellt die AWS Glue Aufgabe mithilfe der CloudFormation Vorlage im `deploy` Ordner bereit.

## Tools
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-tools"></a>

**AWS-Services**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen bereitgestellter Artefakte unterstützt.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)ist ein vollständig verwalteter ETL-Service. Er hilft Ihnen dabei, Daten zuverlässig zu kategorisieren, zu bereinigen, anzureichern und zwischen Datenspeichern und Datenströmen zu verschieben.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein Objektspeicherservice, der branchenführende Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet.

**Andere Tools**
+ [Python](https://www.python.org/) ist eine interpretierte Mehrzweck-Programmiersprache auf hohem Niveau.
+ [Moto](https://github.com/getmoto/moto) ist eine Python-Bibliothek zum Testen AWS-Services.
+ [Pytest](https://github.com/pytest-dev/pytest) ist ein Framework zum Schreiben kleiner Komponententests, die skaliert werden können, um komplexe Funktionstests für Anwendungen und Bibliotheken zu unterstützen.
+ Die [Python-ETL-Bibliothek](https://github.com/awslabs/aws-glue-libs) für AWS Glue ist ein Repository für Python-Bibliotheken, die bei der lokalen Entwicklung von PySpark Batch-Jobs für verwendet werden AWS Glue.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [aws-glue-jobs-unit-testing](https://github.com/aws-samples/aws-glue-jobs-unit-testing) verfügbar. Das Repository umfasst die folgenden Ressourcen:
+ Ein Beispiel für einen Python-basierten AWS Glue Job im Ordner `src`
+ Zugeordnete Unit-Testfälle (erstellt mit dem Pytest-Framework) im Ordner `tests`
+ Eine CloudFormation Vorlage (in YAML geschrieben) im Ordner `deploy`

## Best Practices
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-best-practices"></a>

**Sicherheit für Ressourcen CodePipeline **

Es hat sich bewährt, Verschlüsselung und Authentifizierung für die Quell-Repositorys zu verwenden, die eine Verbindung zu Ihren Pipelines herstellen. CodePipeline Weitere Informationen finden Sie in der Dokumentation unter [Bewährte Sicherheitsmethoden](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-best-practices.html). CodePipeline 

** CodePipeline Ressourcen überwachen und protokollieren**

Es hat sich bewährt, mithilfe von AWS Protokollierungsfunktionen zu ermitteln, welche Aktionen Benutzer in Ihrem Konto ausführen und welche Ressourcen sie verwenden. Die Protokolldateien zeigen Folgendes:
+ Uhrzeit und Datum der Aktionen
+ Quell-IP-Adresse der Aktionen
+ Welche Aktionen sind aufgrund unzureichender Berechtigungen fehlgeschlagen

Protokollierungsfunktionen sind in Amazon Events AWS CloudTrail und Amazon CloudWatch Events verfügbar. Sie können CloudTrail damit AWS API-Aufrufe und verwandte Ereignisse protokollieren, die von oder in Ihrem Namen getätigt wurden AWS-Konto. Weitere Informationen finden Sie AWS CloudTrail in der CodePipeline Dokumentation unter [Protokollieren von CodePipeline API-Aufrufen mit](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring-cloudtrail-logs.html).

Sie können CloudWatch Ereignisse verwenden, um Ihre AWS Cloud Ressourcen und Anwendungen zu überwachen, auf denen sie ausgeführt AWS werden. Sie können auch Benachrichtigungen unter CloudWatch Ereignisse erstellen. Weitere Informationen finden Sie in der CodePipeline Dokumentation unter [ CodePipeline Ereignisse überwachen](https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html).

## Epen
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-epics"></a>

### Stellen Sie den Quellcode bereit
<a name="deploy-the-source-code"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereiten Sie das Codearchiv für die Bereitstellung vor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | DevOps Ingenieur | 
| Erstellen Sie den CloudFormation Stapel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html)Der Stack erstellt eine CodePipeline Ansicht mit Amazon S3 als Quelle. In den obigen Schritten lautet die Pipeline **aws-glue-unit-test-pipeline**. | AWS DevOps, DevOps Ingenieur | 

### Führen Sie die Komponententests aus
<a name="run-the-unit-tests"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die Unit-Tests in der Pipeline aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | AWS DevOps, DevOps Ingenieur | 

### Säubere alle AWS Ressourcen
<a name="clean-up-all-aws-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Säubern Sie die Ressourcen in Ihrer Umgebung. | Um zusätzliche Infrastrukturkosten zu vermeiden, stellen Sie sicher, dass Sie den Stack löschen, nachdem Sie mit den Beispielen in diesem Muster experimentiert haben.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | AWS DevOps, DevOps Ingenieur | 

## Fehlerbehebung
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die CodePipeline Servicerolle kann nicht auf den Amazon S3 S3-Bucket zugreifen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | 
| CodePipeline gibt einen Fehler zurück, dass der Amazon S3 S3-Bucket nicht versioniert ist. | CodePipeline erfordert, dass der Amazon S3 S3-Quell-Bucket versioniert ist. Aktivieren Sie die Versionierung in Ihrem Amazon S3 S3-Bucket. Anweisungen finden Sie unter [Versionierung für Buckets aktivieren](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html). | 

## Zugehörige Ressourcen
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-resources"></a>
+ [AWS Glue](https://aws.amazon.com/glue/)
+ [Jobs lokal entwickeln und testen AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html)
+ [AWS CloudFormation für AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html)

## Zusätzliche Informationen
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-additional"></a>

Darüber hinaus können Sie die AWS CloudFormation Vorlagen mithilfe von AWS Command Line Interface (AWS CLI) bereitstellen. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter [Schnelles Bereitstellen von Vorlagen mit Transformationen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-deploy.html).

# Richten Sie eine CI/CD Pipeline mithilfe von AWS CodePipeline und AWS CDK ein
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk"></a>

*Konstantin Zarudaev, Yasha Dabas, Lars Kinder und Cizer Pereira, Amazon Web Services*

## Startseite
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-summary"></a>

Die Automatisierung Ihres Softwareerstellungs- und -veröffentlichungsprozesses mit kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD) supports repeatable builds and rapid delivery of new features to your users. You can quickly and easily test each code change, and you can catch and fix bugs before releasing your software. By running each change through your staging and release process, you can verify the quality of your application or infrastructure code. CI/CDverkörpert eine Kultur, eine Reihe von Betriebsprinzipien und eine [Sammlung von Praktiken](https://aws.amazon.com/devops/#cicd)), die Anwendungsentwicklungsteams dabei unterstützen, Codeänderungen häufiger und zuverlässiger vorzunehmen. Die Implementierung wird auch als *CI/CD-Pipeline* bezeichnet.

Dieses Muster definiert eine wiederverwendbare CI/CD-Pipeline (Continuous Integration and Continuous Delivery) auf Amazon Web Services (AWS) mit einem CodeCommit AWS-Repository. Die CodePipeline AWS-Pipeline [wurde mit dem AWS Cloud Development Kit (AWS CDK) v2](https://aws.amazon.com/cdk/) geschrieben.

Mithilfe CodePipeline können Sie die verschiedenen Phasen Ihres Softwareveröffentlichungsprozesses über die AWS-Managementkonsole, die AWS-Befehlszeilenschnittstelle (AWS CLI) CloudFormation, AWS oder AWS modellieren SDKs. Dieses Muster demonstriert die Implementierung von CodePipeline und seine Komponenten mithilfe von AWS CDK. Zusätzlich zu den Construct-Bibliotheken enthält AWS CDK ein Toolkit (den CLI-Befehl`cdk`), das das wichtigste Tool für die Interaktion mit Ihrer AWS-CDK-App ist. Das Toolkit bietet unter anderem die Möglichkeit, einen oder mehrere Stacks in CloudFormation Vorlagen zu konvertieren und sie auf einem AWS-Konto bereitzustellen.

Die Pipeline umfasst Tests zur Überprüfung der Sicherheit Ihrer Drittanbieter-Bibliotheken und trägt dazu bei, eine beschleunigte, automatisierte Veröffentlichung in den angegebenen Umgebungen sicherzustellen. Sie können die Gesamtsicherheit Ihrer Anwendungen erhöhen, indem Sie sie einem Validierungsprozess unterziehen.

Ziel dieses Musters ist es, die Verwendung von CI/CD Pipelines zur Bereitstellung Ihres Codes zu beschleunigen und gleichzeitig sicherzustellen, dass die von Ihnen bereitgestellten Ressourcen den DevOps bewährten Methoden entsprechen. Nachdem Sie den [Beispielcode](https://github.com/aws-samples/aws-codepipeline-cicd) implementiert haben, verfügen Sie über ein [AWS CodePipeline](https://aws.amazon.com/codepipeline/) mit Linting-, Test-, Sicherheitscheck-, Bereitstellungs- und Nachbereitstellungsprozessen. Dieses Muster beinhaltet auch Schritte für Makefile. Mithilfe eines Makefiles können Entwickler CI/CD Schritte lokal reproduzieren und so den Entwicklungsprozess beschleunigen.

## Voraussetzungen und Einschränkungen
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein grundlegendes Verständnis im Folgenden:
  + AWS-CDK
  + AWS CloudFormation
  + AWS CodePipeline
  + TypeScript

**Einschränkungen**

Dieses Muster verwendet [AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) TypeScript nur für. Andere Sprachen, die von AWS CDK unterstützt werden, werden nicht abgedeckt.

**Produktversionen**

Verwenden Sie die neuesten Versionen der folgenden Tools:
+ AWS-Befehlszeilenschnittstelle (AWS Command Line Interface, AWS CLI)
+ cfn\$1nag
+ git-remote-codecommit
+ Node.js

## Architektur
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-architecture"></a>

**Zieltechnologie-Stack**
+ AWS-CDK
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodePipeline

**Zielarchitektur**

Die Pipeline wird durch eine Änderung im CodeCommit AWS-Repository (`SampleRepository`) ausgelöst. Zu Beginn CodePipeline erstellt es Artefakte, aktualisiert sich selbst und startet den Bereitstellungsprozess. Die daraus resultierende Pipeline stellt eine Lösung für drei unabhängige Umgebungen bereit:
+ Dev — Dreistufiger Codecheck in der aktiven Entwicklungsumgebung
+ Test — Integrations- und Regressionstestumgebung
+ Prod — Produktionsumgebung

Die Entwicklungsphase umfasst drei Schritte: Linting, Sicherheit und Komponententests. Diese Schritte laufen parallel ab, um den Prozess zu beschleunigen. Um sicherzustellen, dass die Pipeline nur funktionierende Artefakte bereitstellt, wird sie beendet, sobald ein Schritt im Prozess fehlschlägt. Nach einer Bereitstellung in der Entwicklungsphase führt die Pipeline Validierungstests durch, um die Ergebnisse zu überprüfen. Im Erfolgsfall stellt die Pipeline die Artefakte dann in der Testumgebung bereit, die die Validierung nach der Bereitstellung beinhaltet. Der letzte Schritt besteht darin, die Artefakte in der Prod-Umgebung bereitzustellen.

Das folgende Diagramm zeigt den Arbeitsablauf vom CodeCommit Repository bis zu den Build- und Aktualisierungsprozessen CodePipeline, die drei Schritte der Entwicklungsumgebung und die anschließende Bereitstellung und Validierung in jeder der drei Umgebungen.

![\[Die Entwicklungsumgebung umfasst Linting, Sicherheit und Komponententests, alles inklusive Bereitstellung und Validierung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)


## Tools
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-tools"></a>

**AWS-Services**
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten. In diesem Muster können CloudFormation Vorlagen verwendet werden, um ein CodeCommit Repository und eine CodePipeline CI/CD-Pipeline zu erstellen.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ist ein CI/CD Service, der Ihnen hilft, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.

**Andere Tools**
+ [cfn\$1nag](https://github.com/stelligent/cfn_nag) ist ein Open-Source-Tool, das in CloudFormation Vorlagen nach Mustern sucht, um potenzielle Sicherheitsprobleme zu identifizieren.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)ist ein Hilfsprogramm zum Pushen und Abrufen von Code aus CodeCommit Repositorys, indem es Git erweitert.
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen konzipiert wurde.

**Code**

Der Code für dieses Muster ist im GitHub [AWS-Repository CodePipeline mit CI/CD Praktiken](https://github.com/aws-samples/aws-codepipeline-cicd) verfügbar.

## Best Practices
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-best-practices"></a>

Überprüfen Sie Ressourcen wie die Richtlinien von AWS Identity and Access Management (IAM), um sicherzustellen, dass sie mit den bewährten Methoden Ihres Unternehmens übereinstimmen.

## Epen
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-epics"></a>

### Tools installieren
<a name="install-tools"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie Tools auf macOS oder Linux. | Wenn Sie macOS oder Linux verwenden, können Sie die Tools installieren, indem Sie den folgenden Befehl in Ihrem bevorzugten Terminal ausführen oder [Homebrew für](https://docs.brew.sh/Homebrew-on-Linux) Linux verwenden.<pre>brew install<br />brew install git-remote-codecommit<br />brew install ruby brew-gem<br />brew-gem install cfn-nag</pre> | DevOps Ingenieur | 
| Richten Sie die AWS-CLI ein. | Verwenden Sie die Anweisungen für Ihr Betriebssystem, um AWS CLI einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps Ingenieur | 

### Richten Sie die erste Bereitstellung ein
<a name="set-up-the-initial-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie den Code herunter oder klonen Sie ihn. | Gehen Sie wie folgt vor, um den Code abzurufen, der von diesem Muster verwendet wird:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html)<pre>git clone --depth 1 https://github.com/aws-samples/aws-codepipeline-cicd.git</pre>Entfernen Sie das `.git` Verzeichnis aus dem geklonten Repository.<pre>cd ./aws-codepipeline-cicd<br />rm -rf ./.git</pre>Später werden Sie ein neu erstelltes CodeCommit AWS-Repository als Remote-Ursprung verwenden. | DevOps Ingenieur | 
| Connect zum AWS-Konto her. | Sie können eine Verbindung herstellen, indem Sie ein temporäres Sicherheitstoken oder eine Landingzone-Authentifizierung verwenden. Führen Sie die folgenden Befehle aus, um zu bestätigen, dass Sie das richtige Konto und die richtige AWS-Region verwenden.<pre>AWS_REGION="eu-west-1"<br />ACCOUNT_NUMBER=$(aws sts get-caller-identity --query Account --output text)<br />echo "${ACCOUNT_NUMBER}"</pre> | DevOps Ingenieur | 
| Bootstrapping für die Umwelt. | Führen Sie die folgenden Befehle aus, um eine AWS-CDK-Umgebung zu booten.<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre>Nachdem Sie die Umgebung erfolgreich gebootet haben, sollte die folgende Ausgabe angezeigt werden.<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre>Weitere Informationen zu AWS CDK-Bootstrapping finden Sie in der [AWS](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) CDK-Dokumentation. | DevOps Ingenieur | 
| Synthetisieren Sie eine Vorlage. | Verwenden Sie den Befehl, um eine AWS CDK-App zu synthetisieren. `cdk synth`<pre>npm run cdk synth</pre>Die Ausgabe sollte folgendermaßen aussehen.<pre>Successfully synthesized to <path-to-directory>/aws-codepipeline-cicd/cdk.out<br />Supply a stack id (CodePipeline, Dev-MainStack) to display its template.</pre> | DevOps Ingenieur | 
| Stellen Sie den CodePipeline Stack bereit. | Nachdem Sie die CloudFormation Vorlage nun gebootet und synthetisiert haben, können Sie sie bereitstellen. Bei der Bereitstellung werden die CodePipeline Pipeline und ein CodeCommit Repository erstellt, das als Quelle und Auslöser der Pipeline dient.<pre>npm run cdk -- deploy CodePipeline --require-approval never</pre>Nachdem Sie den Befehl ausgeführt haben, sollten Sie sehen, dass der CodePipeline Stack erfolgreich bereitgestellt und die Informationen ausgegeben wurden. Das `CodePipeline.RepositoryName` gibt Ihnen den Namen des CodeCommit Repositorys im AWS-Konto.<pre>CodePipeline: deploying...<br />CodePipeline: creating CloudFormation changeset...<br />✅  CodePipeline<br />Outputs:<br />CodePipeline.RepositoryName = SampleRepository<br />Stack ARN:<br />arn:aws:cloudformation:REGION:ACCOUNT-ID:stack/CodePipeline/STACK-ID</pre> | DevOps Ingenieur | 
| Richten Sie das CodeCommit Remote-Repository und den Branch ein. | Nach einer erfolgreichen Bereitstellung CodePipeline wird der erste Lauf der Pipeline initiiert, den Sie in der [ CodePipeline AWS-Konsole](https://eu-west-1.console.aws.amazon.com/codesuite/codepipeline/pipelines) finden. Da AWS CDK und CodeCommit kein Standard-Branch initiieren, schlägt dieser erste Pipeline-Lauf fehl und gibt die folgende Fehlermeldung zurück.<pre>The action failed because no branch named main was found in the selected AWS CodeCommit repository SampleRepository. Make sure you are using the correct branch name, and then try again. Error: null</pre>Um diesen Fehler zu beheben, richten Sie einen Remote-Ursprung als `SampleRepository` ein und erstellen Sie den erforderlichen `main` Branch.<pre>RepoName=$(aws cloudformation describe-stacks --stack-name CodePipeline --query "Stacks[0].Outputs[?OutputKey=='RepositoryName'].OutputValue" --output text)<br />echo "${RepoName}"<br />#<br />git init<br />git branch -m master main<br />git remote add origin codecommit://${RepoName}<br />git add .<br />git commit -m "Initial commit"<br />git push -u origin main</pre> | DevOps Ingenieur | 

### Testen Sie die bereitgestellte CodePipeline Pipeline
<a name="test-the-deployed-codepipeline-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie eine Änderung, um die Pipeline zu aktivieren. | Nach einer erfolgreichen ersten Bereitstellung sollten Sie über eine vollständige CI/CD Pipeline mit einem `main` Zweig `SampleRepository` als Quellzweig verfügen. Sobald Sie die Änderungen an der `main` Verzweigung vorgenommen haben, initiiert die Pipeline die folgende Abfolge von Aktionen und führt sie aus:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps Ingenieur | 

### Testen Sie lokal mit einem Makefile
<a name="test-locally-by-using-a-makefile"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Entwicklungsprozess mithilfe eines Makefiles aus. | Sie können die gesamte Pipeline lokal ausführen, indem Sie den `make` Befehl verwenden, oder Sie können einen einzelnen Schritt ausführen (z. B.`make linting`).Führen Sie die folgenden Aktionen aus`make`, um die Verwendung zu testen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | App-Entwickler, DevOps Ingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die AWS-CDK-App-Ressourcen. | Führen Sie den folgenden Befehl aus, um Ihre AWS CDK-App zu bereinigen.<pre>cdk destroy --all</pre>Beachten Sie, dass die Amazon Simple Storage Service (Amazon S3) -Buckets, die beim Bootstrapping erstellt werden, nicht automatisch gelöscht werden. Sie benötigen eine Aufbewahrungsrichtlinie, die das Löschen ermöglicht, oder Sie müssen sie manuell in Ihrem AWS-Konto löschen. | DevOps Ingenieur | 

## Fehlerbehebung
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Vorlage funktioniert nicht wie erwartet. | Wenn etwas schief geht und die Vorlage nicht funktioniert, stellen Sie sicher, dass Sie über Folgendes verfügen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | 

## Zugehörige Ressourcen
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-resources"></a>
+ [Erste Schritte mit allgemeinen Aufgaben in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)
+ [ CodePipeline AWS-Dokumentation](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

# Richten Sie mithilfe von Terraform eine zentrale Protokollierung auf Unternehmensebene ein
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform"></a>

*Aarti Rajput, Yashwant Patel und Nishtha Yadav, Amazon Web Services*

## Zusammenfassung
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-summary"></a>

Die zentralisierte Protokollierung ist für die Cloud-Infrastruktur eines Unternehmens von entscheidender Bedeutung, da sie Einblick in Betrieb, Sicherheit und Compliance bietet. Wenn Ihr Unternehmen seine AWS Umgebung auf mehrere Konten skaliert, wird eine strukturierte Protokollverwaltungsstrategie zur Grundlage für die Durchführung von Sicherheitsoperationen, die Erfüllung von Prüfanforderungen und die Erzielung operativer Exzellenz.

Dieses Muster bietet ein skalierbares, sicheres Framework für die Zentralisierung von Protokollen aus mehreren Diensten AWS-Konten und ermöglicht so ein unternehmensweites Protokollierungsmanagement für komplexe Bereitstellungen. AWS Die Lösung wird mithilfe von Terraform automatisiert, einem Infrastructure-as-Code-Tool (IaC), das konsistente und wiederholbare Bereitstellungen gewährleistet und HashiCorp die manuelle Konfiguration minimiert. Durch die Kombination von Amazon CloudWatch Logs, Amazon Data Firehose und Amazon Simple Storage Service (Amazon S3) können Sie eine robuste Protokollaggregations- und Analyse-Pipeline implementieren, die Folgendes bietet:
+ Zentralisiertes Protokollmanagement in Ihrem gesamten Unternehmen in AWS Organizations
+ Automatisierte Protokollerfassung mit integrierten Sicherheitskontrollen
+ Skalierbare Protokollverarbeitung und langlebiger Speicher
+ Vereinfachte Compliance-Berichterstattung und Audit-Trails
+ Betriebliche Einblicke und Überwachung in Echtzeit

Die Lösung sammelt Protokolle von Amazon Elastic Kubernetes Service (Amazon EKS) -Containern, AWS Lambda Funktionen und Amazon Relational Database Service (Amazon RDS) -Datenbank-Instances über Logs. CloudWatch Sie leitet diese Protokolle mithilfe von Abonnementfiltern automatisch an ein spezielles Protokollierungskonto weiter. CloudWatch Firehose verwaltet die Protokoll-Streaming-Pipeline mit hohem Durchsatz zu Amazon S3 zur Langzeitspeicherung. Amazon Simple Queue Service (Amazon SQS) ist so konfiguriert, dass er bei der Objekterstellung Amazon S3 S3-Ereignisbenachrichtigungen empfängt. Dies ermöglicht die Integration mit Analysediensten, einschließlich:
+ Amazon OpenSearch Service für Protokollsuche, Visualisierung und Echtzeitanalyse
+ Amazon Athena für SQL-basierte Abfragen
+ Amazon EMR für die Verarbeitung in großem Maßstab
+ Lambda für benutzerdefinierte Transformation
+ Amazon Quick Sight für Dashboards

Alle Daten werden mithilfe von AWS Key Management Service (AWS KMS) verschlüsselt, und die gesamte Infrastruktur wird mithilfe von Terraform bereitgestellt, um eine konsistente Konfiguration in allen Umgebungen zu gewährleisten.

Dieser zentralisierte Protokollierungsansatz ermöglicht es Unternehmen, ihre Sicherheitslage zu verbessern, Compliance-Anforderungen einzuhalten und die betriebliche Effizienz ihrer AWS gesamten Infrastruktur zu optimieren.

## Voraussetzungen und Einschränkungen
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-prereqs"></a>

**Voraussetzungen**
+ Eine landing zone für Ihre Organisation, die erstellt wurde mit [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)
+ [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html), bereitgestellt und konfiguriert mit den erforderlichen Konten
+ [Terraform](https://developer.hashicorp.com/terraform/downloads) für die Bereitstellung der Infrastruktur
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html) -Rollen und Richtlinien für den kontoübergreifenden Zugriff

Anweisungen zur Einrichtung von AFT AWS Control Tower- und Anwendungskonten finden Sie im Abschnitt [Epics](#set-up-centralized-logging-at-enterprise-scale-by-using-terraform-epics).

**Erforderliche Konten**

Ihre Organisation AWS Organizations sollte die folgenden Konten enthalten:
+ **Anwendungskonto** — Ein oder mehrere Quellkonten, auf denen die AWS-Services (Amazon EKS, Lambda und Amazon RDS) ausgeführt und Protokolle generiert werden
+ **Log Archive-Konto** — Ein spezielles Konto für die zentrale Speicherung und Verwaltung von Protokollen

**Produktversionen**
+ [AWS Control Tower Version 3.1](https://docs.aws.amazon.com/controltower/latest/userguide/2023-all.html#lz-3-1) oder höher
+ [Terraform Version 0.15.0](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) oder höher

## Architektur
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-architecture"></a>

Das folgende Diagramm zeigt eine AWS zentralisierte Protokollierungsarchitektur, die eine skalierbare Lösung für das Sammeln, Verarbeiten und Speichern von Protokollen aus mehreren Anwendungskonten in einem speziellen Log Archive-Konto bietet. Diese Architektur verarbeitet effizient Protokolle von AWS-Services, einschließlich Amazon RDS, Amazon EKS und Lambda, und leitet sie über einen optimierten Prozess an regionale S3-Buckets im Log Archive-Konto weiter.

![\[Zentralisierte AWS-Protokollierungsarchitektur zum Sammeln von Protokollen von mehreren Anwendungskonten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9fc71a10-65d6-437b-9128-cc27bda11af4/images/2e916040-0f11-4712-a8dd-31c95194ce5d.png)


Der Workflow umfasst fünf Prozesse:

1. **Log-Flow-Prozess**
   + Der Protokollflussprozess beginnt in den Anwendungskonten, wo verschiedene Arten von Protokollen AWS-Services generiert werden, z. B. allgemeine Protokolle, Fehler-, Prüfprotokolle, langsame Abfrageprotokolle von Amazon RDS, Kontrollebenenprotokolle von Amazon EKS sowie Funktionsausführungs- und Fehlerprotokolle von Lambda.
   + CloudWatch dient als erste Sammelstelle. Es sammelt diese Protokolle auf Protokollgruppenebene innerhalb jedes Anwendungskontos.
   + In CloudWatch bestimmen [Abonnementfilter](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html), welche Protokolle an das zentrale Konto weitergeleitet werden sollen. Diese Filter bieten Ihnen eine detaillierte Kontrolle über die Protokollweiterleitung, sodass Sie genaue Protokollmuster oder vollständige Protokollstreams für die Zentralisierung angeben können.

1. **Kontoübergreifende Protokollübertragung**
   + Protokolle werden in das Log Archive-Konto verschoben. CloudWatch Abonnementfilter erleichtern die kontoübergreifende Übertragung und bewahren den regionalen Kontext.
   + Die Architektur richtet mehrere parallel Streams ein, um verschiedene Protokollquellen effizient zu handhaben und so eine optimale Leistung und Skalierbarkeit zu gewährleisten.

1. **Protokollverarbeitung im Log Archive-Konto**
   + Im Log Archive-Konto verarbeitet Firehose die eingehenden Protokollstreams.
   + Jede Region unterhält eigene Firehose-Lieferdatenströme, die Protokolle nach Bedarf transformieren, konvertieren oder anreichern können.
   + Diese Firehose-Streams liefern die verarbeiteten Protokolle an S3-Buckets im Log Archive-Konto, das sich in derselben Region wie die Quellanwendungskonten (Region A im Diagramm) befindet, um die Anforderungen an die Datenhoheit zu wahren.

1. **Benachrichtigungen und zusätzliche Workflows**
   + Wenn Protokolle ihre Ziel-S3-Buckets erreichen, implementiert die Architektur mithilfe von Amazon SQS ein Benachrichtigungssystem.
   + Die regionalen SQS-Warteschlangen ermöglichen eine asynchrone Verarbeitung und können zusätzliche Workflows, Analyse- oder Warnsysteme auslösen, die auf den gespeicherten Protokollen basieren.

1. **AWS KMS aus Sicherheitsgründen**

   Die Architektur beinhaltet aus AWS KMS Sicherheitsgründen. AWS KMS stellt Verschlüsselungsschlüssel für die S3-Buckets bereit. Dadurch wird sichergestellt, dass alle gespeicherten Protokolle die Verschlüsselung im Ruhezustand beibehalten und gleichzeitig die regionale Verschlüsselung beibehalten wird, um die Anforderungen an die Datenresidenz zu erfüllen.

## Tools
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) ist ein Überwachungs- und Beobachtungsdienst, der Überwachungs- und Betriebsdaten in Form von Protokollen, Metriken und Ereignissen sammelt. Es bietet eine einheitliche Ansicht der AWS Ressourcen, Anwendungen und Services, die auf AWS- und lokalen Servern ausgeführt werden.
+ [CloudWatch Protokoll-Abonnementfilter](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html) sind Ausdrücke, die einem Muster bei eingehenden Protokollereignissen entsprechen und entsprechende Protokollereignisse zur weiteren Verarbeitung oder Analyse an die angegebene AWS Ressource weiterleiten.
+ [AWS Control Tower Account Factory For Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) richtet eine Terraform-Pipeline ein, mit der Sie Konten bereitstellen und anpassen können. AWS Control Tower AFT bietet eine Terraform-basierte Kontobereitstellung und ermöglicht es Ihnen gleichzeitig, Ihre Konten mit zu verwalten. AWS Control Tower
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) liefert Streaming-Daten in Echtzeit an Ziele wie Amazon S3, Amazon Redshift und Amazon OpenSearch Service. Es passt sich automatisch dem Durchsatz Ihrer Daten an und erfordert keine laufende Verwaltung.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) ist ein verwalteter Container-Orchestrierungsservice, der die Bereitstellung, Verwaltung und Skalierung containerisierter Anwendungen mithilfe von Kubernetes vereinfacht. Er verwaltet automatisch die Verfügbarkeit und Skalierbarkeit der Knoten der Kubernetes-Steuerebene.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) erstellt und kontrolliert Verschlüsselungsschlüssel für die Verschlüsselung Ihrer Daten. AWS KMS integriert sich in andere AWS-Services , um Ihnen zu helfen, die Daten zu schützen, die Sie mit diesen Diensten speichern.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)ist ein serverloser Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er skaliert Ihre Anwendungen automatisch, indem er Code als Reaktion auf jeden Trigger ausführt, und berechnet nur die Rechenzeit, die Sie tatsächlich nutzen.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) ist ein verwalteter relationaler Datenbankservice, der die Einrichtung, den Betrieb und die Skalierung einer relationalen Datenbank in der Cloud vereinfacht. Er bietet kosteneffiziente und anpassbare Kapazität und automatisiert gleichzeitig zeitaufwändige Verwaltungsaufgaben.
+ [Amazon Simple Queue Service (Amazon SQS)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) ist ein Nachrichtenwarteschlangen-Service, mit dem Sie Microservices, verteilte Systeme und serverlose Anwendungen entkoppeln und skalieren können. Damit entfällt die Komplexität der Verwaltung und des Betriebs nachrichtenorientierter Middleware.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet. Er kann jede Datenmenge von überall im Internet speichern und abrufen.

**Andere Tools**
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

**Code**

[Der Code für dieses Muster ist im Centralized Logging Repository verfügbar. GitHub](https://github.com/aws-samples/sample-centralised-logging-at-enterprise-scale-using-terraform)

## Best Practices
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-best-practices"></a>
+ Verwenden Sie [mehrere AWS-Konten in einer einzigen Organisation in AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts.html). Diese Vorgehensweise ermöglicht eine zentrale Verwaltung und eine standardisierte Protokollierung für alle Konten.
+ Konfigurieren Sie [S3-Buckets mit Versionierung, Lebenszyklusrichtlinien und regionsübergreifender Replikation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html). Implementieren Sie Verschlüsselung und Zugriffsprotokollierung für Sicherheit und Compliance.
+ Implementieren [Sie allgemeine Protokollierungsstandards, indem Sie das JSON-Format](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData-discoverable-fields.html) mit Standardzeitstempeln und Feldern verwenden. Verwenden Sie eine konsistente Präfixstruktur und Korrelation IDs für eine einfache Nachverfolgung und Analyse.
+ Aktivieren Sie [Sicherheitskontrollen mit AWS KMS Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) und Zugriff mit geringsten Rechten. Sorgen Sie für mehr Sicherheit durch AWS CloudTrail Überwachung und regelmäßige Schlüsselrotation.
+ Richten Sie [CloudWatch Messwerte und Benachrichtigungen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) für die Sendungsverfolgung ein. Überwachen Sie Kosten und Leistung mit automatisierten Benachrichtigungen.
+ Konfigurieren Sie [Amazon S3 S3-Aufbewahrungsrichtlinien, um die](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Compliance-Anforderungen zu erfüllen, und aktivieren Sie die Amazon S3 S3-Serverzugriffsprotokollierung, um alle Anfragen an Ihre S3-Buckets nachzuverfolgen. Pflegen Sie die Dokumentation für S3-Bucket-Richtlinien und Lebenszyklusregeln. Führen Sie regelmäßige Überprüfungen von Zugriffsprotokollen, Bucket-Berechtigungen und Speicherkonfigurationen durch, um die Einhaltung von Vorschriften und [bewährten Sicherheitsverfahren](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) sicherzustellen.

## Epen
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-epics"></a>

### Konten einrichten AWS Control Tower, AFT und Anwendung
<a name="set-up-ctowerlong-aft-and-application-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie eine AWS Control Tower Umgebung mit AFT ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | AWS-Administrator | 
| Aktivieren Sie die gemeinsame Nutzung von Ressourcen für die Organisation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | AWS-Administrator | 
| Überprüfen oder Bereitstellen von Anwendungskonten. | Um neue Anwendungskonten für Ihren Anwendungsfall bereitzustellen, erstellen Sie sie über AFT. Weitere Informationen finden Sie in der AWS Control Tower Dokumentation unter [Bereitstellen eines neuen Kontos bei AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-provision-account.html). | AWS-Administrator | 

### Richten Sie Konfigurationsdateien für Anwendungskonten ein
<a name="set-up-configuration-files-for-application-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopiert `Application_account` den Inhalt des Ordners in das `aft-account-customizations` Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 
| Überprüfen und bearbeiten Sie die Eingabeparameter für die Einrichtung des Anwendungskontos. | In diesem Schritt richten Sie die Konfigurationsdatei für die Erstellung von Ressourcen in Anwendungskonten ein, einschließlich CloudWatch Protokollgruppen, CloudWatch Abonnementfiltern, IAM-Rollen und -Richtlinien sowie Konfigurationsdetails für Amazon RDS-, Amazon EKS- und Lambda-Funktionen.Konfigurieren Sie in Ihrem `aft-account-customizations` Repository im `Application_account` Ordner die Eingabeparameter in der `terraform.tfvars` Datei entsprechend den Anforderungen Ihrer Organisation:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 

### Richten Sie Konfigurationsdateien für das Log Archive-Konto ein
<a name="set-up-configuration-files-for-the-log-archive-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kopiert `Log_archive_account` den Inhalt des Ordners in das `aft-account-customizations` Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 
| Überprüfen und bearbeiten Sie die Eingabeparameter für die Einrichtung des Log Archive-Kontos. | In diesem Schritt richten Sie die Konfigurationsdatei für die Erstellung von Ressourcen im Log Archive-Konto ein, einschließlich Firehose-Lieferstreams, S3-Buckets, SQS-Warteschlangen sowie IAM-Rollen und -Richtlinien.Konfigurieren Sie im `Log_archive_account` Ordner Ihres `aft-account-customizations` Repositorys die Eingabeparameter in der `terraform.tfvars` Datei entsprechend den Anforderungen Ihrer Organisation:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 

### Führen Sie Terraform-Befehle aus, um Ressourcen bereitzustellen
<a name="run-terraform-commands-to-provision-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Option 1 — Stellen Sie die Terraform-Konfigurationsdateien von AFT bereit. | In AFT wird die AFT-Pipeline ausgelöst, nachdem Sie den Code mit den Konfigurationsänderungen in das Repository übertragen haben. GitHub `aft-account-customizations` AFT erkennt die Änderungen automatisch und leitet den Prozess der Kontoanpassung ein.Nachdem Sie Änderungen an Ihren Terraform (`terraform.tfvars`) -Dateien vorgenommen haben, übertragen Sie Ihre Änderungen und übertragen Sie sie in Ihr Repository: `aft-account-customizations`<pre>$ git add *<br />$ git commit -m "update message"<br />$ git push origin main</pre>Wenn du einen anderen Branch (wie`dev`) verwendest, ersetze ihn `main` durch deinen Branch-Namen. | DevOps Ingenieur | 
| Option 2 — Stellen Sie die Terraform-Konfigurationsdatei manuell bereit. | Wenn Sie AFT nicht verwenden oder die Lösung manuell bereitstellen möchten, können Sie die folgenden Terraform-Befehle aus den Ordnern und verwenden: `Application_account` `Log_archive_account`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 

### Ressourcen validieren
<a name="validate-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Abonnementfilter. | Gehen Sie wie folgt vor, um sicherzustellen, dass die Abonnementfilter Protokolle korrekt von den Protokollgruppen des Anwendungskontos an das Protokollarchivkonto weiterleiten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 
| Überprüfen Sie Firehose-Streams. | So überprüfen Sie, ob die Firehose-Streams im Log Archive-Konto Anwendungsprotokolle erfolgreich verarbeiten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 
| Validieren Sie die zentralisierten S3-Buckets. | Gehen Sie wie folgt vor, um zu überprüfen, ob die zentralisierten S3-Buckets Protokolle empfangen und ordnungsgemäß organisieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 
| Überprüfen Sie die SQS-Warteschlangen. | So überprüfen Sie, ob die SQS-Warteschlangen Benachrichtigungen für neue Protokolldateien erhalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Option 1 — Außerbetriebnahme der Terraform-Konfigurationsdatei von AFT. | Wenn Sie die Terraform-Konfigurationsdateien entfernen und die Änderungen übertragen, leitet AFT automatisch den Prozess zum Entfernen der Ressourcen ein.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 
| Option 2 — Manuelles Bereinigen der Terraform-Ressourcen. | Wenn Sie AFT nicht verwenden oder Ressourcen manuell bereinigen möchten, verwenden Sie die folgenden Terraform-Befehle aus den Ordnern und: `Application_account` `Log_archive_account`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps Ingenieur | 

## Fehlerbehebung
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Das CloudWatch Logs-Ziel wurde nicht erstellt oder ist inaktiv. | Überprüfen Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 
| Der Abonnementfilter ist ausgefallen oder hat den Status „Ausstehend“. | Überprüfen Sie, ob Folgendes der Fall ist:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 
| Der Firehose-Lieferstream zeigt keine eingehenden Datensätze an. | Überprüfen Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 

## Zugehörige Ressourcen
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-resources"></a>
+ [Einrichtung der Terraform-Infrastruktur](https://developer.hashicorp.com/terraform/tutorials/aws-get-started) (Terraform-Dokumentation)
+ [AWS Control Tower Account Factory für Terraform (AFT) bereitstellen (AWS Control Tower Dokumentation)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html)
+ [IAM-Tutorial: Delegieren Sie den Zugriff AWS-Konten mithilfe von IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) () IAMdocumentation

# Richten Sie die end-to-end Verschlüsselung für Anwendungen auf Amazon EKS mithilfe von cert-manager und Let's Encrypt ein
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt"></a>

*Mahendra Revanasiddappa und Vasanth Jeyaraj, Amazon Web Services*

## Zusammenfassung
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-summary"></a>

Die Implementierung von end-to-end Verschlüsselung kann komplex sein, und Sie müssen Zertifikate für jedes Asset in Ihrer Microservices-Architektur verwalten. Obwohl Sie die Transport Layer Security (TLS) -Verbindung am Rand des Amazon Web Services (AWS) -Netzwerks mit einem Network Load Balancer oder Amazon API Gateway beenden können, benötigen einige Organisationen end-to-end Verschlüsselung.

Dieses Muster verwendet den NGINX Ingress Controller für den Ingress. Das liegt daran, dass beim Erstellen eines Kubernetes-Ingress die Ingress-Ressource einen Network Load Balancer verwendet. Der Network Load Balancer erlaubt keine Uploads von Client-Zertifikaten. Daher können Sie mit Kubernetes-Ingress kein gegenseitiges TLS erreichen.

Dieses Muster ist für Organisationen gedacht, die eine gegenseitige Authentifizierung zwischen allen Microservices in ihren Anwendungen benötigen. Mutual TLS reduziert den Aufwand für die Verwaltung von Benutzernamen oder Passwörtern und kann auch das schlüsselfertige Sicherheitsframework verwenden. Der Ansatz dieses Musters ist kompatibel, wenn Ihr Unternehmen über eine große Anzahl verbundener Geräte verfügt oder strenge Sicherheitsrichtlinien einhalten muss.

Dieses Muster trägt dazu bei, die Sicherheitslage Ihres Unternehmens zu verbessern, indem es end-to-end Verschlüsselung für Anwendungen implementiert, die auf Amazon Elastic Kubernetes Service (Amazon EKS) ausgeführt werden. Dieses Muster enthält eine Beispielanwendung und einen Code im GitHub [End-to-end Encryption on Amazon EKS-Repository](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme), um zu zeigen, wie ein Microservice mit end-to-end Verschlüsselung auf Amazon EKS ausgeführt wird. Der Ansatz des Musters verwendet [cert-manager](https://cert-manager.io/docs/), ein Add-on für Kubernetes, mit [Let's Encrypt](https://letsencrypt.org/) als Zertifizierungsstelle (CA). Let's Encrypt ist eine kostengünstige Lösung zur Verwaltung von Zertifikaten und bietet kostenlose Zertifikate, die 90 Tage gültig sind. CERT-Manager automatisiert die On-Demand-Bereitstellung und Rotation von Zertifikaten, wenn ein neuer Microservice auf Amazon EKS bereitgestellt wird. 

**Beabsichtigte Zielgruppe**

Dieses Muster wird Benutzern empfohlen, die Erfahrung mit Kubernetes, TLS, Amazon Route 53 und Domain Name System (DNS) haben.

## Voraussetzungen und Einschränkungen
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Ein vorhandener Amazon-EKS-Cluster.
+ AWS-Befehlszeilenschnittstelle (AWS CLI) Version 1.7 oder höher, installiert und konfiguriert auf macOS, Linux oder Windows.
+ Das `kubectl` Befehlszeilenprogramm, das für den Zugriff auf den Amazon EKS-Cluster installiert und konfiguriert wurde. Weitere Informationen dazu finden Sie unter [Installation von kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) in der Amazon EKS-Dokumentation.
+ Ein vorhandener DNS-Name zum Testen der Anwendung. Weitere Informationen dazu finden Sie unter [Registrierung von Domainnamen mit Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html) in der Amazon Route 53 53-Dokumentation. 
+ Die neueste [Helm-Version](https://docs.aws.amazon.com/eks/latest/userguide/helm.html), die auf Ihrem lokalen Computer installiert ist. Weitere Informationen dazu finden Sie unter [Using Helm with Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) in der Amazon EKS-Dokumentation und im GitHub [Helm-Repository](https://github.com/helm/helm). 
+ Die GitHub [End-to-end Verschlüsselung im Amazon EKS-Repository](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme), auf Ihren lokalen Computer geklont. 
+ Ersetzen Sie die folgenden Werte in den `trustpolicy.json` Dateien `policy.json` und aus der geklonten GitHub [End-to-end Verschlüsselung im Amazon EKS-Repository](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme):
  + `<account number>`— Ersetzen Sie durch die AWS-Konto-ID für das Konto, in dem Sie die Lösung bereitstellen möchten. 
  + `<zone id>`— Ersetzen Sie durch die Route 53 53-Zonen-ID des Domainnamens. 
  + `<node_group_role>`— Durch den Namen der AWS Identity and Access Management (IAM) -Rolle ersetzen, die den Amazon EKS-Knoten zugeordnet ist.
  + `<namespace>`— Ersetzen Sie durch den Kubernetes-Namespace, in dem Sie den NGINX Ingress Controller und die Beispielanwendung bereitstellen.
  + `<application-domain-name>`— Durch den DNS-Domainnamen von Route 53 ersetzen.

**Einschränkungen**
+ Dieses Muster beschreibt nicht, wie Zertifikate rotiert werden, sondern zeigt nur, wie Zertifikate mit Microservices auf Amazon EKS verwendet werden. 

## Architektur
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-architecture"></a>

Das folgende Diagramm zeigt den Workflow und die Architekturkomponenten für dieses Muster.

![\[Workflow zum Einrichten der Verschlüsselung für Anwendungen auf Amazon EKS mithilfe von cert-manager und Let's Encrypt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9aa3ee9e-73db-41f5-a467-b5c47fef496e/images/40692ede-6fb3-474e-8c9e-85c51529e8ad.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein Client sendet eine Anfrage für den Zugriff auf die Anwendung an den DNS-Namen.

1. Der Route 53 53-Datensatz ist ein CNAME für den Network Load Balancer.

1. Der Network Load Balancer leitet die Anfrage an den NGINX Ingress Controller weiter, der mit einem TLS-Listener konfiguriert ist. Die Kommunikation zwischen dem NGINX Ingress Controller und dem Network Load Balancer folgt dem HTTPS-Protokoll.

1. Der NGINX Ingress Controller führt auf der Grundlage der Anfrage des Clients an den Anwendungsdienst ein pfadbasiertes Routing durch.

1. Der Anwendungsdienst leitet die Anfrage an den Anwendungs-Pod weiter. Die Anwendung ist so konzipiert, dass sie dasselbe Zertifikat verwendet, indem sie Secrets aufruft.

1. Pods führen die Beispielanwendung mithilfe der Cert-Manager-Zertifikate aus. Die Kommunikation zwischen dem NGINX Ingress Controller und den Pods verwendet HTTPS.


| 
| 
| Hinweis: CERT-Manager läuft in einem eigenen Namespace. Es verwendet eine Kubernetes-Clusterrolle, um Zertifikate als Geheimnisse in bestimmten Namespaces bereitzustellen. Sie können diese Namespaces an Anwendungs-Pods und den NGINX Ingress Controller anhängen.  | 
| --- |

## Tools
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-tools"></a>

**AWS-Services**
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) ist ein verwalteter Service, mit dem Sie Kubernetes auf AWS ausführen können, ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) verteilt Ihren eingehenden Traffic automatisch auf mehrere Ziele, Container und IP-Adressen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.

**Andere Tools**
+ [cert-manager](https://cert-manager.io/docs/installation/supported-releases/) ist ein Add-on für Kubernetes, das Zertifikate anfordert, sie an Kubernetes-Container verteilt und die Zertifikatserneuerung automatisiert.
+ [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/) ist eine Lösung für das Verkehrsmanagement für Cloud-native Apps in Kubernetes und containerisierten Umgebungen.

## Epen
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-epics"></a>

### Erstellen und konfigurieren Sie eine öffentlich gehostete Zone mit Route 53
<a name="create-and-configure-a-public-hosted-zone-with-route-53"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine öffentlich gehostete Zone in Route 53 | Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die Amazon Route 53 53-Konsole, wählen Sie **Hosted Zones** und dann **Create Hosted Zone** aus. Erstellen Sie eine öffentlich gehostete Zone und notieren Sie sich die Zonen-ID. Weitere Informationen dazu finden Sie unter [Creating a public hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) in der Amazon Route 53 53-Dokumentation.ACME DNS01 verwendet den DNS-Anbieter, um eine Aufforderung an den Cert-Manager zur Ausstellung des Zertifikats zu senden. Bei dieser Aufforderung müssen Sie nachweisen, dass Sie den DNS für Ihren Domainnamen kontrollieren, indem Sie einen bestimmten Wert in einen TXT-Eintrag unter diesem Domainnamen eingeben. Nachdem Let's Encrypt Ihrem ACME-Client ein Token gegeben hat, erstellt Ihr Kunde einen TXT-Eintrag, der von diesem Token und Ihrem Kontoschlüssel abgeleitet ist, und platziert diesen Datensatz unter. `_acme-challenge.<YOURDOMAIN>` Dann fragt Let's Encrypt den DNS nach diesem Datensatz ab. Wenn eine Übereinstimmung gefunden wird, können Sie mit der Ausstellung eines Zertifikats fortfahren. | AWS DevOps | 

### Konfigurieren Sie eine IAM-Rolle, damit der Cert-Manager auf die öffentlich gehostete Zone zugreifen kann
<a name="configure-an-iam-role-to-allow-cert-manager-to-access-the-public-hosted-zone"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die IAM-Richtlinie für Cert-Manager.  | Eine IAM-Richtlinie ist erforderlich, um dem Cert-Manager die Erlaubnis zu erteilen, zu überprüfen, ob Sie Eigentümer der Route 53 53-Domäne sind. Die `policy.json` Beispiel-IAM-Richtlinie befindet sich im `1-IAMRole` Verzeichnis im Repository für geklonte GitHub [End-to-end Verschlüsselung im Amazon EKS-Repository](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme).Geben Sie den folgenden Befehl in der AWS-CLI ein, um die IAM-Richtlinie zu erstellen.<pre>aws iam create-policy \<br />  --policy-name PolicyForCertManager \<br />  --policy-document file://policy.json</pre> | AWS DevOps | 
| Erstellen Sie die IAM-Rolle für cert-manager. | Nachdem Sie die IAM-Richtlinie erstellt haben, müssen Sie eine IAM-Rolle erstellen. Die `trustpolicy.json` IAM-Beispielrolle wird im Verzeichnis bereitgestellt. `1-IAMRole`Geben Sie den folgenden Befehl in der AWS-CLI ein, um die IAM-Rolle zu erstellen.<pre>aws iam create-role \<br />  --role-name RoleForCertManager \<br />  --assume-role-policy-document file://trustpolicy.json</pre> | AWS DevOps | 
| Fügen Sie der Rolle die -Richtlinie an. | Geben Sie den folgenden Befehl in der AWS-CLI ein, um die IAM-Richtlinie an die IAM-Rolle anzuhängen. `AWS_ACCOUNT_ID`Ersetzen Sie es durch die ID Ihres AWS-Kontos. <pre>aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::AWS_ACCOUNT_ID:policy/PolicyForCertManager \<br />  --role-name RoleForCertManager</pre> | AWS DevOps | 

### Den NGINX Ingress Controller in Amazon EKS einrichten
<a name="set-up-the-nginx-ingress-controller-in-amazon-eks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie den NGINX Ingress Controller bereit. | Installieren Sie die neueste Version von `nginx-ingress` Using Helm. Sie können die `nginx-ingress` Konfiguration vor der Bereitstellung an Ihre Anforderungen anpassen. Dieses Muster verwendet einen mit Anmerkungen versehenen, nach innen gerichteten Network Load Balancer, der im Verzeichnis verfügbar ist. `5-Nginx-Ingress-Controller` Installieren Sie den NGINX Ingress Controller, indem Sie den folgenden Helm-Befehl aus dem Verzeichnis ausführen. `5-Nginx-Ingress-Controller``helm install test-nginx nginx-stable/nginx-ingress  -f  5-Nginx-Ingress-Controller/values_internal_nlb.yaml` | AWS DevOps | 
| Stellen Sie sicher, dass der NGINX Ingress Controller installiert ist. | Geben Sie den `helm list`-Befehl ein. Die Ausgabe sollte zeigen, dass der NGINX Ingress Controller installiert ist. | AWS DevOps | 
| Erstellen Sie einen Route 53 A-Datensatz. | Der A-Datensatz verweist auf den Network Load Balancer, der vom NGINX Ingress Controller erstellt wurde.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 

### NGINX VirtualServer auf Amazon EKS einrichten
<a name="set-up-nginx-virtualserver-on-amazon-eks"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie NGINX VirtualServer bereit. | Die VirtualServer NGINX-Ressource ist eine Lastausgleichskonfiguration, die eine Alternative zur Eingangsressource darstellt. Die Konfiguration zum Erstellen der VirtualServer NGINX-Ressource ist in der Datei im `nginx_virtualserver.yaml` Verzeichnis verfügbar. `6-Nginx-Virtual-Server` Geben Sie den folgenden Befehl ein, `kubectl` um die VirtualServer NGINX-Ressource zu erstellen.`kubectl apply -f  nginx_virtualserver.yaml`Stellen Sie sicher, dass Sie den Anwendungsdomänennamen, den geheimen Zertifikatsschlüssel und den Namen des Anwendungsdienstes in der `nginx_virtualserver.yaml` Datei aktualisieren. | AWS DevOps | 
| Stellen Sie sicher, dass NGINX erstellt wurde VirtualServer . | Geben Sie den folgenden Befehl ein`kubectl`, um zu überprüfen, ob die VirtualServer NGINX-Ressource erfolgreich erstellt wurde.`kubectl get virtualserver`Stellen Sie sicher, dass die `Host` Spalte mit dem Domainnamen Ihrer Anwendung übereinstimmt. | AWS DevOps | 
| Stellen Sie den NGINX-Webserver mit aktiviertem TLS bereit. | Dieses Muster verwendet einen NGINX-Webserver mit aktiviertem TLS als Anwendung zum Testen der Verschlüsselung. end-to-end Die für die Bereitstellung der Testanwendung erforderlichen Konfigurationsdateien sind im `demo-webserver` Verzeichnis verfügbar. Geben Sie den folgenden Befehl ein`kubectl`, um die Testanwendung bereitzustellen.`kubectl apply -f nginx-tls-ap.yaml` | AWS DevOps | 
| Stellen Sie sicher, dass die Ressourcen für die Testanwendung erstellt wurden. | Geben Sie die folgenden Befehle ein, `kubectl` um zu überprüfen, ob die erforderlichen Ressourcen für die Testanwendung erstellt wurden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 
| Validieren Sie die Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 

## Zugehörige Ressourcen
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-resources"></a>

**AWS-Ressourcen**
+ [Erstellen von Datensätzen mithilfe der Amazon Route 53 53-Konsole](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) (Amazon Route 53 53-Dokumentation)
+ [Verwenden eines Network Load Balancer mit dem NGINX-Ingress-Controller auf Amazon EKS](https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/) (AWS-Blogbeitrag)

**Sonstige Ressourcen**
+ [Route 53](https://cert-manager.io/docs/configuration/acme/dns01/route53/) (Cert-Manager-Dokumentation)
+ [Konfiguration des DNS01 Challenge Providers](https://cert-manager.io/docs/configuration/acme/dns01/) (Cert-Manager-Dokumentation)
+ [Lassen Sie uns die DNS-Herausforderung verschlüsseln (Let's Encrypt-Dokumentation](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge))

# Vereinfachen Sie die Bereitstellung von Amazon EKS-Anwendungen für mehrere Mandanten mithilfe von Flux
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux"></a>

*Nadeem Rahaman, Aditya Ambati, Aniket Dekate und Shrikant Patil, Amazon Web Services*

## Zusammenfassung
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-summary"></a>

Viele Unternehmen, die Produkte und Dienstleistungen anbieten, sind datenregulierte Branchen, die Datenbarrieren zwischen ihren internen Geschäftsfunktionen aufrechterhalten müssen. Dieses Muster beschreibt, wie Sie die Multi-Tenancy-Funktion in Amazon Elastic Kubernetes Service (Amazon EKS) verwenden können, um eine Datenplattform aufzubauen, die eine logische und physische Isolierung zwischen Mandanten oder Benutzern erreicht, die sich einen einzigen Amazon EKS-Cluster teilen. Das Muster bietet Isolierung durch die folgenden Ansätze:
+ Isolierung des Kubernetes-Namespaces
+ Rollenbasierte Zugriffskontrolle (RBAC)
+ Netzwerkrichtlinien
+ Ressourcenkontingente
+ AWS Identity and Access Management (IAM) -Rollen für Dienstkonten (IRSA)

Darüber hinaus verwendet diese Lösung Flux, um die Mandantenkonfiguration bei der Bereitstellung von Anwendungen unveränderlich zu halten. Sie können Ihre Mandantenanwendungen bereitstellen, indem Sie in Ihrer Konfiguration das Mandanten-Repository angeben, das die `kustomization.yaml` Flux-Datei enthält.

Dieses Muster implementiert Folgendes:
+ Ein AWS CodeCommit Repository, AWS CodeBuild Projekte und eine AWS CodePipeline Pipeline, die durch manuelles Bereitstellen von Terraform-Skripten erstellt werden.
+ Netzwerk- und Rechenkomponenten, die für das Hosting der Mandanten erforderlich sind. Diese werden durch CodePipeline und mithilfe CodeBuild von Terraform erstellt.
+ Mandanten-Namespaces, Netzwerkrichtlinien und Ressourcenkontingente, die anhand eines Helm-Diagramms konfiguriert werden.
+ Anwendungen, die verschiedenen Mandanten gehören und mithilfe von Flux bereitgestellt werden.

Wir empfehlen Ihnen, Ihre eigene Architektur für Mehrmandantenfähigkeit auf der Grundlage Ihrer individuellen Anforderungen und Sicherheitsüberlegungen sorgfältig zu planen und zu erstellen. Dieses Muster bietet einen Ausgangspunkt für Ihre Implementierung.

## Voraussetzungen und Einschränkungen
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ AWS Command Line Interface [(AWS CLI) Version 2.11.4 oder höher, [installiert und konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) Version 0.12 oder höher ist auf Ihrem lokalen Computer installiert
+ [Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest) Version 3.0.0 oder höher
+ [Kubernetes](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs) Provider Version 2.10 oder höher
+ [Helm Provider Version 2.8.0](https://registry.terraform.io/providers/hashicorp/helm/latest/docs) oder höher
+ [Kubectl Provider](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs) Version 1.14 oder höher

**Einschränkungen**
+ **Abhängigkeit von manuellen Terraform-Bereitstellungen:** Die anfängliche Einrichtung des Workflows, einschließlich der Erstellung von CodeCommit Repositorys, CodeBuild Projekten und CodePipeline Pipelines, basiert auf manuellen Terraform-Bereitstellungen. Dies führt zu potenziellen Einschränkungen in Bezug auf Automatisierung und Skalierbarkeit, da bei Infrastrukturänderungen manuelle Eingriffe erforderlich sind.
+ **CodeCommit Abhängigkeit von Repositorys:** Der Workflow stützt sich auf CodeCommit Repositorien als Lösung für die Quellcodeverwaltung und ist eng mit AWS-Services diesen verknüpft.

## Architektur
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-architecture"></a>

**Zielarchitekturen**

Dieses Muster setzt drei Module zum Aufbau der Pipeline-, Netzwerk- und Recheninfrastruktur für eine Datenplattform ein, wie in den folgenden Diagrammen dargestellt.

*Pipeline-Architektur:*

![\[Pipeline-Infrastruktur für die mehrinstanzenfähige Amazon EKS-Architektur\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/76a4a23d-4275-427a-ae36-51c9a3803128.png)


*Netzwerkarchitektur:*

![\[Netzwerkinfrastruktur für die mehrinstanzenfähige Amazon EKS-Architektur\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/e542249a-19a3-4c99-b6f5-fdf80fee4edf.png)


*Rechenarchitektur:*

![\[Recheninfrastruktur für die mehrinstanzenfähige Amazon EKS-Architektur\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/91bd1ca8-17f0-433c-8600-4c8e6c474e31.png)


## Tools
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-tools"></a>

**AWS-Services**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)ist ein zentraler Hub, der virtuelle private Clouds () und lokale Netzwerke verbindet. VPCs
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ Die [Cilium-Netzwerkrichtlinien unterstützen die](https://cilium.io/use-cases/network-policy/#:~:text=Cilium%20implements%20Kubernetes%20Network%20Policies,%2C%20Kafka%2C%20gRPC%2C%20etc.) Kubernetes L3- und L4-Netzwerkrichtlinien. Sie können mit L7-Richtlinien erweitert werden, um Sicherheit auf API-Ebene für HTTP, Kafka und gRPC sowie andere ähnliche Protokolle bereitzustellen.
+ [Flux](https://fluxcd.io/) ist ein Git-basiertes Continuous Delivery (CD) -Tool, das Anwendungsbereitstellungen auf Kubernetes automatisiert.
+ [Helm](https://helm.sh/docs/) ist ein Open-Source-Paketmanager für Kubernetes, der Sie bei der Installation und Verwaltung von Anwendungen auf Ihrem Kubernetes-Cluster unterstützt.
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code), mit dem Sie Cloud- und lokale HashiCorp Ressourcen erstellen und verwalten können.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [EKS Multi-Tenancy Terraform](https://github.com/aws-samples/aws-eks-multitenancy-deployment) Solution Repository verfügbar.

## Best Practices
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-best-practices"></a>

Richtlinien und bewährte Methoden für die Verwendung dieser Implementierung finden Sie im Folgenden:
+ [Bewährte Methoden für Amazon EKS für mehrere Mandanten](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/)
+ [Flux-Dokumentation](https://fluxcd.io/flux/get-started/)

## Epen
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-epics"></a>

### Erstellen Sie Pipelines für die Phasen Erstellen, Testen und Bereitstellen von Terraform
<a name="create-pipelines-for-terraform-build-test-and-deploy-stages"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Projekt-Repository. | Klonen Sie das GitHub [EKS Multi-Tenancy Terraform Solution](https://github.com/aws-samples/aws-eks-multitenancy-deployment) Repository, indem Sie den folgenden Befehl in einem Terminalfenster ausführen:<pre>git clone https://github.com/aws-samples/aws-eks-multitenancy-deployment.git</pre> | AWS DevOps | 
| Bootstrap für den Terraform S3-Bucket und Amazon DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Aktualisieren Sie die `locals.tf` Dateien `run.sh` und. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Stellen Sie das Pipeline-Modul bereit. | Führen Sie die folgenden Terraform-Befehle manuell aus, um Pipeline-Ressourcen zu erstellen. Es gibt keine Orchestrierung für die automatische Ausführung dieser Befehle.<pre>./run.sh -m pipeline -e demo -r <AWS_REGION> -t init<br />./run.sh -m pipeline -e demo -r <AWS_REGION> -t plan<br />./run.sh -m pipeline -e demo -r <AWS_REGION> -t apply</pre> | AWS DevOps | 

### Erstellen Sie die Netzwerkinfrastruktur
<a name="create-the-network-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie die Pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html)Nach dieser ersten Ausführung wird die Pipeline automatisch gestartet, wenn Sie eine Änderung an den Hauptzweig des CodeCommit Repositorys übertragen.Die Pipeline umfasst die folgenden [Phasen](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-stages):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Validieren Sie die über das Netzwerkmodul erstellten Ressourcen. | Vergewissern Sie sich, dass die folgenden AWS Ressourcen nach der erfolgreichen Bereitstellung der Pipeline erstellt wurden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 

### Erstellen Sie die Recheninfrastruktur
<a name="create-the-compute-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Update`locals.tf`, um den Zugriff des CodeBuild Projekts auf die VPC zu ermöglichen. | Um die Add-Ons für den privaten Amazon EKS-Cluster bereitzustellen, muss das CodeBuild Projekt an die Amazon EKS-VPC angehängt werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Aktualisieren Sie die `buildspec` Dateien, um das Rechenmodul zu erstellen. | Setzen `templates` Sie im Ordner in allen `buildspec` YAML-Dateien den Wert der `TF_MODULE_TO_BUILD` Variablen von `network` bis`compute`:<pre>TF_MODULE_TO_BUILD: "compute"</pre> | AWS DevOps | 
| Aktualisieren Sie die `values` Datei für das Helm-Diagramm für die Mandantenverwaltung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Validieren Sie die Rechenressourcen. |  CodePipeline Startet automatisch, nachdem Sie die Dateien in den vorherigen Schritten aktualisiert haben. Vergewissern Sie sich, dass die folgenden AWS Ressourcen für die Recheninfrastruktur erstellt wurden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 

### Schauen Sie sich die Mandantenverwaltung und andere Ressourcen an
<a name="check-tenant-management-and-other-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Validieren Sie die Ressourcen für die Mandantenverwaltung in Kubernetes. | Führen Sie die folgenden Befehle aus, um zu überprüfen, ob die Ressourcen für die Mandantenverwaltung erfolgreich mit Hilfe von Helm erstellt wurden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Überprüfen Sie die Bereitstellungen von Mandantenanwendungen. | Führen Sie die folgenden Befehle aus, um zu überprüfen, ob die Mandantenanwendungen bereitgestellt wurden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) |  | 

## Fehlerbehebung
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Sie erhalten eine Fehlermeldung, die der folgenden ähnelt:`Failed to checkout and determine revision: unable to clone unknown error: You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit.` | Gehen Sie wie folgt vor, um das Problem zu beheben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | 

## Zugehörige Ressourcen
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-resources"></a>
+ [Amazon EKS Blueprints für Terraform](https://github.com/aws-ia/terraform-aws-eks-blueprints)
+ [Amazon EKS Best Practices-Leitfäden, Abschnitt Mehrmandantenfähigkeit](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/)
+ [Flux-Webseite](https://fluxcd.io/)
+ [Helm-Webseite](https://helm.sh/)

## Zusätzliche Informationen
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-additional"></a>

Hier ist ein Beispiel für eine Repository-Struktur für die Bereitstellung von Mandantenanwendungen:

```
applications
sample_tenant_app
├── README.md
├── base
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── ingress.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── tenant-1
    │   ├── configmap.yaml
    │   ├── deployment.yaml
    │   └── kustomization.yaml
    └── tenant-2
        ├── configmap.yaml
        └── kustomization.yaml
```

# Optimieren Sie die Entwicklung und Bereitstellung von Amazon Lex Lex-Bot mithilfe eines automatisierten Workflows
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow"></a>

*Balaji Panneerselvam, Attila Dancso, Pavan Dusanapudi, Anand Jumnani und James O'Hara, Amazon Web Services*

## Zusammenfassung
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-summary"></a>

Die Entwicklung und Bereitstellung von Amazon Lex Conversational Bots kann eine Herausforderung sein, wenn Sie versuchen, mehrere Funktionen, Entwickler und Umgebungen zu verwalten. Ein automatisierter Arbeitsablauf, der die Prinzipien von Infrastructure as Code (IaC) verwendet, kann dazu beitragen, den Prozess zu rationalisieren. Dieses Muster kann dazu beitragen, die Produktivität der Amazon Lex-Entwickler zu verbessern und ein effizientes Bot-Lebenszyklusmanagement auf folgende Weise zu ermöglichen:
+ **Ermöglichen Sie die gleichzeitige Entwicklung mehrerer Funktionen** — Mit einem automatisierten Workflow können Entwickler in separaten Zweigen parallel an verschiedenen Funktionen arbeiten. Änderungen können dann zusammengeführt und bereitgestellt werden, ohne dass andere Arbeiten blockiert werden.
+ **Verwenden Sie die Benutzeroberfläche der Amazon Lex-Konsole** — Entwickler können die benutzerfreundliche Amazon Lex-Konsole verwenden, um Bots zu erstellen und zu testen. Die Bots werden dann im Infrastrukturcode für die Bereitstellung beschrieben.
+ **Werbung für Bots in allen Umgebungen** — Der Workflow automatisiert das Bewerben von Bot-Versionen aus niedrigeren Umgebungen wie Entwicklung und Test bis hin zur Produktion. Dieser Ansatz reduziert das Risiko und den Aufwand manueller Werbeaktionen.
+ **Behalten Sie die Versionskontrolle** bei — Die Verwaltung von Bot-Definitionen in Git statt ausschließlich über den Amazon Lex Lex-Service bietet Ihnen Versionskontrolle und einen Audit-Trail. Änderungen werden bis zu den einzelnen Entwicklern zurückverfolgt, anders als wenn nur die AWS-Managementkonsole oder APIs zur Änderung der darin gespeicherten Bots verwendet werden AWS. 

Durch die Automatisierung des Amazon Lex Lex-Bot-Release-Prozesses können Teams Funktionen schneller und mit geringerem Risiko und geringerem Aufwand bereitstellen. Bots unterliegen weiterhin der Versionskontrolle und sind nicht isoliert in der Amazon Lex Lex-Konsole. 

## Voraussetzungen und Einschränkungen
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-prereqs"></a>

**Voraussetzungen**
+ Der Workflow umfasst mehrere AWS-Konten für verschiedene Umgebungen (Entwicklung, Produktion und DevOps), was Kontoverwaltung und kontenübergreifende Zugriffskonfigurationen erfordert.
+ Python 3.9 ist in Ihrer Bereitstellungsumgebung oder Pipeline verfügbar.
+ Git [wurde auf einer lokalen Workstation für die Quellcodeverwaltung installiert](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) und konfiguriert.
+ AWS Command Line Interface (AWS CLI) [installiert](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) und konfiguriert, um sich über die Befehlszeile oder Python zu authentifizieren.

**Einschränkungen**
+ **Zugriff auf das Repository** — Der Workflow geht davon aus, dass die CI/CD-Pipeline (Continuous Integration and Continuous Delivery) über die erforderlichen Berechtigungen verfügt, um Änderungen an das Quellcode-Repository zu übertragen. 
+ **Erste Bot-Version** — Das Tooling erfordert, dass eine erste Version des Bots mithilfe von Vorlagen bereitgestellt wird. AWS CloudFormation Sie müssen die erste Iteration des Bots erstellen und sie in das Repository übernehmen, bevor der automatisierte Workflow die Kontrolle übernehmen kann.
+ **Zusammenführungskonflikte** — Obwohl der Workflow darauf abzielt, die gleichzeitige Entwicklung zu ermöglichen, besteht immer noch die Möglichkeit von Zusammenführungskonflikten, wenn Änderungen aus verschiedenen Branchen integriert werden. Die Lösung von Konflikten in Bot-Konfigurationen erfordert möglicherweise manuelles Eingreifen.

**Produktversionen**
+ [Python 3.9](https://www.python.org/downloads/) oder höher
+ [AWS CDK v2 2.124.0 oder höher](https://docs.aws.amazon.com/cdk/api/versions.html)
+ [AWS SDK für Python (Boto3)](https://docs.aws.amazon.com/pythonsdk/)1.28 oder höher

## Architektur
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-architecture"></a>

Das folgende Diagramm zeigt die allgemeine Architektur und die wichtigsten Komponenten der Lösung.

![\[Workflow zur Automatisierung der Entwicklung und Bereitstellung von Amazon Lex Lex-Bots.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/3c7f9d16-9708-43c4-afa6-9d804d6b9dad/images/cdc73e82-a777-4e88-8bf8-a73c9bacb47f.png)


Zu den wichtigsten Komponenten gehören:
+ **Lex-Bot-Repo** — Ein Git-Repository, das die IaC-Definitionen für die Amazon Lex-Bots speichert.
+ **DevOps**— Ein, das sich der Unterbringung der CI/CD Pipelines und der zugehörigen Ressourcen für den Entwicklungs- und Bereitstellungsprozess AWS-Konto widmet.
+ **Pipelines** — Die AWS CodePipeline Instanzen, die verschiedene Phasen des Bot-Entwicklungs- und Bereitstellungszyklus automatisieren, z. B. das Erstellen eines neuen Bots, das Exportieren einer Bot-Definition, das Importieren einer Bot-Definition und das Löschen eines Bots.
+ **Ticket-Bots und Haupt-Bot** — Die Amazon Lex Lex-Bot-Ressourcen, wobei es sich bei den Ticket-Bots um funktionsspezifische Bots handelt, die von einzelnen Teams oder Entwicklern entwickelt wurden, und der Haupt-Bot der Basis-Bot ist, der alle Funktionen integriert.

Das Architekturdiagramm veranschaulicht den folgenden Arbeitsablauf:

1. **Baseline-Haupt-Bot** — Der Ausgangspunkt des Workflows besteht darin, den Haupt-Bot in der Entwicklungsumgebung (Dev) als Basis zu betrachten. Der Haupt-Bot dient als Grundlage für future Entwicklungen und Funktionserweiterungen.

1. **Ticket-Bot erstellen** — Wenn eine neue Funktion oder Änderung erforderlich ist, wird ein Ticket-Bot erstellt. Der Ticket-Bot ist im Grunde eine Kopie oder ein Zweig des Haupt-Bots, an dem Entwickler arbeiten können, ohne die Hauptversion zu beeinträchtigen.

1. **Ticket-Bot exportieren** — Nachdem die Arbeit am Ticket-Bot abgeschlossen ist, wird er aus dem Amazon Lex Lex-Service exportiert. Dann wird der Zweig, der den Ticket-Bot enthält, vom Hauptzweig aus umbenannt. Dieser Schritt stellt sicher, dass alle Änderungen, die während der Entwicklung des Ticket-Bot am Haupt-Bot vorgenommen wurden, übernommen werden, wodurch potenzielle Konflikte reduziert werden.

1. **Bot für rebased Ticket importieren und validieren** — Der Bot für rebased Tickets wird zurück in die Entwicklungsumgebung importiert und validiert, um sicherzustellen, dass er mit den neuesten Änderungen aus dem Hauptzweig korrekt funktioniert. Wenn die Validierung erfolgreich ist, wird eine Pull-Anfrage (PR) erstellt, um die Ticket-Bot-Änderungen mit dem Hauptzweig zusammenzuführen.

1. **Ticket-Bot löschen** — Nachdem die Änderungen erfolgreich mit dem Hauptzweig zusammengeführt wurden, wird der Ticket-Bot nicht mehr benötigt. Der Ticket-Bot kann gelöscht werden, um die Umgebung sauber und überschaubar zu halten.

1. **Den Haupt-Bot in der Entwicklungsumgebung bereitstellen und testen** — Der aktualisierte Haupt-Bot, der jetzt die neuen Funktionen oder Änderungen enthält, wird in der Entwicklungsumgebung bereitgestellt. Hier wird er gründlichen Tests unterzogen, um sicherzustellen, dass alle Funktionen wie erwartet funktionieren.

1. **Stellen Sie den Haupt-Bot in der Produktionsumgebung** bereit — Nachdem die Tests in der Entwicklungsumgebung abgeschlossen und erfolgreich abgeschlossen sind, wird der Haupt-Bot in der Produktionsumgebung bereitgestellt. Dieser Schritt ist die letzte Phase des Workflows, in der die neuen Funktionen den Endbenutzern zur Verfügung stehen.

**Automatisierung und Skalierung**

Der automatisierte Workflow ermöglicht es Entwicklern, parallel an verschiedenen Funktionen zu arbeiten, jeweils in separaten Zweigen. Dies erleichtert die gleichzeitige Entwicklung, sodass Teams effektiv zusammenarbeiten und Funktionen schneller bereitstellen können. Da die Filialen voneinander isoliert sind, können Änderungen zusammengeführt und bereitgestellt werden, ohne dass andere laufende Arbeiten blockiert oder beeinträchtigt werden.

Der Workflow automatisiert die Bereitstellung und Vermarktung von Bot-Versionen in verschiedenen Umgebungen, z. B. in der Entwicklung, beim Testen und bei der Produktion.

Das Speichern von Bot-Definitionen in einem Versionskontrollsystem wie Git bietet einen umfassenden Prüfpfad und ermöglicht eine effiziente Zusammenarbeit. Änderungen werden bis zu den einzelnen Entwicklern nachverfolgt, wodurch Transparenz und Rechenschaftspflicht während des gesamten Entwicklungszyklus gewährleistet sind. Dieser Ansatz erleichtert auch Code-Reviews, sodass Teams Probleme erkennen und beheben können, bevor sie in der Produktion eingesetzt werden.

Durch die Verwendung AWS CodePipeline und andere Funktionen kann der automatisierte Workflow skaliert werden AWS-Services, um der steigenden Arbeitsbelastung und Teamgröße gerecht zu werden.

## Tools
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Open-Source-Framework für die Softwareentwicklung zur Definition von AWS Cloud Infrastruktur im Code unter Verwendung vertrauter Programmiersprachen und deren Bereitstellung. CloudFormation Die Beispielimplementierung in diesem Muster verwendet Python.
+ [AWS CDK Befehlszeilenschnittstelle (AWS CDK CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — Das AWS CDK Toolkit ist das wichtigste Tool für die Interaktion mit Ihrer AWS CDK App. Es führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die vom CDK generierten CloudFormation Vorlagen bereit.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über und zu verwalten. AWS-Konten AWS-Regionen Dieses Muster wird CloudFormation für die Bereitstellung der Amazon Lex Lex-Bot-Konfigurationen und verwandter Ressourcen unter Verwendung von Infrastruktur als Code verwendet.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind. Dieses Muster wird CodeBuild zum Erstellen und Verpacken der Bereitstellungsartefakte verwendet.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind. Dieses Muster dient CodePipeline zur Orchestrierung der Continuous Delivery-Pipeline.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) dient AWS-Service zum Erstellen von Konversationsschnittstellen (Bots) für Anwendungen, die Sprache und Text verwenden.
+ [AWS SDK für Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services.

**Andere Tools**
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [management-framework-sample-for-amazon-lex](https://github.com/aws-samples/management-framework-sample-for-amazon-lex) verfügbar. Das Code-Repository enthält die folgenden Ordner und Dateien:
+ `prerequisite`Ordner — Enthält CloudFormation Stack-Definitionen (unter Verwendung von AWS CDK) für die Einrichtung der erforderlichen Ressourcen und Umgebungen.
+ `prerequisite/lexmgmtworkflow`folder — Hauptverzeichnis für das Lex Management Workflow-Projekt, einschließlich Stack-Definitionen und Python-Code.
+ `prerequisite/tests`— Enthält Komponententests.
+ `src`folder — Quellcode-Verzeichnis, einschließlich des Amazon Lex-Bot-Management-Wrappers und der Dienstprogramme.
+ `src/dialogue_lambda`— Quellcodeverzeichnis der Dialog-Hook-Lambda-Funktion, die Benutzereingaben während einer Konversation mit einem Amazon Lex Lex-Bot abfängt und verarbeitet.

## Best Practices
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-best-practices"></a>
+ **Trennung der Anliegen**
  + Achten Sie auf eine klare Trennung der Zuständigkeiten zwischen DevOps Entwicklungs- und Produktionsumgebung.
  + Verwenden Sie separate AWS-Konten Optionen für jede Umgebung, um angemessene Isolations- und Sicherheitsgrenzen durchzusetzen.
  + Verwenden Sie kontenübergreifende Rollen und Prinzipien für den Zugriff mit den geringsten Rechten, um einen kontrollierten Zugriff zwischen Umgebungen sicherzustellen.
+ **Infrastruktur als Code**
  + Überprüfen und aktualisieren Sie den Infrastrukturcode regelmäßig, um ihn an bewährte Verfahren und sich ändernde Anforderungen anzupassen.
  + Etablieren Sie eine klare Strategie zur Verzweigung und Zusammenführung des Quellcode-Repositorys
+ **Testen und Validieren**
  + Implementieren Sie automatisierte Tests in verschiedenen Phasen der Pipeline, catch Probleme schon früh im Entwicklungszyklus zu erkennen.
  + Verwenden Sie die Amazon Lex Lex-Konsole oder automatisierte Test-Frameworks, um Bot-Konfigurationen und -Funktionen zu validieren, bevor Sie auf höhere Umgebungen umsteigen.
  + Erwägen Sie die Implementierung manueller Genehmigungsschranken für Bereitstellungen in Produktionsumgebungen oder kritischen Umgebungen.
+ **Überwachung und Protokollierung**
  + Richten Sie Überwachungs- und Protokollierungsmechanismen für die Pipelines, Bereitstellungen und Bot-Interaktionen ein.
  + Überwachen Sie Pipeline-Ereignisse, Bereitstellungsstatus und Bot-Leistungskennzahlen, um Probleme umgehend zu identifizieren und zu beheben.
  + Verwenden Sie AWS-Services wie Amazon CloudWatch und AWS X-Ray für die zentrale Protokollierung und Überwachung. AWS CloudTrail
  + Überprüfen und analysieren Sie regelmäßig die Leistung, Effizienz und Effektivität des automatisierten Workflows.
+ **Sicherheit und Einhaltung von Vorschriften**
  + Implementieren Sie sichere Programmierpraktiken und befolgen Sie bewährte AWS Sicherheitsmethoden für die Entwicklung und Bereitstellung von Amazon Lex Lex-Bot.
  + Überprüfen und aktualisieren Sie regelmäßig die IAM-Rollen, -Richtlinien und -Berechtigungen, damit sie dem Prinzip der geringsten Rechte entsprechen.
  + Erwägen Sie, Sicherheitsscans und Konformitätsprüfungen in die Pipelines zu integrieren.

## Epen
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-epics"></a>

### IaC für Amazon Lex-Bot-Management einrichten
<a name="set-up-iac-for-lex2-bot-management"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie die lokale CDK-Umgebung ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | AWS DevOps | 
| Erstellen Sie eine kontoübergreifende Rolle in der `devops` Umgebung. | Das `devops` Konto ist für das Hosting und die Verwaltung der CI/CD Pipelines verantwortlich. Damit die CI/CD Pipelines mit den `prod` Umgebungen `dev` und interagieren können, führen Sie die folgenden Befehle aus, um eine kontenübergreifende Rolle für das Konto zu erstellen. `devops`<pre>cdk bootstrap --profile=devops<br /><br />cdk deploy LexMgmtDevopsRoleStack -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops</pre> | AWS DevOps | 
| Erstellen Sie eine kontoübergreifende Rolle in der `dev` Umgebung. | Erstellen Sie im `dev` Konto eine IAM-Rolle mit den erforderlichen Berechtigungen, damit das `devops` Konto diese Rolle übernehmen kann. Die CI/CD Pipeline verwendet diese Rolle, um Aktionen im `dev` Konto auszuführen, z. B. die Bereitstellung und Verwaltung von Amazon Lex Lex-Bot-Ressourcen.Führen Sie die folgenden Befehle aus, um die IAM-Rolle zu erstellen:<pre>cdk bootstrap --profile=dev<br /><br />cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=dev</pre> | AWS DevOps | 
| Erstellen Sie eine kontoübergreifende Rolle in der `prod` Umgebung. | Erstellen Sie im `prod` Konto eine IAM-Rolle mit den erforderlichen Berechtigungen, damit das `devops` Konto diese Rolle übernehmen kann. Die CI/CD Pipeline verwendet diese Rolle, um Aktionen im `prod` Konto auszuführen, z. B. die Bereitstellung und Verwaltung von Amazon Lex Lex-Bot-Ressourcen.<pre>cdk bootstrap --profile=prod<br /><br />cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=prod</pre> | AWS DevOps | 
| Erstellen Sie Pipelines in der `devops` Umgebung. | Um den Entwicklungsworkflow für Amazon Lex-Bots zu verwalten, führen Sie den folgenden Befehl aus, um Pipelines in der `devops` Umgebung einzurichten. <pre>cdk deploy LexMgmtWorkflowStack -c devops-account-id=1111111111111 -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops</pre> | AWS DevOps | 

### Legen Sie die Grundlage für den Haupt-Bot fest
<a name="establish-the-baseline-for-the-main-bot"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Definiere die erste Version des Haupt-Bots. | Um die erste Version des Haupt-Bots zu definieren, [lösen](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-triggers) Sie die `BaselineBotPipeline` Pipeline aus.Die Pipeline stellt die grundlegende Bot-Definition bereit, die in der CloudFormation Vorlage definiert ist, exportiert die Haupt-Bot-Definition als.json-Dateien und speichert den Haupt-Bot-Code in einem Versionskontrollsystem. | AWS DevOps | 

### Implementieren Sie den Workflow zur Feature-Entwicklung
<a name="implement-the-feature-development-workflow"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den Ticket-Bot, um eine Funktion zu entwickeln und zu testen. | `TicketBot`ist eine neue Bot-Instanz, die aus der vorhandenen Haupt-Bot-Definition im Feature-Branch importiert wurde. Dieser Ansatz stellt sicher, dass der neue Bot über alle aktuellen Funktionen und Konfigurationen des Haupt-Bot verfügt.Um die erste Version des Ticketbots zu definieren, lösen Sie die `CreateTicketBotPipeline` Pipeline aus.Die Pipeline erstellt einen neuen Funktionszweig im Versionskontrollsystem und erstellt eine neue Ticket-Bot-Instanz, die auf dem Haupt-Bot basiert. | Lex Bot Entwickler | 
| Entwickeln und testen Sie die Ticket-Bot-Funktion.  | Um die Funktion zu entwickeln und zu testen, melden Sie sich bei der Amazon Lex Lex-Konsole an AWS-Managementkonsole und öffnen Sie sie unter [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/). Weitere Informationen finden Sie in [der Amazon Lex Lex-Dokumentation unter Einen Bot mithilfe der Konsole testen](https://docs.aws.amazon.com/lexv2/latest/dg/test-bot.html).Mit der `TicketBot` Instance können Sie jetzt die Funktionalität des Bots hinzufügen, ändern oder erweitern, um die neue Funktion zu implementieren. Sie können beispielsweise Absichten, Äußerungen, Slots und Dialogabläufe erstellen oder ändern. Weitere Informationen finden Sie unter [Hinzufügen von Absichten](https://docs.aws.amazon.com/lexv2/latest/dg/add-intents.html) in der Amazon Lex Lex-Dokumentation. | Lex Bot Entwickler | 
| Exportieren Sie die Ticket-Bot-Definition. | Die exportierte Bot-Definition ist im Wesentlichen eine Darstellung der Konfiguration und Funktionalität des Bots in einem JSON-Format.Um die Ticket-Bot-Definition zu exportieren, lösen Sie die `ExportTicketBotPipeline` Pipeline aus.Die Pipeline exportiert die Ticket-Bot-Definition als.json-Dateien und speichert den Ticket-Bot-Code in einem Feature-Branch im Versionskontrollsystem. | Lex Bot Entwickler | 
| Der Feature-Branch wird vom letzten Hauptzweig aus neu erstellt. | Während der Entwicklung einer neuen Funktion hat der Hauptzweig möglicherweise weitere Änderungen von anderen Entwicklern oder Teams erhalten. Um diese Änderungen in den Feature-Branch zu integrieren, führen Sie eine `rebase` Git-Operation aus. Bei dieser Operation werden im Wesentlichen die Commits aus dem Feature-Branch zusätzlich zu den letzten Commits aus dem Haupt-Branch wiederholt, sodass sichergestellt wird, dass der Feature-Branch alle aktuellen Änderungen enthält | Lex Bot Entwickler | 
| Importieren und validieren Sie den neu erstellten Ticket-Bot. | Nachdem Sie den Feature-Branch neu erstellt haben, müssen Sie ihn in die Ticket-Bot-Instanz importieren. Durch diesen Import wird der bestehende Ticket-Bot mit den neuesten Änderungen aus dem neu basierten Branch aktualisiert.Um den umbasierten Ticket-Bot zu importieren, lösen Sie die `ImportTicketBotPipeline` Pipeline aus.Die Pipeline importiert die .json-Dateien mit der Ticket-Bot-Definition im Feature-Branch des Versionskontrollsystems in die `TicketBot` Instanz. | Lex Bot Entwickler | 
| Validieren Sie die neu erstellte Bot-Definition. | Nachdem Sie die Definition des neu erstellten Bots importiert haben, ist es wichtig, ihre Funktionalität zu überprüfen. Sie möchten sicherstellen, dass die neue Funktion wie erwartet funktioniert und nicht mit der vorhandenen Funktionalität kollidiert. Diese Validierung umfasst in der Regel das Testen des Bots anhand verschiedener Eingabeszenarien, das Überprüfen der Antworten und das Überprüfen, ob sich der Bot wie beabsichtigt verhält. Sie können die Validierung auf eine der folgenden Arten durchführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | Lex Bot Entwickler | 
| Führen Sie den Feature-Zweig mit dem Hauptzweig zusammen. | Nachdem Sie die neue Funktion in der isolierten `TicketBot` Instanz entwickelt und getestet haben, gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | Lex Bot Entwickler, Repository-Administrator | 
| Löschen Sie den Feature-Branch und den Ticket-Bot.  | Nachdem ein Feature-Branch erfolgreich mit dem Haupt-Branch zusammengeführt wurde, löschen Sie den Feature-Branch und den Ticket-Bot aus dem Quellcode-Repository. Um den Feature Branch und den Ticket-Bot zu löschen, lösen Sie die `DeleteTicketBotPipeline` Pipeline aus.Die Pipeline entfernt temporäre Bot-Ressourcen, die während des Entwicklungsprozesses erstellt wurden (z. B. der Ticket-Bot). Diese Aktion trägt dazu bei, ein sauberes Repo aufrechtzuerhalten und Verwirrung oder Konflikte mit future Feature-Branches zu vermeiden.  | Lex Bot Entwickler | 

### Pflegen Sie den Haupt-Bot
<a name="maintain-the-main-bot"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Importieren Sie die neueste Haupt-Bot-Definition in die `dev` Umgebung. | Um die neueste Haupt-Bot-Definition im Hauptzweig in die `dev` Umgebung zu importieren, lösen Sie die `DeployBotDevPipeline` Pipeline aus.Die Pipeline erstellt bei der Genehmigung auch ein Git-Tag. | AWS DevOps | 
| Importieren Sie die neueste Haupt-Bot-Definition in die `prod` Umgebung. | Um die neueste Bot-Definition im Hauptzweig in die `prod` Umgebung zu importieren, geben Sie die Tag-Referenz aus der vorherigen Aufgabe als Parameter an und lösen Sie die `DeployBotProdPipeline` Pipeline aus.Die Pipeline importiert die neueste Bot-Definition aus einem bestimmten Tag in die `prod` Umgebung. | AWS DevOps | 

## Fehlerbehebung
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Wenn Sie Amazon Lex-Bots auf verschiedenen Konten bereitstellen AWS-Konten, müssen die Tooling-Services über die erforderlichen Berechtigungen für den Zugriff auf Ressourcen in diesen Konten verfügen. | Verwenden Sie IAM-Rollen und -Richtlinien, um kontoübergreifenden Zugriff zu gewähren. Erstellen Sie IAM-Rollen in den Zielkonten und fügen Sie den Rollen Richtlinien hinzu, die die erforderlichen Berechtigungen gewähren. Nehmen Sie dann diese Rollen von dem Konto aus an, in dem der Amazon Lex Lex-Bot bereitgestellt wird.Weitere Informationen finden Sie in der Amazon Lex [Lex-Dokumentation unter Für den Import erforderliche](https://docs.aws.amazon.com/lexv2/latest/dg/import.html#import-permissions) [IAM-Berechtigungen und für den Export von Bots in Lex V2 erforderliche](https://docs.aws.amazon.com/lexv2/latest/dg/export.html#export-permissions) IAM-Berechtigungen. | 

## Zugehörige Ressourcen
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-resources"></a>
+ [Bots in Amazon Lex V2 importieren](https://docs.aws.amazon.com/lexv2/latest/dg/import.html)
+ [Starten Sie eine Pipeline in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-about-starting.html)
+ [Arbeiten mit Amazon Lex V2-Bots](https://docs.aws.amazon.com/lexv2/latest/dg/building-bots.html)

# Koordinieren Sie die Ressourcenabhängigkeit und die Aufgabenausführung mithilfe des AWS Fargate WaitCondition Hook-Konstrukts
<a name="use-the-aws-fargate-waitcondition-hook-construct"></a>

*Stan Fan, Amazon Web Services*

## Zusammenfassung
<a name="use-the-aws-fargate-waitcondition-hook-construct-summary"></a>

Dieses Muster beschreibt das WaitCondition hook (`waitcondition-hook-for-aws-fargate-task`) npm-Paket, eine cloudnative Lösung, die für die Orchestrierung von [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)Aufgaben in Amazon Elastic Container Service (Amazon ECS) -Clustern entwickelt wurde. 

Der WaitCondition Hook ist ein AWS Cloud Development Kit (AWS CDK) Konstrukt, das speziell auf die Integration mit zugeschnitten ist. AWS CloudFormation Der WaitCondition Hook bietet die folgenden wichtigen Funktionen:
+ Dient als Mechanismus für Wartebedingungen und unterbricht die CloudFormation Stack-Ausführung, bis eine bestimmte Fargate-Aufgabe abgeschlossen ist. Dies hilft bei ordnungsgemäßer Bereitstellung und Ressourcenbereitstellung.
+ Unterstützt Python TypeScript und ist somit ideal für AWS CDK Projekte.
+ Ermöglicht Entwicklern und Architekten die Orchestrierung von Bereitstellungen, indem sie die Ausführung von Aufgaben und das Ressourcenmanagement für containerisierte Anwendungen koordinieren. AWS
+ Ermöglicht die Ausführung von Fargate-Aufgaben mit einem oder mehreren Containern, die in einen CloudFormation Lebenszyklus eingebettet sind, und kann Aufgabenausfälle behandeln und den CloudFormation Stack nach einem Aufgabenausfall rückgängig machen.
+ Bietet Flexibilität beim Hinzufügen von Abhängigkeiten zwischen Ressourcen und den Ergebnissen der Fargate-Aufgabenausführung, wodurch benutzerdefinierte Aufgaben aktiviert oder andere Endpunkte aufgerufen werden können. Sie können beispielsweise einen CloudFormation Stack anhalten und auf eine Datenbankmigration warten (die durch eine Fargate-Aufgabe durchgeführt wird) und andere Ressourcen bereitstellen, die möglicherweise vom Erfolg der Datenbankmigration abhängen.

## Voraussetzungen und Einschränkungen
<a name="use-the-aws-fargate-waitcondition-hook-construct-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ AWS Cloud Development Kit (AWS CDK) Die Befehlszeilenschnittstelle (CLI) ist auf einer lokalen Workstation installiert. Weitere Informationen finden Sie in der [AWS CDK CLI-Referenz](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) in der AWS CDK Dokumentation.
+ Node Package Manager (npm), auf einer lokalen Workstation installiert und für den [AWS CDK in TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) konfiguriert. Weitere Informationen finden Sie in der [npm-Dokumentation unter Node.js und npm herunterladen und installieren](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).
+ Yarn wurde auf einer lokalen Workstation installiert. Weitere Informationen finden Sie unter [Installation](https://yarnpkg.com/getting-started/install) in der Yarn-Dokumentation.

**Einschränkungen**
+ Diese Lösung wird in einer einzigen Lösung bereitgestellt AWS-Konto.
+ Der erwartete Rückgabecode des Containers steht `0` für Erfolg. Jeder andere Rückgabecode weist auf einen Fehler hin und der CloudFormation Stack wird zurückgesetzt. 
+ Einige AWS-Services sind nicht in allen verfügbar AWS-Regionen. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie unter [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="use-the-aws-fargate-waitcondition-hook-construct-architecture"></a>

Das folgende Diagramm zeigt die Konstruktarchitektur.

![\[AWS Step Functions Functions-Arbeitsablauf für das waitcondition-hook-for-aws Konstrukt -fargate-task.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/598020df-908c-4486-9844-c05af759c18a.png)


Das Diagramm zeigt den Arbeitsablauf von: `waitcondition-hook-for-aws-fargate-task`

1. `WaitCondition`und `WaitConditionHandler` sind so eingerichtet, dass sie die Antwort der AWS Lambda Funktionen abhören.

1. Je nach Ergebnis der Aufgabe `ErrorHandlerFunction` wird entweder der `CallbackFunction` oder der durch das Ende der Fargate-Aufgabe ausgelöst.

1. Die Lambda-Funktion sendet ein SUCCEED- oder FAILURE-Signal an`WaitConditionHandler`.

1. `WaitConditionHandler`setzt die Bereitstellung der Ressourcen fort, wenn das Ausführungsergebnis der Fargate-Aufgabe erfolgreich ist, oder setzt den Stack zurück, wenn die Aufgabe fehlgeschlagen ist.

Das folgende Diagramm zeigt ein Beispiel für einen Workflow zur Durchführung einer Datenbankmigration.

![\[Ablauf der Amazon RDS-Datenbankmigration mit WaitCondition Hook-Konstrukt.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/3b83fc2a-80bb-4ba9-9637-782060493cf0.png)


Der Beispiel-Workflow verwendet das `waitcondition-hook-for-aws-fargate-task` Konstrukt, um eine Datenbankmigration wie folgt durchzuführen:

1. Eine Amazon Relational Database Service (Amazon RDS) -Instance wird bereitgestellt.

1. Das `waitcondition-hook-for-aws-fargate-task` Konstrukt führt die Datenbankmigrationsaufgabe aus und pausiert den Stack als Amazon Elastic Compute Cloud (Amazon EC2) -Instance.

1. Wenn die Migrationsaufgabe erfolgreich abgeschlossen wurde, sendet sie ein Erfolgssignal an. CloudFormation Andernfalls sendet sie ein Fehlersignal an den Stack CloudFormation und führt ein Rollback durch.

## Tools
<a name="use-the-aws-fargate-waitcondition-hook-construct-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)ist ein Framework für die Softwareentwicklung, mit dem Sie Cloud-Infrastruktur im Code definieren und bereitstellen können CloudFormation.
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft 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.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) ist ein hoch skalierbarer, schneller Container-Management-Service, der das Ausführen, Beenden und Verwalten von Containern in einem Cluster vereinfacht.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)hilft Ihnen beim Betrieb von Containern, ohne Server oder Amazon EC2 EC2-Instances verwalten zu müssen. Es wird in Verbindung mit Amazon ECS verwendet.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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 Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische AWS-Services Anwendungen zu erstellen.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, und bietet die Vorteile der Nutzung der skalierbaren Infrastruktur von AWS. 

**Andere Tools**
+ [npm](https://docs.npmjs.com/about-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.
+ [Yarn](https://yarnpkg.com/) ist ein Open-Source-Paketmanager, mit dem Sie Abhängigkeiten in JavaScript Projekten verwalten können. Yarn kann Sie bei der Installation, Aktualisierung, Konfiguration und Entfernung von Paketabhängigkeiten unterstützen.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [waitcondition-hook-for-aws-fargate-task](https://github.com/aws-samples/waitcondition-hook-for-aws-fargate-task) verfügbar.

## Best Practices
<a name="use-the-aws-fargate-waitcondition-hook-construct-best-practices"></a>
+ Folgen Sie beim Erstellen Ihrer AWS CDK App den [Best Practices für die Entwicklung und Bereitstellung der Cloud-Infrastruktur AWS CDK in der v2-Dokumentation](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html). AWS CDK 
+ Folgen Sie für AWS Fargate diese Aufgabe den [Best Practices für Amazon ECS-Container-Images](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/application.html) in der Amazon ECS-Dokumentation.

## Epen
<a name="use-the-aws-fargate-waitcondition-hook-construct-epics"></a>

### Richten Sie das ein AWS CDK
<a name="set-up-the-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie das AWS CDK. | Führen Sie den folgenden Befehl aus, um den AWS CDK auf Ihrem lokalen Computer oder einer anderen Umgebung zu installieren: <pre>npm install -g aws-cdk@latest</pre> | Cloud-Architekt, App-Entwickler | 
| Bootstrap das AWS CDK. | [Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) ist der Prozess der Vorbereitung einer [Umgebung](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) für die Bereitstellung. Führen Sie den folgenden Befehl aus, um Ihr AWS CDK Toolkit für das Ziel AWS-Konto und zu AWS-Region booten:<pre>cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 </pre>Dieser Befehl erstellt einen CloudFormation Stack mit dem Namen. `CDKToolkit`  | Cloud-Architekt | 

### Führen Sie das Konstrukt WaitCondition Hook for AWS Fargate Tasks aus
<a name="run-the-waitcondition-hook-for-fargatelong-tasks-construct"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das CDK-Projekt. | Erstellen Sie ein CDK-Projekt in der Sprache, die Sie bevorzugen. Dieses Muster verwendet TypeScript. Führen Sie den folgenden Befehl aus TypeScript, um ein CDK-Projekt mit zu erstellen: `cdk init app —language typescript` | Cloud-Architekt | 
| Installieren Sie das Paket . | Führen Sie es `npm install` im Root-Pfad Ihres CDK-Projekts aus. Nachdem die CDK-Bibliothek installiert wurde, führen Sie zur Installation den folgenden Befehl aus: `waitcondition-hook-for-aws-fargate-task` `yarn add waitcondition-hook-for-aws-fargate-task` | Cloud-Architekt | 
| Erstellen Sie Ihre CDK-Anwendung und Amazon ECS-Komponenten. | Erstellen Sie Ihr CDK-Projekt. Eine Amazon ECS-Aufgabendefinitionsressource ist erforderlich. Informationen zum Erstellen einer Aufgabendefinition finden Sie unter [Amazon ECS-Aufgabendefinitionen](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) in der Amazon ECS-Dokumentation.Das folgende Beispiel verwendet dieses Konstrukt:<pre>import * as cdk from 'aws-cdk-lib';<br />import { Vpc } from 'aws-cdk-lib/aws-ec2';<br />import * as ecr from 'aws-cdk-lib/aws-ecr';<br />import * as ecs from 'aws-cdk-lib/aws-ecs';<br />import { Construct } from 'constructs';<br />import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';<br />import { Queue } from 'aws-cdk-lib/aws-sqs';<br /><br />export class FargateRunnerStack extends cdk.Stack {<br />    constructor(scope: Construct, id: string, props?: cdk.StackProps) {<br />        super(scope, id, props);<br />        // Define the VPC<br />        const vpc = new Vpc(this, 'MyVpc')<br />        // Define the Fargate Task<br />        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});<br />        // Import exiting ecr repo<br />        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');<br />        // Add a container to the task<br />        taskDefinition.addContainer('MyContainer', {<br />            image: ecs.ContainerImage.fromEcrRepository(repo),<br />        });<br />        // Create the Fargate runner<br />        const myFargateRunner = new FargateRunner(this, 'MyRunner', {<br />            fargateTaskDef: taskDefinition,<br />            timeout: `${60 * 5}`,<br />            vpc: vpc,<br />        });<br />        // Create the SQS queue<br />        const myQueue = new Queue(this, 'MyQueue', {});<br />        // Add dependency<br />        myQueue.node.addDependency(myFargateRunner);<br />    }<br />}</pre> | Cloud-Architekt | 
| Synchronisieren und starten Sie die CDK-Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Das `waitcondition-hook-for-aws-fargate-task` Konstrukt führt die Fargate-Aufgabe aus.  | Cloud-Architekt | 

### Bereinigen
<a name="clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereinigen Sie die Ressourcen. | Führen Sie den folgenden Befehl aus, um die im vorherigen Schritt bereitgestellten Ressourcen zu bereinigen:<pre>cdk destroy </pre> | Cloud-Architekt | 

## Fehlerbehebung
<a name="use-the-aws-fargate-waitcondition-hook-construct-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Allgemeiner CloudFormation Stack-Fehler | Um allgemeine CloudFormation Stack-Fehler zu beheben, fügen Sie das `--no-rollback` Flag hinzu, wie im folgenden Beispiel gezeigt: <pre>cdk deploy --no-rollback</pre>Dieser Befehl unterbricht das Rollback des CloudFormation Stacks, sodass Sie Ressourcen für die Fehlerbehebung erhalten. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter [Wählen Sie aus, wie mit Fehlern bei der Bereitstellung von Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) umgegangen werden soll. | 
| AWS Step Functions Fehlschlag | Eine AWS Step Functions Zustandsmaschine kann aus verschiedenen Gründen nicht ausgeführt werden. Wenn `—disable-rollback` konfiguriert, gehen Sie wie folgt vor, um Fehler zu beheben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Weitere Informationen finden Sie in der AWS Step Functions Dokumentation unter [Problembehandlung in Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html) und [Anzeigen von Ausführungsdetails in der Step Functions Functions-Konsole](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-view-execution-details.html#exec-details-intf-step-details). | 
| AWS Lambda Funktionsfehler | Dieses Konstrukt stellt zwei Lambda-Funktionen bereit: `CallbackFunction` und`ErrorhandlerFunction`. Sie können aus verschiedenen Gründen fehlschlagen, z. B. aufgrund unbehandelter Ausnahmen. Gehen Sie wie folgt vor, um Fehler zu beheben: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Weitere Informationen finden Sie in der AWS Lambda Dokumentation unter [Problembehandlung in Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-troubleshooting.html). | 

## Zugehörige Ressourcen
<a name="use-the-aws-fargate-waitcondition-hook-construct-resources"></a>

**AWS Dokumentation**
+ [AWS CDK API-Referenz erstellen](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)
+ [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Erfahren Sie, wie Sie Amazon ECS-Ressourcen erstellen und verwenden](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started.html)
+ [Erfahren Sie, wie Sie mit Step Functions beginnen](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
+ [Was ist AWS CDK?](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

**Sonstige Ressourcen**
+ [Waitcondition Hook für die AWS Fargate Aufgabe](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (npm)
+ [waitcondition-hook-for-aws-fargate-task](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) 1.0.6 (pypi.org)

# Verwenden Sie Git-Quell-Repositorys von Drittanbietern in AWS CodePipeline
<a name="use-third-party-git-source-repositories-in-aws-codepipeline"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Zusammenfassung
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-summary"></a>

Dieses Muster beschreibt, wie AWS CodePipeline mit Git-Quell-Repositorys von Drittanbietern verwendet wird.

[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-continuous-delivery-integration.html) ist ein Continuous Delivery Service, der Aufgaben zum Erstellen, Testen und Bereitstellen Ihrer Software automatisiert. Der Service unterstützt derzeit Git-Repositorys GitHub, die von [AWS](https://aws.amazon.com/codecommit) und Atlassian CodeCommit Bitbucket verwaltet werden. Einige Unternehmen verwenden jedoch Git-Repositorys von Drittanbietern, die in ihren Single Sign-On-Dienst (SSO) und Microsoft Active Directory zur Authentifizierung integriert sind. Sie können diese Git-Repositorys von Drittanbietern als Quellen verwenden, CodePipeline indem Sie benutzerdefinierte Aktionen und Webhooks erstellen.

Ein Webhook ist eine HTTP-Benachrichtigung, die Ereignisse in einem anderen Tool, z. B. einem GitHub Repository, erkennt und diese externen Ereignisse mit einer Pipeline verbindet. Wenn Sie einen Webhook in erstellen CodePipeline, gibt der Service eine URL zurück, die Sie in Ihrem Git-Repository-Webhook verwenden können. **Wenn Sie Code in einen bestimmten Branch des Git-Repositorys pushen, initiiert der Git-Webhook den CodePipeline Webhook über diese URL und setzt die Quellphase der Pipeline auf In Bearbeitung.** Wenn sich die Pipeline in diesem Status befindet, fragt ein Job-Worker CodePipeline nach dem benutzerdefinierten Job ab, führt den Job aus und sendet einen Erfolgs- oder Fehlerstatus an. CodePipeline Da sich die Pipeline in der Quellphase befindet, ruft der Job-Worker in diesem Fall den Inhalt des Git-Repositorys ab, komprimiert den Inhalt und lädt ihn in den Amazon Simple Storage Service (Amazon S3) -Bucket hoch, in dem Artefakte für die Pipeline gespeichert werden. Dabei wird der Objektschlüssel verwendet, der vom abgefragten Job bereitgestellt wird. Sie können auch einen Übergang für die benutzerdefinierte Aktion mit einem Ereignis in Amazon CloudWatch verknüpfen und den Job Worker auf der Grundlage des Ereignisses initiieren. Mit diesem Setup können Sie Git-Repositorys von Drittanbietern, die der Dienst nicht nativ unterstützt, als Quellen verwenden. CodePipeline

## Voraussetzungen und Einschränkungen
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein Git-Repository, das Webhooks unterstützt und über das Internet eine Verbindung zu einer CodePipeline Webhook-URL herstellen kann 
+ Die AWS-Befehlszeilenschnittstelle (AWS CLI) wurde für die Verwendung mit dem AWS-Konto [installiert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

## Architektur
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-architecture"></a>

Das Muster umfasst die folgenden Schritte:

1. Der Benutzer überträgt Code in ein Git-Repository.

1. Der Git-Webhook wird aufgerufen.

1. Der CodePipeline Webhook wird aufgerufen.

1. Die Pipeline ist auf **In Bearbeitung** gesetzt, und die Quellphase ist auf den Status **In Bearbeitung** gesetzt.

1. Die Aktion der Quellphase initiiert eine CloudWatch Ereignisregel, die angibt, dass sie gestartet wurde.

1. Das CloudWatch Ereignis initiiert eine Lambda-Funktion.

1. Die Lambda-Funktion ruft die Details des benutzerdefinierten Aktionsjobs ab.

1. Die Lambda-Funktion initiiert AWS CodeBuild und übergibt ihm alle auftragsbezogenen Informationen.

1. CodeBuild ruft den öffentlichen SSH-Schlüssel oder die Benutzeranmeldeinformationen für den HTTPS-Git-Zugriff von Secrets Manager ab.

1. CodeBuild klont das Git-Repository für einen bestimmten Branch.

1. CodeBuild komprimiert das Archiv und lädt es in den S3-Bucket hoch, der CodePipeline als Artefaktspeicher dient.

![\[Workflow, der Git-Quell-Repos von Drittanbietern als Quellen für AWS CodePipeline verwendet.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/84284bec-b39d-466a-9fd9-994be2c953df/images/85555dab-7317-40f5-86a7-ccb8987c5bf3.png)


 

## Tools
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-tools"></a>
+ [AWS CodePipeline — AWS](https://aws.amazon.com/codepipeline/) CodePipeline ist ein vollständig verwalteter [Continuous Delivery](https://aws.amazon.com/devops/continuous-delivery/) Service, der Sie bei der Automatisierung Ihrer Release-Pipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates unterstützt. CodePipeline automatisiert die Erstellungs-, Test- und Bereitstellungsphasen Ihres Release-Prozesses für jede Codeänderung auf der Grundlage des von Ihnen definierten Release-Modells. Auf diese Weise können Sie Funktionen und Updates schnell und zuverlässig bereitstellen. Sie können AWS CodePipeline mit Services von Drittanbietern wie GitHub oder mit Ihrem eigenen benutzerdefinierten Plugin integrieren.
+ [AWS Lambda](https://aws.amazon.com/lambda/) — Mit AWS Lambda können Sie Code ausführen, ohne Server bereitzustellen oder zu verwalten. Mit Lambda können Sie Code für praktisch jede Art von Anwendung oder Backend-Service ausführen, ohne dass eine Verwaltung erforderlich ist. Sie laden Ihren Code hoch und Lambda kümmert sich um alles, was für die Ausführung und Skalierung Ihres Codes mit hoher Verfügbarkeit erforderlich ist. Sie können Ihren Code so einrichten, dass er automatisch von anderen AWS-Services aus initiiert wird, oder ihn direkt von einer beliebigen Web- oder mobilen App aus aufrufen.
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/) — AWS CodeBuild ist ein vollständig verwalteter [Continuous Integration](https://aws.amazon.com/devops/continuous-integration/) Service, der Quellcode kompiliert, Tests durchführt und Softwarepakete produziert, die sofort einsatzbereit sind. Mit CodeBuild müssen Sie Ihre eigenen Build-Server nicht bereitstellen, verwalten und skalieren. CodeBuild skaliert kontinuierlich und verarbeitet mehrere Builds gleichzeitig, sodass Ihre Builds nicht in einer Warteschlange warten müssen. Mit den vorkonfigurierten Build-Umgebungen gelingt der Einstieg leicht. Jedoch können Sie auch benutzerdefinierte Build-Umgebungen mit Ihren eigenen Entwicklungstools erstellen.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) — AWS Secrets Manager hilft Ihnen beim Schutz von Geheimnissen, die Sie für den Zugriff auf Ihre Anwendungen, Services und IT-Ressourcen benötigen. Mit diesem Service können Sie Datenbankanmeldedaten, API-Schlüssel und andere Geheimnisse während ihres gesamten Lebenszyklus rotieren, verwalten und abrufen. Benutzer und Anwendungen rufen Geheimnisse ab, indem sie Secrets Manager aufrufen APIs, ohne vertrauliche Informationen im Klartext fest codieren zu müssen. Secrets Manager bietet geheime Rotation mit integrierter Integration für Amazon Relational Database Service (Amazon RDS), Amazon Redshift und Amazon DocumentDB. Der Service kann erweitert werden, um andere Arten von Geheimnissen, einschließlich API-Schlüsseln und Tokens, zu unterstützen. OAuth Darüber hinaus können Sie mit Secrets Manager den Zugriff auf geheime Daten mithilfe detaillierter Berechtigungen kontrollieren und die Rotation von Geheimnissen zentral für Ressourcen in der AWS-Cloud, in Diensten von Drittanbietern und in lokalen Umgebungen überprüfen.
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) — Amazon CloudWatch ist ein Überwachungs- und Beobachtungsdienst, der sich an DevOps Ingenieure, Entwickler, Techniker für die Zuverlässigkeit von SREs Standorten () und IT-Manager richtet. CloudWatch bietet Ihnen Daten und umsetzbare Erkenntnisse, um Ihre Anwendungen zu überwachen, auf systemweite Leistungsänderungen zu reagieren, die Ressourcennutzung zu optimieren und einen einheitlichen Überblick über den Betriebsstatus zu erhalten. CloudWatch sammelt Überwachungs- und Betriebsdaten in Form von Protokollen, Metriken und Ereignissen und bietet Ihnen so einen einheitlichen Überblick über AWS-Ressourcen, -Anwendungen und -Services, die auf AWS- und lokalen Servern ausgeführt werden. Sie können CloudWatch damit anomales Verhalten in Ihren Umgebungen erkennen, Alarme einrichten, Protokolle und Metriken nebeneinander visualisieren, automatisierte Maßnahmen ergreifen, Probleme beheben und Erkenntnisse gewinnen, damit Ihre Anwendungen reibungslos funktionieren.
+ [Amazon S3](https://aws.amazon.com/s3/) — Amazon Simple Storage Service (Amazon S3) ist ein Objektspeicherservice, mit dem Sie beliebige Datenmengen für eine Reihe von Anwendungsfällen speichern und schützen können, z. B. für Websites, mobile Anwendungen, Sicherung und Wiederherstellung, Archivierung, Unternehmensanwendungen, IoT-Geräte und Big-Data-Analysen. Amazon S3 bietet easy-to-use Verwaltungsfunktionen, mit denen Sie Ihre Daten organisieren und fein abgestimmte Zugriffskontrollen konfigurieren können, um Ihre spezifischen Geschäfts-, Organisations- und Compliance-Anforderungen zu erfüllen.

## Epen
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-epics"></a>

### Erstellen Sie eine benutzerdefinierte Aktion in CodePipeline
<a name="create-a-custom-action-in-codepipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine benutzerdefinierte Aktion mit AWS CLI oder AWS CloudFormation. | Dieser Schritt beinhaltet die Erstellung einer benutzerdefinierten Quellaktion, die in der Quellphase einer Pipeline in Ihrem AWS-Konto in einer bestimmten Region verwendet werden kann. Sie müssen AWS CLI oder AWS CloudFormation (nicht die Konsole) verwenden, um die benutzerdefinierte Quellaktion zu erstellen. Weitere Informationen zu den in diesem und anderen Epen beschriebenen Befehlen und Schritten finden Sie im Abschnitt „Verwandte Ressourcen“ am Ende dieses Musters. Verwenden Sie in AWS CLI den create-custom-action-type Befehl. Verwenden Sie --configuration-properties, um alle Parameter bereitzustellen, die der Job-Worker verarbeiten muss, wenn er einen Job abfragt. CodePipeline Notieren Sie sich unbedingt die Werte, die für die Optionen --provider und --action-version angegeben wurden, damit Sie dieselben Werte verwenden können, wenn Sie die Pipeline mit diesem benutzerdefinierten Quellschritt erstellen. Sie können die benutzerdefinierte Quellaktion auch in AWS CloudFormation mithilfe des Ressourcentyps erstellen AWS::CodePipeline::CustomActionType. | Allgemeines AWS | 

### Einrichten der Authentifizierung
<a name="set-up-authentication"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein SSH-Schlüsselpaar. | Erstellen Sie ein Secure Shell (SSH) -Schlüsselpaar. Anweisungen finden Sie in der GitHub Dokumentation. | Systeme/ Ingenieur DevOps  | 
| Erstellen Sie ein Geheimnis in AWS Secrets Manager. | Kopieren Sie den Inhalt des privaten Schlüssels aus dem SSH-Schlüsselpaar und erstellen Sie ein Geheimnis in AWS Secrets Manager. Dieses Geheimnis wird für die Authentifizierung beim Zugriff auf das Git-Repository verwendet. | Allgemeines AWS | 
| Fügen Sie den öffentlichen Schlüssel zum Git-Repository hinzu. | Fügen Sie den öffentlichen Schlüssel aus dem SSH-Schlüsselpaar zu den Kontoeinstellungen des Git-Repositorys hinzu, um sich anhand des privaten Schlüssels zu authentifizieren. | Systeme/ Ingenieur DevOps  | 

### Erstellen Sie eine Pipeline und einen Webhook
<a name="create-a-pipeline-and-webhook"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Pipeline, die die benutzerdefinierte Quellaktion enthält. | Erstellen Sie eine Pipeline in CodePipeline. Wenn Sie die Quellstufe konfigurieren, wählen Sie die benutzerdefinierte Quellaktion aus, die Sie zuvor erstellt haben. Sie können dies in der CodePipeline AWS-Konsole oder in der AWS-CLI tun. CodePipeline fordert Sie zur Eingabe der Konfigurationseigenschaften auf, die Sie für die benutzerdefinierte Aktion festgelegt haben. Diese Informationen sind erforderlich, damit der Job-Worker den Job für die benutzerdefinierte Aktion bearbeiten kann. Folgen Sie dem Assistenten und erstellen Sie die nächste Phase für die Pipeline. | Allgemeines AWS | 
| Erstellen Sie einen CodePipeline Webhook. | Erstellen Sie einen Webhook für die Pipeline, die Sie mit der benutzerdefinierten Quellaktion erstellt haben. Sie müssen AWS CLI oder AWS CloudFormation (nicht die Konsole) verwenden, um den Webhook zu erstellen. Führen Sie in der AWS-CLI den Befehl put-webhook aus und geben Sie die entsprechenden Werte für die Webhook-Optionen an. Notieren Sie sich die Webhook-URL, die der Befehl zurückgibt. Wenn Sie AWS verwenden CloudFormation , um den Webhook zu erstellen, verwenden Sie den Ressourcentyp AWS::CodePipeline::Webhook. Stellen Sie sicher, dass Sie die Webhook-URL aus der erstellten Ressource ausgeben, und notieren Sie sich diese. | Allgemeines AWS | 
| Erstellen Sie eine Lambda-Funktion und ein CodeBuild Lambda-Projekt. | In diesem Schritt verwenden Sie Lambda und CodeBuild erstellen einen Jobworker, der Jobanfragen CodePipeline für die benutzerdefinierte Aktion abfragt, den Job ausführt und das Statusergebnis CodePipeline zurückgibt. Erstellen Sie eine Lambda-Funktion, die durch eine Amazon CloudWatch Events-Regel initiiert wird, wenn die benutzerdefinierte Quellaktionsphase der Pipeline zu „In Bearbeitung“ übergeht. Wenn die Lambda-Funktion initiiert wird, sollte sie die Auftragsdetails der benutzerdefinierten Aktion abrufen, indem sie nach Jobs abfragt. Sie können die PollForJobs API verwenden, um diese Informationen zurückzugeben. Nachdem die abgefragten Auftragsinformationen abgerufen wurden, sollte die Lambda-Funktion eine Bestätigung zurückgeben und die Informationen dann mit den Daten verarbeiten, die sie aus den Konfigurationseigenschaften für die benutzerdefinierte Aktion erhält. Wenn der Worker bereit ist, mit dem Git-Repository zu kommunizieren, können Sie ein CodeBuild Projekt initiieren, da es praktisch ist, Git-Aufgaben mithilfe des SSH-Clients zu erledigen. | Allgemein AWS, Code-Entwickler | 

### Erstellen Sie ein Ereignis in CloudWatch
<a name="create-an-event-in-cloudwatch"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine CloudWatch Ereignisregel. | Erstellen Sie eine CloudWatch Ereignisregel, die die Lambda-Funktion als Ziel initiiert, wenn die benutzerdefinierte Aktionsphase der Pipeline zu „In Bearbeitung“ übergeht. | Allgemeines AWS | 

## Zugehörige Ressourcen
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-resources"></a>

**Erstellen einer benutzerdefinierten Aktion in CodePipeline**
+ [Erstellen Sie eine benutzerdefinierte Aktion und fügen Sie sie hinzu in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html)
+ [AWS::CodePipeline::CustomActionType Ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html)

**Authentifizierung einrichten**
+ [Secrets mit AWS Secrets Manager erstellen und verwalten](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)

**Eine Pipeline und einen Webhook erstellen**
+ [Erstellen Sie eine Pipeline in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html)
+ [Put-Webhook-Befehlsreferenz](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/put-webhook.html)
+ [AWS::CodePipeline::Webhook Ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html)
+ [PollForJobs API-Referenz](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html)
+ [Erstellen und fügen Sie eine benutzerdefinierte Aktion hinzu in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html)
+ [Erstellen Sie ein Build-Projekt in AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html)

**Ein Ereignis erstellen**
+ [Mit Amazon CloudWatch Events können Sie Änderungen im Pipeline-Status erkennen und darauf reagieren](https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html)

**Zusätzliche Referenzen**
+ [Arbeiten mit Pipelines in CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines.html)
+ [AWS Lambda Lambda-Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

# Erstellen Sie eine CI/CD Pipeline zur Validierung von Terraform-Konfigurationen mithilfe von AWS CodePipeline
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline"></a>

*Aromal Raj Jayarajan und Vijesh Vijayakumaran Nair, Amazon Web Services*

## Zusammenfassung
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-summary"></a>

Dieses Muster zeigt, wie HashiCorp Terraform-Konfigurationen mithilfe einer von AWS bereitgestellten CI/CD-Pipeline (Continuous Integration and Continuous Delivery) getestet werden. CodePipeline

Terraform ist eine Befehlszeilenschnittstellenanwendung, mit der Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. [Die in diesem Muster bereitgestellte Lösung erstellt eine CI/CD Pipeline, mit der Sie die Integrität Ihrer Terraform-Konfigurationen überprüfen können, indem Sie fünf Phasen ausführen: CodePipeline ](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-stages)

1. `"checkout"`ruft die Terraform-Konfiguration, die Sie testen, aus einem AWS-Repository ab. CodeCommit 

1. `"validate"`[führt Tools zur Validierung von Infrastruktur als Code (IaC) aus, einschließlich [tfsec](https://github.com/aquasecurity/tfsec), und checkov. [TFLint](https://github.com/terraform-linters/tflint)](https://www.checkov.io/) Auf der Stufe werden auch die folgenden Terraform-IaC-Validierungsbefehle ausgeführt: und. `terraform validate` `terraform fmt`

1. `"plan"`zeigt, welche Änderungen auf die Infrastruktur angewendet werden, wenn die Terraform-Konfiguration angewendet wird.

1. `"apply"`verwendet den generierten Plan, um die erforderliche Infrastruktur in einer Testumgebung bereitzustellen.

1. `"destroy"`entfernt die Testinfrastruktur, die während der `"apply"` Phase erstellt wurde.

## Voraussetzungen und Einschränkungen
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ AWS-Befehlszeilenschnittstelle (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), auf Ihrem lokalen Computer installiert und konfiguriert
+ [Terraform](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS), auf Ihrem lokalen Computer installiert und konfiguriert

**Einschränkungen**
+ Der Ansatz dieses Musters stellt AWS CodePipeline nur für ein AWS-Konto und eine AWS-Region bereit. Für Bereitstellungen mit mehreren Konten und mehreren Regionen sind Konfigurationsänderungen erforderlich.
+ Die AWS Identity and Access Management (IAM) -Rolle, die dieses Muster bereitstellt (**codepipeline\$1iam\$1role**), folgt dem Prinzip der geringsten Rechte. Die Berechtigungen dieser IAM-Rolle müssen auf der Grundlage der spezifischen Ressourcen, die Ihre Pipeline erstellen muss, aktualisiert werden. ****

**Versionen der Produkte**
+ AWS CLI Version 2.9.15 oder höher
+ Terraform Version 1.3.7 oder höher

## Architektur
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-architecture"></a>

**Zieltechnologie-Stack**
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS IAM
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS Key Management Service (AWS KMS)
+ Terraform

**Zielarchitektur**

Das folgende Diagramm zeigt ein Beispiel für einen CI/CD Pipeline-Workflow zum Testen von Terraform-Konfigurationen in. CodePipeline

![\[Architektur zum Testen von Terraform-Konfigurationen mithilfe einer CI/CD AWS-Pipeline.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/4df7b1f8-8eef-4d85-a971-a7f158be9691/images/90b931c8-e745-4b52-92de-a367fb0f1f51.png)


Das Diagramm zeigt den folgenden Workflow:

1. In CodePipeline initiiert ein AWS-Benutzer die in einem Terraform-Plan vorgeschlagenen Aktionen, indem er den `terraform apply` Befehl in der AWS-CLI ausführt.

1. AWS CodePipeline übernimmt eine IAM-Servicerolle, die die für den Zugriff auf CodeCommit CodeBuild, AWS KMS und Amazon S3 erforderlichen Richtlinien umfasst.

1. CodePipeline führt die `"checkout"` Pipeline-Phase aus, um die Terraform-Konfiguration zum Testen aus einem CodeCommit AWS-Repository abzurufen.

1. CodePipeline führt die `"validate"` Phase zum Testen der Terraform-Konfiguration aus, indem IaC-Validierungstools und Terraform-IaC-Validierungsbefehle in einem Projekt ausgeführt werden. CodeBuild 

1. CodePipeline führt die `"plan"` Phase aus, um einen Plan im CodeBuild Projekt auf der Grundlage der Terraform-Konfiguration zu erstellen. Der AWS-Benutzer kann diesen Plan überprüfen, bevor die Änderungen auf die Testumgebung angewendet werden.

1. Code Pipeline führt die `"apply"` Phase zur Implementierung des Plans durch, indem das CodeBuild Projekt zur Bereitstellung der erforderlichen Infrastruktur in der Testumgebung verwendet wird.

1. CodePipeline führt die `"destroy"` Phase aus, in der die Testinfrastruktur entfernt wird, die während der `"apply"` Phase erstellt wurde. CodeBuild 

1. Ein Amazon S3 S3-Bucket speichert Pipeline-Artefakte, die mithilfe eines vom [Kunden verwalteten AWS KMS KMS-Schlüssels](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) ver- und entschlüsselt werden.

## Tools
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-tools"></a>

**Tools**

*AWS-Services*
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, der Sie beim Kompilieren von Quellcode, beim Ausführen von Komponententests und beim Erstellen von Artefakten unterstützt, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

*Andere Dienste*
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist eine Befehlszeilenschnittstellenanwendung, mit der Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.

**Code**

Der Code für dieses Muster ist im Repository verfügbar. GitHub [aws-codepipeline-terraform-cicdsamples](https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples) Das Repository enthält die Terraform-Konfigurationen, die zur Erstellung der in diesem Muster beschriebenen Zielarchitektur erforderlich sind.

## Epen
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-epics"></a>

### Stellen Sie die Lösungskomponenten bereit
<a name="provision-the-solution-components"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das GitHub Repository. | Klonen Sie das GitHub [aws-codepipeline-terraform-cicdsamples](https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples)Repository, indem Sie den folgenden Befehl in einem Terminalfenster ausführen:<pre>git clone https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples.git</pre>Weitere Informationen finden Sie in der GitHub Dokumentation unter [Ein Repository klonen](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository). | DevOps Ingenieur | 
| Erstellen Sie eine Terraform-Variablendefinitionsdatei.  | Erstellen Sie eine `terraform.tfvars` Datei, die auf Ihren Anwendungsfallanforderungen basiert. Sie können die Variablen in der `examples/terraform.tfvars` Datei aktualisieren, die sich im geklonten Repository befindet.Weitere Informationen finden Sie unter [Zuweisen von Werten zu Stammmodulvariablen](https://developer.hashicorp.com/terraform/language/values/variables#assigning-values-to-root-module-variables) in der Terraform-Dokumentation.Die `Readme.md` Datei des Repositorys enthält weitere Informationen zu den erforderlichen Variablen. | DevOps Ingenieur | 
| Konfigurieren Sie AWS als Terraform-Anbieter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Weitere Informationen finden Sie unter [AWS-Anbieter](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) in der Terraform-Dokumentation. | DevOps Ingenieur | 
| Aktualisieren Sie die Terraform-Anbieterkonfiguration für die Erstellung des Amazon S3 S3-Replikationsbuckets. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Die Replikation aktiviert das automatische, asynchrone Kopieren von Objekten zwischen Amazon S3 S3-Buckets. | DevOps Ingenieur | 
| Initialisieren Sie die Terraform-Konfiguration. | Um Ihr Arbeitsverzeichnis zu initialisieren, das die Terraform-Konfigurationsdateien enthält, führen Sie den folgenden Befehl im Stammordner des geklonten Repositorys aus:<pre>terraform init</pre> | DevOps Ingenieur | 
| Erstellen Sie den Terraform-Plan. | Um einen Terraform-Plan zu erstellen, führen Sie den folgenden Befehl im Stammordner des geklonten Repositorys aus:<pre>terraform plan --var-file=terraform.tfvars -out=tfplan</pre>Terraform wertet die Konfigurationsdateien aus, um den Zielstatus für die deklarierten Ressourcen zu ermitteln. Anschließend wird der Zielstatus mit dem aktuellen Status verglichen und ein Plan erstellt. | DevOps Ingenieur | 
| Überprüfen Sie den Terraform-Plan. | Überprüfen Sie den Terraform-Plan und stellen Sie sicher, dass er die erforderliche Architektur in Ihrem AWS-Zielkonto konfiguriert. | DevOps Ingenieur | 
| Stellen Sie die Lösung bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Terraform erstellt, aktualisiert oder zerstört die Infrastruktur, um den in den Konfigurationsdateien angegebenen Zielstatus zu erreichen. | DevOps Ingenieur | 

### Validieren Sie Terraform-Konfigurationen, indem Sie die Pipeline ausführen
<a name="validate-terraform-configurations-by-running-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das Quellcode-Repository ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html) | DevOps Ingenieur | 
| Validieren Sie die Pipeline-Phasen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Weitere Informationen finden Sie unter [Pipeline-Details und Verlauf anzeigen (Konsole)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-view-console.html) im * CodePipeline AWS-Benutzerhandbuch*.Wenn eine Änderung in den Hauptzweig des Quell-Repositorys übernommen wird, wird die Testpipeline automatisch aktiviert. | DevOps Ingenieur | 
| Überprüfen Sie die Berichtsausgabe. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Das `<project_name>-validate` CodeBuild Projekt generiert während der Phase Berichte über Sicherheitslücken für Ihren Code. `"validate"` | DevOps Ingenieur | 

### Bereinigen Ihrer Ressourcen
<a name="clean-up-your-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Säubern Sie die Pipeline und die zugehörigen Ressourcen. | Um die Testressourcen aus Ihrem AWS-Konto zu löschen, führen Sie den folgenden Befehl im Stammordner des geklonten Repositorys aus:<pre>terraform destroy --var-file=terraform.tfvars</pre> | DevOps Ingenieur | 

## Fehlerbehebung
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Sie erhalten während der `"apply"` Phase eine **AccessDenied **Fehlermeldung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html) | 

## Zugehörige Ressourcen
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-resources"></a>
+ [Modulblöcke](https://developer.hashicorp.com/terraform/language/modules/syntax) (Terraform-Dokumentation)
+ [So verwenden Sie CI/CD die Bereitstellung und Konfiguration von AWS-Sicherheitsservices mit Terraform](https://aws.amazon.com/blogs/security/how-use-ci-cd-deploy-configure-aws-security-services-terraform/) (AWS-Blogbeitrag)
+ [Verwenden von serviceverknüpften Rollen (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html))
+ [Pipeline erstellen](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codepipeline/create-pipeline.html) (AWS-CLI-Dokumentation)
+ [Serverseitige Verschlüsselung für in Amazon S3 gespeicherte Artefakte konfigurieren für CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html) ( CodePipeline AWS-Dokumentation)
+ [Kontingente für AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html) ( CodeBuild AWS-Dokumentation)
+ [Datenschutz in AWS CodePipeline ( CodePipeline AWS-Dokumentation](https://docs.aws.amazon.com/codepipeline/latest/userguide/data-protection.html))

## Zusätzliche Informationen
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-additional"></a>

**Benutzerdefinierte Terraform-Module**

Im Folgenden finden Sie eine Liste der benutzerdefinierten Terraform-Module, die in diesem Muster verwendet werden:
+ `codebuild_terraform`erstellt die CodeBuild Projekte, die jede Phase der Pipeline bilden.
+ `codecommit_infrastructure_source_repo`erfasst und erstellt das CodeCommit Quell-Repository.
+ `codepipeline_iam_role`erstellt die erforderlichen IAM-Rollen für die Pipeline.
+ `codepipeline_kms`erstellt den erforderlichen AWS-KMS-Schlüssel für die Amazon S3 S3-Objektverschlüsselung und -entschlüsselung.
+ `codepipeline_terraform`erstellt die Testpipeline für das CodeCommit Quell-Repository.
+ `s3_artifacts_bucket`erstellt einen Amazon S3 S3-Bucket zur Verwaltung von Pipeline-Artefakten.

**Spezifikationsdateien erstellen**

Im Folgenden finden Sie eine Liste von Build-Spezifikationsdateien (Buildspec), die dieses Muster verwendet, um jede Pipeline-Phase auszuführen:
+ `buildspec_validate.yml`führt die Phase aus. `"validate"`
+ `buildspec_plan.yml`leitet die `"plan"` Bühne.
+ `buildspec_apply.yml`leitet die `"apply"` Bühne.
+ `buildspec_destroy.yml`leitet die `"destroy"` Bühne.

*Variablen in der Spezifikationsdatei erstellen*

Jede Buildspec-Datei verwendet die folgenden Variablen, um unterschiedliche buildspezifische Einstellungen zu aktivieren:


| 
| 
| Variable | Standardwert | Description | 
| --- |--- |--- |
| `CODE_SRC_DIR` | "." |  CodeCommit Definiert das Quellverzeichnis | 
| `TF_VERSION` | „1.3.7" | Definiert die Terraform-Version für die Build-Umgebung | 

Die `buildspec_validate.yml` Datei unterstützt auch die folgenden Variablen, um verschiedene Build-spezifische Einstellungen zu aktivieren:


| 
| 
| Variable | Standardwert | Description | 
| --- |--- |--- |
| `SCRIPT_DIR` | “. /Vorlagen/Skripte“ | Definiert das Skriptverzeichnis | 
| `ENVIRONMENT` | „dev“ | Definiert den Namen der Umgebung | 
| `SKIPVALIDATIONFAILURE` | „Y“ | Überspringt die Validierung bei Fehlern | 
| `ENABLE_TFVALIDATE` | „Y“ | Aktiviert Terraform Validate  | 
| `ENABLE_TFFORMAT` | „Y“ | Aktiviert das Terraform-Format | 
| `ENABLE_TFCHECKOV` | „Y“ | Aktiviert den Checkov-Scan | 
| `ENABLE_TFSEC` | „Y“ | Aktiviert den TFSec-Scan | 
| `TFSEC_VERSION` | „v1.28.1" | Definiert die TFSec-Version | 

# Mehr Muster
<a name="devops-more-patterns-pattern-list"></a>

**Topics**
+ [Greifen Sie mit AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon EKS zu](access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Verknüpfen Sie ein AWS CodeCommit Repository in einem AWS-Konto mit Amazon SageMaker AI Studio Classic in einem anderen Konto](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Automatisieren Sie die Kontoerstellung mit dem Landing Zone Accelerator auf AWS](automate-account-creation-lza.md)
+ [Automatisieren Sie das Hinzufügen oder Aktualisieren von Windows-Registrierungseinträgen mit AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatisieren Sie Backups für Amazon RDS for PostgreSQL PostgreSQL-DB-Instances mithilfe von AWS Batch](automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch.md)
+ [Automatisieren Sie die Bereitstellung verschachtelter Anwendungen mit AWS SAM](automate-deployment-of-nested-applications-using-aws-sam.md)
+ [Automatisieren Sie die Bereitstellung von Node Termination Handler in Amazon EKS mithilfe einer CI/CD Pipeline](automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.md)
+ [Automatisieren Sie die RabbitMQ-Konfiguration in Amazon MQ](automate-rabbitmq-configuration-in-amazon-mq.md)
+ [Automatisieren Sie die Replikation von Amazon RDS-Instances auf AWS-Konten](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Automatisches Erstellen und Bereitstellen einer Java-Anwendung auf Amazon EKS mithilfe einer CI/CD Pipeline](automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.md)
+ [Automatisches Generieren eines PynamoDB-Modells und CRUD-Funktionen für Amazon DynamoDB mithilfe einer Python-Anwendung](automatically-generate-a-pynamodb-model-and-crud-functions-for-amazon-dynamodb-by-using-a-python-application.md)
+ [Automatische Validierung und Bereitstellung von IAM-Richtlinien und -Rollen mithilfe CodePipeline von IAM Access Analyzer und AWS-Makros CloudFormation](automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.md)
+ [Sichern Sie Sun SPARC-Server im Stromasys Charon-SSP Emulator auf dem AWS Cloud](back-up-sun-sparc-servers-in-the-stromasys-charon-ssp-emulator-on-the-aws-cloud.md)
+ [Erstellen Sie mit dem AWS DataOps Development Kit eine Datenpipeline, um Google Analytics-Daten aufzunehmen, zu transformieren und zu analysieren](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Erstellen Sie ein Micro Focus Enterprise Server PAC mit Amazon EC2 Auto Scaling und Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Erstellen Sie mit EC2 Image Builder und Terraform eine Pipeline für gehärtete Container-Images](build-a-pipeline-for-hardened-container-images-using-ec2-image-builder-and-terraform.md)
+ [Erstellen Sie einen MLOps Workflow mithilfe von Amazon SageMaker AI und Azure DevOps](build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.md)
+ [Zentralisieren Sie die DNS-Auflösung mithilfe von AWS Managed Microsoft AD und vor Ort von Microsoft Active Directory](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Bereinigen Sie die Ressourcen von AWS Account Factory for Terraform (AFT) nach dem Verlust von Statusdateien sicher](clean-up-aft-resources-safely-after-state-file-loss.md)
+ [Konfigurieren Sie die Protokollierung für .NET-Anwendungen in Amazon CloudWatch Logs mithilfe von NLog](configure-logging-for-net-applications-in-amazon-cloudwatch-logs-by-using-nlog.md)
+ [Kopieren Sie Amazon ECR-Container-Images zwischen und AWS-Konten AWS-Regionen](copy-ecr-container-images-across-accounts-regions.md)
+ [Erstellen Sie ein benutzerdefiniertes Docker-Container-Image für SageMaker und verwenden Sie es für Modelltrainings in AWS Step Functions](create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.md)
+ [Erstellen Sie eine Pipeline in AWS-Regionen, die AWS nicht unterstützen CodePipeline](create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.md)
+ [Erstellen Sie mithilfe der CloudWatch Amazon-Anomalieerkennung Alarme für benutzerdefinierte Metriken](create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection.md)
+ [Passen Sie Standardrollennamen mithilfe von AWS CDK Aspekten und Escape-Schraffuren an](customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.md)
+ [Stellen Sie eine Pipeline bereit, die Sicherheitsprobleme in mehreren Codeergebnissen gleichzeitig erkennt](deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.md)
+ [Bereitstellen und verwalten Sie einen serverlosen Data Lake in der AWS-Cloud, indem Sie Infrastruktur als Code verwenden](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Stellen Sie containerisierte Anwendungen bereit, wenn AWS IoT Greengrass V2 sie als Docker-Container ausgeführt werden](deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.md)
+ [Stellen Sie Kubernetes-Ressourcen und -Pakete mithilfe von Amazon EKS und einem Helm-Chart-Repository in Amazon S3 bereit](deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3.md)
+ [Stellen Sie Multi-Stack-Anwendungen mithilfe von AWS CDK bereit mit TypeScript](deploy-multiple-stack-applications-using-aws-cdk-with-typescript.md)
+ [Stellen Sie mithilfe eines MCP-Servers mit Kiro und anderen Programmierassistenten eine Sicherheitsvalidierung in Echtzeit bereit.](deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.md)
+ [Stellen Sie mithilfe von Terraform SQL Server-Failover-Cluster-Instances auf Amazon EC2 und Amazon FSx bereit](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Stellen Sie die Security Automations for AWS WAF Solution mithilfe von Terraform bereit](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Entwickeln Sie mithilfe von RAG und Prompting fortschrittliche, auf KI basierende Chat-Assistenten ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Aktivieren Sie Amazon GuardDuty unter bestimmten Bedingungen mithilfe von Vorlagen AWS CloudFormation](enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.md)
+ [Richten Sie ereignisgesteuertes Auto Scaling in Amazon EKS mithilfe von Amazon EKS Pod Identity und KEDA ein](event-driven-auto-scaling-with-eks-pod-identity-and-keda.md)
+ [Generieren Sie mit Amazon Personalize personalisierte und neu eingestufte Empfehlungen](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Erhalten Sie Amazon SNS SNS-Benachrichtigungen, wenn sich der Schlüsselstatus eines AWS KMS KMS-Schlüssels ändert](get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.md)
+ [Steuern Sie Berechtigungssätze für mehrere Konten mithilfe von Account Factory for Terraform](govern-permission-sets-aft.md)
+ [Automatische Identifizierung doppelter Container-Images bei der Migration zu einem Amazon ECR-Repository](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [Implementieren Sie die pfadbasierte API-Versionierung mithilfe benutzerdefinierter Domains in Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Verbessern Sie die Betriebsleistung, indem Sie Amazon DevOps Guru in mehreren AWS-Regionen, Konten und OUs mit dem AWS CDK aktivieren](improve-operational-performance-by-enabling-amazon-devops-guru-across-multiple-aws-regions-accounts-and-ous-with-the-aws-cdk.md)
+ [Installieren Sie SSM Agent mithilfe von Kubernetes auf Amazon EKS-Worker-Knoten DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Integrieren Sie den Stonebranch Universal Controller in die AWS-Mainframe-Modernisierung](integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.md)
+ [Mainframe-Modernisierung: DevOps Weiter AWS mit Rocket Software Enterprise Suite](mainframe-modernization-devops-on-aws-with-micro-focus.md)
+ [Verwalten Sie AWS IAM Identity Center Berechtigungssätze als Code, indem Sie AWS CodePipeline](manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.md)
+ [Dynamisches Verwalten von AWS Berechtigungssätzen mithilfe von Terraform](manage-aws-permission-sets-dynamically-by-using-terraform.md)
+ [Verwalten Sie lokale Containeranwendungen, indem Sie Amazon ECS Anywhere mit dem AWS CDK einrichten](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [AWS Organizations Richtlinien mithilfe AWS CodePipeline von Amazon Bedrock als Code verwalten](manage-organizations-policies-as-code.md)
+ [Massenmigrieren von DNS-Einträgen in eine private gehostete Zone von Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Migrieren Sie IIS-gehostete Anwendungen mithilfe EC2 von appcmd.exe zu Amazon](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [Überwachen Sie die Nutzung eines gemeinsam genutzten Amazon Machine Image über mehrere AWS-Konten](monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.md)
+ [Orchestrieren Sie eine ETL-Pipeline mit Validierung, Transformation und Partitionierung mit AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Automatisieren Sie blue/green die Bereitstellung globaler Amazon Aurora Aurora-Datenbanken mithilfe von IaC-Prinzipien](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [Beibehaltung von routingfähigem IP-Speicherplatz in VPC-Designs mit mehreren Konten für Subnetze ohne Arbeitslast](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Bereitstellen eines Terraform-Produkts AWS Service Catalog mithilfe eines Code-Repositorys](provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.md)
+ [Führen Sie AWS Systems Manager Automation Automation-Aufgaben synchron über AWS Step Functions aus](run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions.md)
+ [Richten Sie mithilfe von AWS CDK eine CI/CD Pipeline für Hybrid-Workloads auf Amazon ECS Anywhere ein und GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Richten Sie mithilfe von Terraform eine CI/CD Pipeline für die Datenbankmigration ein](set-up-ci-cd-pipeline-for-db-migration-with-terraform.md)
+ [Richten Sie mithilfe von Amazon eine Multi-AZ-Infrastruktur für einen SQL Server Always On FCI ein FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Richten Sie mithilfe EC2 von AWS automatisch UiPath RPA-Bots auf Amazon ein CloudFormation](set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.md)
+ [Vereinfachen Sie die Anwendungsauthentifizierung mit gegenseitigem TLS in Amazon ECS mithilfe von Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Mandanten-Onboarding in der SaaS-Architektur für das Silomodell mit C\$1 und AWS CDK](tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.md)
+ [Verwenden Sie Terraform, um Amazon automatisch GuardDuty für eine Organisation zu aktivieren](use-terraform-to-automatically-enable-amazon-guardduty-for-an-organization.md)
+ [Verwenden Sie Amazon Bedrock-Agenten, um die Erstellung von Zugriffskontrollen in Amazon EKS durch textbasierte Eingabeaufforderungen zu automatisieren](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)
+ [Validieren Sie den Code von Account Factory for Terraform (AFT) lokal](validate-account-factory-for-terraform-aft-code-locally.md)
+ [Visualisieren Sie AI/ML Modellergebnisse mit Flask und AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)

# Infrastruktur
<a name="infrastructure-pattern-list"></a>

**Topics**
+ [Greifen Sie mithilfe von Session Manager und Amazon EC2 Instance Connect auf einen Bastion-Host zu](access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.md)
+ [Zentralisieren Sie die DNS-Auflösung mithilfe von AWS Managed Microsoft AD und vor Ort von Microsoft Active Directory](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Zentralisieren Sie die Überwachung mithilfe von Amazon CloudWatch Observability Access Manager](centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.md)
+ [EC2 Instances beim Start auf obligatorische Tags überprüfen](check-ec2-instances-for-mandatory-tags-at-launch.md)
+ [Bereinigen Sie die Ressourcen von AWS Account Factory for Terraform (AFT) nach dem Verlust von Statusdateien sicher](clean-up-aft-resources-safely-after-state-file-loss.md)
+ [Erstellen Sie eine Pipeline in AWS-Regionen, die AWS nicht unterstützen CodePipeline](create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.md)
+ [Passen Sie Standardrollennamen mithilfe von AWS CDK Aspekten und Escape-Schraffuren an](customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.md)
+ [Stellen Sie einen Cassandra-Cluster auf Amazon EC2 mit Private Static bereit, um ein IPs Rebalancing zu vermeiden](deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.md)
+ [Erweitern VRFs Sie mit AWS Transit Gateway Connect auf AWS](extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.md)
+ [Erhalten Sie Amazon SNS SNS-Benachrichtigungen, wenn sich der Schlüsselstatus eines AWS KMS KMS-Schlüssels ändert](get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.md)
+ [Beibehaltung von routingfähigem IP-Speicherplatz in VPC-Designs mit mehreren Konten für Subnetze ohne Arbeitslast](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Bereitstellen eines Terraform-Produkts AWS Service Catalog mithilfe eines Code-Repositorys](provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.md)
+ [Registrieren Sie mehrere AWS-Konten mit einer einzigen E-Mail-Adresse mithilfe von Amazon SES](register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.md)
+ [Richten Sie die DNS-Auflösung für Hybridnetzwerke in einer AWS-Umgebung mit einem Konto ein](set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment.md)
+ [Richten Sie mithilfe EC2 von AWS automatisch UiPath RPA-Bots auf Amazon ein CloudFormation](set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.md)
+ [Richten Sie eine hochverfügbare PeopleSoft Architektur auf AWS ein](set-up-a-highly-available-peoplesoft-architecture-on-aws.md)
+ [Richten Sie die Notfallwiederherstellung für Oracle JD Edwards EnterpriseOne mit AWS Elastic Disaster Recovery ein](set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.md)
+ [Richten Sie die CloudFormation Drifterkennung in einer Organisation mit mehreren Regionen und mehreren Konten ein](set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.md)
+ [Erfolgreicher Import eines S3-Buckets als CloudFormation AWS-Stack](successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.md)
+ [Synchronisieren Sie Daten zwischen Amazon EFS-Dateisystemen in verschiedenen AWS-Regionen mithilfe von AWS DataSync](synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.md)
+ [Testen Sie die AWS Infrastruktur mithilfe LocalStack von Terraform-Tests](test-aws-infra-localstack-terraform.md)
+ [Aktualisieren Sie SAP Pacemaker-Cluster von ENSA1 auf ENSA2](upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.md)
+ [Verwenden Sie konsistente Availability Zones VPCs für verschiedene AWS-Konten](use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.md)
+ [Verwenden Sie Benutzer IDs in IAM-Richtlinien für Zugriffskontrolle und Automatisierung](use-user-ids-iam-policies-access-control-automation.md)
+ [Validieren Sie den Code von Account Factory for Terraform (AFT) lokal](validate-account-factory-for-terraform-aft-code-locally.md)
+ [Mehr Muster](infrastructure-more-patterns-pattern-list.md)

# Greifen Sie mithilfe von Session Manager und Amazon EC2 Instance Connect auf einen Bastion-Host zu
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect"></a>

*Piotr Chotkowski und Witold Kowalik, Amazon Web Services*

## Zusammenfassung
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-summary"></a>

Ein *Bastion-Host*, manchmal auch *Jumpbox* genannt, ist ein Server, der einen zentralen Zugriffspunkt von einem externen Netzwerk auf die Ressourcen in einem privaten Netzwerk bietet. Ein Server, der einem externen öffentlichen Netzwerk wie dem Internet ausgesetzt ist, stellt ein potenzielles Sicherheitsrisiko für unbefugten Zugriff dar. Es ist wichtig, den Zugriff auf diese Server zu sichern und zu kontrollieren.

Dieses Muster beschreibt, wie Sie [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) und [Amazon EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) verwenden können, um eine sichere Verbindung zu einem Amazon Elastic Compute Cloud (Amazon EC2) -Bastion-Host herzustellen, der in Ihrem AWS-Konto bereitgestellt wird. Session Manager ist eine Funktion von. AWS Systems Manager Zu den Vorteilen dieses Musters gehören:
+ Der bereitgestellte Bastion-Host hat keine offenen, eingehenden Ports, die mit dem öffentlichen Internet verbunden sind. Dadurch wird die potenzielle Angriffsfläche reduziert.
+ Sie müssen keine langfristigen Secure Shell (SSH) -Schlüssel in Ihrem AWS-Konto speichern und verwalten. Stattdessen generiert jeder Benutzer jedes Mal, wenn er sich mit dem Bastion-Host verbindet, ein neues SSH-Schlüsselpaar. AWS Identity and Access Management (IAM) -Richtlinien, die an die AWS Anmeldeinformationen des Benutzers angehängt sind, steuern den Zugriff auf den Bastion-Host.

**Beabsichtigte Zielgruppe**

Dieses Muster richtet sich an Leser, die Erfahrung mit grundlegenden Kenntnissen von Amazon EC2, Amazon Virtual Private Cloud (Amazon VPC) und Hashicorp Terraform haben.

## Voraussetzungen und Einschränkungen
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ AWS Command Line Interface (AWS CLI) Version 2, [installiert](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ Session Manager-Plugin für das AWS CLI, [installiert](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
+ [Terraform CLI, installiert](https://developer.hashicorp.com/terraform/cli)
+ Speicher für den [Terraform-Status](https://developer.hashicorp.com/terraform/language/state), z. B. ein Amazon Simple Storage Service (Amazon S3) -Bucket und eine Amazon DynamoDB-Tabelle, die als Remote-Backend zum Speichern des Terraform-Status dienen. Weitere Informationen zur Verwendung von Remote-Backends für den Terraform-Status finden Sie unter [Amazon S3 S3-Backends](https://www.terraform.io/language/settings/backends/s3) (Terraform-Dokumentation). Ein Codebeispiel, das die Remote-Statusverwaltung mit einem Amazon S3 S3-Backend einrichtet, finden Sie unter [remote-state-s3-backend](https://registry.terraform.io/modules/nozaq/remote-state-s3-backend/aws/latest) (Terraform Registry). Beachten Sie die folgenden Voraussetzungen:
  + Der Amazon S3 S3-Bucket und die DynamoDB-Tabelle müssen sich im selben Raum befinden. AWS-Region
  + Beim Erstellen der DynamoDB-Tabelle müssen der Partitionsschlüssel `LockID` (Groß- und Kleinschreibung beachten) und der Partitionsschlüsseltyp muss angegeben werden. `String` Für alle anderen Tabelleneinstellungen müssen die Standardwerte verwendet werden. Weitere Informationen finden Sie unter [Über Primärschlüssel](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey) und [Erstellen einer Tabelle](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html) in der DynamoDB-Dokumentation.
+ Ein SSH-Client, installiert

**Einschränkungen**
+ Dieses Muster ist als Machbarkeitsnachweis (PoC) oder als Grundlage für die weitere Entwicklung gedacht. Es sollte in seiner derzeitigen Form nicht in Produktionsumgebungen verwendet werden. Passen Sie vor der Bereitstellung den Beispielcode im Repository an Ihre Anforderungen und Ihren Anwendungsfall an.
+ Dieses Muster geht davon aus, dass der Ziel-Bastion-Host Amazon Linux 2 als Betriebssystem verwendet. Es ist zwar möglich, andere Amazon Machine Images (AMIs) zu verwenden, andere Betriebssysteme fallen jedoch nicht in den Anwendungsbereich dieses Musters.
**Anmerkung**  
Amazon Linux 2 nähert sich dem Ende der Unterstützung. Weitere Informationen finden Sie unter [Amazon Linux FAQs 2.](https://aws.amazon.com/amazon-linux-2/faqs/)
+ In diesem Muster befindet sich der Bastion-Host in einem privaten Subnetz ohne NAT-Gateway und Internet-Gateway. Dieses Design isoliert die EC2 Amazon-Instance vom öffentlichen Internet. Sie können eine bestimmte Netzwerkkonfiguration hinzufügen, die es ihr ermöglicht, mit dem Internet zu kommunizieren. Weitere Informationen finden Sie unter [Connect Ihrer Virtual Private Cloud (VPC) mit anderen Netzwerken](https://docs.aws.amazon.com/vpc/latest/userguide/extend-intro.html) in der Amazon VPC-Dokumentation. Entsprechend dem [Prinzip der geringsten Rechte hat der Bastion-Host keinen Zugriff auf andere Ressourcen in Ihrem, AWS-Konto es sei denn, Sie gewähren ausdrücklich die entsprechenden Berechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Weitere Informationen finden Sie in der IAM-Dokumentation unter [Ressourcenbasierte Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based).

**Produktversionen**
+ AWS-CLI Version 2
+ Terraform-Version 1.3.9

## Architektur
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-architecture"></a>

**Zieltechnologie-Stack**
+ Eine VPC mit einem einzigen privaten Subnetz
+ Die folgenden [Schnittstellen-VPC-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html):
  + `amazonaws.<region>.ssm`— Der Endpunkt für den AWS Systems Manager Service.
  + `amazonaws.<region>.ec2messages`— Systems Manager verwendet diesen Endpunkt, um Anrufe vom SSM-Agent an den Systems Manager Manager-Dienst zu tätigen.
  + `amazonaws.<region>.ssmmessages`— Session Manager verwendet diesen Endpunkt, um über einen sicheren Datenkanal eine Verbindung zu Ihrer EC2 Amazon-Instance herzustellen.
+ Eine `t3.nano` EC2 Amazon-Instance, auf der Amazon Linux 2 ausgeführt wird
+ IAM-Rolle und Instanzprofil
+ Amazon VPC-Sicherheitsgruppen und Sicherheitsgruppenregeln für die Endgeräte und die Amazon-Instance EC2 

**Zielarchitektur**

![\[Architekturdiagramm der Verwendung von Session Manager für den Zugriff auf einen Bastion-Host.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/a02aed20-1852-4c91-902f-f553795006e2/images/819c503b-7eec-4a9c-862b-b87107d50dc1.png)


Das Diagramm zeigt den folgenden Prozess:

1. Der Benutzer nimmt eine IAM-Rolle an, die über die folgenden Berechtigungen verfügt:
   + Authentifizieren, autorisieren und eine Verbindung zur Amazon-Instance herstellen EC2 
   + Starten Sie eine Sitzung mit Session Manager

1. Der Benutzer initiiert eine SSH-Sitzung über den Sitzungsmanager.

1. Session Manager authentifiziert den Benutzer, überprüft die Berechtigungen in den zugehörigen IAM-Richtlinien, überprüft die Konfigurationseinstellungen und sendet eine Nachricht an den SSM-Agenten, um eine bidirektionale Verbindung herzustellen.

1. Der Benutzer überträgt den öffentlichen SSH-Schlüssel über Amazon-Metadaten an den Bastion-Host. EC2 Dies muss vor jeder Verbindung erfolgen. Der öffentliche SSH-Schlüssel bleibt 60 Sekunden lang verfügbar.

1. Der Bastion-Host kommuniziert mit den VPC-Endpunkten der Schnittstelle für Systems Manager und Amazon. EC2

1. Der Benutzer greift über Session Manager auf den Bastion-Host zu, indem er einen mit TLS 1.2 verschlüsselten bidirektionalen Kommunikationskanal verwendet.

**Automatisierung und Skalierung**

Die folgenden Optionen sind verfügbar, um die Bereitstellung zu automatisieren oder diese Architektur zu skalieren:
+ Sie können die Architektur über eine CI/CD-Pipeline (Continuous Integration and Continuous Delivery) bereitstellen.
+ Sie können den Code ändern, um den Instanztyp des Bastion-Hosts zu ändern.
+ Sie können den Code ändern, um mehrere Bastion-Hosts bereitzustellen. Fügen Sie in der `bastion-host/main.tf` Datei im `aws_instance` Ressourcenblock das `count` Metaargument hinzu. Weitere Informationen finden Sie in der [Terraform-Dokumentation](https://developer.hashicorp.com/terraform/language/meta-arguments/count).

## Tools
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-tools"></a>

**AWS-Services**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)hilft Ihnen bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der ausgeführt werden. AWS Cloud Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS Ressourcen sicher und in großem Umfang zu verwalten. Dieses Muster verwendet [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html), eine Funktion von Systems Manager.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen dabei, AWS Ressourcen in einem von Ihnen definierten virtuellen Netzwerk bereitzustellen. Dieses virtuelle Netzwerk entspricht einem herkömmlichen Netzwerk, wie Sie es in Ihrem Rechenzentrum betreiben würden, mit den Vorteilen der Verwendung der skalierbaren Infrastruktur von AWS.

**Andere Tools**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. Dieses Muster verwendet [Terraform](https://developer.hashicorp.com/terraform/cli) CLI.

**Code-Repository**

Der Code für dieses Muster ist im Repository GitHub [Access a Bastion Host mithilfe von Session Manager und Amazon EC2 Instance Connect](https://github.com/aws-samples/secured-bastion-host-terraform) verfügbar.

## Best Practices
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-best-practices"></a>
+ Wir empfehlen die Verwendung automatisierter Tools zum Scannen von Code, um die Sicherheit und Qualität des Codes zu verbessern. Dieses Muster wurde mit [Checkov](https://www.checkov.io/), einem statischen Codeanalyse-Tool für IaC, gescannt. Wir empfehlen, dass Sie mindestens grundlegende Validierungs- und Formatierungsprüfungen mithilfe der `terraform validate` Befehle und Terraform durchführen. `terraform fmt -check -recursive`
+ Es empfiehlt sich, automatisierte Tests für IaC hinzuzufügen. Weitere Informationen zu den verschiedenen Ansätzen zum Testen von Terraform-Code finden Sie unter Terraform [testen ( HashiCorp Terraform-Blogbeitrag](https://www.hashicorp.com/blog/testing-hashicorp-terraform)).
+ Während der Bereitstellung verwendet Terraform jedes Mal, wenn eine neue Version des Amazon [Linux 2-AMI erkannt wird, die EC2 Amazon-Instance](https://aws.amazon.com/marketplace/pp/prodview-zc4x2k7vt6rpu?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) ersetzt. Dadurch wird die neue Version des Betriebssystems einschließlich Patches und Upgrades bereitgestellt. Wenn der Bereitstellungszeitplan selten ist, kann dies ein Sicherheitsrisiko darstellen, da die Instanz nicht über die neuesten Patches verfügt. Es ist wichtig, regelmäßig Sicherheitspatches zu aktualisieren und auf bereitgestellte EC2 Amazon-Instances anzuwenden. Weitere Informationen finden Sie unter [Update-Verwaltung in Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/update-management.html).
+ Da es sich bei diesem Muster um einen Machbarkeitsnachweis handelt, AWS werden verwaltete Richtlinien verwendet, wie `AmazonSSMManagedInstanceCore` z. AWS verwaltete Richtlinien decken allgemeine Anwendungsfälle ab, gewähren jedoch keine Berechtigungen mit den geringsten Rechten. Je nach Bedarf für Ihren Anwendungsfall empfehlen wir Ihnen, benutzerdefinierte Richtlinien zu erstellen, die Berechtigungen mit den geringsten Rechten für die in dieser Architektur bereitgestellten Ressourcen gewähren. Weitere Informationen finden Sie unter [Erste Schritte mit AWS verwalteten Richtlinien und Umstellung auf Berechtigungen mit](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-use-aws-defined-policies) den geringsten Rechten.
+ Verwenden Sie ein Passwort, um den Zugriff auf SSH-Schlüssel zu schützen und Schlüssel an einem sicheren Ort zu speichern.
+ Richten Sie die Protokollierung und Überwachung für den Bastion-Host ein. Protokollierung und Überwachung sind wichtige Bestandteile der Wartung von Systemen, sowohl aus betrieblicher als auch aus sicherheitstechnischer Sicht. Es gibt mehrere Möglichkeiten, Verbindungen und Aktivitäten auf Ihrem Bastion-Host zu überwachen. Weitere Informationen finden Sie in den folgenden Themen in der Systems Manager Manager-Dokumentation:
  + [Überwachung AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring.html)
  + [Anmeldung und Überwachung AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/logging-and-monitoring.html)
  + [Überwachung der Sitzungsaktivität](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-auditing.html)
  + [Protokollieren von Sitzungsaktivitäten](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging.html)

## Epen
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics"></a>

### Stellen Sie die Ressourcen bereit
<a name="deploy-the-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps Ingenieur, Entwickler | 
| Initialisieren Sie das Terraform-Arbeitsverzeichnis. | Dieser Schritt ist nur für die erste Bereitstellung erforderlich. Wenn Sie das Muster erneut bereitstellen, fahren Sie mit dem nächsten Schritt fort.Geben Sie im Stammverzeichnis des geklonten Repositorys den folgenden Befehl ein, wobei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)<pre>terraform init \<br />    -backend-config="bucket=$S3_STATE_BUCKET" \<br />    -backend-config="key=$PATH_TO_STATE_FILE" \<br />    -backend-config="region=$AWS_REGION</pre>Alternativ können Sie die Datei **config.tf** öffnen und in dem `terraform` Abschnitt diese Werte manuell angeben. | DevOps Ingenieur, Entwickler, Terraform | 
| Stellen Sie die Ressourcen bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps Ingenieur, Entwickler, Terraform | 

### Richten Sie die lokale Umgebung ein
<a name="set-up-the-local-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die SSH-Verbindung. | Aktualisieren Sie die SSH-Konfigurationsdatei, um SSH-Verbindungen über den Sitzungsmanager zuzulassen. Anweisungen finden Sie unter [Zulassen von SSH-Verbindungen für](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable) Session Manager. Auf diese Weise können autorisierte Benutzer einen Proxybefehl eingeben, der eine Session Manager-Sitzung startet und alle Daten über eine bidirektionale Verbindung überträgt. | DevOps Ingenieur | 
| Generieren Sie die SSH-Schlüssel. | Geben Sie den folgenden Befehl ein, um ein lokales privates und öffentliches SSH-Schlüsselpaar zu generieren. Sie verwenden dieses key pair, um eine Verbindung zum Bastion-Host herzustellen.<pre>ssh-keygen -t rsa -f my_key</pre> | DevOps Ingenieur, Entwickler | 

### Stellen Sie mithilfe von Session Manager eine Connect zum Bastion-Host her
<a name="connect-to-the-bastion-host-by-using-sesh"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Holen Sie sich die Instanz-ID. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | Allgemeines AWS | 
| Senden Sie den öffentlichen SSH-Schlüssel. | In diesem Abschnitt laden Sie den öffentlichen Schlüssel in die [Instanz-Metadaten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) des Bastion-Hosts hoch. Nachdem der Schlüssel hochgeladen wurde, haben Sie 60 Sekunden Zeit, um eine Verbindung mit dem Bastion-Host herzustellen. Nach 60 Sekunden wird der öffentliche Schlüssel entfernt. Weitere Informationen finden Sie im Abschnitt [zur Fehlerbehebung](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting) dieses Musters. Führen Sie die nächsten Schritte schnell durch, um zu verhindern, dass der Schlüssel entfernt wird, bevor Sie eine Verbindung zum Bastion-Host herstellen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | Allgemeines AWS | 
| Connect zum Bastion-Host her. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)Es gibt andere Optionen zum Öffnen einer SSH-Verbindung mit dem Bastion-Host. Weitere Informationen finden Sie unter *Alternative Ansätze zum Herstellen einer SSH-Verbindung mit dem Bastion-Host* im Abschnitt [Zusätzliche Informationen](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional) dieses Musters. | Allgemeines AWS | 

### (Optional) Bereinigen
<a name="optional-clean-up"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entfernen Sie die bereitgestellten Ressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps Ingenieur, Entwickler, Terraform | 

## Fehlerbehebung
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `TargetNotConnected`Fehler beim Versuch, eine Verbindung zum Bastion-Host herzustellen | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | 
| `Permission denied`Fehler beim Versuch, eine Verbindung zum Bastion-Host herzustellen | Nachdem der öffentliche Schlüssel auf den Bastion-Host hochgeladen wurde, haben Sie nur 60 Sekunden Zeit, um die Verbindung herzustellen. Nach 60 Sekunden wird der Schlüssel automatisch entfernt und Sie können ihn nicht verwenden, um eine Verbindung mit der Instanz herzustellen. In diesem Fall können Sie den Schritt wiederholen, um den Schlüssel erneut an die Instanz zu senden. | 

## Zugehörige Ressourcen
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-resources"></a>

**AWS Dokumentation**
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)(Systems Manager Manager-Dokumentation)
+ [Installieren Sie das Session Manager-Plug-In für AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) (Systems Manager Manager-Dokumentation)
+ [Zulassen von SSH-Verbindungen für Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable) (Systems Manager Manager-Dokumentation)
+ [Über die Verwendung von EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) ( EC2 Amazon-Dokumentation)
+ [Stellen Sie eine Verbindung mit EC2 Instance Connect her](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html) ( EC2 Amazon-Dokumentation)
+ [Identitäts- und Zugriffsmanagement für Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam.html) ( EC2 Amazon-Dokumentation)
+ [Verwenden einer IAM-Rolle zum Erteilen von Berechtigungen für Anwendungen, die auf EC2 Amazon-Instances ausgeführt werden](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) (IAM-Dokumentation)
+ [Bewährte Sicherheitsmethoden in IAM (IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html))
+ [Steuern Sie den Datenverkehr zu Ressourcen mithilfe von Sicherheitsgruppen](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) (Amazon VPC-Dokumentation)

**Sonstige Ressourcen**
+ [Terraform-Webseite für Entwickler](https://developer.hashicorp.com/terraform)
+ [Befehl: validate](https://developer.hashicorp.com/terraform/cli/commands/validate) (Terraform-Dokumentation)
+ [Befehl: fmt (Terraform-Dokumentation](https://developer.hashicorp.com/terraform/cli/commands/fmt))
+ [ HashiCorp Terraform testen](https://www.hashicorp.com/blog/testing-hashicorp-terraform) (Blogbeitrag) HashiCorp 
+ [Checkov-Webseite](https://www.checkov.io/)

## Zusätzliche Informationen
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional"></a>

**Alternative Ansätze zum Herstellen einer SSH-Verbindung mit dem Bastion-Host**

*Port-Weiterleitung*

Sie können die `-D 8888` Option verwenden, um eine SSH-Verbindung mit dynamischer Portweiterleitung zu öffnen. Weitere Informationen finden Sie in den [Anweisungen](https://explainshell.com/explain?cmd=ssh+-i+%24PRIVATE_KEY_FILE+-D+8888+ec2-user%40%24INSTANCE_ID) auf explainshell.com. Im Folgenden finden Sie ein Beispiel für einen Befehl zum Öffnen einer SSH-Verbindung mithilfe von Portweiterleitung.

```
ssh -i $PRIVATE_KEY_FILE -D 8888 ec2-user@$INSTANCE_ID
```

Diese Art von Verbindung öffnet einen SOCKS-Proxy, der den Datenverkehr von Ihrem lokalen Browser über den Bastion-Host weiterleiten kann. Wenn Sie Linux oder macOS verwenden, geben Sie ein, um alle Optionen anzuzeigen`man ssh`. Dadurch wird das SSH-Referenzhandbuch angezeigt.

*Unter Verwendung des bereitgestellten Skripts*

Anstatt die unter *Connect zum Bastion-Host mithilfe des Sitzungsmanagers* im Abschnitt [Epics](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics) beschriebenen Schritte manuell auszuführen, können Sie das Skript **connect.sh** verwenden, das im Code-Repository enthalten ist. Dieses Skript generiert das SSH-Schlüsselpaar, überträgt den öffentlichen Schlüssel an die EC2 Amazon-Instance und initiiert eine Verbindung mit dem Bastion-Host. Wenn Sie das Skript ausführen, übergeben Sie das Tag und den Schlüsselnamen als Argumente. Im Folgenden finden Sie ein Beispiel für den Befehl zum Ausführen des Skripts.

```
./connect.sh sandbox-dev-bastion-host my_key
```

# Zentralisieren Sie die DNS-Auflösung mithilfe von AWS Managed Microsoft AD und vor Ort von Microsoft Active Directory
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory"></a>

*Brian Westmoreland, Amazon Web Services*

## Zusammenfassung
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-summary"></a>

Dieses Muster bietet Anleitungen für die Zentralisierung der DNS-Auflösung in einer Umgebung mit AWS mehreren Konten, indem sowohl AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) als auch Amazon Route 53 verwendet werden. In diesem Muster ist der AWS DNS-Namespace eine Unterdomäne des lokalen DNS-Namespace. Dieses Muster enthält auch Anleitungen zur Konfiguration der lokalen DNS-Server für die Weiterleitung von Abfragen, AWS wenn die lokale DNS-Lösung Microsoft Active Directory verwendet.  

## Voraussetzungen und Einschränkungen
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-prereqs"></a>

**Voraussetzungen**
+ Eine Umgebung AWS mit mehreren Konten, eingerichtet mit. AWS Organizations
+ Netzwerkkonnektivität wurde hergestellt zwischen AWS-Konten.
+ Netzwerkkonnektivität, die zwischen AWS und der lokalen Umgebung hergestellt wurde (mithilfe einer VPN-Verbindung AWS Direct Connect oder einer beliebigen Art von VPN-Verbindung).
+ AWS Command Line Interface (AWS CLI) auf einer lokalen Arbeitsstation konfiguriert.
+ AWS Resource Access Manager (AWS RAM) wird verwendet, um Route 53-Regeln zwischen Konten gemeinsam zu nutzen. Daher muss die gemeinsame Nutzung innerhalb der AWS Organizations Umgebung aktiviert sein, wie im Abschnitt [Epics](#centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics) beschrieben.

**Einschränkungen**
+ AWS Managed Microsoft AD Die Standard Edition hat ein Limit von 5 Shares.
+ AWS Managed Microsoft AD Die Enterprise Edition hat ein Limit von 125 Aktien.
+ Die Lösung in diesem Muster ist auf AWS-Regionen die gemeinsame Nutzung des Supports beschränkt AWS RAM.

**Produktversionen**
+ Microsoft Active Directory wird auf Windows Server 2008, 2012, 2012 R2 oder 2016 ausgeführt.

## Architektur
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-architecture"></a>

**Zielarchitektur**

![\[Architektur für zentralisierte DNS-Auflösung auf AWS.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/91430e2a-f7f6-4dbe-9fe7-8abed1f764a7/images/9b5fc51d-590b-468f-80f7-1949f3b3b258.png)


In diesem Design AWS Managed Microsoft AD ist es in den Shared Services installiert AWS-Konto. Obwohl dies keine Anforderung ist, geht dieses Muster von dieser Konfiguration aus. Wenn Sie eine andere Konfiguration AWS Managed Microsoft AD verwenden AWS-Konto, müssen Sie möglicherweise die Schritte im Abschnitt [Epics](#centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics) entsprechend ändern.

Dieses Design verwendet Route 53-Resolver, um die Namensauflösung mithilfe von Route 53-Regeln zu unterstützen. Wenn die lokale DNS-Lösung Microsoft DNS verwendet, ist die Erstellung einer bedingten Weiterleitungsregel für den AWS-Namespace (`aws.company.com`), der eine Unterdomäne des Unternehmens-DNS-Namespace (`company.com`) ist, nicht einfach. Wenn Sie versuchen, eine herkömmliche bedingte Weiterleitung zu erstellen, führt dies zu einem Fehler. Dies liegt daran, dass Microsoft Active Directory bereits für jede Subdomain von als maßgeblich angesehen wird. `company.com` Um diesen Fehler zu umgehen, müssen Sie zunächst eine Delegierung erstellen, um die Autorität für diesen `aws.company.com` Namespace zu delegieren. Anschließend können Sie die bedingte Weiterleitung erstellen.

Die Virtual Private Cloud (VPC) für jedes Spoke-Konto kann einen eigenen eindeutigen DNS-Namespace haben, der auf dem AWS Root-Namespace basiert. In diesem Design hängt jedes Spoke-Konto eine Abkürzung des Kontonamens an den AWS-Basisnamespace an. Nachdem die privaten Hosting-Zonen im Spoke-Konto erstellt wurden, werden die Zonen der lokalen VPC im Spoke-Konto sowie der VPC im zentralen AWS Netzwerkkonto zugeordnet. Dadurch kann das zentrale AWS Netzwerkkonto DNS-Anfragen beantworten, die sich auf die Spoke-Konten beziehen. Auf diese Weise teilen sich Route 53 und Route 53 AWS Managed Microsoft AD gemeinsam die Verantwortung für die Verwaltung des AWS Namespaces (`aws.company.com`).

**Automatisierung und Skalierung**

Dieses Design verwendet Route 53 Resolver-Endpunkte, um DNS-Abfragen zwischen AWS und Ihrer lokalen Umgebung zu skalieren. Jeder Route 53 Resolver-Endpunkt besteht aus mehreren elastischen Netzwerkschnittstellen (verteilt auf mehrere Availability Zones), und jede Netzwerkschnittstelle kann bis zu 10.000 Abfragen pro Sekunde verarbeiten. Route 53 Resolver unterstützt bis zu 6 IP-Adressen pro Endpunkt. Insgesamt unterstützt dieses Design also bis zu 60.000 DNS-Abfragen pro Sekunde, die über mehrere Availability Zones verteilt sind, um eine hohe Verfügbarkeit zu gewährleisten.  

Darüber hinaus berücksichtigt dieses Muster automatisch das future Wachstum innerhalb AWS. Die vor Ort konfigurierten DNS-Weiterleitungsregeln müssen nicht geändert werden, um neue VPCs und die zugehörigen privaten Hosting-Zonen zu unterstützen, die hinzugefügt werden AWS. 

## Tools
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-tools"></a>

**AWS-Services**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)ermöglicht Ihren verzeichnissensitiven Workloads und AWS Ressourcen die Verwendung von Microsoft Active Directory in der. AWS Cloud
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsdienst, der Ihnen hilft, mehrere Konten AWS-Konten in einer Organisation zu konsolidieren, die Sie erstellen und zentral verwalten.
+ [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) hilft Ihnen dabei, Ihre Ressourcen sicher gemeinsam zu nutzen AWS-Konten , um den betrieblichen Aufwand zu reduzieren und für Transparenz und Überprüfbarkeit zu sorgen.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.

**Tools**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können. In diesem Muster AWS CLI wird der verwendet, um Route 53-Autorisierungen zu konfigurieren.

## Epen
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics"></a>

### Ein AWS Managed Microsoft AD Verzeichnis erstellen und teilen
<a name="create-and-share-an-managed-ad-directory"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereitstellen AWS Managed Microsoft AD. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | AWS-Administrator | 
| Teilen Sie das Verzeichnis. | Nachdem das Verzeichnis erstellt wurde, können Sie es mit anderen Mitgliedern AWS-Konten der AWS Organisation teilen. Anweisungen dazu finden Sie im *AWS Directory Service Administratorhandbuch* unter [Verzeichnis teilen](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step2_share_directory.html).  AWS Managed Microsoft AD Die Standard Edition hat ein Limit von 5 Shares. Die Enterprise Edition hat ein Limit von 125 Aktien. | AWS-Administrator | 

### Route 53 konfigurieren
<a name="configure-r53"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Route 53-Resolver. | Route 53-Resolver erleichtern die Auflösung von DNS-Abfragen zwischen AWS und dem lokalen Rechenzentrum.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html)Die Verwendung des zentralen AWS Netzwerkkontos VPC ist zwar nicht erforderlich, bei den verbleibenden Schritten wird jedoch von dieser Konfiguration ausgegangen. | AWS-Administrator | 
| Erstellen Sie Route 53-Regeln. | Ihr spezieller Anwendungsfall erfordert möglicherweise eine große Anzahl von Route 53-Regeln, aber Sie müssen die folgenden Regeln als Grundlage konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html)Weitere Informationen finden Sie im *Route 53 Developer Guide* unter [Managing Forwarding Rules](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html). | AWS-Administrator | 
| Konfigurieren Sie ein Route 53-Profil. | Ein Route 53-Profil wird verwendet, um die Regeln mit Spoke-Konten zu teilen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | AWS-Administrator | 

### Konfigurieren Sie das lokale Active Directory-DNS
<a name="configure-on-premises-active-directory-dns"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Delegation. | Verwenden Sie das Microsoft DNS-Snap-In (`dnsmgmt.msc`), um eine neue Delegierung für den `company.com` Namespace in Active Directory zu erstellen. Der Name der delegierten Domäne sollte lauten. `aws` Dies ist der vollqualifizierte Domänenname (FQDN) der Delegation. `aws.company.com` Verwenden Sie die IP-Adressen der AWS Managed Microsoft AD Domänencontroller für die IP-Werte des Nameservers und verwenden Sie sie `server.aws.company.com` für den Namen. (Diese Delegierung dient nur der Redundanz, da für diesen Namespace eine bedingte Weiterleitung erstellt wird, die Vorrang vor der Delegierung hat.) | Active Directory | 
| Erstellen Sie die bedingte Weiterleitung. | Verwenden Sie das Microsoft DNS-Snap-In (`dnsmgmt.msc`), um eine neue bedingte Weiterleitung für zu erstellen. `aws.company.com`  Verwenden Sie die IP-Adressen der AWS eingehenden Route 53-Resolver im zentralen DNS AWS-Konto für das Ziel der bedingten Weiterleitung.   | Active Directory | 

### Erstellen Sie private, gehostete Route 53-Zonen für Spoke AWS-Konten
<a name="create-r53-private-hosted-zones-for-spoke-aws-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die privaten Hosting-Zonen von Route 53. | Erstellen Sie in jedem Spoke-Konto eine private gehostete Route 53-Zone. Ordnen Sie diese privat gehostete Zone der Spoke-Konto-VPC zu. Eine ausführliche Anleitung finden Sie unter [Creating a private hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) im *Route 53 Developer Guide*. | AWS-Administrator | 
| Autorisierungen erstellen. | Verwenden Sie die AWS CLI , um eine Autorisierung für das zentrale AWS Netzwerkkonto VPC zu erstellen. Führen Sie diesen Befehl im Kontext der einzelnen AWS-Konto Spokes aus:<pre>aws route53 create-vpc-association-authorization --hosted-zone-id <hosted-zone-id> \<br />   --vpc VPCRegion=<region>,VPCId=<vpc-id></pre>Wobei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | AWS-Administrator | 
| Verknüpfungen erstellen. | Erstellen Sie die Route 53-Zuordnung für die private gehostete Zone für die zentrale AWS Netzwerkkonto-VPC mithilfe von. AWS CLI Führen Sie diesen Befehl im Kontext des zentralen AWS Netzwerkkontos aus:<pre>aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <hosted-zone-id> \<br />   --vpc VPCRegion=<region>,VPCId=<vpc-id></pre>Wobei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | AWS-Administrator | 

## Zugehörige Ressourcen
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-resources"></a>
+ [Vereinfachen Sie die DNS-Verwaltung in einer Umgebung mit mehreren Konten mit Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/) (AWS Blogbeitrag)
+ [Erstellen Sie Ihre AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html) (Dokumentation)AWS Directory Service 
+ [Ein AWS Managed Microsoft AD Verzeichnis teilen](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step2_share_directory.html) (AWS Directory Service Dokumentation)
+ [Was ist Amazon Route 53 Resolver?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html) (Dokumentation zu Amazon Route 53)
+ [Eine private gehostete Zone erstellen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) (Amazon Route 53-Dokumentation)
+ [Was sind Amazon Route 53 53-Profile?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/profiles.html) (Dokumentation zu Amazon Route 53)

# Zentralisieren Sie die Überwachung mithilfe von Amazon CloudWatch Observability Access Manager
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager"></a>

*Anand Krishna Varanasi, JAGDISH KOMAKULA, Ashish Kumar, Jimmy Morgan, Sarat Chandra Pothula, Vivek Thangamuthu und Balaji Vedagiri, Amazon Web Services*

## Zusammenfassung
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-summary"></a>

Beobachtbarkeit ist entscheidend für die Überwachung, das Verständnis und die Fehlerbehebung von Anwendungen. Anwendungen, die sich über mehrere Konten erstrecken, wie bei Implementierungen AWS Control Tower oder landing zone Zone-Implementierungen, generieren eine große Anzahl von Protokollen und Trace-Daten. Um Probleme schnell zu beheben oder Benutzeranalysen oder Geschäftsanalysen zu verstehen, benötigen Sie eine gemeinsame Observability-Plattform für alle Konten. Mit dem Amazon CloudWatch Observability Access Manager können Sie von einem zentralen Ort aus auf mehrere Kontoprotokolle zugreifen und diese kontrollieren.

Sie können den Observability Access Manager verwenden, um Observability-Datenprotokolle anzuzeigen und zu verwalten, die von Quellkonten generiert wurden. Quellkonten sind Einzelpersonen AWS-Konten , die Observability-Daten für ihre Ressourcen generieren. Observabilitätsdaten werden zwischen Quellkonten und Monitoring-Konten gemeinsam genutzt. Die gemeinsam genutzten Observability-Daten können Metriken in Amazon CloudWatch, Logs in Amazon CloudWatch Logs und Traces in AWS X-Ray beinhalten. Weitere Informationen finden Sie in der Dokumentation zu [Observability Access Manager](https://docs.aws.amazon.com/OAM/latest/APIReference/Welcome.html).

Dieses Muster ist für Benutzer gedacht, die über Anwendungen oder Infrastrukturen verfügen, die in mehreren ausgeführt werden AWS-Konten und die einen gemeinsamen Ort zum Einsehen von Protokollen benötigen. Es erklärt, wie Sie Observability Access Manager mithilfe von Terraform einrichten können, um den Status und den Zustand dieser Anwendungen oder Infrastrukturen zu überwachen. Sie können diese Lösung auf verschiedene Arten installieren:
+ Als eigenständiges Terraform-Modul, das Sie manuell einrichten
+ Durch die Verwendung einer Pipeline für kontinuierliche Integration und kontinuierliche Lieferung (CI/CD)
+ Durch die Integration mit anderen Lösungen wie [AWS Control Tower Account Factory for Terraform (](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)AFT)

Die Anweisungen im Abschnitt [Epics](#centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-epics) behandeln die manuelle Implementierung. Die Schritte zur AFT-Installation finden Sie in der README-Datei für das GitHub [Observability Access](https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform) Manager-Repository.

## Voraussetzungen und Einschränkungen
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-prereqs"></a>

**Voraussetzungen**
+ [Terraform](https://www.terraform.io/) ist in Ihrem System oder in automatisierten Pipelines installiert oder referenziert. (Wir empfehlen Ihnen, die [neueste Version](https://releases.hashicorp.com/terraform/) zu verwenden.)
+ Ein Konto, das Sie als zentrales Überwachungskonto verwenden können. Andere Konten erstellen Links zum zentralen Überwachungskonto, um Protokolle einzusehen.
+ (Optional) Ein Quellcode-Repository wie GitHub, AWS CodeCommit, Atlassian Bitbucket oder ein ähnliches System. Ein Quellcode-Repository ist nicht erforderlich, wenn du automatisierte Pipelines verwendest. CI/CD 
+ (Optional) Berechtigungen zum Erstellen von Pull-Requests (PRs) für Code-Reviews und Code-Zusammenarbeit in GitHub.

**Einschränkungen**

Observability Access Manager hat die folgenden Dienstkontingente, die nicht geändert werden können. Berücksichtigen Sie diese Kontingente, bevor Sie diese Funktion bereitstellen. Weitere Informationen finden Sie in der CloudWatch Dokumentation unter [CloudWatch Servicekontingenten](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html).
+ **Links zu Quellkonten**: Sie können jedes Quellkonto mit maximal fünf Überwachungskonten verknüpfen.
+ **Senken**: Sie können mehrere Senken für ein Konto erstellen, pro Konto AWS-Region ist jedoch nur eine Senke zulässig.

Zusätzlich:
+ Senken und Links müssen im selben System erstellt werden AWS-Region; sie können nicht regionsübergreifend sein.

**Regions- und kontenübergreifende Überwachung**

Für die regionsübergreifende, kontenübergreifende Überwachung können Sie eine der folgenden Optionen wählen:
+ Erstellen Sie [konto- und regionsübergreifende CloudWatch Dashboards für Alarme](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) und Messwerte. Diese Option unterstützt keine Logs und Traces.
+ Implementieren Sie die [zentralisierte Protokollierung](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) mithilfe von Amazon OpenSearch Service.
+ Erstellen Sie eine Senke pro Region aus allen Mandantenkonten, übertragen Sie Metriken an ein zentrales Überwachungskonto (wie in diesem Muster beschrieben) und verwenden Sie dann [CloudWatch Metrik-Streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html), um die Daten an ein gemeinsames externes Ziel oder an Monitoring-Produkte von Drittanbietern wie Datadog, Dynatrace, Sumo Logic, Splunk oder New Relic zu senden.

## Architektur
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-architecture"></a>

**Komponenten**

CloudWatch Observability Access Manager besteht aus zwei Hauptkomponenten, die eine kontenübergreifende Observability ermöglichen:
+ Eine *Senke* bietet Quellkonten die Möglichkeit, Observabilitätsdaten an das zentrale Monitoring-Konto zu senden. Eine Senke stellt im Grunde eine Gateway-Verbindung dar, mit der Quellkonten eine Verbindung herstellen können. Es kann nur ein Senken-Gateway oder eine Senkenverbindung geben, und mehrere Konten können eine Verbindung zu diesem herstellen.
+ Jedes Quellkonto hat einen *Link* zum Sink-Gateway-Junction, und Observability-Daten werden über diesen Link gesendet. Sie müssen eine Senke erstellen, bevor Sie Links von jedem Quellkonto aus erstellen können.

**Architektur**

Das folgende Diagramm veranschaulicht Observability Access Manager und seine Komponenten.

![\[Architektur für kontenübergreifende Observability mit Senken und Links.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/00603763-4f99-456e-85e7-a80d803b087d/images/5188caf9-348b-4d91-b560-2b3d6ea81191.png)


## Tools
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)ist ein Kontoverwaltungsservice, mit dem Sie mehrere Konten zu einer Organisation AWS-Konten zusammenfassen können, die Sie erstellen und zentral verwalten.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

**Tools**
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) richtet eine Terraform-Pipeline ein, die Sie bei der Bereitstellung und Anpassung von Konten unterstützt. AWS Control Tower Sie können AFT optional verwenden, um Observability Access Manager skalierbar für mehrere Konten einzurichten.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Observability Access Manager-Repository](https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform) verfügbar.

## Best Practices
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-best-practices"></a>
+ Markieren Sie in AWS Control Tower Umgebungen das Protokollierungskonto als zentrales Überwachungskonto (Senke).
+ Wenn Sie mehrere Organisationen mit mehreren Konten haben AWS Organizations, empfehlen wir, dass Sie die Organisationen und nicht einzelne Konten in die Konfigurationsrichtlinie aufnehmen. Wenn Sie nur über eine geringe Anzahl von Konten verfügen oder wenn die Konten nicht Teil einer Organisation sind, die in der Konfigurationsrichtlinie aufgeführt ist, können Sie sich dafür entscheiden, stattdessen einzelne Konten einzubeziehen.

## Epen
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-epics"></a>

### Richten Sie das Spülmodul ein
<a name="set-up-the-sink-module"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Klonen Sie das GitHub Observability Access Manager-Repository:<pre>git clone https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform</pre> | AWS DevOps, Cloud-Administrator, AWS-Administrator | 
| Geben Sie Eigenschaftswerte für das Sink-Modul an. | Geben Sie in der `main.tf` Datei (im `deployments/aft-account-customizations/LOGGING/terraform/`**** Ordner des Repositorys) Werte für die folgenden Eigenschaften an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Weitere Informationen finden Sie [AWS::Oam::Sink](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-oam-sink.html)in der CloudFormation Dokumentation. | AWS DevOps, Cloud-Administrator, AWS-Administrator | 
| Installieren Sie das Sink-Modul. | Exportieren Sie die Anmeldeinformationen des Kontos AWS-Konto , das Sie als Überwachungskonto ausgewählt haben, und installieren Sie das Observability Access Manager-Senkmodul:<pre>Terraform Init<br />Terrafom Plan<br />Terraform Apply</pre> | AWS DevOps, Cloud-Administrator, AWS-Administrator | 

### Richten Sie das Link-Modul ein
<a name="set-up-the-link-module"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Geben Sie Eigenschaftswerte für das Linkmodul an. | Geben Sie in der `main.tf ` Datei (im `deployments/aft-account-customizations/LOGGING/terraform/`**** Ordner des Repositorys) Werte für die folgenden Eigenschaften an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Weitere Informationen finden Sie [AWS::Oam::Link](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-oam-link.html)in der CloudFormation Dokumentation. | AWS DevOps, Cloud-Administrator, Cloud-Architekt | 
| Installieren Sie das Link-Modul für einzelne Konten. | Exportieren Sie die Anmeldeinformationen einzelner Konten und installieren Sie das Observability Access Manager-Linkmodul:<pre>Terraform Plan<br />Terraform Apply</pre>Sie können das Linkmodul für jedes Konto einzeln einrichten oder [AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) verwenden, um dieses Modul automatisch für eine große Anzahl von Konten zu installieren. | AWS DevOps, Cloud-Administrator, Cloud-Architekt | 

### sink-to-linkVerbindungen genehmigen
<a name="approve-sink-to-link-connections"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Statusmeldung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Auf der rechten Seite sollte die Statusmeldung Das **Überwachungskonto aktiviert** mit einem grünen Häkchen angezeigt werden. Das bedeutet, dass das Überwachungskonto über eine Observability Access Manager-Senke verfügt, zu der die Links anderer Konten eine Verbindung herstellen. |  | 
| Genehmigen Sie die link-to-sink Verbindungen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Weitere Informationen finden Sie in der CloudWatch Dokumentation unter [Monitoring-Konten mit Quellkonten verknüpfen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account-Setup.html). | AWS DevOps, Cloud-Administrator, Cloud-Architekt | 

### Überprüfen Sie kontoübergreifende Beobachtbarkeitsdaten
<a name="verify-cross-account-observability-data"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Kontoübergreifende Daten anzeigen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html) | AWS DevOps, Cloud-Administrator, Cloud-Architekt | 

### (Optional) Aktivieren Sie Quellkonten, damit sie dem Überwachungskonto vertrauen
<a name="optional-enable-source-accounts-to-trust-monitoring-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Sehen Sie sich Metriken, Dashboards, Protokolle, Widgets und Alarme von anderen Konten an. | Als zusätzliche Funktion können**** Sie die CloudWatch Metriken, Dashboards, Protokolle, Widgets und Alarme mit anderen Konten teilen. Jedes Konto verwendet eine IAM-Rolle namens **CloudWatch- CrossAccountSharingRole **, um Zugriff auf diese Daten zu erhalten.Quellkonten, die eine Vertrauensbeziehung mit dem zentralen Überwachungskonto haben, können diese Rolle übernehmen und Daten aus dem Überwachungskonto einsehen.CloudWatch stellt ein CloudFormation Beispielskript zum Erstellen der Rolle bereit. Wählen Sie „**Rolle in IAM verwalten**“ und führen Sie dieses Skript in den Konten aus, in denen Sie Daten anzeigen möchten.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root"<br />                ]<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre>Weitere Informationen finden Sie [in CloudWatch der Dokumentation unter Aktivieren der CloudWatch kontoübergreifenden Funktionalität](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region). | AWS DevOps, Cloud-Administrator, Cloud-Architekt | 

### (Optional) Kontenübergreifendes Abrufen regionsübergreifender Daten vom Monitoring-Konto aus
<a name="optional-view-cross-account-cross-region-from-the-monitoring-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie einen konto- und regionsübergreifenden Zugriff ein. | Im zentralen Überwachungskonto können Sie optional eine Kontoauswahl hinzufügen, um einfach zwischen Konten zu wechseln und deren Daten einzusehen, ohne sich authentifizieren zu müssen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Weitere Informationen finden Sie in der Dokumentation unter [Kontoübergreifende regionsübergreifende Konsole CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html). CloudWatch  | AWS DevOps, Cloud-Administrator, Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-resources"></a>
+ [CloudWatch kontoübergreifende Beobachtbarkeit](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) ( CloudWatch Amazon-Dokumentation)
+ [Amazon CloudWatch Observability Access Manager API-Referenz](https://docs.aws.amazon.com/OAM/latest/APIReference/Welcome.html) ( CloudWatch Amazon-Dokumentation)
+ [Ressource: aws\$1oam\$1sink](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/oam_sink) (Terraform-Dokumentation)
+ [Datenquelle](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/oam_link): aws\$1oam\$1link (Terraform-Dokumentation)
+ [CloudWatchObservabilityAccessManager](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/oam.html)AWS (Boto3-Dokumentation)

# EC2 Instances beim Start auf obligatorische Tags überprüfen
<a name="check-ec2-instances-for-mandatory-tags-at-launch"></a>

*Susanne Kangnoh und Architekt Mathur, Amazon Web Services*

## Zusammenfassung
<a name="check-ec2-instances-for-mandatory-tags-at-launch-summary"></a>

Amazon Elastic Compute Cloud (Amazon EC2) bietet skalierbare Rechenkapazität in der Amazon Web Services (AWS) Cloud. EC2 Durch die Nutzung von Amazon müssen Sie nicht im Voraus in Hardware investieren, sodass Sie Anwendungen schneller entwickeln und bereitstellen können.

Sie können Tagging verwenden, um Ihre AWS-Ressourcen auf unterschiedliche Weise zu kategorisieren. EC2 Instance-Tagging ist nützlich, wenn Sie viele Ressourcen in Ihrem Konto haben und Sie anhand der Tags schnell eine bestimmte Ressource identifizieren möchten. Mithilfe von Tags können Sie Ihren EC2 Instanzen benutzerdefinierte Metadaten zuweisen. Ein Tag besteht aus einem benutzerdefinierten Schlüssel und Wert. Wir empfehlen Ihnen, einen konsistenten Satz von Stichwörtern zu erstellen, um die Anforderungen Ihrer Organisation zu erfüllen. 

Dieses Muster bietet eine CloudFormation AWS-Vorlage, mit der Sie EC2 Instances auf bestimmte Tags überwachen können. Die Vorlage erstellt ein Amazon CloudWatch Events-Ereignis, das nach AWS CloudTrail **TagResource**oder **UntagResource**Ereignissen Ausschau hält, um zu erkennen, ob neue EC2 Instances markiert oder Tags entfernt wurden. Wenn ein vordefiniertes Tag fehlt, ruft es eine AWS-Lambda-Funktion auf, die mithilfe von Amazon Simple Notification Service (Amazon SNS) eine Meldung über einen Verstoß an eine von Ihnen angegebene E-Mail-Adresse sendet. 

## Voraussetzungen und Einschränkungen
<a name="check-ec2-instances-for-mandatory-tags-at-launch-prerequisites-and-limitations"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Ein Amazon Simple Storage Service (Amazon S3) -Bucket zum Hochladen des bereitgestellten Lambda-Codes.
+ Eine E-Mail-Adresse, an die Sie Benachrichtigungen über Verstöße erhalten möchten.

**Einschränkungen**
+ Diese Lösung unterstützt CloudTrail **TagResource**unsere **UntagResource**Ereignisse. Es werden keine Benachrichtigungen für andere Ereignisse erstellt.
+ Diese Lösung sucht nur nach Tag-Schlüsseln. Schlüsselwerte werden nicht überwacht.

## Architektur
<a name="check-ec2-instances-for-mandatory-tags-at-launch-architecture"></a>

****Workflow-Architektur****

![\[Workflow diagram showing AWS-Services interaction for EC2 instance monitoring and notification.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9cd74141-a87f-419e-94b3-0b28fd04a018/images/b48fd21b-a86b-4ec7-b9f6-4f1a64999437.png)


 

**Automatisierung und Skalierung**
+ Sie können die CloudFormation AWS-Vorlage mehrfach für verschiedene AWS-Regionen und Konten verwenden. Sie müssen die Vorlage in jeder Region oder jedem Konto nur einmal ausführen.

## Tools
<a name="check-ec2-instances-for-mandatory-tags-at-launch-tools"></a>

**AWS-Services**
+ [Amazon EC2](https://aws.amazon.com/ec2/) — Amazon Elastic Compute Cloud (Amazon EC2) ist ein Webservice, der sichere, anpassbare Rechenkapazität in der Cloud bietet. Er wurde entwickelt, um Entwicklern Cloud-Computing im Web-Scale-Maßstab zu erleichtern.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) — CloudTrail ist ein AWS-Service, der Sie bei der Steuerung, Einhaltung von Vorschriften sowie der Betriebs- und Risikoprüfung Ihres AWS-Kontos unterstützt. Aktionen, die von einem Benutzer, einer Rolle oder einem AWS-Service ausgeführt werden, werden als Ereignisse in aufgezeichnet CloudTrail. 
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — Amazon CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS-Ressourcen beschreiben, nahezu in Echtzeit. CloudWatch Events wird sofort auf betriebliche Änderungen aufmerksam und ergreift bei Bedarf Korrekturmaßnahmen, indem es Nachrichten sendet, um auf die Umgebung zu reagieren, Funktionen aktiviert, Änderungen vornimmt und Statusinformationen erfasst. 
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — Lambda ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne dass Server bereitgestellt oder verwaltet werden müssen. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist ein hoch skalierbarer Objektspeicherservice, der für eine Vielzahl von Speicherlösungen verwendet werden kann, darunter Websites, mobile Anwendungen, Backups und Data Lakes.
+ [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) — Amazon Simple Notification Service (Amazon SNS) ist ein Webservice, der es Anwendungen, Endbenutzern und Geräten ermöglicht, sofort Benachrichtigungen aus der Cloud zu senden und zu empfangen.

**Code**

Dieses Muster beinhaltet einen Anhang mit zwei Dateien:
+ `index.zip`ist eine komprimierte Datei, die den Lambda-Code für dieses Muster enthält.
+ `ec2-require-tags.yaml`ist eine CloudFormation Vorlage, die den Lambda-Code bereitstellt.

Informationen zur Verwendung dieser Dateien finden Sie im Abschnitt *Epics*.

## Epen
<a name="check-ec2-instances-for-mandatory-tags-at-launch-epics"></a>

### Stellen Sie den Lambda-Code bereit
<a name="deploy-the-lambda-code"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie den Code in einen S3-Bucket hoch. | Erstellen Sie einen neuen S3-Bucket oder verwenden Sie einen vorhandenen S3-Bucket, um die angehängte `index.zip` Datei hochzuladen (Lambda-Code). Dieser Bucket muss sich in derselben AWS-Region befinden wie die Ressourcen (EC2 Instances), die Sie überwachen möchten. | Cloud-Architekt | 
| Stellen Sie die CloudFormation Vorlage bereit. | Öffnen Sie die Cloudformation-Konsole in derselben AWS-Region wie der S3-Bucket und stellen Sie die `ec2-require-tags.yaml` Datei bereit, die im Anhang bereitgestellt wird. Geben Sie im nächsten Epic Werte für die Vorlagenparameter an.   | Cloud-Architekt | 

### Vervollständigen Sie die Parameter in der CloudFormation Vorlage
<a name="complete-the-parameters-in-the-cloudformation-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Geben Sie den S3-Bucket-Namen an. | Geben Sie den Namen des S3-Buckets ein, den Sie im ersten Epic erstellt oder ausgewählt haben. Dieser S3-Bucket enthält die ZIP-Datei für den Lambda-Code und muss sich in derselben AWS-Region befinden wie die CloudFormation Vorlage und die EC2 Instances, die Sie überwachen möchten. | Cloud-Architekt | 
| Geben Sie den S3-Schlüssel an. | Geben Sie den Speicherort der Lambda-Code-ZIP-Datei in Ihrem S3-Bucket an, ohne vorangestellte Schrägstriche (z. B. `index.zip` oder). `controls/index.zip` | Cloud-Architekt | 
| Geben Sie eine E-Mail-Adresse an. | Geben Sie eine aktive E-Mail-Adresse an, unter der Sie Benachrichtigungen über Verstöße erhalten möchten. | Cloud-Architekt | 
| Definieren Sie eine Protokollierungsebene. | Geben Sie die Protokollierungsebene und die Ausführlichkeit an. `Info`bezeichnet detaillierte Informationsmeldungen über den Fortschritt der Anwendung und sollte nur zum Debuggen verwendet werden. `Error`bezeichnet Fehlerereignisse, die es der Anwendung dennoch ermöglichen könnten, weiter zu laufen. `Warning`bezeichnet potenziell schädliche Situationen. | Cloud-Architekt | 
| Geben Sie die erforderlichen Tag-Schlüssel ein. | Geben Sie die Tag-Schlüssel ein, nach denen Sie suchen möchten. Wenn Sie mehrere Schlüssel angeben möchten, trennen Sie sie durch Kommas ohne Leerzeichen. (`ApplicationId,CreatedBy,Environment,Organization`Sucht beispielsweise nach vier Schlüsseln.) Das Ereignis CloudWatch Ereignisse sucht nach diesen Tag-Schlüsseln und sendet eine Benachrichtigung, wenn sie nicht gefunden werden. | Cloud-Architekt | 

### Bestätigen Sie das Abonnement
<a name="confirm-the-subscription"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie das E-Mail-Abonnement. | Wenn die CloudFormation Vorlage erfolgreich bereitgestellt wurde, sendet sie eine Abonnement-E-Mail-Nachricht an die von Ihnen angegebene E-Mail-Adresse. Um Benachrichtigungen zu erhalten, müssen Sie dieses E-Mail-Abonnement bestätigen.   | Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="check-ec2-instances-for-mandatory-tags-at-launch-related-resources"></a>
+ [Einen Bucket erstellen](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) (Amazon S3 S3-Dokumentation)
+ [Objekte hochladen](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) (Amazon S3 S3-Dokumentation)
+ [Kennzeichnen Sie Ihre EC2 Amazon-Ressourcen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) ( EC2 Amazon-Dokumentation)
+ [Erstellen einer CloudWatch Ereignisregel, die bei einem AWS-API-Aufruf mithilfe von AWS ausgelöst](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) wird CloudTrail ( CloudWatch Amazon-Dokumentation)

## Anlagen
<a name="attachments-9cd74141-a87f-419e-94b3-0b28fd04a018"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/9cd74141-a87f-419e-94b3-0b28fd04a018/attachments/attachment.zip)

# Bereinigen Sie die Ressourcen von AWS Account Factory for Terraform (AFT) nach dem Verlust von Statusdateien sicher
<a name="clean-up-aft-resources-safely-after-state-file-loss"></a>

*Gokendra Malviya, Amazon Web Services*

## Zusammenfassung
<a name="clean-up-aft-resources-safely-after-state-file-loss-summary"></a>

Wenn Sie AWS Account Factory for Terraform (AFT) zur Verwaltung Ihrer AWS Control Tower Umgebung verwenden, generiert AFT eine Terraform-Statusdatei, um den Status und die Konfiguration der von Terraform erstellten Ressourcen zu verfolgen. Der Verlust der Terraform-Statusdatei kann zu erheblichen Herausforderungen bei der Ressourcenverwaltung und Bereinigung führen. Dieses Muster bietet einen systematischen Ansatz zur sicheren Identifizierung und Entfernung von AFT-bezogenen Ressourcen bei gleichzeitiger Wahrung der Integrität Ihrer Umgebung. AWS Control Tower 

Das Verfahren ist so konzipiert, dass sichergestellt ist, dass alle AFT-Komponenten ordnungsgemäß entfernt werden, auch wenn der ursprüngliche Verweis auf die Statusdatei nicht vorhanden ist. Dieser Prozess bietet einen klaren Weg zur erfolgreichen Wiederherstellung und Neukonfiguration von AFT in Ihrer Umgebung, um sicherzustellen, dass Ihr AWS Control Tower Betrieb nur minimal unterbrochen wird.

[Weitere Informationen zu AFT finden Sie in der AWS Control Tower Dokumentation.](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html)

## Voraussetzungen und Einschränkungen
<a name="clean-up-aft-resources-safely-after-state-file-loss-prereqs"></a>

**Voraussetzungen**
+ Ein gründliches Verständnis der [AFT-Architektur](https://docs.aws.amazon.com/controltower/latest/userguide/aft-architecture.html).
+ Administratorzugriff auf die folgenden Konten:
  + AFT-Verwaltungskonto
  + AWS Control Tower Verwaltungskonto
  + Konto protokollieren und archivieren
  + Prüfungskonto
+ Überprüfung, dass keine Dienststeuerungsrichtlinien (SCPs) Einschränkungen oder Beschränkungen enthalten, die das Löschen von AFT-bezogenen Ressourcen verhindern würden.

**Einschränkungen**
+ Durch diesen Vorgang können Ressourcen effektiv bereinigt werden, verloren gegangene Statusdateien können jedoch nicht wiederhergestellt werden, und einige Ressourcen müssen möglicherweise manuell identifiziert werden.
+ Die Dauer des Bereinigungsvorgangs hängt von der Komplexität Ihrer Umgebung ab und kann mehrere Stunden dauern.
+ Dieses Muster wurde mit AFT Version 1.12.2 getestet und löscht die folgenden Ressourcen. Wenn Sie eine andere Version von AFT verwenden, müssen Sie möglicherweise zusätzliche Ressourcen löschen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html)

**Wichtig**  
Die Ressourcen, die durch die Schritte in diesem Muster gelöscht werden, können nicht wiederhergestellt werden. Bevor Sie diese Schritte ausführen, überprüfen Sie die Ressourcennamen sorgfältig und stellen Sie sicher, dass sie von AFT erstellt wurden.

## Architektur
<a name="clean-up-aft-resources-safely-after-state-file-loss-architecture"></a>

Das folgende Diagramm zeigt die AFT-Komponenten und den Arbeitsablauf auf hoher Ebene. AFT richtet eine Terraform-Pipeline ein, mit der Sie Ihre Konten bereitstellen und anpassen können. AWS Control Tower AFT folgt einem GitOps Modell zur Automatisierung der Prozesse der Kontobereitstellung in. AWS Control Tower Sie erstellen eine Terraform-Datei für eine Kontoanfrage und übertragen sie in ein Repository, das die Eingabe bereitstellt, die den AFT-Workflow für die Kontobereitstellung auslöst. Nach Abschluss der Kontobereitstellung kann AFT weitere Anpassungsschritte automatisch ausführen.

![\[AFT-Komponenten und Arbeitsablauf auf hoher Ebene.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/3e0cae87-20ef-4fcc-aacf-bb450844ac56.png)


In dieser Architektur:
+ AWS Control Tower Das **Verwaltungskonto** ist ein Konto AWS-Konto , das dem AWS Control Tower Dienst gewidmet ist. Dies wird in der Regel auch als *AWS Zahlerkonto oder *AWS Organizations Verwaltungskonto** bezeichnet.
+ **Das AFT-Verwaltungskonto** AWS-Konto ist für AFT-Verwaltungsvorgänge vorgesehen. Dies unterscheidet sich vom Verwaltungskonto Ihrer Organisation.
+ Ein **Verkäuferkonto** ist ein Konto AWS-Konto , das alle von Ihnen ausgewählten Basiskomponenten und Steuerelemente enthält. AFT wird verwendet AWS Control Tower , um ein neues Konto zu verkaufen.

Weitere Informationen zu dieser Architektur finden Sie im AWS Control Tower Workshop unter [Einführung in AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft).

## Tools
<a name="clean-up-aft-resources-safely-after-state-file-loss-tools"></a>

**AWS-Services**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)hilft Ihnen bei der Einrichtung und Verwaltung einer Umgebung AWS mit mehreren Konten und folgt dabei den vorgeschriebenen Best Practices.
+ [AWS Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html) richtet eine Terraform-Pipeline ein, mit der Sie Konten und Ressourcen bereitstellen und anpassen können. AWS Control Tower
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)hilft Ihnen dabei, Ihre Umgebung zentral zu verwalten und zu steuern, während Sie Ihre Ressourcen erweitern und skalieren. AWS Mithilfe von Organizations können Sie Konten erstellen und Ressourcen zuweisen, Konten gruppieren, um Ihre Workflows zu organisieren, Richtlinien für die Unternehmensführung anwenden und die Abrechnung vereinfachen, indem Sie eine einzige Zahlungsmethode für alle Ihre Konten verwenden.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und zu deren Nutzung berechtigt ist. Für dieses Muster sind IAM-Rollen und -Berechtigungen erforderlich.

**Andere Tools**
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool (Infrastructure as Code) HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.

## Best Practices
<a name="clean-up-aft-resources-safely-after-state-file-loss-best-practices"></a>
+ Weitere AWS Control Tower Informationen finden Sie in der Dokumentation unter [Bewährte Methoden für AWS Control Tower Administratoren](https://docs.aws.amazon.com/controltower/latest/userguide/best-practices.html). AWS Control Tower 
+ Informationen zu IAM finden Sie in der IAM-Dokumentation unter [Bewährte Sicherheitsmethoden](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html).

## Epen
<a name="clean-up-aft-resources-safely-after-state-file-loss-epics"></a>

### Löschen Sie AFT-Ressourcen im AFT-Management-Konto
<a name="delete-aft-resources-in-the-aft-management-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie Ressourcen, die durch das AFT-Tag identifiziert werden. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 
| Löschen Sie IAM-Rollen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 
| Löschen Sie den AWS Backup Backup-Tresor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 
| Löschen Sie CloudWatch Amazon-Ressourcen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 
|  AWS KMS Ressourcen löschen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 

### Löschen Sie AFT-Ressourcen im Log Archive-Konto
<a name="delete-aft-resources-in-the-log-archive-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie S3-Buckets. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 
| Löschen Sie IAM-Rollen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 

### Löschen Sie AFT-Ressourcen im Audit-Konto
<a name="delete-aft-resources-in-the-audit-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie IAM-Rollen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 

### Löschen Sie AFT-Ressourcen im AWS Control Tower Verwaltungskonto
<a name="delete-aft-resources-in-the-ctower-management-account"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie IAM-Rollen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 
|  EventBridge Regeln löschen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | AWS-Administrator, AWS DevOps, DevOps Ingenieur | 

## Fehlerbehebung
<a name="clean-up-aft-resources-safely-after-state-file-loss-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Das Trennen des Internet-Gateways war nicht erfolgreich. | Wenn Sie Ressourcen löschen, die durch das **AFT-Tag** identifiziert wurden, und dieses Problem beim Trennen oder Löschen des Internet-Gateways auftritt, müssen Sie zuerst VPC-Endpunkte löschen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | 
| Sie können die angegebenen CloudWatch Abfragen nicht finden. | Wenn Sie die von AFT erstellten CloudWatch Abfragen nicht finden können, gehen Sie wie folgt vor:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | 

## Zugehörige Ressourcen
<a name="clean-up-aft-resources-safely-after-state-file-loss-resources"></a>
+ ACHTERN:
  + [GitHub Repository](https://github.com/aws-ia/terraform-aws-control_tower_account_factory)
  + [Werkstatt](https://catalog.workshops.aws/control-tower/en-US/customization/aft)
  + [Dokumentation](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html)
+ [AWS Control Tower Dokumentation](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)

## Zusätzliche Informationen
<a name="clean-up-aft-resources-safely-after-state-file-loss-additional"></a>

Um AFT-Abfragen im CloudWatch Logs Insights-Dashboard anzuzeigen, wählen Sie in der oberen rechten Ecke das Symbol **Gespeicherte Abfragen und Beispielabfragen** aus, wie im folgenden Screenshot dargestellt:

![\[Zugreifen auf AFT-Abfragen im CloudWatch Logs Insights-Dashboard.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/255d4032-738b-4600-9084-9684d2e9a328.png)


# Erstellen Sie eine Pipeline in AWS-Regionen, die AWS nicht unterstützen CodePipeline
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Zusammenfassung
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-summary"></a>

**Hinweis**: AWS CodeCommit ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)

AWS CodePipeline ist ein Orchestrierungsservice für Continuous Delivery (CD), der Teil einer Reihe von DevOps Tools von Amazon Web Services (AWS) ist. Es lässt sich in eine Vielzahl von Quellen (wie Versionskontrollsysteme und Speicherlösungen), Produkte und Services für kontinuierliche Integration (CI) von AWS und AWS-Partnern sowie Open-Source-Produkte integrieren, um einen end-to-end Workflow-Service für schnelle Anwendungs- und Infrastrukturbereitstellungen bereitzustellen.

Wird jedoch CodePipeline nicht in allen AWS-Regionen unterstützt, und es ist nützlich, einen unsichtbaren Orchestrator zu haben, der CI/CD AWS-Services verbindet. Dieses Muster beschreibt, wie eine end-to-end Workflow-Pipeline in AWS-Regionen implementiert wird, in denen die Nutzung von CI/CD AWS-Services wie AWS CodeCommit, AWS und AWS CodeBuild noch CodePipeline nicht unterstützt wird CodeDeploy.

## Voraussetzungen und Einschränkungen
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ AWS Cloud Development Kit (AWS CDK) CLI Version 2.28 oder höher

## Architektur
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-architecture"></a>

**Zieltechnologie-Stack**

Das folgende Diagramm zeigt eine Pipeline, die in einer Region erstellt wurde, die nicht unterstützt wird CodePipeline, z. B. in der Region Afrika (Kapstadt). Ein Entwickler überträgt die CodeDeploy Konfigurationsdateien (auch als *Deployment-Lifecycle-Hook-Skripte* bezeichnet) in das Git-Repository, das von CodeCommit gehostet wird. (Sehen Sie sich das [GitHub Repository](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) an, das mit diesem Muster bereitgestellt wird.) Eine EventBridge Amazon-Regel wird automatisch initiiert. CodeBuild

Die CodeDeploy Konfigurationsdateien werden CodeCommit als Teil der Quellphase der Pipeline abgerufen und an diese übertragen. CodeBuild 

 CodeBuild Führt in der nächsten Phase die folgenden Aufgaben aus: 

1. Lädt die TAR-Datei mit dem Quellcode der Anwendung herunter. Sie können den Namen dieser Datei mithilfe von Parameter Store, einer Funktion von AWS Systems Manager, konfigurieren.

1. Lädt die CodeDeploy Konfigurationsdateien herunter.

1. Erstellt ein kombiniertes Archiv aus Anwendungsquellcode und CodeDeploy Konfigurationsdateien, die für den Anwendungstyp spezifisch sind.

1. Initiiert die CodeDeploy Bereitstellung auf einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance mithilfe des kombinierten Archivs.

![\[Pipeline-Erstellung in einer nicht unterstützten AWS-Region\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e27750de-b597-424e-b5bf-4d58dc9b60cc/images/95fc815e-a762-4142-b0fd-2a716823e498.png)


## Tools
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-tools"></a>

**AWS-Services**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) ist ein vollständig verwalteter Build-Service, mit dem Sie Quellcode kompilieren, Komponententests ausführen und bereitstellungsbereite Artefakte erstellen können.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatisiert Bereitstellungen auf Amazon EC2- oder lokalen Instances, AWS Lambda Lambda-Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.

**Code**

Der Code für dieses Muster ist im Repository „ GitHub [CodePipeline Nicht unterstützte Regionen](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)“ verfügbar.

## Epen
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-epics"></a>

### Richten Sie Ihre Entwickler-Workstation ein
<a name="set-up-your-developer-workstation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die AWS CDK CLI. | Anweisungen finden Sie in der [AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites). | AWS DevOps | 
| Installieren Sie einen Git-Client. | Um Commits zu erstellen, kannst du einen Git-Client verwenden, der auf deinem lokalen Computer installiert ist, und deine Commits dann in das CodeCommit Repository übertragen. Informationen zur Einrichtung CodeCommit mit deinem Git-Client findest du in der [CodeCommit Dokumentation](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-commit.html). | AWS DevOps | 
| Installieren Sie "npm". | Installieren Sie den **npm-Paketmanager**. Weitere Informationen finden Sie in der [npm-Dokumentation](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). | AWS DevOps | 

### Richten Sie die Pipeline ein
<a name="set-up-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Code-Repository. | Klonen Sie das Repository „ GitHub [CodePipeline Nicht unterstützte Regionen](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)“ auf Ihren lokalen Computer, indem Sie den folgenden Befehl ausführen.<pre>git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions</pre> | DevOps Ingenieur | 
| Stellen Sie die Parameter in cdk.json ein. | Öffnen Sie die `cdk.json` Datei und geben Sie Werte für die folgenden Parameter an:<pre>"pipeline_account":"XXXXXXXXXXXX",<br />"pipeline_region":"us-west-2",<br />"repo_name": "app-dev-repo",<br />"ec2_tag_key": "test-vm",<br />"configName" : "cbdeployconfig",<br />"deploymentGroupName": "cbdeploygroup",<br />"applicationName" : "cbdeployapplication",<br />"projectName" : "CodeBuildProject"</pre>Wobei:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.html) | AWS DevOps | 
| Richten Sie die AWS-CDK-Konstruktbibliothek ein. | Verwenden Sie im geklonten GitHub Repository die folgenden Befehle, um die AWS-CDK-Konstruktionsbibliothek zu installieren, Ihre Anwendung zu erstellen und zu synthetisieren, um die CloudFormation AWS-Vorlage für die Anwendung zu generieren.<pre>npm i aws-cdk-lib<br />npm run build<br />cdk synth</pre> | AWS DevOps | 
| Stellen Sie die AWS-CDK-Beispielanwendung bereit. | Stellen Sie den Code bereit, indem Sie den folgenden Befehl in einer Region ausführen, die nicht unterstützt wird (z. B.`af-south-1`).<pre>cdk deploy</pre> | AWS DevOps | 

### Richten Sie das CodeCommit Repository ein für CodeDeploy
<a name="set-up-the-codecommit-repository-for-codedeploy"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  CI/CD Für die Anwendung einrichten. | Klonen Sie das CodeCommit Repository, das Sie in der `cdk.json` Datei angegeben haben (dies wird `app-dev-repo` standardmäßig aufgerufen), um die CI/CD Pipeline für die Anwendung einzurichten.<pre>git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo</pre>wobei der Repository-Name und die Region von den Werten abhängen, die Sie in der `cdk.json` Datei angegeben haben. | AWS DevOps | 

### Testen Sie die Pipeline
<a name="test-the-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die Pipeline anhand von Bereitstellungsanweisungen. | Der `CodeDeploy_Files` Ordner des Repositorys „ GitHub [CodePipeline Nicht unterstützte Regionen](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions)“ enthält Beispieldateien mit Anweisungen CodeDeploy zur Bereitstellung der Anwendung. Die `appspec.yml` Datei ist eine CodeDeploy Konfigurationsdatei, die Hooks zur Steuerung des Ablaufs der Anwendungsbereitstellung enthält. Sie können die Beispieldateien`index.html`,, und verwenden `start_server.sh``stop_server.sh`, um eine Website `install_dependencies.sh` zu aktualisieren, die auf Apache gehostet wird. Dies sind Beispiele — Sie können den Code im GitHub Repository verwenden, um jede Art von Anwendung bereitzustellen. Wenn die Dateien in das CodeCommit Repository übertragen werden, wird die unsichtbare Pipeline automatisch initiiert. Die Ergebnisse der Bereitstellung finden Sie in den Ergebnissen der einzelnen Phasen in den CodeDeploy Konsolen CodeBuild und. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-resources"></a>
+ [Erste Schritte](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites) (AWS CDK-Dokumentation)
+ [Einführung in das Cloud Development Kit (CDK)](https://catalog.us-east-1.prod.workshops.aws/workshops/5962a836-b214-4fbf-9462-fedba7edcc9b/en-US) (AWS Workshop Studio)
+ [AWS-CDK-Workshop](https://cdkworkshop.com/)

# Passen Sie Standardrollennamen mithilfe von AWS CDK Aspekten und Escape-Schraffuren an
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches"></a>

*SANDEEP SINGH und James Jacob, Amazon Web Services*

## Zusammenfassung
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-summary"></a>

Dieses Muster zeigt, wie die Standardnamen von Rollen, die durch AWS Cloud Development Kit (AWS CDK) Konstrukte erstellt werden, angepasst werden können. Das Anpassen von Rollennamen ist häufig erforderlich, wenn in Ihrer Organisation bestimmte Einschränkungen gelten, die auf Namenskonventionen basieren. Beispielsweise kann Ihre Organisation AWS Identity and Access Management (IAM) [Berechtigungsgrenzen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) oder [Dienststeuerungsrichtlinien (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) festlegen, die ein bestimmtes Präfix in Rollennamen erfordern. In solchen Fällen entsprechen die durch AWS CDK Konstrukte generierten Standardrollennamen möglicherweise nicht diesen Konventionen und müssen möglicherweise geändert werden. Dieses Muster erfüllt diese Anforderungen durch die Verwendung von [Notluken](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html) und [Aspekten](https://docs.aws.amazon.com/cdk/v2/guide/aspects.html) in der. AWS CDK Sie verwenden Schraffuren, um benutzerdefinierte Rollennamen zu definieren, und Aspekte, um allen Rollen einen benutzerdefinierten Namen zuzuweisen, um sicherzustellen, dass die Richtlinien und Einschränkungen Ihrer Organisation eingehalten werden.

## Voraussetzungen und Einschränkungen
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ In der [AWS CDK Dokumentation](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites) angegebene Voraussetzungen

**Einschränkungen**
+ Aspekte filtern Ressourcen nach Ressourcentypen, sodass alle Rollen dasselbe Präfix verwenden. Wenn Sie unterschiedliche Rollenpräfixe für verschiedene Rollen benötigen, ist eine zusätzliche Filterung auf der Grundlage anderer Eigenschaften erforderlich. Um beispielsweise Rollen, die mit AWS Lambda Funktionen verknüpft sind, unterschiedliche Präfixe zuzuweisen, könnten Sie nach bestimmten Rollenattributen oder Tags filtern und ein Präfix für Lambda-bezogene Rollen und ein anderes Präfix für andere Rollen anwenden.
+ IAM-Rollennamen haben eine maximale Länge von 64 Zeichen. Daher müssen modifizierte Rollennamen gekürzt werden, um diese Einschränkung zu erfüllen.
+ Einige AWS-Services sind nicht in allen verfügbar. AWS-Regionen Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-architecture"></a>

**Zieltechnologie-Stack**
+ AWS CDK
+ AWS CloudFormation

**Zielarchitektur**

![\[Architektur für die Verwendung von Notluken und Aspekten zur Anpassung der vom AWS CDK zugewiesenen Rollennamen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c149d8d2-1da6-4680-ab0b-e5051b69688c/images/15e56ca5-f150-4522-b374-8ee2dcc655a9.png)

+ Eine AWS CDK App besteht aus einem oder mehreren CloudFormation Stacks, die synthetisiert und zur Verwaltung von Ressourcen bereitgestellt werden. AWS 
+ Um eine Eigenschaft einer AWS CDK verwalteten Ressource zu ändern, die nicht durch ein Layer-2-Konstrukt (L2) offengelegt wird, verwenden Sie eine Escape-Hatch, um die zugrunde liegenden CloudFormation Eigenschaften (in diesem Fall den Rollennamen) zu überschreiben, und einen Aspekt, um die Rolle während der Stack-Synthese auf alle Ressourcen in der AWS CDK App anzuwenden. AWS CDK 

## Tools
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-tools"></a>

**AWS-Services**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)ist ein Softwareentwicklungs-Framework, das Ihnen hilft, AWS Cloud Infrastruktur im Code zu definieren und bereitzustellen.
+ AWS CDK Die [Befehlszeilenschnittstelle (AWS CDK CLI)](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) (auch als AWS CDK Toolkit bezeichnet) ist ein Befehlszeilen-Cloud-Entwicklungskit, mit dem Sie mit Ihrer AWS CDK App interagieren können. Der `cdk` CLI-Befehl ist das wichtigste Tool für die Interaktion mit Ihrer AWS CDK App. Er führt Ihre App aus, fragt das von Ihnen definierte Anwendungsmodell ab und erstellt und stellt die CloudFormation Vorlagen bereit, die von der generiert werden. AWS CDK
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.

**Code-Repository**

Der Quellcode und die Vorlagen für dieses Muster sind im GitHub [CDK Aspects Override-Repository](https://github.com/aws-samples/cdk-aspects-override) verfügbar.

## Best Practices
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-best-practices"></a>

Weitere Informationen finden Sie auf [der Website **AWS **Prescriptive Guidance unter Bewährte Methoden für die Verwendung von AWS CDK in TypeScript zur Erstellung von IaC-Projekten](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html).

## Epen
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-epics"></a>

### Installieren Sie die AWS CDK CLI
<a name="install-the-cdk-cli"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die AWS CDK CLI. | Führen Sie den folgenden Befehl aus, um die AWS CDK CLI global zu installieren:<pre>npm install -g aws-cdk</pre> | AWS DevOps | 
| Überprüfen Sie die Version. | Führen Sie den Befehl aus:<pre>cdk --version</pre>Vergewissern Sie sich, dass Sie Version 2 der AWS CDK CLI verwenden. | AWS DevOps | 
| Bootstrapping für die AWS CDK Umgebung. | Bevor Sie die CloudFormation Vorlagen bereitstellen, bereiten Sie das Konto vor AWS-Region , das Sie verwenden möchten. Führen Sie den Befehl aus:<pre>cdk bootstrap <account>/<Region></pre>Weitere Informationen finden Sie in der [AWS CDK Dokumentation unter Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html). AWS  | AWS DevOps | 

### Stellen Sie die AWS CDK App bereit, um die Verwendung von Aspekten zu demonstrieren
<a name="deploy-the-cdk-app-to-demonstrate-the-use-of-aspects"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das Projekt ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.html) | AWS DevOps | 
| Stellen Sie Stacks mit Standardrollennamen bereit, die AWS CDK von der zugewiesen wurden. | Stellen Sie zwei CloudFormation Stacks (`ExampleStack1`und`ExampleStack2`) bereit, die die Lambda-Funktionen und die zugehörigen Rollen enthalten:<pre>npm run deploy:ExampleAppWithoutAspects</pre>Der Code übergibt Rolleneigenschaften nicht explizit, sodass die Rollennamen von erstellt werden. AWS CDKEin Beispiel für die Ausgabe finden Sie im Abschnitt [Zusätzliche Informationen](#customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional). | AWS DevOps | 
| Stellen Sie Stacks mit Aspekten bereit. | In diesem Schritt wenden Sie einen Aspekt an, der eine Konvention für Rollennamen erzwingt, indem Sie allen IAM-Rollen, die im Projekt bereitgestellt werden, ein Präfix hinzufügen. AWS CDK Der Aspekt ist in der `lib/aspects.ts` Datei definiert. Der Aspekt verwendet eine Escape-Schraffur, um den Rollennamen durch Hinzufügen eines Präfixes zu überschreiben. Der Aspekt wird auf die Stapel in der `bin/app-with-aspects.ts` Datei angewendet. Das in diesem Beispiel verwendete Präfix für den Rollennamen lautet`dev-unicorn`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.html)Ein Beispiel für die Ausgabe finden Sie im Abschnitt [Zusätzliche Informationen](#customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional). | AWS DevOps | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Lösche deine AWS CloudFormation Stapel. | Wenn Sie dieses Muster nicht mehr verwenden, führen Sie den folgenden Befehl aus, um Ressourcen zu bereinigen und zusätzliche Kosten zu vermeiden:<pre>cdk destroy --all -f && cdk --app npx ts-node bin/app-with-aspects.ts' destroy --all -f </pre> | AWS DevOps | 

## Fehlerbehebung
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Sie stoßen auf Probleme mit der AWS CDK. | Weitere Informationen finden Sie in der AWS CDK Dokumentation [zur Behebung häufiger AWS CDK Probleme](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 

## Zugehörige Ressourcen
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-resources"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)
+ [AWS CDK Dokumentation](https://docs.aws.amazon.com/cdk/)
+ [AWS CDK auf GitHub](https://github.com/aws/aws-cdk)
+ [Fluchtluken](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html)
+ [Aspekte und die AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/aspects.html)

## Zusätzliche Informationen
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional"></a>

**Rollennamen, die von CloudFormation Without Aspects erstellt wurden**

```
Outputs:
ExampleStack1WithoutAspects.Function1RoleName = example-stack1-without-as-Function1LambdaFunctionSe-y7FYTY6FXJXA
ExampleStack1WithoutAspects.Function2RoleName = example-stack1-without-as-Function2LambdaFunctionSe-dDZV4rkWqWnI
...

Outputs:
ExampleStack2WithoutAspects.Function3RoleName = example-stack2-without-as-Function3LambdaFunctionSe-ygMv49iTyMq0
```

**Rollennamen, die von CloudFormation with aspects erstellt wurden**

```
Outputs:
ExampleStack1WithAspects.Function1RoleName = dev-unicorn-Function1LambdaFunctionServiceRole783660DC
ExampleStack1WithAspects.Function2RoleName = dev-unicorn-Function2LambdaFunctionServiceRole2C391181
...

Outputs:
ExampleStack2WithAspects.Function3RoleName = dev-unicorn-Function3LambdaFunctionServiceRole4CAA721C
```

# Stellen Sie einen Cassandra-Cluster auf Amazon EC2 mit Private Static bereit, um ein IPs Rebalancing zu vermeiden
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing"></a>

*Dipin Jain, Amazon Web Services*

## Zusammenfassung
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-summary"></a>

Die private IP einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance wird während ihres gesamten Lebenszyklus beibehalten. Die private IP kann sich jedoch während eines geplanten oder ungeplanten Systemabsturzes ändern, beispielsweise während eines Amazon Machine Image (AMI) -Upgrades. In einigen Szenarien kann die Beibehaltung einer privaten statischen IP die Leistung und die Wiederherstellungszeit von Workloads verbessern. Durch die Verwendung einer statischen IP für einen Apache Cassandra-Seed-Node wird beispielsweise verhindert, dass für den Cluster ein Overhead beim Rebalancing anfällt. 

Dieses Muster beschreibt, wie eine sekundäre elastic network interface an EC2 Instances angehängt wird, um die IP während des Rehostings statisch zu halten. Das Muster konzentriert sich auf Cassandra-Cluster, aber Sie können diese Implementierung für jede Architektur verwenden, die von Private Static profitiert. IPs

## Voraussetzungen und Einschränkungen
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-prereqs"></a>

**Voraussetzungen**
+ Ein aktives Amazon Web Service (AWS) -Konto

**Produktversionen**
+ DataStax Version 5.11.1
+ Betriebssystem: Ubuntu 16.04.6 LTS

## Architektur
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-architecture"></a>

**Quellarchitektur**

Die Quelle könnte ein Cassandra-Cluster auf einer lokalen virtuellen Maschine (VM) oder auf EC2 Instanzen in der AWS-Cloud sein. Das folgende Diagramm veranschaulicht das zweite Szenario. Dieses Beispiel umfasst vier Clusterknoten: drei Seed-Knoten und einen Management-Knoten. In der Quellarchitektur ist an jeden Knoten eine einzige Netzwerkschnittstelle angeschlossen.

![\[Vier EC2 Amazon-Cluster-Knoten, an die jeweils eine einzige Netzwerkschnittstelle angeschlossen ist.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/5d80cfc9-4b72-4c72-aefd-b77cc0fb58e3.png)


**Zielarchitektur**

Der Zielcluster wird auf EC2 Instances gehostet, an die an jeden Knoten eine sekundäre elastic network interface angeschlossen ist, wie in der folgenden Abbildung dargestellt.

![\[Vier EC2 Amazon-Cluster-Knoten, an die jeweils eine sekundäre elastic network interface angeschlossen ist.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/d1e22017-f041-426b-9204-31ac158a407d.png)


**Automatisierung und Skalierung**

Sie können auch das Anhängen einer zweiten elastic network interface an eine EC2 Auto Scaling Scaling-Gruppe automatisieren, wie in einem [AWS Knowledge Center-Video](https://www.youtube.com/watch?v=RmwGYXchb4E) beschrieben.

## Epen
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-epics"></a>

### Einen Cassandra-Cluster bei Amazon konfigurieren EC2
<a name="configure-a-cassandra-cluster-on-amazon-ec2"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten Sie EC2 Knoten, um einen Cassandra-Cluster zu hosten. | Starten Sie auf der [ EC2 Amazon-Konsole](https://console.aws.amazon.com/ec2/) vier EC2 Instances für Ihre Ubuntu-Knoten in Ihrem AWS-Konto. Drei (Seed-) Knoten werden für den Cassandra-Cluster verwendet, und der vierte Knoten fungiert als Cluster-Management-Knoten, auf dem Sie DataStax Enterprise (DSE) OpsCenter installieren. Anweisungen finden Sie in der [ EC2 Amazon-Dokumentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance). | Cloud-Ingenieur | 
| Bestätigen Sie die Knotenkommunikation. | Stellen Sie sicher, dass die vier Knoten über die Datenbank- und Clustermanagement-Ports miteinander kommunizieren können. | Netzwerkingenieur | 
| Installieren Sie DSE OpsCenter auf dem Verwaltungsknoten. | Installieren Sie DSE OpsCenter 6.1 aus dem Debian-Paket auf dem Management-Knoten. Anweisungen finden Sie in der [DataStax Dokumentation](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html). | DBA | 
| Erstellen Sie eine sekundäre Netzwerkschnittstelle. | Cassandra generiert einen Universal Unique Identifier (UUID) für jeden Knoten, der auf der IP-Adresse der EC2 Instanz für diesen Knoten basiert. Diese UUID wird für die Verteilung virtueller Knoten (Vnodes) auf dem Ring verwendet. Wenn Cassandra auf EC2 Instanzen bereitgestellt wird, werden den Instanzen bei ihrer Erstellung automatisch IP-Adressen zugewiesen.  Im Falle eines geplanten oder ungeplanten Ausfalls ändert sich die IP-Adresse für die neue EC2 Instanz, die Datenverteilung ändert sich und der gesamte Ring muss neu gewichtet werden. Das ist nicht wünschenswert. Um die zugewiesene IP-Adresse beizubehalten, verwenden Sie eine [sekundäre elastic network interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#scenarios-enis) mit einer festen IP-Adresse.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)Weitere Informationen zum Erstellen einer Netzwerkschnittstelle finden Sie in der [ EC2 Amazon-Dokumentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#create_eni). | Cloud-Ingenieur | 
| Verbinden Sie die sekundäre Netzwerkschnittstelle mit den Clusterknoten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)Weitere Informationen zum Anschließen einer Netzwerkschnittstelle finden Sie in der [ EC2 Amazon-Dokumentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#attach_eni). | Cloud-Ingenieur | 
| Fügen Sie Routen in Amazon hinzu EC2 , um asymmetrisches Routing zu beheben.  | Wenn Sie die zweite Netzwerkschnittstelle anschließen, führt das Netzwerk sehr wahrscheinlich asymmetrisches Routing durch. Um dies zu vermeiden, können Sie Routen für die neuen Netzwerkschnittstellen hinzufügen.Eine ausführliche Erklärung und Behebung von asymmetrischem Routing finden Sie im [AWS Knowledge Center-Video](https://www.youtube.com/watch?v=RmwGYXchb4E) oder [Overcoming Asymmetric Routing on Multi-Home Servers](http://www.linuxjournal.com/article/7291) (Artikel im *Linux Journal* von Patrick McManus, 5. April 2004). | Netzwerkingenieur | 
| Aktualisieren Sie die DNS-Einträge so, dass sie auf die IP der sekundären Netzwerkschnittstelle verweisen. | Verweisen Sie den vollqualifizierten Domänennamen (FQDN) des Knotens auf die IP der sekundären Netzwerkschnittstelle. | Netzwerkingenieur | 
| Installieren und konfigurieren Sie den Cassandra-Cluster mithilfe von DSE OpsCenter. | Wenn die Clusterknoten mit den sekundären Netzwerkschnittstellen bereit sind, können Sie den Cassandra-Cluster installieren und konfigurieren. | DBA | 

### Cluster nach einem Knotenausfall wiederherstellen
<a name="recover-cluster-from-node-failure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein AMI für den Cluster-Seed-Knoten. | Erstellen Sie eine Sicherungskopie der Knoten, damit Sie sie im Falle eines Knotenausfalls mit Datenbank-Binärdateien wiederherstellen können. Anweisungen finden Sie in der EC2 Amazon-Dokumentation unter [Create an AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html). | Backup-Administrator | 
| Wiederherstellung nach einem Knotenausfall. | Ersetzen Sie den ausgefallenen Knoten durch eine neue EC2 Instance, die über das AMI gestartet wurde, und fügen Sie die sekundäre Netzwerkschnittstelle des ausgefallenen Knotens hinzu. | Backup-Administrator | 
| Stellen Sie sicher, dass der Cassandra-Cluster fehlerfrei ist. | Wenn der Ersatzknoten aktiv ist, überprüfen Sie den Zustand des Clusters in DSE OpsCenter. | DBA | 

## Zugehörige Ressourcen
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-resources"></a>
+ [Installation von DSE OpsCenter 6.1 aus dem Debian-Paket](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html) (DataStax Dokumentation)
+ [So sorgen Sie dafür, dass eine sekundäre Netzwerkschnittstelle in einer EC2 Ubuntu-Instanz funktioniert](https://www.youtube.com/watch?v=RmwGYXchb4E) (AWS Knowledge Center-Video)
+ [Bewährte Methoden für die Ausführung von Apache Cassandra auf Amazon EC2](https://aws.amazon.com/blogs/big-data/best-practices-for-running-apache-cassandra-on-amazon-ec2/) (AWS-Blogbeitrag)

# Erweitern VRFs Sie mit AWS Transit Gateway Connect auf AWS
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect"></a>

*Adam Till, Yashar Araghi, Vikas Dewangan und Mohideen, Amazon Web Services HajaMohideen*

## Zusammenfassung
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-summary"></a>

Virtuelles Routing and Forwarding (VRF) ist eine Funktion herkömmlicher Netzwerke. Es verwendet isolierte logische Routingdomänen in Form von Routingtabellen, um den Netzwerkverkehr innerhalb derselben physischen Infrastruktur zu trennen. Sie können AWS Transit Gateway so konfigurieren, dass es die VRF-Isolierung unterstützt, wenn Sie Ihr lokales Netzwerk mit AWS verbinden. Dieses Muster verwendet eine Beispielarchitektur, um eine lokale Verbindung VRFs zu verschiedenen Routentabellen für Transit-Gateways herzustellen.

Dieses Muster verwendet virtuelle Transitschnittstellen (VIFs) in AWS Direct Connect- und Transit Gateway Connect-Anhängen, um die zu erweitern VRFs. Eine [Transit-VIF](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html) wird für den Zugriff auf ein oder mehrere Amazon VPC-Transit-Gateways verwendet, die Direct Connect-Gateways zugeordnet sind. Ein [Transit Gateway Connect-Anhang](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html) verbindet ein Transit-Gateway mit einer virtuellen Appliance eines Drittanbieters, die in einer VPC ausgeführt wird. Ein Transit Gateway Connect-Anhang unterstützt das GRE (Generic Routing Encapsulation) -Tunnelprotokoll für hohe Leistung und unterstützt das Border Gateway Protocol (BGP) für dynamisches Routing.

Der in diesem Muster beschriebene Ansatz bietet die folgenden Vorteile:
+ Mit Transit Gateway Connect können Sie dem Transit Gateway Connect-Peer bis zu 1.000 Routen ankündigen und bis zu 5.000 Routen von diesem empfangen. Die Verwendung der Direct Connect-Transit-VIF-Funktion ohne Transit Gateway Connect ist auf 20 Präfixe pro Transit-Gateway beschränkt.
+ Sie können die Isolierung des Datenverkehrs aufrechterhalten und Transit Gateway Connect verwenden, um gehostete Dienste auf AWS bereitzustellen, unabhängig davon, welche IP-Adressschemas Ihre Kunden verwenden.
+ Der VRF-Verkehr muss keine öffentliche virtuelle Schnittstelle durchqueren. Dies erleichtert die Einhaltung der Compliance- und Sicherheitsanforderungen in vielen Organisationen.
+ Jeder GRE-Tunnel unterstützt bis zu 5 Gbit/s, und Sie können bis zu vier GRE-Tunnel pro Transit Gateway Connect-Anhang haben. Dies ist schneller als viele andere Verbindungstypen, wie z. B. Site-to-Site AWS-VPN-Verbindungen, die bis zu 1,25 Gbit/s unterstützen.

## Voraussetzungen und Einschränkungen
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-prereqs"></a>

**Voraussetzungen**
+ Die erforderlichen AWS-Konten wurden erstellt (Einzelheiten finden Sie in der Architektur)
+ Berechtigungen zur Übernahme einer AWS Identity and Access Management (IAM) -Rolle in jedem Konto.
+ Die IAM-Rollen in jedem Konto müssen über Berechtigungen zur Bereitstellung von AWS Transit Gateway- und AWS Direct Connect Connect-Ressourcen verfügen. Weitere Informationen finden Sie unter [Authentifizierung und Zugriffskontrolle für Ihre Transit-Gateways](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-authentication-access-control.html) und unter [Identitäts- und Zugriffsmanagement für Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/security-iam.html).
+ Die Direct Connect-Verbindungen wurden erfolgreich erstellt. Weitere Informationen finden Sie unter [Erstellen einer Verbindung mit dem Verbindungsassistenten](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dedicated_connection.html#create-connection).

**Einschränkungen**
+ Es gibt Beschränkungen für Transit-Gateway-Anlagen VPCs in den Konten Produktion, Qualitätssicherung und Entwicklung. Weitere Informationen finden Sie unter [Transit-Gateway-Anlagen zu einer VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html).
+ Bei der Erstellung und Verwendung von Direct Connect-Gateways gibt es Grenzen. Weitere Informationen finden Sie unter [AWS Direct Connect Connect-Kontingente](https://docs.aws.amazon.com/directconnect/latest/UserGuide/limits.html).

## Architektur
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-architecture"></a>

**Zielarchitektur**

Die folgende Beispielarchitektur bietet eine wiederverwendbare Lösung für die Bereitstellung von Transit VIFs mit Transit Gateway Connect-Anhängen. Diese Architektur bietet Ausfallsicherheit durch die Verwendung mehrerer Direct Connect-Standorte. Weitere Informationen finden Sie unter [Maximale Ausfallsicherheit](https://docs.aws.amazon.com/directconnect/latest/UserGuide/maximum_resiliency.html) in der Direct Connect-Dokumentation. Das lokale Netzwerk verfügt über Produktion, Qualitätssicherung und Entwicklung, VRFs die auf AWS ausgedehnt und mithilfe von dedizierten Routing-Tabellen isoliert werden.

![\[Architekturdiagramm der Nutzung von AWS Direct Connect- und AWS Transit Gateway Gateway-Ressourcen zur Erweiterung VRFs\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/10be0625-8574-40eb-bc00-bb0a07d0dc26.png)


In der AWS-Umgebung sind zwei Konten für die Erweiterung vorgesehen VRFs: ein *Direct Connect-Konto* und ein *Netzwerk-Hub-Konto*. Das Direct Connect-Konto enthält die Verbindung und den Transit VIFs für jeden Router. Sie erstellen die Übertragung VIFs über das Direct Connect-Konto, stellen sie jedoch auf dem Netzwerk-Hub-Konto bereit, sodass Sie sie dem Direct Connect-Gateway im Netzwerk-Hub-Konto zuordnen können. Das Netzwerk-Hub-Konto enthält das Direct Connect-Gateway und das Transit-Gateway. Die AWS-Ressourcen sind wie folgt verbunden:

1. Transit VIFs verbindet die Router an den Direct Connect-Standorten mit AWS Direct Connect im Direct Connect-Konto.

1. Eine Transit-VIF verbindet Direct Connect mit dem Direct Connect-Gateway im Netzwerk-Hub-Konto.

1. Eine [Transit-Gateway-Zuordnung](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html) verbindet das Direct Connect-Gateway mit dem Transit-Gateway im Netzwerk-Hub-Konto.

1. [Transit Gateway Connect-Anlagen](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html) verbinden das Transit-Gateway mit den Konten VPCs in den Bereichen Produktion, Qualitätssicherung und Entwicklung.

*Transit VIF-Architektur*

Das folgende Diagramm zeigt die Konfigurationsdetails für den Transit VIFs. Diese Beispielarchitektur verwendet ein VLAN für die Tunnelquelle, Sie könnten aber auch ein Loopback verwenden.

![\[Konfigurationsdetails für die Transit-VIF-Verbindungen zwischen den Routern und AWS Direct Connect\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/e88d2546-61ef-4531-972b-089cdf44ed67.png)


Im Folgenden finden Sie die Konfigurationsdetails, wie z. B. autonome Systemnummern (ASNs), für den Transit. VIFs


| 
| 
| Ressource | Item | Detail | 
| --- |--- |--- |
| Router-01 | ASN | 65534 | 
| Router-02 | ASN | 65534 | 
| Router-03 | ASN | 65534 | 
| Router-04 | ASN | 65534 | 
| Direct-Connect-Gateway | ASN | 64601 | 
| Transit Gateway | ASN | 64600 | 
| CIDR-Block | 10,100,254,0/24 | 

*Transit Gateway Connect-Architektur*

Das folgende Diagramm und die folgenden Tabellen beschreiben, wie ein einzelnes VRF über einen Transit Gateway Connect-Anhang konfiguriert wird. Weisen Sie zusätzlich eindeutige Tunnel VRFs - IDs, TRANSIT-Gateway-GRE-IP-Adressen und BGP innerhalb von CIDR-Blöcken zu. Die Peer-GRE-IP-Adresse entspricht der Router-Peer-IP-Adresse aus der Transit-VIF.

![\[Konfigurationsdetails für die GRE-Tunnel zwischen den Routern und dem Transit-Gateway\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/e58278e1-f3b4-442d-95d9-1dafab4aa5ac.png)


Die folgende Tabelle enthält Details zur Router-Konfiguration.


| 
| 
| Router | Tunnel | IP-Adresse | Quelle | Ziel | 
| --- |--- |--- |--- |--- |
| Router-01 | Tunnel 1 | 169,254.101,17 | VLAN 60169,254,100,1 | 10.100,254,1 | 
| Router-02 | Tunnel 11 | 169,254.101,81 | VLAN 61169,254,100,5 | 10,100,254,11 | 
| Router-03 | Tunnel 21 | 169,254.101.145 | VLAN 62169,254,100,9 | 10,100,254,21 | 
| Router-04 | Tunnel 31 | 169.254.101.209 | VLAN 63169,254.100,13 | 10,100,254,31 | 

Die folgende Tabelle enthält Einzelheiten zur Konfiguration des Transit-Gateways.


| 
| 
| Tunnel | GRE-IP-Adresse des Transit-Gateways | Peer-GRE-IP-Adresse | BGP innerhalb von CIDR-Blöcken | 
| --- |--- |--- |--- |
| Tunnel 1 | 10.100.254.1 | VLAN 60169,254,100,1 | 169,254,101,16/29 | 
| Tunnel 11 | 10.100.254.11 | VLAN 61169,254,100,5 | 169,254,101,80/29 | 
| Tunnel 21 | 10.100.254.21 | VLAN 62169,254,100,9 | 169,254,101,144/29 | 
| Tunnel 31 | 10.100.254.31 | VLAN 63169,254.100,13 | 169,254,101,208/29 | 

**Bereitstellung**

Im Abschnitt [Epics](#extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-epics) wird beschrieben, wie Sie eine Beispielkonfiguration für eine einzelne VRF auf mehreren Kundenroutern bereitstellen.**** Nachdem die Schritte 1—5 abgeschlossen sind, können Sie neue Transit Gateway Connect-Anlagen erstellen, indem Sie die Schritte 6—7 für jedes neue VRF, das Sie auf AWS erweitern, ausführen:

1. Erstellen Sie das Transit-Gateway.

1. Erstellen Sie eine Transit Gateway Gateway-Routentabelle für jedes VRF.

1. Erstellen Sie die virtuellen Transitschnittstellen.

1. Erstellen Sie das Direct Connect-Gateway.

1. Erstellen Sie die virtuelle Direct Connect-Gateway-Schnittstelle und die Gateway-Zuordnungen mit zulässigen Präfixen.

1. Erstellen Sie den Transit Gateway Connect-Anhang.

1. Erstellen Sie die Transit Gateway Connect-Peers.

1. Ordnen Sie den Transit Gateway Connect-Anhang der Routentabelle zu.

1. Kündigen Sie Routen zu den Routern an.

## Tools
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-tools"></a>

**AWS-Services**
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) verbindet Ihr internes Netzwerk über ein Standard-Ethernet-Glasfaserkabel mit einem Direct Connect-Standort. Mit dieser Verbindung können Sie virtuelle Schnittstellen direkt zu öffentlichen AWS-Services erstellen und dabei Internetdienstanbieter in Ihrem Netzwerkpfad umgehen.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) ist ein zentraler Hub, der virtuelle private Clouds (VPCs) und lokale Netzwerke verbindet.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS.

## Epen
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-epics"></a>

### Plane die Architektur
<a name="plan-the-architecture"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie benutzerdefinierte Architekturdiagramme. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Cloud-Architekt, Netzwerkadministrator | 

### Erstellen Sie die Transit Gateway Gateway-Ressourcen
<a name="create-the-transit-gateway-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das Transit-Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Netzwerkadministrator, Cloud-Architekt | 
| Erstellen Sie die Routentabelle des Transit-Gateways. | Folgen Sie den Anweisungen unter [Erstellen einer Transit-Gateway-Routentabelle](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html#create-tgw-route-table). Beachten Sie für dieses Muster Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Cloud-Architekt, Netzwerkadministrator | 

### Erstellen Sie die virtuellen Transitschnittstellen
<a name="create-the-transit-virtual-interfaces"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die virtuellen Transitschnittstellen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Cloud-Architekt, Netzwerkadministrator | 

### Erstellen Sie die Direct Connect-Ressourcen
<a name="create-the-direct-connect-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Direct Connect-Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Cloud-Architekt, Netzwerkadministrator | 
| Schließen Sie das Direct Connect-Gateway an den Transit an VIFs. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Cloud-Architekt, Netzwerkadministrator | 
| Erstellen Sie die Direct Connect-Gateway-Zuordnungen mit zulässigen Präfixen. | Folgen Sie im Netzwerk-Hub-Konto den Anweisungen unter [So ordnen Sie ein Transit-Gateway zu](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html#associate-tgw-with-direct-connect-gateway). Beachten Sie für dieses Muster Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html)Durch das Erstellen dieser Zuordnung wird automatisch ein Transit Gateway Gateway-Anhang mit einem Direct Connect Gateway-Ressourcentyp erstellt. Dieser Anhang muss keiner Transit-Gateway-Routentabelle zugeordnet werden. | Cloud-Architekt, Netzwerkadministrator | 
| Erstellen Sie den Transit Gateway Connect-Anhang. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Cloud-Architekt, Netzwerkadministrator | 
| Erstellen Sie die Transit Gateway Connect-Peers. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) |  | 

### Kündigen Sie Routen zu den Routern an
<a name="advertise-routes-to-the-routers"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Werben Sie für die Routen. | Ordnen Sie den neuen Transit Gateway Connect-Anhang der Routentabelle zu, die Sie zuvor für diese VRF erstellt haben. Ordnen Sie beispielsweise den Connect-Anhang des Production Transit Gateway der `Production-VRF` Routentabelle zu.Erstellen Sie eine statische Route für das Präfix, das den Routern angekündigt wird.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Netzwerkadministrator, Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-resources"></a>

**AWS-Dokumentation**
+ Direct Connect-Dokumentation
  + [Working with Direct Connect gateways](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html)
  + [Verknüpfungen zwischen Transit-Gateways](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html)
  + [Virtuelle Schnittstellen von AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html)
+ Transit Gateway Gateway-Dokumentation
  + [Arbeiten mit Transit-Gateways](https://docs.aws.amazon.com/vpc/latest/tgw/working-with-transit-gateways.html)
  + [Transit-Gateway-Anlagen an ein Direct Connect-Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-dcg-attachments.html)
  + [Transit Gateway Connect-Anlagen und Transit Gateway Connect-Peers](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html)
  + [Einen Transit Gateway Connect-Anhang erstellen](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html#create-tgw-connect-attachment)

**AWS-Blogbeiträge**
+ [Segmentierung hybrider Netzwerke mit AWS Transit Gateway Connect](https://aws.amazon.com/blogs/networking-and-content-delivery/segmenting-hybrid-networks-with-aws-transit-gateway-connect/)
+ [Verwenden von AWS Transit Gateway Connect zur Erweiterung VRFs und Erhöhung der IP-Präfix-Advertising](https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-transit-gateway-connect-to-extend-vrfs-and-increase-ip-prefix-advertisement/)

## Anlagen
<a name="attachments-db17e177-6c94-4d81-ab39-0923ecab2f1b"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/db17e177-6c94-4d81-ab39-0923ecab2f1b/attachments/attachment.zip)

# Erhalten Sie Amazon SNS SNS-Benachrichtigungen, wenn sich der Schlüsselstatus eines AWS KMS KMS-Schlüssels ändert
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes"></a>

*Shubham Harsora, Aromal Raj Jayarajan und Navdeep Pareek, Amazon Web Services*

## Zusammenfassung
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-summary"></a>

Die mit einem AWS Key Management Service (AWS KMS) -Schlüssel verknüpften Daten und Metadaten gehen verloren, wenn dieser Schlüssel gelöscht wird. Das Löschen ist irreversibel und Sie können verlorene Daten (einschließlich verschlüsselter Daten) nicht wiederherstellen. Sie können Datenverlust verhindern, indem Sie ein Benachrichtigungssystem einrichten, das Sie über Statusänderungen der [wichtigsten Status](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) Ihrer AWS KMS KMS-Schlüssel informiert.

Dieses Muster zeigt Ihnen, wie Sie Statusänderungen an AWS-KMS-Schlüsseln überwachen können, indem Sie Amazon EventBridge und Amazon Simple Notification Service (Amazon SNS) verwenden, um automatische Benachrichtigungen auszugeben, wenn sich der Schlüsselstatus eines AWS KMS KMS-Schlüssels auf `Disabled` oder `PendingDeletion` ändert. Wenn ein Benutzer beispielsweise versucht, einen AWS KMS KMS-Schlüssel zu deaktivieren oder zu löschen, erhalten Sie eine E-Mail-Benachrichtigung mit Einzelheiten zur versuchten Statusänderung. Sie können dieses Muster auch verwenden, um das Löschen von AWS-KMS-Schlüsseln zu planen.

## Voraussetzungen und Einschränkungen
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto mit einem AWS Identity and Access Management (IAM) -Benutzer
+ Ein [AWS-KMS-Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)

## Architektur
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-architecture"></a>

**Technologie-Stack**
+ Amazon EventBridge
+ AWS Key Management Service (AWS KMS)
+ Amazon-Simple-Notification-Service (Amazon-SNS)

**Zielarchitektur**

Das folgende Diagramm zeigt eine Architektur für den Aufbau eines automatisierten Überwachungs- und Benachrichtigungsprozesses zur Erkennung von Änderungen am Status eines AWS-KMS-Schlüssels.

![\[Architektur für den Aufbau eines automatisierten Überwachungs- und Benachrichtigungsprozesses\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/2534df87-a6fd-4360-9b5d-4a8b1f533de3/images/0cb6a6b0-405b-4d26-ad04-2067176aa086.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein Benutzer deaktiviert oder plant das Löschen eines AWS-KMS-Schlüssels.

1. Eine EventBridge Regel bewertet das geplante Ereignis `Disabled` oder `PendingDeletion` Ereignis.

1. Die EventBridge Regel ruft das Amazon SNS SNS-Thema auf.

1. Amazon SNS sendet eine E-Mail-Benachrichtigung an die Benutzer.

**Anmerkung**  
Sie können die E-Mail-Nachricht an die Bedürfnisse Ihres Unternehmens anpassen. Wir empfehlen, Informationen über die Entitäten anzugeben, in denen der AWS-KMS-Schlüssel verwendet wird. Dies kann Benutzern helfen, die Auswirkungen des Löschens des AWS-KMS-Schlüssels zu verstehen. Sie können auch eine Erinnerungs-E-Mail-Benachrichtigung planen, die ein oder zwei Tage vor dem Löschen des AWS-KMS-Schlüssels gesendet wird.

**Automatisierung und Skalierung**

Der CloudFormation AWS-Stack stellt alle erforderlichen Ressourcen und Dienste bereit, damit dieses Muster funktioniert. Sie können das Muster unabhängig in einem einzigen Konto implementieren oder indem Sie [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) für mehrere unabhängige Konten oder [Organisationseinheiten](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) in AWS Organizations verwenden.

## Tools
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und AWS-Regionen hinweg zu verwalten. Die CloudFormation Vorlage für dieses Muster beschreibt alle AWS-Ressourcen, die Sie benötigen, und stellt CloudFormation diese Ressourcen für Sie bereit und konfiguriert sie.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen verbinden können. EventBridge liefert einen Stream von Echtzeitdaten aus Ihren eigenen Anwendungen und AWS-Services und leitet diese Daten an Ziele wie AWS Lambda weiter. EventBridge vereinfacht den Prozess der Erstellung ereignisgesteuerter Architekturen.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

**Code**

Der Code für dieses Muster ist im Repository GitHub [Monitor AWS KMS Keys Disable and Scheduled Deletion](https://github.com/aws-samples/aws-kms-deletion-notification) verfügbar.

## Epen
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-epics"></a>

### Stellen Sie die Vorlage CloudFormation bereit
<a name="deploy-the-cloudformation-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Klonen Sie das Repository GitHub [Monitor AWS KMS Keys Disable and Scheduled Deletion](https://github.com/aws-samples/aws-kms-deletion-notification) auf Ihren lokalen Computer, indem Sie den folgenden Befehl ausführen:`git clone https://github.com/aws-samples/aws-kms-deletion-notification` | AWS-Administrator, Cloud-Architekt | 
| Aktualisieren Sie die Parameter der Vorlage. | Öffnen Sie in einem Code-Editor die `Alerting-KMS-Events.yaml` CloudFormation Vorlage, die Sie aus dem Repository geklont haben, und aktualisieren Sie dann die folgenden Parameter:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS-Administrator, Cloud-Architekt | 
| Stellen Sie die CloudFormation Vorlage bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS-Administrator, Cloud-Architekt | 

### Bestätigen Sie das Abonnement
<a name="confirm-the-subscription"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie die Abonnement-E-Mail. | Nachdem die CloudFormation Vorlage erfolgreich bereitgestellt wurde, sendet Amazon SNS eine Bestätigungsnachricht für das Abonnement an die E-Mail-Adresse, die Sie in der CloudFormation Vorlage angegeben haben.Um Benachrichtigungen zu erhalten, müssen Sie dieses E-Mail-Abonnement bestätigen. Weitere Informationen finden Sie unter [Bestätigen des Abonnements](https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.confirm.html) im Amazon SNS Developer Guide. | AWS-Administrator, Cloud-Architekt | 

### Testen Sie die Abonnementbenachrichtigung
<a name="test-the-subscription-notification"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Deaktivieren Sie die AWS-KMS-Schlüssel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS-Administrator | 
| Bestätigen Sie das Abonnement. | Bestätigen Sie, dass Sie die Amazon SNS SNS-Benachrichtigungs-E-Mail erhalten haben. | AWS-Administrator | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie den CloudFormation Stapel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | AWS-Administrator | 

## Zugehörige Ressourcen
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-resources"></a>
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/) (AWS-Dokumentation)
+ [Einen Stack auf der CloudFormation AWS-Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) erstellen ( CloudFormation AWS-Dokumentation)
+ [Aufbau ereignisgesteuerter Architekturen auf AWS (AWS](https://catalog.us-east-1.prod.workshops.aws/workshops/63320e83-6abc-493d-83d8-f822584fb3cb/en-US) Workshop Studio-Dokumentation)
+ [Bewährte Methoden für den AWS Key Management Service](https://d1.awsstatic.com/whitepapers/aws-kms-best-practices.pdf) (AWS-Whitepaper)
+ [Bewährte Sicherheitsmethoden für AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) (AWS KMS Developer Guide)

## Zusätzliche Informationen
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-additional"></a>

Amazon SNS bietet standardmäßig Verschlüsselung bei der Übertragung. Um den bewährten Sicherheitsmethoden zu entsprechen, können Sie auch die serverseitige Verschlüsselung für Amazon SNS aktivieren, indem Sie einen vom Kunden verwalteten AWS KMS KMS-Schlüssel verwenden.

# Beibehaltung von routingfähigem IP-Speicherplatz in VPC-Designs mit mehreren Konten für Subnetze ohne Arbeitslast
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets"></a>

*Adam Spicer, Amazon Web Services*

## Zusammenfassung
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-summary"></a>

Amazon Web Services (AWS) hat bewährte Methoden veröffentlicht, die die Verwendung von dedizierten Subnetzen in einer Virtual Private Cloud (VPC) sowohl für [Transit-Gateway-Anhänge als auch für Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html) [Load Balancer-Endpunkte](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/getting-started.html) (zur Unterstützung von [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/firewall-high-level-steps.html) oder Appliances von Drittanbietern) empfehlen. Diese Subnetze werden verwendet, um elastische Netzwerkschnittstellen für diese Services zu enthalten. Wenn Sie sowohl AWS Transit Gateway als auch einen Gateway Load Balancer verwenden, werden in jeder Availability Zone zwei Subnetze für die VPC erstellt. Aufgrund der Art und Weise, wie sie konzipiert VPCs sind, dürfen diese zusätzlichen Subnetze [nicht kleiner als eine /28-Maske sein](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-sizing) und können wertvollen routingfähigen IP-Speicherplatz beanspruchen, der andernfalls für routingfähige Workloads verwendet werden könnte. Dieses Muster zeigt, wie Sie für diese dedizierten Subnetze einen sekundären, nicht routbaren CIDR-Bereich (Classless Inter-Domain Routing) verwenden können, um routingfähigen IP-Bereich zu erhalten.

## Voraussetzungen und Einschränkungen
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-prereqs"></a>

**Voraussetzungen**
+ [Multi-VPC-Strategie](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/welcome.html) für routingfähigen IP-Bereich
+ [Ein nicht routbarer CIDR-Bereich für die Dienste, die Sie verwenden ([Transit-Gateway-Anhänge und Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html)[Load Balancer](https://aws.amazon.com/blogs/apn/centralized-traffic-inspection-with-gateway-load-balancer-on-aws/) - oder Network Firewall Firewall-Endpunkte)](https://aws.amazon.com/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/)

## Architektur
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-architecture"></a>

**Zielarchitektur**

Dieses Muster umfasst zwei Referenzarchitekturen: Eine Architektur hat Subnetze für Transit Gateway (TGW) -Anlagen und einen Gateway Load Balancer-Endpunkt (GWLBe), und die zweite Architektur hat Subnetze nur für TGW-Anlagen.

**Architektur 1 ‒ TGW-verbundene VPC mit Eingangs-Routing zu einer Appliance**

Das folgende Diagramm stellt eine Referenzarchitektur für eine VPC dar, die sich über zwei Availability Zones erstreckt. [Beim Eingang verwendet die VPC ein [Ingress-Routing-Muster](https://aws.amazon.com/blogs/aws/new-vpc-ingress-routing-simplifying-integration-of-third-party-appliances/), um den für das öffentliche Subnetz bestimmten Datenverkehr zur Firewall-Inspektion an eine bump-in-the-wire Appliance weiterzuleiten.](https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-aws-gateway-load-balancer-supported-architecture-patterns/) Ein TGW-Anhang unterstützt den Ausgang von privaten Subnetzen zu einer separaten VPC.

Dieses Muster verwendet einen nicht routbaren CIDR-Bereich für das TGW-Anhangs-Subnetz und das Subnetz. GWLBe In der TGW-Routingtabelle ist dieser nicht routbare CIDR mit einer (statischen) Blackhole-Route konfiguriert, wobei eine Reihe speziellerer Routen verwendet wird. Wenn die Routen an die TGW-Routingtabelle weitergegeben würden, würden diese spezifischeren Blackhole-Routen gelten.

In diesem Beispiel ist das routbare CIDR /23 aufgeteilt und vollständig routingfähigen Subnetzen zugewiesen.

![\[TGW-verbundene VPC mit Eingangs-Routing zu einer Appliance.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/0171d91d-ab1e-41ca-a425-1e6e610080e1/images/adad1c83-cdc2-4c5e-aa35-f47fc31af384.png)


**Architektur 2 — TGW-angeschlossene VPC**

Das folgende Diagramm stellt eine weitere Referenzarchitektur für eine VPC dar, die sich über zwei Availability Zones erstreckt. Ein TGW-Anhang unterstützt ausgehenden Datenverkehr (Egress) von den privaten Subnetzen zu einer separaten VPC. Es verwendet einen CIDR-Bereich, der nicht routbar ist, nur für das TGW-Anhangs-Subnetz. In der TGW-Routingtabelle ist dieser nicht routbare CIDR mit einer Blackhole-Route konfiguriert, wobei eine Reihe speziellerer Routen verwendet wird. Wenn die Routen an die TGW-Routingtabelle weitergegeben würden, würden diese spezifischeren Blackhole-Routen gelten.

In diesem Beispiel ist das routbare CIDR /23 aufgeteilt und vollständig routingfähigen Subnetzen zugewiesen. 

![\[VPC erstreckt sich über 2 Availability Zones mit TGW-Verbindung für den Ausgang von privaten Subnetzen zu separaten VPC.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/0171d91d-ab1e-41ca-a425-1e6e610080e1/images/31a2a241-5be6-425e-93e9-5ff7ffeca3a9.png)


## Tools
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-tools"></a>

**AWS-Services und -Ressourcen**
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS. In diesem Muster CIDRs werden sekundäre VPCs verwendet, um routingfähigen IP-Speicherplatz während der Arbeitslast beizubehalten. CIDRs
+ [Internet-Gateway-Ingress-Routing](https://aws.amazon.com/blogs/aws/new-vpc-ingress-routing-simplifying-integration-of-third-party-appliances/) (Edge-Zuordnungen) kann zusammen mit Gateway Load Balancer-Endpunkten für dedizierte, nicht routbare Subnetze verwendet werden.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) ist ein zentraler Knotenpunkt, der lokale Netzwerke verbindet VPCs . Bei diesem Muster VPCs sind sie zentral an ein Transit-Gateway angeschlossen, und die Transit-Gateway-Anlagen befinden sich in einem speziellen, nicht routbaren Subnetz.
+ [Gateway-Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/introduction.html) ermöglichen Ihnen die Bereitstellung, Skalierung und Verwaltung virtueller Geräte, wie Firewalls, Systeme zur Angriffserkennung und -Abwehr und Deep-Packet-Inspection-Systeme. Das Gateway dient als einziger Eingangs- und Ausgangspunkt für den gesamten Verkehr. In diesem Muster können Endpunkte für einen Gateway Load Balancer in einem dedizierten, nicht routbaren Subnetz verwendet werden.
+ Die [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) ist ein zustandsbehafteter, verwalteter Netzwerk-Firewall sowie Service zur Erkennung und Verhinderung von Eindringlingen VPCs in der AWS-Cloud. Bei diesem Muster können Endpunkte für eine Firewall in einem dedizierten, nicht routbaren Subnetz verwendet werden.

**Code-Repository**

Ein Runbook und CloudFormation AWS-Vorlagen für dieses Muster sind im Repository GitHub [Non-Routable Secondary CIDR](https://github.com/aws-samples/non-routable-secondary-vpc-cidr-patterns/) Patterns verfügbar. Sie können die Beispieldateien verwenden, um ein funktionierendes Labor in Ihrer Umgebung einzurichten.

## Best Practices
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-best-practices"></a>

**AWS Transit Gateway**
+ Verwenden Sie für jeden Transit-Gateway-VPC-Anhang ein separates Subnetz.
+ Weisen Sie den Transit-Gateway-Anhangssubnetzen ein /28-Subnetz aus dem sekundären, nicht routbaren CIDR-Bereich zu.
+ Fügen Sie in jeder Transit-Gateway-Routingtabelle eine statische, spezifischere Route für den nicht routbaren CIDR-Bereich als schwarzes Loch hinzu.

**Gateway Load Balancer und Ingress-Routing**
+ Verwenden Sie Ingress-Routing, um den Datenverkehr vom Internet zu den Gateway Load Balancer-Endpunkten weiterzuleiten.
+ Verwenden Sie für jeden Gateway Load Balancer-Endpunkt ein separates Subnetz.
+ Weisen Sie den Gateway Load Balancer-Endpunktsubnetzen ein /28-Subnetz aus dem sekundären, nicht routbaren CIDR-Bereich zu.

## Epen
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-epics"></a>

### Erschaffen VPCs
<a name="create-vpcs"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ermitteln Sie den CIDR-Bereich, der nicht routbar ist. | Ermitteln Sie einen nicht routbaren CIDR-Bereich, der für das Transit-Gateway-Anhangssubnetz und (optional) für alle Gateway Load Balancer- oder Network Firewall Firewall-Endpunktsubnetze verwendet wird. Dieser CIDR-Bereich wird als sekundärer CIDR für die VPC verwendet. Er **darf nicht vom primären CIDR-Bereich der VPC oder dem größeren Netzwerk aus routbar** sein. | Cloud-Architekt | 
| Ermitteln Sie routingfähige CIDR-Bereiche für. VPCs | Ermitteln Sie eine Reihe routingfähiger CIDR-Bereiche, die für Ihre verwendet werden. VPCs Dieser CIDR-Bereich wird als primärer CIDR-Bereich für Sie verwendet. VPCs | Cloud-Architekt | 
| Erstellen VPCs. | Erstellen Sie Ihre VPCs und hängen Sie sie an das Transit-Gateway an. Jede VPC sollte einen primären CIDR-Bereich haben, der routbar ist, und einen sekundären CIDR-Bereich, der nicht routbar ist, basierend auf den Bereichen, die Sie in den beiden vorherigen Schritten festgelegt haben. | Cloud-Architekt | 

### Blackhole-Routen für Transit Gateway konfigurieren
<a name="configure-transit-gateway-blackhole-routes"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie spezifischere, nicht routingfähige schwarze Löcher CIDRs . | Für jede Routingtabelle eines Transit-Gateways muss eine Reihe von Blackhole-Routen für die nicht routbaren Routen erstellt werden. CIDRs Diese sind so konfiguriert, dass sichergestellt ist, dass jeglicher Datenverkehr vom sekundären VPC-CIDR nicht routbar bleibt und nicht in das größere Netzwerk gelangt. Diese Routen sollten spezifischer sein als das nicht routbare CIDR, das auf der VPC als sekundäres CIDR festgelegt ist. Wenn das sekundäre, nicht routbare CIDR beispielsweise 100.64.0.0/26 ist, sollten die Blackhole-Routen in der Transit-Gateway-Routingtabelle 100.64.0.0/27 und 100.64.0.32/27 lauten. | Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-resources"></a>
+ [Best practices for deploying Gateway Load Balancer](https://aws.amazon.com/blogs/networking-and-content-delivery/best-practices-for-deploying-gateway-load-balancer/)
+ [Verteilte Inspektionsarchitekturen mit Gateway Load Balancer](https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/distributed-inspection-architectures-gwlb-ra.pdf?did=wp_card&trk=wp_card)
+ [Networking Immersion Day](https://catalog.workshops.aws/networking/en-US/gwlb/lab2-internettovpc) ‒ [Internet to VPC Firewall Lab](https://catalog.workshops.aws/networking/en-US/gwlb/lab2-internettovpc)
+ [Bewährte Methoden für das Transit-Gateway-Design](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html)

## Zusätzliche Informationen
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-additional"></a>

Der sekundäre CIDR-Bereich, der nicht routbar ist, kann auch nützlich sein, wenn Sie mit größeren skalierten Container-Bereitstellungen arbeiten, die eine große Anzahl von IP-Adressen erfordern. Sie können dieses Muster mit einem privaten NAT-Gateway verwenden, um ein nicht routbares Subnetz zum Hosten Ihrer Container-Bereitstellungen zu verwenden. Weitere Informationen finden Sie im Blogbeitrag [So lösen Sie die Erschöpfung privater IP-Adressen mit Private NAT](https://aws.amazon.com/blogs/networking-and-content-delivery/how-to-solve-private-ip-exhaustion-with-private-nat-solution/) Solution.

# Bereitstellen eines Terraform-Produkts AWS Service Catalog mithilfe eines Code-Repositorys
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository"></a>

*Dr. Rahul Sharad Gaikwad und Tamilselvan P, Amazon Web Services*

## Zusammenfassung
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-summary"></a>

AWS Service Catalog [unterstützt Self-Service-Bereitstellung mit Steuerung für Ihre Terraform-Konfigurationen. HashiCorp ](https://developer.hashicorp.com/terraform/tutorials/aws-get-started) Wenn Sie Terraform verwenden, können Sie Service Catalog als einziges Tool verwenden, um Ihre Terraform-Konfigurationen innerhalb eines großen Maßstabs zu organisieren, zu verwalten und zu verteilen. AWS Sie können auf die wichtigsten Funktionen von Service Catalog zugreifen, darunter die Katalogisierung standardisierter und vorab genehmigter IaC-Vorlagen (Infrastructure as Code), Zugriffskontrolle, Bereitstellung von Cloud-Ressourcen mit geringsten Zugriffsrechten, Versionierung, gemeinsame Nutzung für Tausende von Benutzern und Tagging. AWS-Konten Endbenutzern wie Technikern, Datenbankadministratoren und Datenwissenschaftlern wird eine Liste der Produkte und Versionen angezeigt, auf die sie Zugriff haben, und sie können diese mit einer einzigen Aktion bereitstellen.

Dieses Muster hilft Ihnen bei der Bereitstellung von AWS Ressourcen mithilfe von Terraform-Code. Auf den Terraform-Code im GitHub Repository wird über Service Catalog zugegriffen. Mit diesem Ansatz integrieren Sie die Produkte in Ihre bestehenden Terraform-Workflows. Administratoren können mithilfe von Terraform Service Catalog-Portfolios erstellen und ihnen AWS Launch Wizard Produkte hinzufügen.

Im Folgenden sind die Vorteile dieser Lösung aufgeführt:
+ Aufgrund der Rollback-Funktion in Service Catalog können Sie das Produkt auf eine frühere Version zurücksetzen, wenn während der Bereitstellung Probleme auftreten.
+ Sie können die Unterschiede zwischen den Produktversionen leicht erkennen. Dies hilft Ihnen, Probleme bei der Bereitstellung zu lösen.
+ Sie können im Service Catalog eine Repository-Verbindung konfigurieren, z. B. zu GitHub oder GitLab. Sie können Produktänderungen direkt über das Repository vornehmen.

Informationen zu den allgemeinen Vorteilen von finden Sie AWS Service Catalog unter [Was ist Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html).

## Voraussetzungen und Einschränkungen
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ Ein GitHub, BitBucket, oder ein anderes Repository, das Terraform-Konfigurationsdateien im ZIP-Format enthält.
+ AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAM CLI), [installiert](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html).
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Los, [installiert](https://go.dev/doc/install).
+ Python-Version 3.9, [installiert](https://www.python.org/downloads/release/python-3913/). AWS SAM CLI benötigt diese Version von Python.
+ Berechtigungen zum Schreiben und Ausführen von AWS Lambda Funktionen sowie Berechtigungen für den Zugriff auf und die Verwaltung von Service Catalog-Produkten und -Portfolios.

## Architektur
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-architecture"></a>

![\[Architekturdiagramm der Bereitstellung eines Terraform-Produkts in Service Catalog aus einem Code-Repository\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/7d0d76e8-9485-4b3f-915f-481b6a7cdcd9/images/e83fa44a-4ca6-4438-a0d1-99f09a3541bb.png)


Das Diagramm zeigt den folgenden Workflow:

1. Wenn eine Terraform-Konfiguration fertig ist, erstellt ein Entwickler eine ZIP-Datei, die den gesamten Terraform-Code enthält. Der Entwickler lädt die ZIP-Datei in das Code-Repository hoch, das mit Service Catalog verbunden ist.

1. Ein Administrator ordnet das Terraform-Produkt einem Portfolio im Service Catalog zu. Der Administrator erstellt außerdem eine Startbeschränkung, die es Endbenutzern ermöglicht, das Produkt bereitzustellen.

1. In Service Catalog starten Endbenutzer AWS Ressourcen mithilfe der Terraform-Konfiguration. Sie können wählen, welche Produktversion bereitgestellt werden soll.

## Tools
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-tools"></a>

**AWS-Services**
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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 Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)hilft Ihnen dabei, Kataloge von IT-Services, für AWS die eine Genehmigung erteilt wurde, zentral zu verwalten. Endbenutzer können schnell nur die jeweils benötigten genehmigten IT-Services bereitstellen, wobei die Einschränkungen Ihrer Organisation berücksichtigt werden.

**Andere Dienste**
+ [Go](https://go.dev/doc/install) ist eine Open-Source-Programmiersprache, die Google unterstützt.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Wenn Sie Terraform-Beispielkonfigurationen benötigen, die Sie über Service Catalog bereitstellen können, können Sie die Konfigurationen im GitHub [Amazon Macie Organization Setup Using Terraform Repository verwenden](https://github.com/aws-samples/aws-macie-customization-terraform-samples). Die Verwendung der Codebeispiele in diesem Repository ist nicht erforderlich.

## Best Practices
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-best-practices"></a>
+ Anstatt die Werte für Variablen in der Terraform-Konfigurationsdatei (`terraform.tfvars`) bereitzustellen, konfigurieren Sie Variablenwerte, wenn Sie das Produkt über Service Catalog starten.
+ Gewähren Sie nur bestimmten Benutzern oder Administratoren Zugriff auf das Portfolio.
+ Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der AWS Identity and Access Management (IAM-[) Dokumentation unter Gewährung der geringsten Rechte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) und [bewährte Methoden zur Sicherheit](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html).

## Epen
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-epics"></a>

### Richten Sie Ihre lokale Workstation ein
<a name="set-up-your-local-workstation"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| (Optional) Installieren Sie Docker. | Wenn Sie die AWS Lambda Funktionen in Ihrer Entwicklungsumgebung ausführen möchten, installieren Sie Docker. Weitere Informationen finden Sie unter [Installieren der Docker-Engine](https://docs.docker.com/engine/install/) in der Docker-Dokumentation. | DevOps Ingenieur | 
| Installieren Sie die AWS Service Catalog Engine für Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps Ingenieur, AWS-Administrator | 

### Connect das GitHub Repository
<a name="connect-the-github-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie eine Verbindung zum GitHub Repository her. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 

### Erstellen Sie ein Terraform-Produkt im Service Catalog
<a name="create-a-terraform-product-in-service-catalog"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das Service Catalog-Produkt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Erstellen Sie ein Portfolio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Fügen Sie das Terraform-Produkt dem Portfolio hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Erstellen Sie eine Zugriffsrichtlinie. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Erstellen Sie eine benutzerdefinierte Vertrauensrichtlinie. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Fügen Sie dem Service Catalog-Produkt eine Startbeschränkung hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Gewähren Sie Zugriff auf das Produkt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 
| Starten Sie das Produkt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps Ingenieur | 

### Überprüfen der Bereitstellung
<a name="verify-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Validieren Sie die Bereitstellung. | Es gibt zwei AWS Step Functions Zustandsmaschinen für den Service Catalog-Bereitstellungsworkflow:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html)Sie überprüfen die Protokolle für den `ManageProvisionedProductStateMachine` State Machine, um zu bestätigen, dass das Produkt bereitgestellt wurde.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps Ingenieur | 

### Infrastruktur aufräumen
<a name="clean-up-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie bereitgestellte Produkte. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps Ingenieur | 
| Entferne die AWS Service Catalog Engine für Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | AWS-Administrator | 

## Zugehörige Ressourcen
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-resources"></a>

**AWS Dokumentation**
+ [Erste Schritte mit einem Terraform-Produkt](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-Terraform.html)

**Terraform-Dokumentation**
+ [Terraform-Installation](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Terraform-Backend-Konfiguration](https://developer.hashicorp.com/terraform/language/backend)
+ [Terraform Provider-Dokumentation AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Zusätzliche Informationen
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-additional"></a>

**Zugriffsrichtlinie**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/servicecatalog:provisioning": "true"
                }
            }
        },
        {
            "Action": [
                "s3:CreateBucket*",
                "s3:DeleteBucket*",
                "s3:Get*",
                "s3:List*",
                "s3:PutBucketTagging"
            ],
            "Resource": "arn:aws:s3:::*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "resource-groups:CreateGroup",
                "resource-groups:ListGroupResources",
                "resource-groups:DeleteGroup",
                "resource-groups:Tag"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "tag:GetResources",
                "tag:GetTagKeys",
                "tag:GetTagValues",
                "tag:TagResources",
                "tag:UntagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

**Vertrauensrichtlinie**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GivePermissionsToServiceCatalog",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account_id:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringLike": {
                    "aws:PrincipalArn": [
                        "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*",
                        "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*",
                        "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*"
                    ]
                }
            }
        }
    ]
}
```

# Registrieren Sie mehrere AWS-Konten mit einer einzigen E-Mail-Adresse mithilfe von Amazon SES
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses"></a>

*Joe Wozniak und Shubhangi Vishwakarma, Amazon Web Services*

## Zusammenfassung
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-summary"></a>

Dieses Muster beschreibt, wie Sie echte E-Mail-Adressen von der E-Mail-Adresse entkoppeln können, die mit einer verknüpft ist. AWS-Konto AWS-Konten erfordern, dass bei der Kontoerstellung eine eindeutige E-Mail-Adresse angegeben wird. In einigen Organisationen AWS-Konten muss das verwaltende Team die Last der Verwaltung vieler eindeutiger E-Mail-Adressen mit seinem Messaging-Team übernehmen. Dies kann für große Organisationen, die viele verwalten, schwierig sein AWS-Konten. Wenn Ihr E-Mail-System die *Plus- oder *Unteradressierung** nicht zulässt, wie in [Sieve Email Filtering: Subaddress Extension (RFC 5233)](https://datatracker.ietf.org/doc/html/rfc5233) definiert, kann `admin+123456789123@example.com` dieses Muster außerdem helfen, diese Einschränkung zu umgehen, indem Sie am Ende des lokalen Teils der E-Mail-Adresse ein Pluszeichen (\$1) und eine Kennung hinzufügen, z. B.

Dieses Muster bietet eine einzigartige Lösung für den Verkauf von E-Mail-Adressen, mit der AWS-Konto Eigentümer eine E-Mail-Adresse mehreren zuordnen können. AWS-Konten Die echten E-Mail-Adressen der AWS-Konto Eigentümer werden dann diesen generierten E-Mail-Adressen in einer Tabelle zugeordnet. Die Lösung verarbeitet alle eingehenden E-Mails für die einzelnen E-Mail-Konten, sucht nach dem Besitzer jedes Kontos und leitet dann alle empfangenen Nachrichten an den Eigentümer weiter.  

## Voraussetzungen und Einschränkungen
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-prereqs"></a>

**Voraussetzungen**
+ Administrativer Zugriff auf ein AWS-Konto.
+ Zugriff auf eine Entwicklungsumgebung. 
+ (Optional) Wenn Sie mit AWS Cloud Development Kit (AWS CDK) Workflows und der Programmiersprache Python vertraut sind, können Sie Probleme beheben oder Änderungen vornehmen.

**Einschränkungen**
+ Die Gesamtlänge der versendeten E-Mail-Adresse beträgt 64 Zeichen. Einzelheiten finden Sie [CreateAccount](https://docs.aws.amazon.com/organizations/latest/APIReference/API_CreateAccount.html)in der *AWS Organizations API-Referenz.*

**Produktversionen**
+ Node.js Version 22.x oder höher
+ Python 3.13 oder höher
+ **Python-Pakete **pip und virtualenv****
+ AWS CDK CLI-Version 2.1019.2 oder höher
+ Docker 20.10.x oder höher

## Architektur
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-architecture"></a>

**Zieltechnologie-Stack**
+ CloudFormation stapeln
+ AWS Lambda Funktionen
+ Regel und Regelsatz für Amazon Simple Email Service (Amazon SES)
+ AWS Identity and Access Management Rollen und Richtlinien (IAM)
+ Bucket- und Bucket-Richtlinie für Amazon Simple Storage Service (Amazon S3)
+ AWS Key Management Service (AWS KMS) Schlüssel und wichtige Richtlinie
+ Thema und Themenrichtlinie für Amazon Simple Notification Service (Amazon SNS)
+ Amazon-DynamoDB-Tabelle. 

**Zielarchitektur**

![\[Zielarchitektur für die Registrierung mehrerer AWS-Konten mit einer einzigen E-Mail-Adresse\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/1be85b92-69e5-43b2-aeed-27b9509e145e/images/c7ae9d7a-d4e0-412e-97cb-0f3073e012e7.png)


Dieses Diagramm zeigt zwei Abläufe:
+ **Ablauf des Verkaufs von E-Mail-Adressen:** Im Diagramm beginnt der Ablauf des Verkaufs von E-Mail-Adressen (unterer Abschnitt) in der Regel mit einer Kontoverkaufslösung oder einer externen Automatisierung oder wird manuell aufgerufen. In der Anfrage wird eine Lambda-Funktion mit einer Nutzlast aufgerufen, die die benötigten Metadaten enthält. Die Funktion verwendet diese Informationen, um einen eindeutigen Kontonamen und eine E-Mail-Adresse zu generieren, sie in einer DynamoDB-Datenbank zu speichern und die Werte an den Aufrufer zurückzugeben. Diese Werte können dann verwendet werden, um eine neue zu erstellen AWS-Konto (normalerweise mithilfe von). AWS Organizations
+ **Ablauf der E-Mail-Weiterleitung:** Dieser Ablauf ist im oberen Abschnitt des vorherigen Diagramms dargestellt. Wenn ein mithilfe der Konto-E-Mail erstellt AWS-Konto wird, die aus dem E-Mail-Verkaufsablauf generiert wurde, AWS werden verschiedene E-Mails, wie z. B. die Bestätigung der Kontoregistrierung und regelmäßige Benachrichtigungen, an diese E-Mail-Adresse gesendet. Indem Sie die Schritte in diesem Muster befolgen, konfigurieren Sie Ihr System AWS-Konto mit Amazon SES für den Empfang von E-Mails für die gesamte Domain. Diese Lösung konfiguriert Weiterleitungsregeln, die es Lambda ermöglichen, alle eingehenden E-Mails zu verarbeiten, zu überprüfen, ob sich die `TO` Adresse in der DynamoDB-Tabelle befindet, und die Nachricht stattdessen an die E-Mail-Adresse des Kontoinhabers weiterzuleiten. Mithilfe dieses Verfahrens haben Kontoinhaber die Möglichkeit, mehrere Konten mit einer E-Mail-Adresse zu verknüpfen.

**Automatisierung und Skalierung**

Dieses Muster verwendet die AWS CDK , um die Bereitstellung vollständig zu automatisieren. Die Lösung verwendet AWS verwaltete Dienste, die automatisch skaliert werden (oder so konfiguriert werden können), dass sie Ihren Anforderungen entsprechen. Die Lambda-Funktionen erfordern möglicherweise eine zusätzliche Konfiguration, um Ihre Skalierungsanforderungen zu erfüllen. Weitere Informationen finden Sie in der [Lambda-Dokumentation unter Grundlegendes zur Lambda-Funktionsskalierung](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html).

## Tools
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-tools"></a>

**AWS-Services**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) hilft Ihnen dabei, kryptografische Schlüssel zu erstellen und zu kontrollieren, um Ihre Daten zu schützen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) unterstützt Sie beim Senden und Empfangen von E-Mails mithilfe Ihrer eigenen E-Mail-Adressen und Domains.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Für die Bereitstellung benötigte Tools**
+ Entwicklungsumgebung mit AWS CLI und IAM-Zugriff auf Ihre AWS-Konto. Einzelheiten finden Sie unter den Links im Abschnitt [Verwandte Ressourcen](#register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources).  
+ Installieren Sie auf Ihrem Entwicklungssystem Folgendes:
  + Git-Befehlszeilentool, verfügbar auf der [Git-Download-Website](https://git-scm.com/downloads).
  + Das AWS CLI , um die Zugangsdaten für die zu konfigurieren AWS CDK. Weitere Informationen finden Sie in der [AWS CLI -Dokumentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).
  + Python-Version 3.13 oder höher, erhältlich auf der [Python-Download-Website](https://www.python.org/downloads/).
  + UV für die Python-Paketverwaltung. Installationsanweisungen finden Sie in der [UV-Installationsanleitung](https://docs.astral.sh/uv/getting-started/installation/).
  + Node.js Version 22.x oder höher. Installationsanweisungen finden Sie in der [Dokumentation zu Node.js](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs).
  + AWS CDK CLI-Version 2.1019.2 oder höher. [Installationsanweisungen finden Sie in der Dokumentation.AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting-started.html#getting-started-install)
  + Docker-Version 20.10.x oder höher. [Installationsanweisungen finden Sie in der Docker-Dokumentation.](https://docs.docker.com/engine/install/)

**Code**

Der Code für dieses Muster ist im GitHub [AWS-Konto werkseitigen E-Mail-Repository](https://github.com/aws-samples/aws-account-factory-email) verfügbar.

## Epen
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-epics"></a>

### Ordnen Sie eine Zielbereitstellungsumgebung zu
<a name="allocate-a-target-deployment-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Identifizieren oder erstellen Sie eine AWS-Konto. | Identifizieren Sie ein vorhandenes oder neues, AWS-Konto auf das Sie vollen Administratorzugriff haben, um die E-Mail-Lösung bereitzustellen. | AWS-Administrator, Cloud-Administrator | 
| Richten Sie eine Bereitstellungsumgebung ein. | Konfigurieren Sie eine benutzerfreundliche Bereitstellungsumgebung und richten Sie Abhängigkeiten ein, indem Sie die folgenden Schritte ausführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | AWS DevOps, App-Entwickler | 

### Richten Sie eine verifizierte Domain ein
<a name="set-up-a-verified-domain"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Identifizieren und weisen Sie eine Domain zu. | Für die E-Mail-Weiterleitungsfunktion ist eine dedizierte Domain erforderlich. Identifizieren und weisen Sie eine Domain oder Subdomain zu, die Sie mit Amazon SES verifizieren können. Diese Domain sollte für den Empfang eingehender E-Mails in dem Land verfügbar sein, in AWS-Konto dem die E-Mail-Weiterleitungslösung eingesetzt wird.Anforderungen an die Domain:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Cloud-Administrator, Netzwerkadministrator, DNS-Administrator | 
| Überprüfen Sie die Domain. | Stellen Sie sicher, dass die identifizierte Domain verwendet werden kann, um eingehende E-Mails zu akzeptieren.Folgen Sie den Anweisungen unter [Verifizieren Ihrer Domain für den E-Mail-Empfang von Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-verification.html) in der Amazon SES SES-Dokumentation. Dies erfordert eine Abstimmung mit der Person oder dem Team, die für die DNS-Einträge der Domain verantwortlich ist. | App-Entwickler, AWS DevOps | 
| Richten Sie MX-Einträge ein. | Richten Sie Ihre Domain mit MX-Einträgen ein, die auf die Amazon SES SES-Endpunkte in Ihrer Region AWS-Konto und Ihrer Region verweisen. Weitere Informationen finden Sie unter [Veröffentlichen eines MX-Eintrags für den Amazon SES SES-E-Mail-Empfang](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-mx-record.html) in der Amazon SES SES-Dokumentation. | Cloud-Administrator, Netzwerkadministrator, DNS-Administrator | 

### Stellen Sie die Lösung für den Verkauf und die Weiterleitung von E-Mails bereit
<a name="deploy-the-email-vending-and-forwarding-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern Sie die Standardwerte in`cdk.json`. | Bearbeiten Sie einige der Standardwerte in der `cdk.json` Datei (im Stammverzeichnis des Repositorys), sodass die Lösung nach der Bereitstellung ordnungsgemäß funktioniert.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | App-Entwickler, AWS DevOps | 
| Stellen Sie die Lösung für den Verkauf und die Weiterleitung von E-Mails bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | App-Entwickler, AWS DevOps | 
| Stellen Sie sicher, dass die Lösung bereitgestellt wurde. | Stellen Sie sicher, dass die Lösung erfolgreich bereitgestellt wurde, bevor Sie mit dem Testen beginnen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | App-Entwickler, AWS DevOps | 

### Stellen Sie sicher, dass der Verkauf und die Weiterleitung von E-Mails wie erwartet funktionieren
<a name="verify-that-email-vending-and-forwarding-operate-as-expected"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie sicher, dass die API funktioniert. | In diesem Schritt senden Sie Testdaten an die API der Lösung und bestätigen, dass die Lösung die erwartete Ausgabe erzeugt und dass die Backend-Operationen wie erwartet ausgeführt wurden.Führen Sie die Lambda-Funktion von **Vend Email** mithilfe der Testeingabe manuell aus. (Ein Beispiel finden Sie in der Datei [sample\$1vend\$1request.json](https://github.com/aws-samples/aws-account-factory-email/blob/main/src/events/sample_vend_request.json).) Verwenden Sie für eine gültige E-Mail-Adresse`OwnerAddress`. Die API sollte einen Kontonamen und eine Konto-E-Mail-Adresse mit den erwarteten Werten zurückgeben. | App-Entwickler, AWS DevOps | 
| Stellen Sie sicher, dass die E-Mail weitergeleitet wird. | In diesem Schritt senden Sie eine Test-E-Mail über das System und überprüfen, ob die E-Mail an den erwarteten Empfänger weitergeleitet wurde.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | App-Entwickler, AWS DevOps | 

## Fehlerbehebung
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Das System leitet E-Mails nicht wie erwartet weiter. | Stellen Sie sicher, dass Ihre Einrichtung korrekt ist:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html)Gehen Sie wie folgt vor, nachdem Sie Ihr Domain-Setup verifiziert haben:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| Wenn Sie versuchen, den AWS CDK Stack bereitzustellen, erhalten Sie eine Fehlermeldung, die der folgenden ähnelt:„Fehler im Vorlagenformat: Unbekannte Ressourcentypen“  | In den meisten Fällen bedeutet diese Fehlermeldung, dass die Region, auf die Sie abzielen, nicht über alle verfügbaren AWS-Services verfügt. Wenn Sie eine EC2 Amazon-Instance zur Bereitstellung der Lösung verwenden, zielen Sie möglicherweise auf eine Region ab, die sich von der Region unterscheidet, in der die Instance ausgeführt wird.Standardmäßig erfolgt die AWS CDK Bereitstellung in der Region und dem Konto, die Sie in der AWS CLI konfiguriert haben.Mögliche Lösungen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| Wenn Sie die Lösung bereitstellen, erhalten Sie die folgende Fehlermeldung:„Die Bereitstellung ist fehlgeschlagen: Fehler AwsMailFwdStack: Der SSM-Parameter bootstrap/hnb659fds/version /cdk- wurde nicht gefunden. Wurde für die Umgebung ein Bootstrapping durchgeführt? Bitte führe 'cdk bootstrap' aus.“ | Wenn Sie noch nie AWS CDK Ressourcen für die AWS-Konto Zielregion bereitgestellt haben, müssen Sie zuerst den `cdk bootstrap` Befehl ausführen, wie der Fehler darauf hinweist. Wenn Sie diesen Fehler weiterhin erhalten, nachdem Sie den Bootstrapping-Befehl ausgeführt haben, versuchen Sie möglicherweise, die Lösung in einer Region bereitzustellen, die sich von der Region unterscheidet, in der Ihre Entwicklungsumgebung ausgeführt wird.Um dieses Problem zu lösen, legen Sie die `AWS_DEFAULT_REGION` Umgebungsvariable oder eine Region mit fest, AWS CLI bevor Sie die Lösung bereitstellen. Alternativ können Sie die `app.py` Datei im Stammverzeichnis des Repositorys so ändern, dass sie eine fest codierte Konto-ID und Region enthält, indem Sie den Anweisungen in der [AWS CDK Dokumentation für Umgebungen](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) folgen. | 

## Zugehörige Ressourcen
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources"></a>
+ Hilfe bei der AWS CLI Installation von finden Sie unter [Installation oder Aktualisierung auf die neueste Version von](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html). AWS CLI
+ Hilfe beim Einrichten von AWS CLI mit IAM-Zugangsdaten finden Sie unter [Konfiguration der AWS CLI Einstellungen für](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Hilfe zu dem finden Sie AWS CDK unter [Erste Schritte mit dem AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_install). 

## Zusätzliche Informationen
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-additional"></a>

**Kosten**

Wenn Sie diese Lösung einsetzen, können dem AWS-Konto Inhaber Kosten entstehen, die mit der Nutzung der folgenden Dienste verbunden sind.  Es ist wichtig, dass Sie wissen, wie diese Dienste in Rechnung gestellt werden, damit Sie sich über mögliche Gebühren im Klaren sind. Preisinformationen finden Sie auf den folgenden Seiten:
+ [Amazon SES SES-Preise](https://aws.amazon.com/ses/pricing/)
+ [Amazon S3 – Preise](https://aws.amazon.com/s3/pricing/)
+ [AWS KMS Preisgestaltung](https://aws.amazon.com/kms/pricing/)
+ [AWS Lambda Preisgestaltung](https://aws.amazon.com/lambda/pricing/)
+ [Amazon-DynamoDB-Preise](https://aws.amazon.com/dynamodb/pricing/)

# Richten Sie die DNS-Auflösung für Hybridnetzwerke in einer AWS-Umgebung mit einem Konto ein
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Zusammenfassung
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-summary"></a>

Dieses Muster beschreibt, wie eine vollständig hybride DNS-Architektur (Domain Name System) eingerichtet wird, die die end-to-end DNS-Auflösung von lokalen Ressourcen, AWS-Ressourcen und Internet-DNS-Abfragen ohne Verwaltungsaufwand ermöglicht. Das Muster beschreibt, wie Amazon Route 53 Resolver Resolver-Weiterleitungsregeln eingerichtet werden, die anhand des Domainnamens festlegen, wohin eine von AWS stammende DNS-Anfrage gesendet werden soll. DNS-Abfragen für lokale Ressourcen werden an lokale DNS-Resolver weitergeleitet. DNS-Abfragen für AWS-Ressourcen und Internet-DNS-Abfragen werden vom Route 53 Resolver gelöst.

Dieses Muster deckt die hybride DNS-Auflösung in einer AWS-Einzelkonto-Umgebung ab. Informationen zur Einrichtung ausgehender DNS-Abfragen in einer AWS-Umgebung mit mehreren Konten finden Sie im Muster [DNS-Auflösung für Hybridnetzwerke in einer AWS-Umgebung mit mehreren Konten einrichten](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.html).

## Voraussetzungen und Einschränkungen
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-prereqs"></a>

**Voraussetzungen**
+ Ein AWS-Konto
+ Eine virtuelle private Cloud (VPC) in Ihrem AWS-Konto
+ Eine Netzwerkverbindung zwischen der lokalen Umgebung und Ihrer VPC über AWS Virtual Private Network (AWS VPN) oder AWS Direct Connect
+ IP-Adressen Ihrer lokalen DNS-Resolver (von Ihrer VPC aus erreichbar)
+ Domain-/Subdomänenname, der an lokale Resolver weitergeleitet werden soll (z. B. onprem.mydc.com)
+ Domain-/Subdomainname für die private gehostete AWS-Zone (z. B. myvpc.cloud.com)

## Architektur
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-architecture"></a>

**Zieltechnologie-Stack**
+ Private gehostete Zone von Amazon Route 53
+ Amazon Route 53 Resolver
+ Amazon VPC
+ AWS VPN oder Direct Connect

**Zielarchitektur**

![\[Workflow der Hybrid-DNS-Auflösung in einer AWS-Einzelkonto-Umgebung mit Route 53 Resolver.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/120dedc8-cc6c-4aa7-be11-c70a7ee80642/images/7b75f534-1adc-4a39-86d6-5c4596ff7b6a.png)


 

## Tools
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-tools"></a>
+ [Amazon Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) erleichtert Unternehmenskunden die Hybrid-Cloud, indem es eine nahtlose DNS-Abfrageauflösung in Ihrer gesamten Hybrid-Cloud ermöglicht. Sie können DNS-Endpunkte und Regeln für bedingte Weiterleitungen erstellen, um DNS-Namespaces zwischen Ihrem lokalen Rechenzentrum und Ihrem aufzulösen. VPCs
+ Die [private gehostete Zone von Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) ist ein Container, der Informationen darüber enthält, wie Route 53 auf DNS-Anfragen für eine Domain und deren Subdomains innerhalb einer oder mehrerer VPCs , die Sie mit dem Amazon VPC-Service erstellen, reagieren soll.

## Epen
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-epics"></a>

### Konfigurieren Sie eine private gehostete Zone
<a name="configure-a-private-hosted-zone"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine private gehostete Route 53 53-Zone für einen reservierten AWS-Domainnamen wie myvpc.cloud.com. | Diese Zone enthält die DNS-Einträge für AWS-Ressourcen, die in der lokalen Umgebung aufgelöst werden sollten. Anweisungen finden Sie unter [Erstellen einer privaten gehosteten Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) in der Route 53 53-Dokumentation. | Netzwerkadministrator, Systemadministrator | 
| Ordnen Sie die privat gehostete Zone Ihrer VPC zu. | Damit Ressourcen in Ihrer VPC DNS-Einträge in dieser privaten Hosting-Zone auflösen können, müssen Sie Ihre VPC der Hosting-Zone zuordnen. Anweisungen finden Sie unter [Erstellen einer privaten gehosteten Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) in der Route 53 53-Dokumentation. | Netzwerkadministrator, Systemadministrator | 

### Route 53 Resolver-Endpunkte einrichten
<a name="set-up-route-53-resolver-endpoints"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Endpunkt für eingehenden Datenverkehr. | Route 53 Resolver verwendet den eingehenden Endpunkt, um DNS-Abfragen von lokalen DNS-Resolvern zu empfangen. Anweisungen finden Sie in der Route 53 53-Dokumentation unter [Weiterleiten eingehender DNS-Abfragen an Ihre VPCs](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html). Notieren Sie sich die IP-Adresse des eingehenden Endpunkts. | Netzwerkadministrator, Systemadministrator | 
| Erstellen Sie einen ausgehenden Endpunkt. | Route 53 Resolver verwendet den ausgehenden Endpunkt, um DNS-Abfragen an lokale DNS-Resolver zu senden. Anweisungen finden Sie in der Route 53 53-Dokumentation unter [Weiterleiten ausgehender DNS-Abfragen an Ihr Netzwerk](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries.html). Notieren Sie sich die ID des Ausgabeendpunkts. | Netzwerkadministrator, Systemadministrator | 

### Richten Sie eine Weiterleitungsregel ein und verknüpfen Sie sie mit Ihrer VPC
<a name="set-up-a-forwarding-rule-and-associate-it-with-your-vpc"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Weiterleitungsregel für die lokale Domain. | Diese Regel weist Route 53 Resolver an, alle DNS-Abfragen für lokale Domänen (wie onprem.mydc.com) an lokale DNS-Resolver weiterzuleiten. Um diese Regel zu erstellen, benötigen Sie die IP-Adressen der lokalen DNS-Resolver und die ausgehende Endpunkt-ID für Route 53 Resolver. Anweisungen finden Sie in der Route 53 53-Dokumentation unter [Verwalten von Weiterleitungsregeln](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html). | Netzwerkadministrator, Systemadministrator | 
| Ordnen Sie die Weiterleitungsregel Ihrer VPC zu. | Damit die Weiterleitungsregel wirksam wird, müssen Sie die Regel mit Ihrer VPC verknüpfen. Route 53 Resolver berücksichtigt die Regel dann bei der Auflösung einer Domain. Anweisungen finden Sie in der Route 53 53-Dokumentation unter [Verwalten von Weiterleitungsregeln](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html). | Netzwerkadministrator, Systemadministrator | 

### Konfigurieren Sie lokale DNS-Resolver
<a name="configure-on-premises-dns-resolvers"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die bedingte Weiterleitung in den lokalen DNS-Resolvern.  | Damit DNS-Abfragen aus der lokalen Umgebung an die private Hosting-Zone Route 53 gesendet werden können, müssen Sie die bedingte Weiterleitung in den lokalen DNS-Resolvern konfigurieren. Dadurch werden die DNS-Resolver angewiesen, alle DNS-Abfragen für die AWS-Domäne (z. B. für myvpc.cloud.com) an die eingehende Endpunkt-IP-Adresse für Route 53 Resolver weiterzuleiten. | Netzwerkadministrator, Systemadministrator | 

### Testen Sie die end-to-end DNS-Auflösung
<a name="test-end-to-end-dns-resolution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testen Sie die DNS-Auflösung von AWS in der lokalen Umgebung. | Führen Sie von einem Server in der VPC aus eine DNS-Abfrage für eine lokale Domäne aus (z. B. server1.onprem.mydc.com). | Netzwerkadministrator, Systemadministrator | 
| Testen Sie die DNS-Auflösung von der lokalen Umgebung zu AWS. | Führen Sie von einem lokalen Server aus die DNS-Auflösung für eine AWS-Domain durch (z. B. server1.myvpc.cloud.com). | Netzwerkadministrator, Systemadministrator | 

## Zugehörige Ressourcen
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-resources"></a>
+ [Zentralisiertes DNS-Management der Hybrid Cloud mit Amazon Route 53 und AWS Transit Gateway](https://aws.amazon.com/blogs/networking-and-content-delivery/centralized-dns-management-of-hybrid-cloud-with-amazon-route-53-and-aws-transit-gateway/) (Blog AWS Networking & Content Delivery)
+ [Vereinfachen Sie die DNS-Verwaltung in einer Umgebung mit mehreren Konten mit Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/) (AWS-Sicherheitsblog)
+ [Arbeiten mit privaten Hosting-Zonen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) (Route 53 53-Dokumentation)
+ [Erste Schritte mit Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) (Route 53 53-Dokumentation)

# Richten Sie mithilfe EC2 von AWS automatisch UiPath RPA-Bots auf Amazon ein CloudFormation
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation"></a>

*Dr. Rahul Sharad Gaikwad und Tamilselvan P, Amazon Web Services*

## Zusammenfassung
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-summary"></a>

Dieses Muster erklärt, wie Sie Robotic Process Automation (RPA) -Bots auf Amazon Elastic Compute Cloud (Amazon EC2) -Instances bereitstellen können. Es verwendet eine [EC2 Image Builder Builder-Pipeline](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html), um ein benutzerdefiniertes Amazon Machine Image (AMI) zu erstellen. Ein AMI ist ein vorkonfiguriertes Image einer virtuellen Maschine (VM), das das Betriebssystem (OS) und die vorinstallierte Software zur Bereitstellung EC2 von Instanzen enthält. Dieses Muster verwendet CloudFormation AWS-Vorlagen, um die [UiPath Studio Community Edition](https://www.uipath.com/product/studio) auf dem benutzerdefinierten AMI zu installieren. UiPath ist ein RPA-Tool, mit dem Sie Roboter einrichten können, um Ihre Aufgaben zu automatisieren.

Im Rahmen dieser Lösung werden EC2 Windows-Instances mithilfe des Basis-AMI gestartet, und die UiPath Studio-Anwendung wird auf den Instances installiert. Das Muster verwendet das Microsoft System Preparation (Sysprep) -Tool, um die benutzerdefinierte Windows-Installation zu duplizieren. Danach werden die Host-Informationen entfernt und ein endgültiges AMI aus der Instance erstellt. Sie können die Instances dann bei Bedarf starten, indem Sie das endgültige AMI mit Ihren eigenen Benennungskonventionen und Monitoring-Setup verwenden.


| 
| 
| Hinweis: Dieses Muster enthält keine Informationen zur Verwendung von RPA-Bots. Diese Informationen finden Sie in der [UiPath Dokumentation](https://docs.uipath.com/). Sie können dieses Muster auch verwenden, um andere RPA-Bot-Anwendungen einzurichten, indem Sie die Installationsschritte an Ihre Anforderungen anpassen. | 
| --- |

Dieses Muster bietet die folgenden Automatisierungen und Vorteile:
+ Bereitstellung und gemeinsame Nutzung von Anwendungen: Sie können Amazon EC2 AMIs für die Anwendungsbereitstellung erstellen und diese über eine EC2 Image Builder Builder-Pipeline, die CloudFormation AWS-Vorlagen als Infrastructure-as-Code-Skripts (IaC) verwendet, für mehrere Konten gemeinsam nutzen.
+  EC2 Bereitstellung und Skalierung durch Amazon: CloudFormation IaC-Vorlagen bieten benutzerdefinierte Computernamenssequenzen und die Automatisierung von Active Directory-Verknüpfungen.
+ Beobachtbarkeit und Überwachung: Das Muster richtet CloudWatch Amazon-Dashboards ein, mit denen Sie EC2 Amazon-Metriken (wie CPU- und Festplattennutzung) überwachen können.
+ Vorteile von RPA für Ihr Unternehmen: RPA verbessert die Genauigkeit, da Roboter zugewiesene Aufgaben automatisch und konsistent ausführen können. RPA erhöht auch die Geschwindigkeit und Produktivität, da Abläufe, die keinen Mehrwert bieten, wegfallen und sich wiederholende Aktivitäten erledigt werden.

## Voraussetzungen und Einschränkungen
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-prereqs"></a>

**Voraussetzungen**
+ Ein aktives [AWS-Konto](https://aws.amazon.com/free/)
+ [AWS Identity and Access Management (IAM) -Berechtigungen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) für die Bereitstellung von Vorlagen CloudFormation 
+ [IAM-Richtlinien](https://docs.aws.amazon.com/imagebuilder/latest/userguide/cross-account-dist.html) zur Einrichtung einer kontenübergreifenden AMI-Verteilung mit Image Builder EC2 

## Architektur
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-architecture"></a>

![\[Zielarchitektur für die Einrichtung von RPA-Bots auf Amazon EC2\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/5555a62d-91d4-4e81-9961-ff89faedd6ad/images/1893d2d3-8912-4473-adf1-6633b5badcd9.png)


1. Der Administrator stellt das Basis-Windows-AMI in der `ec2-image-builder.yaml` Datei bereit und stellt den Stack in der CloudFormation Konsole bereit.

1. Der CloudFormation Stack stellt die EC2 Image Builder Builder-Pipeline bereit, die die folgenden Ressourcen umfasst:
   + `Ec2ImageInfraConfiguration`
   + `Ec2ImageComponent`
   + `Ec2ImageRecipe`
   + `Ec2AMI`

1. Die EC2 Image Builder Builder-Pipeline startet mithilfe des Basis-AMI eine temporäre EC2 Windows-Instanz und installiert die erforderlichen Komponenten (in diesem Fall UiPath Studio).

1. Der EC2 Image Builder entfernt alle Hostinformationen und erstellt ein AMI von Windows Server.

1. Sie aktualisieren die `ec2-provisioning yaml` Datei mit dem benutzerdefinierten AMI und starten eine Reihe von EC2 Instances, die Ihren Anforderungen entsprechen.

1. Sie stellen das Count-Makro mithilfe einer CloudFormation Vorlage bereit. Dieses Makro stellt eine **Count-Eigenschaft** für CloudFormation Ressourcen bereit, sodass Sie problemlos mehrere Ressourcen desselben Typs angeben können.

1. Sie aktualisieren den Namen des Makros in der CloudFormation `ec2-provisioning.yaml` Datei und stellen den Stapel bereit.

1. Der Administrator aktualisiert die `ec2-provisioning.yaml` Datei je nach Bedarf und startet den Stack.

1. Die Vorlage stellt EC2 Instanzen mit der UiPath Studio-Anwendung bereit.

## Tools
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/) unterstützt Sie bei der automatisierten und sicheren Modellierung und Verwaltung von Infrastrukturressourcen.
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) unterstützt Sie bei der Beobachtung und Überwachung von Ressourcen und Anwendungen auf AWS, vor Ort und in anderen Clouds.
+ [Amazon Elastic Compute Cloud (Amazon EC2](https://aws.amazon.com/ec2/)) bietet sichere und anpassbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [EC2 Image Builder](https://aws.amazon.com/image-builder/) vereinfacht das Erstellen, Testen und Bereitstellen von virtuellen Maschinen und Container-Images für die Verwendung auf AWS oder vor Ort.
+ [Amazon EventBridge](https://aws.amazon.com/eventbridge/) unterstützt Sie bei der Entwicklung ereignisgesteuerter Anwendungen in großem Umfang für AWS, bestehende Systeme oder Software-as-a-Service (SaaS) -Anwendungen.
+ Mit [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) können Sie den Zugriff auf AWS-Ressourcen sicher kontrollieren. Mit IAM können Sie Berechtigungen zentral verwalten, die steuern, auf welche AWS-Ressourcen Benutzer zugreifen können. Sie verwenden IAM, um zu steuern, wer authentifiziert (angemeldet) und autorisiert (Berechtigungen besitzt) ist, Ressourcen zu nutzen.
+ [AWS Lambda](https://aws.amazon.com/lambda/) ist ein serverloser, ereignisgesteuerter Rechenservice, mit dem Sie Code für praktisch jede Art von Anwendung oder Backend-Service ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Sie können Lambda-Funktionen von über 200 AWS-Services und SaaS-Anwendungen aus aufrufen und zahlen nur für das, was Sie tatsächlich nutzen.
+ [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) ist ein cloudbasierter Objektspeicherservice, mit dem Sie beliebige Datenmengen speichern, schützen und abrufen können.
+ [AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) unterstützt Systems Manager bei der Aktualisierung, Verwaltung und Konfiguration von EC2 Instances, Edge-Geräten, lokalen Servern und virtuellen Maschinen ()VMs.

**Code-Repositorys**

Der Code für dieses Muster ist im GitHub [UiPath RPA-Bot-Setup unter Verwendung CloudFormation des Repositorys](https://github.com/aws-samples/uipath-rpa-setup-ec2-windows-ami-cloudformation) verfügbar. Das Muster verwendet auch ein Makro, das im [ CloudFormation AWS-Macros-Repository](https://github.com/aws-cloudformation/aws-cloudformation-macros/tree/master/Count) verfügbar ist.

## Best Practices
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-best-practices"></a>
+ AWS veröffentlicht AMIs jeden Monat ein neues [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-ami-version-history.html). Diese enthalten die neuesten Betriebssystem-Patches, Treiber und Start-Agents. Wir empfehlen, dass Sie das neueste AMI verwenden, wenn Sie neue Instances starten oder wenn Sie Ihre eigenen benutzerdefinierten Images erstellen.
+ Wenden Sie bei der Image-Erstellung alle verfügbaren Windows- oder Linux-Sicherheitspatches an.

## Epen
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-epics"></a>

### Stellen Sie eine Image-Pipeline für das Basis-Image bereit
<a name="deploy-an-image-pipeline-for-the-base-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie eine EC2 Image Builder Builder-Pipeline ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Zeigen Sie die EC2 Image Builder Builder-Einstellungen an. | Die EC2 Image Builder Builder-Einstellungen umfassen die Infrastrukturkonfiguration, die Verteilungseinstellungen und die Einstellungen für Sicherheitsscans. So zeigen Sie die Einstellungen an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Es hat sich bewährt, dass Sie alle Aktualisierungen von EC2 Image Builder nur über die CloudFormation Vorlage vornehmen sollten. | AWS DevOps | 
| Sehen Sie sich die Image-Pipeline an. | So zeigen Sie die bereitgestellte Image-Pipeline an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Image Builder Builder-Protokolle anzeigen. | EC2 Image Builder Builder-Protokolle werden in CloudWatch Protokollgruppen zusammengefasst. So zeigen Sie die Protokolle an in CloudWatch:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)EC2 Image Builder Builder-Protokolle werden auch in einem S3-Bucket gespeichert. So zeigen Sie die Protokolle im Bucket an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Laden Sie die UiPath Datei in einen S3-Bucket hoch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 

### Stellen Sie das Count-Makro bereit und testen Sie es
<a name="deploy-and-test-the-count-macro"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie das Count-Makro bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Wenn du die Konsole verwenden möchtest, befolge die Anweisungen im vorherigen Epic oder in der [CloudFormation Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).  | DevOps Ingenieur | 
| Testen Sie das Count-Makro. | Um die Funktionen des Makros zu testen, versuchen Sie, die Beispielvorlage zu starten, die im Lieferumfang des Makros enthalten ist. <pre>aws cloudformation deploy \<br />    --stack-name Count-test \<br />    --template-file test.yaml \<br />    --capabilities CAPABILITY_IAM</pre> | DevOps Ingenieur | 

### Stellen Sie den CloudFormation Stack bereit, um Instanzen mit dem benutzerdefinierten Image bereitzustellen
<a name="deploy-the-cloudformation-stack-to-provision-instances-with-the-custom-image"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die EC2 Amazon-Bereitstellungsvorlage bereit. | So stellen Sie EC2 Image Pipeline bereit, indem Sie CloudFormation:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
|  EC2 Amazon-Einstellungen anzeigen. | Zu den EC2 Amazon-Einstellungen gehören Sicherheits-, Netzwerk-, Speicher-, Statusprüfungen, Überwachung und Tag-Konfigurationen. So sehen Sie sich diese Konfigurationen an:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Sehen Sie sich das CloudWatch Dashboard an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Nachdem Sie den Stack bereitgestellt haben, dauert es einige Zeit, bis das Dashboard mit Metriken gefüllt ist.Das Dashboard bietet die folgenden Metriken:`CPUUtilization`,`DiskUtilization`,`MemoryUtilization`,`NetworkIn`,`NetworkOut`,`StatusCheckFailed`. | AWS DevOps | 
| Zeigen Sie benutzerdefinierte Messwerte für die Speicher- und Festplattennutzung an.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Alarme zur Speicher- und Festplattennutzung anzeigen.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Überprüfen Sie die Snapshot-Lebenszyklusregel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 

### Löschen Sie die Umgebung (optional)
<a name="delete-the-environment-optional"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Lösche die Stapel. | Wenn Ihr PoC- oder Pilotprojekt abgeschlossen ist, empfehlen wir Ihnen, die von Ihnen erstellten Stacks zu löschen, um sicherzustellen, dass Ihnen diese Ressourcen nicht in Rechnung gestellt werden.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Der Vorgang zum Löschen des Stapels kann nicht gestoppt werden, nachdem er begonnen hat. Der Stack wird in den Status `DELETE_IN_PROGRESS` versetzt.Schlägt das Löschen fehl, befindet sich der Stapel im `DELETE_FAILED` Status. Lösungen finden Sie unter Fehler beim [Löschen des Stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-delete-stack-fails) in der AWS-Dokumentation CloudFormation zur Fehlerbehebung.Informationen zum Schutz von Stacks vor versehentlichem Löschen finden Sie in der CloudFormation AWS-Dokumentation unter [Schützen eines Stacks vor dem Löschen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html). | AWS DevOps | 

## Fehlerbehebung
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Wenn Sie die EC2 Amazon-Bereitstellungsvorlage bereitstellen, erhalten Sie die folgende Fehlermeldung: Falsch *formatierte Antwort von der Transformation 123xxxx: :Count erhalten*. | Dies ist ein bekanntes Problem. (Weitere Informationen zur benutzerdefinierten Lösung und PR finden Sie im [ CloudFormation AWS-Makros-Repository](https://github.com/aws-cloudformation/aws-cloudformation-macros/pull/20).)Um dieses Problem zu beheben, öffnen Sie die AWS Lambda Lambda-Konsole und aktualisieren Sie `index.py` mit den Inhalten aus dem [GitHub Repository](https://raw.githubusercontent.com/aws-cloudformation/aws-cloudformation-macros/f1629c96477dcd87278814d4063c37877602c0c8/Count/src/index.py).  | 

## Zugehörige Ressourcen
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-resources"></a>

**GitHub Repositorys**
+ [UiPath RPA-Bot-Setup mit CloudFormation](https://github.com/aws-samples/uipath-rpa-setup-ec2-windows-ami-cloudformation)
+ [Makro zählen CloudFormation ](https://github.com/aws-cloudformation/aws-cloudformation-macros/tree/master/Count)

**AWS-Referenzen**
+ [Einen Stack auf der CloudFormation AWS-Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) erstellen (CloudFormation Dokumentation)
+ [Fehlerbehebung CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation Dokumentation)
+ [Speicher- und Festplattenmetriken für EC2 Amazon-Instances überwachen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html) ( EC2 Amazon-Dokumentation)
+ [Wie kann ich den CloudWatch Agenten verwenden, um Metriken für Performance Monitor auf einem Windows-Server anzuzeigen?](https://repost.aws/knowledge-center/cloudwatch-performance-monitor-windows) (AWS re:POST-Artikel)

**Zusätzliche Referenzen**
+ [UiPath Dokumentation](https://docs.uipath.com/)
+ [Den Hostnamen in einem SysPreped AMI festlegen](https://blog.brianbeach.com/2014/07/setting-hostname-in-syspreped-ami.html) (Blogbeitrag von Brian Beach)
+ [Wie lasse ich Cloudformation eine Vorlage mithilfe eines Makros erneut verarbeiten, wenn sich die Parameter ändern?](https://stackoverflow.com/questions/59828989/how-do-i-make-cloudformation-reprocess-a-template-using-a-macro-when-parameters) (Stack Overflow)

# Richten Sie eine hochverfügbare PeopleSoft Architektur auf AWS ein
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws"></a>

*Ramanathan Muralidhar, Amazon Web Services*

## Zusammenfassung
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-summary"></a>

Wenn Sie Ihre PeopleSoft Workloads zu AWS migrieren, ist Resilienz ein wichtiges Ziel. Es stellt sicher, dass Ihre PeopleSoft Anwendung immer hochverfügbar ist und nach Ausfällen schnell wiederhergestellt werden kann.

Dieses Muster bietet eine Architektur für Ihre PeopleSoft Anwendungen auf AWS, um Hochverfügbarkeit (HA) auf Netzwerk-, Anwendungs- und Datenbankebene sicherzustellen. Es verwendet eine [Amazon Relational Database Service (Amazon RDS)](https://aws.amazon.com/rds/) für Oracle- oder Amazon RDS for SQL Server Server-Datenbank für die Datenbankebene. Diese Architektur umfasst auch AWS-Services wie [Amazon Route 53](https://aws.amazon.com/route53/), [Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/ec2/) Linux-Instances, [Amazon Elastic Block Storage (Amazon EBS), Amazon Elastic File System (Amazon EFS](https://aws.amazon.com/ebs/)[)](https://aws.amazon.com/efs/) und einen [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer) und ist skalierbar.

[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/) bietet eine Reihe von Tools und Anwendungen für das Personalmanagement und andere Geschäftsabläufe.

## Voraussetzungen und Einschränkungen
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Eine PeopleSoft Umgebung mit den erforderlichen Lizenzen für die Einrichtung auf AWS
+ Eine in Ihrem AWS-Konto eingerichtete Virtual Private Cloud (VPC) mit den folgenden Ressourcen:
  + Mindestens zwei Availability Zones
  + Ein öffentliches Subnetz und drei private Subnetze in jeder Availability Zone
  + Ein NAT-Gateway und ein Internet-Gateway
  + Routing-Tabellen für jedes Subnetz zur Weiterleitung des Datenverkehrs
  + Netzwerkzugriffskontrolllisten (Netzwerk ACLs) und Sicherheitsgruppen, die so definiert wurden, dass die Sicherheit der PeopleSoft Anwendung gemäß den Standards Ihres Unternehmens gewährleistet ist

**Einschränkungen**
+ Dieses Muster bietet eine Hochverfügbarkeitslösung (HA). Es unterstützt keine Notfallwiederherstellungsszenarien (DR). In dem seltenen Fall, dass die gesamte AWS-Region für die HA-Implementierung ausfällt, ist die Anwendung nicht mehr verfügbar.

**Produktversionen**
+ PeopleSoft Anwendungen, auf denen PeopleTools 8.52 und höher ausgeführt wird

## Architektur
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-architecture"></a>

**Zielarchitektur**

Ausfallzeiten oder Ausfälle Ihrer PeopleSoft Produktionsanwendung beeinträchtigen die Verfügbarkeit der Anwendung und führen zu erheblichen Störungen Ihres Geschäftsbetriebs.

Wir empfehlen Ihnen, Ihre PeopleSoft Produktionsanwendung so zu gestalten, dass sie stets hochverfügbar ist. Sie können dies erreichen, indem Sie einzelne Fehlerquellen eliminieren, zuverlässige Crossover- oder Failover-Points hinzufügen und Fehler erkennen. Das folgende Diagramm zeigt eine HA-Architektur für PeopleSoft auf AWS.

![\[Hochverfügbare Architektur für PeopleSoft auf AWS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/0db96376-dadb-4545-b130-ebbe64acd4e9/images/5d585a8e-320a-495d-a049-97171633e90f.png)


Diese Architekturbereitstellung verwendet Amazon RDS for Oracle als PeopleSoft Datenbank und EC2-Instances, die auf Red Hat Enterprise Linux (RHEL) ausgeführt werden. Sie können Amazon RDS for SQL Server auch als Peoplesoft-Datenbank verwenden.

Diese Architektur enthält die folgenden Komponenten: 
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) wird als Domain Name Server (DNS) für die Weiterleitung von Anfragen aus dem Internet an die PeopleSoft Anwendung verwendet.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) schützt Sie vor gängigen Web-Exploits und Bots, die die Verfügbarkeit beeinträchtigen, die Sicherheit gefährden oder übermäßig viele Ressourcen verbrauchen können. [AWS Shield Advanced](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html) (nicht abgebildet) bietet einen viel umfassenderen Schutz.
+ Ein [Application Load Balancer verteilt](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) den HTTP- und HTTPS-Verkehr mit erweitertem Anforderungsrouting, das auf die Webserver ausgerichtet ist.
+ Die Webserver, Anwendungsserver, Process Scheduler-Server und Elasticsearch-Server, die die PeopleSoft Anwendung unterstützen, werden in mehreren Availability Zones ausgeführt und verwenden [Amazon EC2](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) Auto Scaling.
+ Die von der PeopleSoft Anwendung verwendete Datenbank läuft auf [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) in einer Multi-AZ-Konfiguration.
+ Die von der PeopleSoft Anwendung verwendete Dateifreigabe ist in [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) konfiguriert und wird für den instanzübergreifenden Zugriff auf Dateien verwendet.
+ [Amazon Machine Images (AMIs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)) werden von Amazon EC2 Auto Scaling verwendet, um sicherzustellen, dass PeopleSoft Komponenten bei Bedarf schnell geklont werden.
+ Die [NAT-Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) verbinden Instances in einem privaten Subnetz mit Diensten außerhalb Ihrer VPC und stellen sicher, dass externe Dienste keine Verbindung mit diesen Instances initiieren können.
+ Das [Internet-Gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) ist eine horizontal skalierte, redundante und hochverfügbare VPC-Komponente, die die Kommunikation zwischen Ihrer VPC und dem Internet ermöglicht.
+ Die Bastion-Hosts im öffentlichen Subnetz ermöglichen den Zugriff auf die Server im privaten Subnetz über ein externes Netzwerk, z. B. das Internet oder ein lokales Netzwerk. Die Bastion-Hosts bieten kontrollierten und sicheren Zugriff auf die Server in den privaten Subnetzen.

**Einzelheiten zur Architektur**

Die PeopleSoft Datenbank befindet sich in einer Amazon RDS-Datenbank für Oracle (oder Amazon RDS for SQL Server) in einer Multi-AZ-Konfiguration. Die [Amazon RDS Multi-AZ-Funktion](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) repliziert Datenbankaktualisierungen in zwei Availability Zones, um die Haltbarkeit und Verfügbarkeit zu erhöhen. Amazon RDS führt bei geplanten Wartungsarbeiten und ungeplanten Störungen automatisch einen Failover zur Standby-Datenbank durch.

Das PeopleSoft Web und die Middle Tier sind auf EC2-Instances installiert. Diese Instances sind über mehrere Availability Zones verteilt und durch eine [Auto Scaling Scaling-Gruppe](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) verknüpft. Dadurch wird sichergestellt, dass diese Komponenten immer hochverfügbar sind. Es wird eine Mindestanzahl erforderlicher Instanzen verwaltet, um sicherzustellen, dass die Anwendung immer verfügbar ist und bei Bedarf skaliert werden kann.

Wir empfehlen, dass Sie einen EC2-Instance-Typ der aktuellen Generation für die OEM EC2-Instances verwenden. Instance-Typen der aktuellen Generation, wie [Instances, die auf dem AWS Nitro System basieren](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances), unterstützen virtuelle Hardware-Maschinen (HVMs). Die HVM AMIs sind erforderlich, um die Vorteile [erweiterter Netzwerke](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html) nutzen zu können, und sie bieten auch mehr Sicherheit. Die EC2-Instances, die Teil jeder Auto Scaling Scaling-Gruppe sind, verwenden ihr eigenes AMI, wenn sie Instances ersetzen oder hochskalieren. Wir empfehlen, dass Sie die EC2-Instance-Typen auf der Grundlage der Last, die Ihre PeopleSoft Anwendung bewältigen soll, und der von Oracle empfohlenen Mindestwerte für Ihre PeopleSoft Anwendung und PeopleTools Version auswählen. Weitere Informationen zu den Hardware- und Softwareanforderungen finden Sie auf der [Oracle-Support-Website](https://support.oracle.com).

 PeopleSoft Web und Middle Tier teilen sich einen Amazon EFS-Mount, um Berichte, Datendateien und (falls erforderlich) das `PS_HOME` Verzeichnis gemeinsam zu nutzen. Amazon EFS ist aus Leistungs- und Kostengründen mit Mount-Zielen in jeder Availability Zone konfiguriert.

Ein Application Load Balancer wird bereitgestellt, um den Datenverkehr zu unterstützen, der auf die PeopleSoft Anwendung zugreift, und für den Lastenausgleich des Datenverkehrs zwischen den Webservern in verschiedenen Availability Zones. Ein Application Load Balancer ist ein Netzwerkgerät, das HA in mindestens zwei Availability Zones bereitstellt. Die Webserver verteilen den Datenverkehr mithilfe einer Lastenausgleichskonfiguration auf verschiedene Anwendungsserver. Der Lastenausgleich zwischen dem Webserver und dem Anwendungsserver stellt sicher, dass die Last gleichmäßig auf die Instanzen verteilt wird, und hilft, Engpässe und Serviceunterbrechungen aufgrund überlasteter Instanzen zu vermeiden.

Amazon Route 53 wird als DNS-Service verwendet, um den Datenverkehr aus dem Internet an den Application Load Balancer weiterzuleiten. Route 53 ist ein hochverfügbarer und skalierbarer DNS-Web-Service.

**HA-Einzelheiten**
+ Datenbanken: Die Multi-AZ-Funktion von Amazon RDS betreibt zwei Datenbanken in mehreren Availability Zones mit synchroner Replikation. Dadurch entsteht eine hochverfügbare Umgebung mit automatischem Failover. Amazon RDS verfügt über eine Erkennung von Failover-Ereignissen und leitet ein automatisches Failover ein, wenn diese Ereignisse auftreten. Sie können auch ein manuelles Failover über die Amazon RDS-API einleiten. Eine ausführliche Erklärung finden Sie im Blogbeitrag [Amazon RDS Under The Hood: Multi-AZ](https://aws.amazon.com/blogs/database/amazon-rds-under-the-hood-multi-az/). Der Failover ist nahtlos und die Anwendung stellt in diesem Fall automatisch wieder eine Verbindung zur Datenbank her. Alle Process Scheduler-Jobs während des Failovers erzeugen jedoch Fehler und müssen erneut eingereicht werden.
+ PeopleSoft Anwendungsserver: Die Anwendungsserver sind auf mehrere Availability Zones verteilt und für sie wurde eine Auto Scaling Scaling-Gruppe definiert. Wenn eine Instance ausfällt, ersetzt die Auto Scaling Scaling-Gruppe sie sofort durch eine fehlerfreie Instance, die aus dem AMI der Anwendungsservervorlage geklont wurde. Insbesondere ist *Jolt-Pooling* aktiviert. Wenn also eine Anwendungsserver-Instance ausfällt, werden die Sitzungen automatisch auf einen anderen Anwendungsserver umgeleitet, und die Auto Scaling Scaling-Gruppe startet automatisch eine weitere Instance, startet den Anwendungsserver und registriert ihn im Amazon EFS-Mount. Der neu erstellte Anwendungsserver wird mithilfe des `PSSTRSETUP.SH` Skripts auf den Webservern automatisch zu den Webservern hinzugefügt. Dadurch wird sichergestellt, dass der Anwendungsserver immer hochverfügbar ist und sich nach einem Ausfall schnell erholt.
+ Prozessplaner: Die Process Scheduler-Server sind auf mehrere Availability Zones verteilt und für sie wurde eine Auto Scaling-Gruppe definiert. Wenn eine Instance ausfällt, ersetzt die Auto Scaling Scaling-Gruppe sie sofort durch eine fehlerfreie Instance, die aus dem AMI der Process Scheduler-Servervorlage geklont wurde. Insbesondere wenn eine Prozessplaner-Instanz ausfällt, startet die Auto Scaling Scaling-Gruppe automatisch eine weitere Instanz und startet den Prozessplaner. Alle Jobs, die ausgeführt wurden, als die Instanz ausfiel, müssen erneut eingereicht werden. Dadurch wird sichergestellt, dass der Prozessplaner immer hochverfügbar ist und sich nach einem Ausfall schnell erholt.
+ Elasticsearch-Server: Für die Elasticsearch-Server wurde eine Auto Scaling Scaling-Gruppe definiert. Wenn eine Instance ausfällt, ersetzt die Auto Scaling Scaling-Gruppe sie sofort durch eine fehlerfreie Instance, die aus dem AMI der Elasticsearch-Servervorlage geklont wird. Insbesondere wenn eine Elasticsearch-Instance ausfällt, erkennt der Application Load Balancer, der Anfragen an sie sendet, den Fehler und sendet keinen Traffic mehr an sie. Die Auto Scaling Scaling-Gruppe startet automatisch eine weitere Instance und ruft die Elasticsearch-Instance auf. Wenn die Elasticsearch-Instance wieder verfügbar ist, erkennt der Application Load Balancer, dass sie fehlerfrei ist, und sendet erneut Anfragen an sie. Dadurch wird sichergestellt, dass der Elasticsearch-Server immer hochverfügbar ist und sich nach einem Ausfall schnell erholt.
+ Webserver: Für die Webserver ist eine Auto Scaling Scaling-Gruppe definiert. Wenn eine Instance ausfällt, ersetzt die Auto Scaling Scaling-Gruppe sie sofort durch eine fehlerfreie Instance, die aus dem AMI der Webservervorlage geklont wurde. Insbesondere wenn eine Webserver-Instance ausfällt, erkennt der Application Load Balancer, der Anfragen an sie weiterleitet, den Fehler und beendet das Senden von Datenverkehr an sie. Die Auto Scaling Scaling-Gruppe startet automatisch eine weitere Instance und ruft die Webserver-Instance auf. Wenn die Webserver-Instance wieder verfügbar ist, erkennt der Application Load Balancer, dass sie fehlerfrei ist, und sendet erneut Anfragen an sie. Dadurch wird sichergestellt, dass der Webserver immer hochverfügbar ist und sich nach einem Ausfall schnell erholt.

## Tools
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-tools"></a>

**AWS-Services**
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) verteilen den eingehenden Anwendungsdatenverkehr auf mehrere Ziele, z. B. EC2-Instances, in mehreren Availability Zones.
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) bietet Speichervolumes auf Blockebene zur Verwendung mit Amazon Elastic Compute Cloud (Amazon EC2) -Instances.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) unterstützt Sie bei der Erstellung und Konfiguration gemeinsam genutzter Dateisysteme in der AWS-Cloud.
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) unterstützt Sie bei der Einrichtung, dem Betrieb und der Skalierung einer relationalen Datenbank in der AWS-Cloud.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.

## Best Practices
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-best-practices"></a>

**Bewährte Methoden für den Betrieb**
+ Wenn Sie PeopleSoft auf AWS arbeiten, verwenden Sie Route 53, um den Datenverkehr aus dem Internet und lokal weiterzuleiten. Verwenden Sie die [Failover-Option](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html), um den Datenverkehr zur Disaster Recovery (DR) -Site umzuleiten, falls die primäre DB-Instance nicht verfügbar ist.
+ Verwenden Sie immer einen Application Load Balancer vor der PeopleSoft Umgebung. Dadurch wird sichergestellt, dass der Datenverkehr auf sichere Weise auf die Webserver verteilt wird.
+ Stellen Sie in den Zielgruppeneinstellungen des Application Load Balancer sicher, dass [Stickiness mit einem vom Load Balancer generierten Cookie aktiviert ist](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html).
**Anmerkung**  
Möglicherweise müssen Sie ein anwendungsbasiertes Cookie verwenden, wenn Sie externes Single Sign-On (SSO) verwenden. Dadurch wird sichergestellt, dass die Verbindungen zwischen den Webservern und Anwendungsservern konsistent sind.
+ Für eine PeopleSoft Produktionsanwendung muss das Leerlauf-Timeout des Application Load Balancer mit den Einstellungen in dem von Ihnen verwendeten Webprofil übereinstimmen. Dadurch wird verhindert, dass Benutzersitzungen auf der Load Balancer-Ebene ablaufen.
+ Legen Sie für eine PeopleSoft Produktionsanwendung den Wert für die [Anzahl der Wiederverwendungsvorgänge](https://docs.oracle.com/cd/F28299_01/pt857pbr3/eng/pt/tsvt/concept_PSAPPSRVOptions-c07f06.html?pli=ul_d96e90_tsvt) auf dem Anwendungsserver auf einen Wert fest, der Speicherlecks minimiert.
+ Wenn Sie eine Amazon RDS-Datenbank für Ihre PeopleSoft Produktionsanwendung verwenden, wie in diesem Muster beschrieben, führen Sie sie [für hohe Verfügbarkeit im Multi-AZ-Format](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) aus.
+ Wenn Ihre Datenbank auf einer EC2-Instance für Ihre PeopleSoft Produktionsanwendung läuft, stellen Sie sicher, dass eine [Standby-Datenbank in einer anderen Availability Zone läuft, um Hochverfügbarkeit](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/ec2-oracle.html#ec2-oracle-ha) zu gewährleisten.
+ Stellen Sie für DR sicher, dass Ihre Amazon RDS-Datenbank oder EC2-Instance über einen Standby-Modus verfügt, der in einer von der Produktionsdatenbank getrennten AWS-Region konfiguriert ist. Dadurch wird sichergestellt, dass Sie im Falle eines Notfalls in der Region die Anwendung auf eine andere Region umstellen können.
+ Verwenden Sie für DR [Amazon Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/), um Komponenten auf Anwendungsebene in einer von den Produktionskomponenten getrennten Region einzurichten. Dadurch wird sichergestellt, dass Sie bei einem Notfall in der Region die Anwendung auf eine andere Region umstellen können.
+ Verwenden Sie Amazon EFS (für moderate I/O Anforderungen) oder [Amazon FSx](https://aws.amazon.com/fsx/) (für hohe I/O Anforderungen), um Ihre PeopleSoft Berichte, Anlagen und Datendateien zu speichern. Dadurch wird sichergestellt, dass der Inhalt an einem zentralen Ort gespeichert wird und von überall in der Infrastruktur abgerufen werden kann.
+ Verwenden Sie [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) (einfach und detailliert), um die AWS-Cloud-Ressourcen, die Ihre PeopleSoft Anwendung verwendet, nahezu in Echtzeit zu überwachen. Dadurch wird sichergestellt, dass Sie sofort über Probleme informiert werden und diese schnell beheben können, bevor sie die Verfügbarkeit der Umgebung beeinträchtigen.
+ Wenn Sie eine Amazon RDS-Datenbank als Datenbank verwenden, verwenden Sie [Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html). PeopleSoft Diese Funktion bietet Zugriff auf über 50 Messwerte, darunter CPU, Arbeitsspeicher und DateisystemI/O, and disk I/O.
+ Verwenden Sie [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html), um API-Aufrufe auf den AWS-Ressourcen zu überwachen, die Ihre PeopleSoft Anwendung verwendet. Dies hilft Ihnen bei der Durchführung von Sicherheitsanalysen, der Nachverfolgung von Ressourcenänderungen und der Überprüfung der Einhaltung von Vorschriften.

**Bewährte Methoden für die Gewährleistung der Sicherheit**
+ [Verwenden Sie AWS WAF, um Ihre PeopleSoft Anwendung vor häufigen Exploits wie SQL-Injection oder Cross-Site Scripting (XSS) zu schützen.](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) Erwägen Sie die Nutzung von [AWS Shield Advanced](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html) für maßgeschneiderte Erkennungs- und Schadensbegrenzungsservices.
+ Fügen Sie dem Application Load Balancer eine Regel hinzu, um den Datenverkehr automatisch von HTTP zu HTTPS umzuleiten, um Ihre PeopleSoft Anwendung zu schützen.
+ Richten Sie eine separate Sicherheitsgruppe für den Application Load Balancer ein. Diese Sicherheitsgruppe sollte nur HTTPS/HTTP eingehenden und keinen ausgehenden Datenverkehr zulassen. Dadurch wird sichergestellt, dass nur beabsichtigter Datenverkehr zulässig ist, und trägt zur Sicherheit Ihrer Anwendung bei.
+ Verwenden Sie private Subnetze für die Anwendungsserver, Webserver und die Datenbank und verwenden Sie [NAT-Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) für ausgehenden Internetverkehr. Dadurch wird sichergestellt, dass die Server, die die Anwendung unterstützen, nicht öffentlich erreichbar sind, und gleichzeitig wird der öffentliche Zugriff nur den Servern gewährt, die ihn benötigen.
+ Verwenden Sie verschiedene Optionen VPCs für den Betrieb Ihrer PeopleSoft Produktions- und Nichtproduktionsumgebungen. Verwenden Sie [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/), [VPC-Peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) ACLs, [Netzwerk](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) und [Sicherheitsgruppen](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html), um den Datenfluss zwischen den [VPC](https://aws.amazon.com/vpc/) und, falls erforderlich, Ihrem lokalen Rechenzentrum zu steuern.
+ Folgen Sie dem Prinzip der geringsten Rechte. Gewähren Sie den Zugriff auf die von der PeopleSoft Anwendung verwendeten AWS-Ressourcen nur Benutzern, die ihn unbedingt benötigen. Gewähren Sie nur die Mindestberechtigungen, die zur Ausführung einer Aufgabe erforderlich sind. Weitere Informationen finden Sie in der [Sicherheitssäule](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_least_privileges.html) des AWS Well-Architected Framework.
+ Verwenden Sie nach Möglichkeit [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html), um auf die EC2-Instances zuzugreifen, die die PeopleSoft Anwendung verwendet.

**Bewährte Methoden zur Zuverlässigkeit**
+ Wenn Sie einen Application Load Balancer verwenden, registrieren Sie ein einzelnes Ziel für jede aktivierte Availability Zone. Dadurch ist der Load Balancer am effektivsten.
+ Wir empfehlen, dass Sie URLs für jede PeopleSoft Produktionsumgebung drei unterschiedliche URLs verwenden: eine URL für den Zugriff auf die Anwendung, eine für den Integration Broker und eine für die Anzeige von Berichten. Wenn möglich, sollte jede URL über eigene dedizierte Webserver und Anwendungsserver verfügen. Dieses Design trägt dazu bei, Ihre PeopleSoft Anwendung sicherer zu machen, da jede URL über eine eigene Funktionalität und einen kontrollierten Zugriff verfügt. Es minimiert auch den Umfang der Auswirkungen, wenn die zugrunde liegenden Dienste ausfallen.
+ Wir empfehlen Ihnen, [Integritätsprüfungen für die Load Balancer-Zielgruppen](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) für Ihre PeopleSoft Anwendung zu konfigurieren. Die Integritätsprüfungen sollten auf den Webservern und nicht auf den EC2-Instances durchgeführt werden, auf denen diese Server ausgeführt werden. Dadurch wird sichergestellt, dass der Application Load Balancer diese Informationen korrekt wiedergibt, wenn der Webserver abstürzt oder die EC2-Instance, die den Webserver hostet, ausfällt.
+ Für eine PeopleSoft Produktionsanwendung empfehlen wir, die Webserver auf mindestens drei Availability Zones zu verteilen. Dadurch wird sichergestellt, dass die PeopleSoft Anwendung immer hochverfügbar ist, auch wenn eine der Availability Zones ausfällt.
+ Für eine PeopleSoft Produktionsanwendung aktivieren Sie Jolt Pooling ()`joltPooling=true`. Dadurch wird sichergestellt, dass Ihre Anwendung ein Failover auf einen anderen Anwendungsserver durchführt, falls ein Server zu Patching-Zwecken oder aufgrund eines VM-Fehlers ausgefallen ist.
+ Legen Sie für eine PeopleSoft Produktionsanwendung den Wert 1 fest`DynamicConfigReload `. Diese Einstellung wird in PeopleTools Version 8.52 und höher unterstützt. Sie fügt dem Webserver dynamisch neue Anwendungsserver hinzu, ohne die Server neu zu starten.
+ Um Ausfallzeiten beim Anwenden von PeopleTools Patches zu minimieren, verwenden Sie die blue/green Bereitstellungsmethode für Ihre Auto Scaling Scaling-Gruppenstartkonfigurationen für die Web- und Anwendungsserver. Weitere Informationen finden Sie im [AWS-Whitepaper „Überblick über Bereitstellungsoptionen](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/bluegreen-deployments.html)“.
+ Verwenden Sie [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html), um Ihre PeopleSoft Anwendung auf AWS zu sichern. AWS Backup ist ein kostengünstiger, vollständig verwalteter und richtlinienbasierter Service, der den Datenschutz in großem Maßstab vereinfacht.

**Bewährte Methoden zur Leistung**
+ Beenden Sie das SSL am Application Load Balancer, um eine optimale Leistung der PeopleSoft Umgebung zu erzielen, es sei denn, Ihr Unternehmen benötigt verschlüsselten Datenverkehr in der gesamten Umgebung.
+ Erstellen Sie [VPC-Endpunkte mit Schnittstellen](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) für AWS-Services wie [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html), [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)sodass der Datenverkehr immer intern ist. Das ist kostengünstig und trägt zur Sicherheit Ihrer Anwendung bei.

**Bewährte Methoden zur Kostenoptimierung**
+ Kennzeichnen Sie alle Ressourcen, die von Ihrer PeopleSoft Umgebung verwendet werden, und aktivieren Sie [Tags zur Kostenzuweisung](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html). Diese Tags helfen Ihnen dabei, Ihre Ressourcenkosten einzusehen und zu verwalten.
+ Richten Sie für eine PeopleSoft Produktionsanwendung Auto Scaling Scaling-Gruppen für die Webserver und die Anwendungsserver ein. Dadurch wird eine minimale Anzahl von Web- und Anwendungsservern zur Unterstützung Ihrer Anwendung bereitgestellt. Sie können [Auto Scaling Scaling-Gruppenrichtlinien](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html) verwenden, um die Server nach Bedarf hoch- und herunterzuskalieren.
+ Verwenden Sie [Fakturierungsalarme](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html), um Benachrichtigungen zu erhalten, wenn die Kosten einen von Ihnen angegebenen Budgetschwellenwert überschreiten.

**Bewährte Praktiken im Bereich Nachhaltigkeit**
+ Verwenden Sie [Infrastructure as Code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) zur Wartung Ihrer PeopleSoft Umgebungen. Auf diese Weise können Sie konsistente Umgebungen aufbauen und die Kontrolle über Änderungen behalten.

## Epen
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-epics"></a>

### Migrieren Sie Ihre PeopleSoft Datenbank zu Amazon RDS
<a name="migrate-your-peoplesoft-database-to-amazon-rds"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen einer DB-Subnetzgruppe | Wählen Sie in der [Amazon RDS-Konsole](https://console.aws.amazon.com/rds/) im Navigationsbereich **Subnetzgruppen** aus und erstellen Sie dann eine Amazon RDS-DB-Subnetzgruppe mit Subnetzen in mehreren Availability Zones. Dies ist erforderlich, damit die Amazon RDS-Datenbank in einer Multi-AZ-Konfiguration ausgeführt werden kann. | Cloud-Administrator | 
| Erstellen Sie die Amazon RDS-Datenbank. | Erstellen Sie eine Amazon RDS-Datenbank in einer Availability Zone der AWS-Region, die Sie für die PeopleSoft HA-Umgebung ausgewählt haben. Achten Sie beim Erstellen der Amazon RDS-Datenbank darauf, die Multi-AZ-Option (**Standby-Instance erstellen**) und die Datenbank-Subnetzgruppe auszuwählen, die Sie im vorherigen Schritt erstellt haben. Weitere Informationen finden Sie in der [Dokumentation zu Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html). | Cloud-Administrator, Oracle-Datenbankadministrator | 
| Migrieren Sie Ihre PeopleSoft Datenbank zu Amazon RDS. | Migrieren Sie Ihre bestehende PeopleSoft Datenbank mithilfe des AWS Database Migration Service (AWS DMS) in die Amazon RDS-Datenbank. Weitere Informationen finden Sie in der [AWS-DMS-Dokumentation](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) und im AWS-Blogbeitrag [Migration von Oracle-Datenbanken mit nahezu null Ausfallzeiten](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/) mithilfe von AWS DMS. | Cloud-Administrator PeopleSoft , DBA | 

### Richten Sie Ihr Amazon EFS-Dateisystem ein
<a name="set-up-your-amazon-efs-file-system"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen eines Dateisystems. | Erstellen Sie auf der [Amazon EFS-Konsole](https://console.aws.amazon.com/efs/) ein Dateisystem und mounten Sie Ziele für jede Availability Zone. Anweisungen finden Sie in der [Amazon EFS-Dokumentation](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html#creating-using-fs-part1-console). Wenn das Dateisystem erstellt wurde, notieren Sie sich seinen DNS-Namen. Sie werden diese Informationen verwenden, wenn Sie das Dateisystem mounten. | Cloud-Administrator | 

### Richten Sie Ihre PeopleSoft Anwendung und Ihr Dateisystem ein
<a name="set-up-your-peoplesoft-application-and-file-system"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starten einer EC2-Instance. | Starten Sie eine EC2-Instance für Ihre PeopleSoft Anwendung. Anweisungen finden Sie in der [Amazon EC2 EC2-Dokumentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html#liw-quickly-launch-instance).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator, PeopleSoft Administrator | 
|  PeopleSoft Auf der Instanz installieren. | Installieren Sie Ihre PeopleSoft Anwendung und PeopleTools auf der EC2-Instance, die Sie erstellt haben. Anweisungen finden Sie in der [Oracle-Dokumentation](https://docs.oracle.com). | Cloud-Administrator, PeopleSoft Administrator | 
| Erstellen Sie den Anwendungsserver. | Erstellen Sie den Anwendungsserver für die AMI-Vorlage und stellen Sie sicher, dass er erfolgreich eine Verbindung zur Amazon RDS-Datenbank herstellt. | Cloud-Administrator, PeopleSoft Administrator | 
| Mounten Sie das Amazon-EFS-Dateisystem ein. | Melden Sie sich bei der EC2-Instance als Root-Benutzer an und führen Sie die folgenden Befehle aus, um das Amazon EFS-Dateisystem in einem Ordner namens `PSFTMNT` Server zu mounten.<pre>sudo su –<br />mkdir /psftmnt<br />cat /etc/fstab</pre>Hängen Sie die folgende Zeile an die `/etc/fstab` Datei an. Verwenden Sie den DNS-Namen, den Sie sich bei der Erstellung des Dateisystems notiert haben.<pre>fs-09e064308f1145388.efs.us-east-1.amazonaws.com:/ /psftmnt nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0<br />mount -a</pre> | Cloud-Administrator, PeopleSoft Administrator | 
| Überprüfen Sie die Berechtigungen. | Stellen Sie sicher, dass der `PSFTMNT` Ordner über die richtigen Berechtigungen verfügt, damit der PeopleSoft Benutzer ordnungsgemäß darauf zugreifen kann. | Cloud-Administrator, PeopleSoft Administrator | 
| Erstellen Sie zusätzliche Instanzen. | Wiederhole die vorherigen Schritte in diesem Epos, um Template-Instances für den Process Scheduler, den Webserver und den Elasticsearch-Server zu erstellen. Nennen Sie diese Instanzen `PRCS_TEMPLATE``WEB_TEMPLATE`, und. `SRCH_TEMPLATE` Legen Sie für den Webserver `joltPooling=true`**** und fest`DynamicConfigReload=1`. | Cloud-Administrator, PeopleSoft Administrator | 

### Erstellen Sie Skripts zum Einrichten von Servern
<a name="create-scripts-to-set-up-servers"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Skript zur Installation des Anwendungsservers. | Erstellen Sie in der Amazon EC2 `APP_TEMPLATE` EC2-Instance als PeopleSoft Benutzer das folgende Skript. Benennen Sie es `appstart.sh` und platzieren Sie es im `PS_HOME` Verzeichnis. Sie verwenden dieses Skript, um den Anwendungsserver aufzurufen und den Servernamen auf dem Amazon EFS-Mount aufzuzeichnen.<pre>#!/bin/ksh<br />. /usr/homes/hcmdemo/.profile.<br />psadmin -c configure -d HCMDEMO<br />psadmin -c parallelboot -d HCMDEMO<br />touch /psftmnt/`echo $HOSTNAME`</pre> | PeopleSoft Administrator | 
| Erstellen Sie ein Skript zur Installation des Process Scheduler-Servers. | Erstellen Sie in der Amazon EC2 `PRCS_TEMPLATE` EC2-Instance als PeopleSoft Benutzer das folgende Skript. Benennen Sie es `prcsstart.sh` und platzieren Sie es im `PS_HOME` Verzeichnis. Sie werden dieses Skript verwenden, um den Process Scheduler-Server aufzurufen.<pre>#!/bin/ksh<br />. /usr/homes/hcmdemo/. profile<br />/* The following line ensures that the process scheduler always has a unique name during replacement or scaling activity. */ <br />sed -i "s/.*PrcsServerName.*/`hostname -I | awk -F. '{print "PrcsServerName=PSUNX"$3$4}'`/" $HOME/appserv/prcs/*/psprcs.cfg<br />psadmin -p configure -d HCMDEMO<br />psadmin -p start -d HCMDEMO</pre> | PeopleSoft Administrator | 
| Erstellen Sie ein Skript zur Installation des Elasticsearch-Servers. | Erstellen Sie in der Amazon EC2 `SRCH_TEMPLATE` EC2-Instance als Elasticsearch-Benutzer das folgende Skript. Benennen Sie es `srchstart.sh` und platzieren Sie es im `HOME` Verzeichnis.<pre>#!/bin/ksh<br />/* The following line ensures that the correct IP is indicated in the elasticsearch.yaml file. */<br />sed -i "s/.*network.host.*/`hostname  -I | awk '{print "host:"$0}'`/" $ES_HOME_DIR/config/elasticsearch.yaml<br />nohup $ES_HOME_DIR/bin/elasticsearch &</pre> | PeopleSoft Administrator | 
| Erstellen Sie ein Skript zur Installation des Webservers. | Erstellen Sie in der Amazon EC2 `WEB_TEMPLATE` EC2-Instance als Webserver-Benutzer die folgenden Skripts im `HOME` Verzeichnis.`renip.sh`: Dieses Skript stellt sicher, dass der Webserver die richtige IP hat, wenn er aus dem AMI geklont wird.<pre>#!/bin/ksh<br />hn=`hostname`<br />/* On the following line, change the IP with the hostname with the hostname of the web template. */<br />for text_file in `find  *  -type f -exec grep -l '<hostname-of-the-web-template>' {} \;`<br />do<br />sed -e 's/<hostname-of-the-web-template>/'$hn'/g' $text_file > temp<br />mv -f temp $text_file<br />done</pre>`psstrsetup.sh`: Dieses Skript stellt sicher, dass der Webserver den richtigen Anwendungsserver verwendet IPs , der derzeit ausgeführt wird. Es versucht, eine Verbindung zu jedem Anwendungsserver am Jolt-Port herzustellen und fügt ihn der Konfigurationsdatei hinzu.<pre>#!/bin/ksh<br />c2=""<br />for ctr in `ls -1 /psftmnt/*.internal`<br />do<br />c1=`echo $ctr | awk -F "/" '{print $3}'`<br />/* In the following lines, 9000 is the jolt port. Change it if necessary. */<br />if nc -z $c1 9000 2> /dev/null; then<br />if [[ $c2 = "" ]]; then<br />c2="psserver="`echo $c1`":9000"<br />else<br />c2=`echo $c2`","`echo $c1`":9000"<br />fi<br />fi<br />done</pre>`webstart.sh`: Dieses Skript führt die beiden vorherigen Skripten aus und startet die Webserver.<pre>#!/bin/ksh<br />/* Change the path in the following if necessary. */<br />cd  /usr/homes/hcmdemo <br />./renip.sh<br />./psstrsetup.sh<br />webserv/peoplesoft/bin/startPIA.sh</pre> | PeopleSoft Administrator | 
| Fügen Sie einen Crontab-Eintrag hinzu. | Fügen Sie in der Amazon EC2 `WEB_TEMPLATE` EC2-Instance als Webserver-Benutzer die folgende Zeile zu **crontab** hinzu. Ändern Sie die Zeit und den Pfad entsprechend den benötigten Werten. Dieser Eintrag stellt sicher, dass Ihr Webserver immer die richtigen Anwendungsserver-Einträge in der `configuration.properties` Datei hat.<pre>* * * * * /usr/homes/hcmdemo/psstrsetup.sh</pre> | PeopleSoft Administrator | 

### Gruppenvorlagen erstellen AMIs und Auto Scaling
<a name="create-amis-and-auto-scaling-group-templates"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein AMI für die Anwendungsservervorlage. | Erstellen Sie auf der Amazon EC2 EC2-Konsole ein AMI-Image der Amazon EC2 EC2-Instance`APP_TEMPLATE`. Nennen Sie das AMI`PSAPPSRV-SCG-VER1`. Anweisungen finden Sie in der [Amazon EC2 EC2-Dokumentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html). | Cloud-Administrator, PeopleSoft Administrator | 
|  AMIs Für die anderen Server erstellen. | Wiederholen Sie den vorherigen Schritt, um AMIs für den Prozessplaner, den Elasticsearch-Server und den Webserver etwas zu erstellen. | Cloud-Administrator, Administrator PeopleSoft  | 
| Erstellen Sie eine Startvorlage für die Auto Scaling Scaling-Gruppe des Anwendungsservers. | Erstellen Sie eine Startvorlage für die Auto Scaling Scaling-Gruppe des Anwendungsservers. Benennen Sie die Vorlage Wählen Sie `PSAPPSRV_TEMPLATE.` in der Vorlage das AMI aus, das Sie für die `APP_TEMPLATE` Instance erstellt haben. Anweisungen finden Sie in der [Amazon EC2 EC2-Dokumentation](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-from-instance).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator, PeopleSoft Administrator | 
| Erstellen Sie eine Startvorlage für die Auto Scaling Scaling-Gruppe des Process Scheduler-Servers. | Wiederholen Sie den vorherigen Schritt, um eine Startvorlage für die Auto Scaling Scaling-Gruppe des Process Scheduler-Servers zu erstellen. Geben Sie der Vorlage `PSPRCS_TEMPLATE` einen Namen. Wählen Sie in der Vorlage das AMI aus, das Sie für den Prozessplaner erstellt haben.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator, PeopleSoft Administrator | 
| Erstellen Sie eine Startvorlage für die Auto Scaling Scaling-Gruppe des Elasticsearch-Servers. | Wiederholen Sie die vorherigen Schritte, um eine Startvorlage für die Auto Scaling Scaling-Gruppe des Elasticsearch-Servers zu erstellen. Benennen Sie die Vorlage`SRCH_TEMPLATE`. Wählen Sie in der Vorlage das AMI aus, das Sie für den Suchserver erstellt haben.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator, PeopleSoft Administrator | 
| Erstellen Sie eine Startvorlage für die Auto Scaling Scaling-Gruppe des Webservers. | Wiederholen Sie die vorherigen Schritte, um eine Startvorlage für die Auto Scaling Scaling-Gruppe des Webservers zu erstellen. Benennen Sie die Vorlage`WEB_TEMPLATE`. Wählen Sie in der Vorlage das AMI aus, das Sie für den Webserver erstellt haben.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator, PeopleSoft Administrator | 

### Auto Scaling Scaling-Gruppen erstellen
<a name="create-auto-scaling-groups"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Auto Scaling Scaling-Gruppe für den Anwendungsserver. | Erstellen Sie auf der Amazon EC2 EC2-Konsole mithilfe der `PSAPPSRV_TEMPLATE` Vorlage eine Auto Scaling Scaling-Gruppe, die `PSAPPSRV_ASG` für den Anwendungsserver aufgerufen wird. Anweisungen finden Sie in der [Amazon EC2 EC2-Dokumentation](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator, PeopleSoft Administrator | 
| Erstellen Sie Auto Scaling Scaling-Gruppen für die anderen Server. | Wiederholen Sie den vorherigen Schritt, um Auto Scaling Scaling-Gruppen für den Prozessplaner, den Elasticsearch-Server und den Webserver zu erstellen. | Cloud-Administrator, Administrator PeopleSoft  | 

### Zielgruppen erstellen und konfigurieren
<a name="create-and-configure-target-groups"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Zielgruppe für den Webserver. | Erstellen Sie auf der Amazon EC2 EC2-Konsole eine Zielgruppe für den Webserver. Anweisungen finden Sie in der [Elastic Load Balancing Balancing-Dokumentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html). Stellen Sie den Port auf den Port ein, den der Webserver abhört. | Cloud-Administrator | 
| Konfigurieren Sie Integritätsprüfungen. | Vergewissern Sie sich, dass die Zustandsprüfungen die richtigen Werte haben, um Ihre Geschäftsanforderungen widerzuspiegeln. Weitere Informationen finden Sie im [Elastic Load Balancing-Benutzerhandbuch](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html). | Cloud-Administrator | 
| Erstellen Sie eine Zielgruppe für den Elasticsearch-Server. | Wiederholen Sie die vorherigen Schritte, um eine Zielgruppe mit dem Namen `PSFTSRCH` Elasticsearch-Server zu erstellen, und legen Sie den richtigen Elasticsearch-Port fest. | Cloud-Administrator | 
| Fügen Sie Zielgruppen zu Auto Scaling Scaling-Gruppen hinzu. | Öffnen Sie die Auto Scaling Scaling-Gruppe des Webservers mit dem Namen`PSPIA_ASG`, die Sie zuvor erstellt haben. Wählen Sie auf der Registerkarte **Load Balancing** die Option **Bearbeiten** aus und fügen Sie die `PSFTWEB` Zielgruppe dann der Auto Scaling Scaling-Gruppe hinzu.Wiederholen Sie diesen Schritt für die Elasticsearch Auto Scaling Scaling-Gruppe`PSSRCH_ASG`, um die zuvor `PSFTSRCH` erstellte Zielgruppe hinzuzufügen. | Cloud-Administrator | 
| Legen Sie die Dauer der Sitzung fest. | Wählen Sie in der Zielgruppe `PSFTWEB` die Registerkarte **Attribute** und dann **Bearbeiten** aus und legen Sie die Sitzungsbindung fest. Wählen Sie für den Typ „Stickiness“ die Option **Load Balancer generated cookie** aus und legen Sie die Dauer auf 1 fest. Weitere Informationen finden Sie im [Elastic Load Balancing-Benutzerhandbuch](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html).Wiederholen Sie diesen Schritt für die Zielgruppe. `PSFTSRCH` | Cloud-Administrator | 

### Erstellen und konfigurieren Sie Load Balancer für Anwendungen
<a name="create-and-configure-application-load-balancers"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Load Balancer für die Webserver. | Erstellen Sie einen Application Load Balancer mit dem Namen `PSFTLB` für den Lastenausgleich des Datenverkehrs zu den Webservern. Anweisungen finden Sie in der [Elastic Load Balancing Balancing-Dokumentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html#configure-load-balancer).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator | 
| Erstellen Sie einen Load Balancer für die Elasticsearch-Server. | Erstellen Sie einen Application Load Balancer mit dem Namen für `PSFTSCH` den Lastenausgleich des Datenverkehrs zu den Elasticsearch-Servern.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Cloud-Administrator | 
| Konfigurieren Sie Route 53 | Erstellen Sie auf der [Amazon Route 53 53-Konsole](https://console.aws.amazon.com/route53/) einen Datensatz in der Hosting-Zone, der die PeopleSoft Anwendung bedienen wird. Anweisungen finden Sie in der [Dokumentation zu Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) Dadurch wird sichergestellt, dass der gesamte Datenverkehr den Load `PSFTLB` Balancer durchläuft. | Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-resources"></a>
+ [ PeopleSoft Oracle-Webseite](https://www.oracle.com/applications/peoplesoft/)
+ [AWS-Dokumentation](https://docs.aws.amazon.com/)

# Richten Sie die Notfallwiederherstellung für Oracle JD Edwards EnterpriseOne mit AWS Elastic Disaster Recovery ein
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery"></a>

*Thanigaivel Thirumalai, Amazon Web Services*

## Zusammenfassung
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-summary"></a>

Katastrophen, die durch Naturkatastrophen, Anwendungsausfälle oder Serviceunterbrechungen ausgelöst werden, beeinträchtigen den Umsatz und führen zu Ausfallzeiten von Unternehmensanwendungen. Um die Auswirkungen solcher Ereignisse zu verringern, ist die Planung der Notfallwiederherstellung (DR) für Unternehmen, die EnterpriseOne Enterprise Resource Planning (ERP) -Systeme von JD Edwards und andere betriebs- und geschäftskritische Software einsetzen, von entscheidender Bedeutung. 

Dieses Muster erklärt, wie Unternehmen AWS Elastic Disaster Recovery als DR-Option für ihre JD EnterpriseOne Edwards-Anwendungen verwenden können. Außerdem werden die Schritte zur Verwendung von Elastic Disaster Recovery Failover und Failback beschrieben, um eine regionsübergreifende DR-Strategie für Datenbanken zu entwickeln, die auf einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance in der AWS-Cloud gehostet werden.

**Anmerkung**  
Dieses Muster erfordert, dass die primären und sekundären Regionen für die regionsübergreifende DR-Implementierung auf AWS gehostet werden.

[Oracle JD Edwards EnterpriseOne](https://www.oracle.com/applications/jd-edwards-enterpriseone/) ist eine integrierte ERP-Softwarelösung für mittelständische bis große Unternehmen in einer Vielzahl von Branchen.

AWS Elastic Disaster Recovery minimiert Ausfallzeiten und Datenverluste durch eine schnelle, zuverlässige Wiederherstellung von lokalen und cloudbasierten Anwendungen mithilfe von erschwinglichem Speicher, minimalem Rechenaufwand und point-in-time minimaler Wiederherstellung.

AWS bietet [vier zentrale DR-Architekturmuster](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html). Dieses Dokument konzentriert sich auf die Einrichtung, Konfiguration und Optimierung mithilfe der [Pilot-Light-Strategie](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html). Diese Strategie hilft Ihnen dabei, eine kostengünstigere DR-Umgebung zu schaffen, in der Sie zunächst einen Replikationsserver für die Replikation von Daten aus der Quelldatenbank bereitstellen und den eigentlichen Datenbankserver erst bereitstellen, wenn Sie eine DR-Installation und Wiederherstellung starten. Durch diese Strategie entfallen die Kosten für die Wartung eines Datenbankservers in der DR-Region. Stattdessen zahlen Sie für eine kleinere EC2-Instance, die als Replikationsserver dient.

## Voraussetzungen und Einschränkungen
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Eine JD EnterpriseOne Edwards-Anwendung, die auf Oracle Database oder Microsoft SQL Server mit einer unterstützten Datenbank in einem laufenden Zustand auf einer verwalteten EC2-Instance ausgeführt wird. Diese Anwendung sollte alle JD EnterpriseOne Edwards-Basiskomponenten (Enterprise Server, HTML Server und Database Server) enthalten, die in einer AWS-Region installiert sind.
+ Eine AWS Identity and Access Management (IAM) -Rolle zur Einrichtung des Elastic Disaster Recovery-Service.
+ Das Netzwerk für die Ausführung von Elastic Disaster Recovery wurde gemäß den erforderlichen [Konnektivitätseinstellungen](https://docs.aws.amazon.com/drs/latest/userguide/Network-Requirements.html) konfiguriert.

**Einschränkungen**
+ Sie können dieses Muster verwenden, um alle Stufen zu replizieren, es sei denn, die Datenbank wird auf Amazon Relational Database Service (Amazon RDS) gehostet. In diesem Fall empfehlen wir, die [regionsübergreifende Kopierfunktion](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html) von Amazon RDS zu verwenden.
+ Elastic Disaster Recovery ist nicht mit CloudEndure Disaster Recovery kompatibel, aber Sie können ein Upgrade von CloudEndure Disaster Recovery durchführen. Weitere Informationen finden Sie in den [häufig gestellten Fragen](https://docs.aws.amazon.com/drs/latest/userguide/cedr-to-drs.html) in der Elastic Disaster Recovery-Dokumentation.
+ Amazon Elastic Block Store (Amazon EBS) begrenzt die Geschwindigkeit, mit der Sie Schnappschüsse erstellen können. Mit Elastic Disaster Recovery können Sie eine maximale Anzahl von 300 Servern in einem einzigen AWS-Konto replizieren. Um mehr Server zu replizieren, können Sie mehrere AWS-Konten oder mehrere AWS-Zielregionen verwenden. (Sie müssen Elastic Disaster Recovery für jedes Konto und jede Region separat einrichten.) Weitere Informationen finden Sie unter [Best Practices](https://docs.aws.amazon.com/drs/latest/userguide/best_practices_drs.html) in der Elastic Disaster Recovery-Dokumentation.
+ Die Quell-Workloads (die JD EnterpriseOne Edwards-Anwendung und Datenbank) müssen auf EC2-Instances gehostet werden. Dieses Muster unterstützt keine Workloads, die sich vor Ort oder in anderen Cloud-Umgebungen befinden.
+ Dieses Muster konzentriert sich auf die Komponenten von JD Edwards EnterpriseOne . Ein vollständiger DR- und Business Continuity-Plan (BCP) sollte weitere Kerndienste beinhalten, darunter:
  + Netzwerke (virtuelle private Cloud, Subnetze und Sicherheitsgruppen)
  + Active Directory
  + Amazon WorkSpaces
  + Elastic Load Balancing
  + Ein verwalteter Datenbankservice wie Amazon Relational Database Service (Amazon RDS)

Weitere Informationen zu Voraussetzungen, Konfigurationen und Einschränkungen finden Sie in der [Elastic Disaster Recovery-Dokumentation](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html).

**Produktversionen**
+ Oracle JD Edwards EnterpriseOne (von Oracle und SQL Server unterstützte Versionen, die auf den technischen Mindestanforderungen von Oracle basieren)

## Architektur
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-architecture"></a>

**Zieltechnologie-Stack**
+ Eine einzige Region und eine einzige Virtual Private Cloud (VPC) für Produktion und Nichtproduktion sowie eine zweite Region für DR
+ Single Availability Zones, um eine geringe Latenz zwischen Servern zu gewährleisten
+ Ein Application Load Balancer, der den Netzwerkverkehr verteilt, um die Skalierbarkeit und Verfügbarkeit Ihrer Anwendungen auf mehrere Availability Zones zu verbessern
+ Amazon Route 53 zur Bereitstellung der DNS-Konfiguration (Domain Name System)
+ Amazon bietet WorkSpaces Benutzern ein Desktop-Erlebnis in der Cloud
+ Amazon Simple Storage Service (Amazon S3) zum Speichern von Backups, Dateien und Objekten
+ Amazon CloudWatch für Anwendungsprotokollierung, Überwachung und Alarme
+ Amazon Elastic Disaster Recovery für die Notfallwiederherstellung

**Zielarchitektur**

Das folgende Diagramm zeigt die regionsübergreifende Disaster Recovery-Architektur für JD Edwards EnterpriseOne unter Verwendung von Elastic Disaster Recovery.

![\[Architektur für JD Edwards EnterpriseOne regionsübergreifende DR auf AWS\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9b0de5f0-f211-4086-a044-321d081604f9/images/978b7219-e54e-4e31-b3ff-4885784e2971.png)


**Verfahren**

Hier finden Sie einen Überblick über den Prozess auf hoher Ebene. Einzelheiten finden Sie im Abschnitt *Epics*.
+ Die Elastic Disaster Recovery-Replikation beginnt mit einer ersten Synchronisierung. Während der ersten Synchronisierung repliziert der AWS Replication Agent alle Daten von den Quellfestplatten auf die entsprechende Ressource im Staging-Bereich-Subnetz.
+ Die kontinuierliche Replikation wird auf unbestimmte Zeit fortgesetzt, nachdem die erste Synchronisierung abgeschlossen ist.
+ Sie überprüfen die Startparameter, zu denen servicespezifische Konfigurationen und eine Amazon EC2 EC2-Startvorlage gehören, nachdem der Agent installiert und die Replikation gestartet wurde. Wenn angezeigt wird, dass der Quellserver für die Wiederherstellung bereit ist, können Sie Instances starten.
+ Wenn Elastic Disaster Recovery eine Reihe von API-Aufrufen ausgibt, um den Startvorgang zu starten, wird die Wiederherstellungsinstanz gemäß Ihren Starteinstellungen sofort auf AWS gestartet. Der Service richtet beim Start automatisch einen Konvertierungsserver ein.
+ Die neue Instance wird nach Abschluss der Konvertierung auf AWS hochgefahren und ist einsatzbereit. Der Status des Quellservers zum Zeitpunkt des Starts wird durch die Volumes dargestellt, die der gestarteten Instance zugeordnet sind. Der Konvertierungsprozess beinhaltet Änderungen an den Treibern, dem Netzwerk und der Betriebssystemlizenz, um sicherzustellen, dass die Instance nativ auf AWS gestartet wird.
+ Nach dem Start werden die neu erstellten Volumes nicht mehr mit den Quellservern synchronisiert. Der AWS Replication Agent repliziert weiterhin routinemäßig Änderungen, die an Ihren Quellservern vorgenommen wurden, auf die Volumes im Staging-Bereich, aber die gestarteten Instances spiegeln diese Änderungen nicht wider.
+ Wenn Sie eine neue Drill- oder Recovery-Instance starten, werden die Daten immer im neuesten Status wiedergegeben, der vom Quellserver in das Staging-Area-Subnetz repliziert wurde.
+ Wenn der Quellserver als für die Wiederherstellung vorbereitet markiert ist, können Sie Instanzen starten.

**Anmerkung**  
Der Prozess funktioniert in beide Richtungen: für ein Failover von einer primären AWS-Region zu einer DR-Region und für ein Failback zum primären Standort, wenn dieser wiederhergestellt wurde. Sie können sich auf ein Failback vorbereiten, indem Sie die Richtung der Datenreplikation vom Zielcomputer zurück zum Quellcomputer auf vollständig orchestrierte Weise umkehren.

Zu den Vorteilen dieses in diesem Muster beschriebenen Prozesses gehören:
+ Flexibilität: Replikationsserver werden je nach Datensatz und Replikationszeit nach oben und unten skaliert, sodass Sie DR-Tests durchführen können, ohne die Quell-Workloads oder die Replikation zu unterbrechen.
+ Zuverlässigkeit: Die Replikation ist robust, unterbrechungsfrei und kontinuierlich.
+ Automatisierung: Diese Lösung bietet einen einheitlichen, automatisierten Prozess für Test, Wiederherstellung und Failback.
+ Kostenoptimierung: Sie können nur die benötigten Volumes replizieren und dafür bezahlen und für Rechenressourcen am DR-Standort nur bezahlen, wenn diese Ressourcen aktiviert sind. Sie können eine kostenoptimierte Replikationsinstanz (wir empfehlen, einen rechenoptimierten Instance-Typ zu verwenden) für mehrere Quellen oder eine einzelne Quelle mit einem großen EBS-Volume verwenden.

**Automatisierung und Skalierung**

Wenn Sie eine Notfallwiederherstellung in großem Umfang durchführen, sind die JD EnterpriseOne Edwards-Server von anderen Servern in der Umgebung abhängig. Beispiel:
+ JD EnterpriseOne Edwards-Anwendungsserver, die beim Booten eine Verbindung zu einer von JD Edwards EnterpriseOne unterstützten Datenbank herstellen, sind von dieser Datenbank abhängig.
+ JD EnterpriseOne Edwards-Server, die eine Authentifizierung erfordern und beim Booten eine Verbindung zu einem Domänencontroller herstellen müssen, um Dienste zu starten, sind vom Domänencontroller abhängig.

Aus diesem Grund empfehlen wir, Failover-Aufgaben zu automatisieren. Sie können beispielsweise AWS Lambda oder AWS Step Functions verwenden, um die JD EnterpriseOne Edwards-Startskripts und Load Balancer-Änderungen zu automatisieren, um den end-to-end Failover-Prozess zu automatisieren. Weitere Informationen finden Sie im Blogbeitrag [Erstellen eines skalierbaren Notfallwiederherstellungsplans mit AWS Elastic Disaster Recovery](https://aws.amazon.com/blogs/storage/creating-a-scalable-disaster-recovery-plan-with-aws-elastic-disaster-recovery/).

## Tools
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-tools"></a>

**AWS-Services**
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) bietet Volumes für die Speicherung auf Blockebene, die mit EC2-Instances verwendet werden.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/products/compute/) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [AWS Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) minimiert Ausfallzeiten und Datenverluste durch schnelle, zuverlässige Wiederherstellung von lokalen und cloudbasierten Anwendungen mit erschwinglichem Speicher, minimalem Rechenaufwand und point-in-time minimaler Wiederherstellung.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://aws.amazon.com/vpc/) gibt Ihnen die volle Kontrolle über Ihre virtuelle Netzwerkumgebung, einschließlich Ressourcenplatzierung, Konnektivität und Sicherheit.

## Best Practices
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-best-practices"></a>

**Allgemeine bewährte Methoden**
+ Halten Sie einen schriftlichen Plan bereit, was im Falle eines echten Wiederherstellungsereignisses zu tun ist.
+ Nachdem Sie Elastic Disaster Recovery korrekt eingerichtet haben, erstellen Sie eine CloudFormation AWS-Vorlage, mit der die Konfiguration bei Bedarf bei Bedarf erstellt werden kann. Legen Sie die Reihenfolge fest, in der Server und Anwendungen gestartet werden sollen, und notieren Sie dies im Wiederherstellungsplan.
+ Führen Sie eine regelmäßige Übung durch (es gelten die Standardtarife von Amazon EC2).
+ Überwachen Sie den Zustand der laufenden Replikation mithilfe der Elastic Disaster Recovery-Konsole oder programmgesteuert.
+ Schützen Sie die point-in-time Snapshots und bestätigen Sie dies, bevor Sie die Instances beenden.
+ Erstellen Sie eine IAM-Rolle für die Installation von AWS Replication Agent.
+ Aktivieren Sie den Kündigungsschutz für Wiederherstellungsinstanzen in einem echten DR-Szenario.
+ Verwenden Sie die Aktion Verbindung zu **AWS trennen** in der Elastic Disaster Recovery-Konsole nicht für Server, für die Sie Wiederherstellungsinstanzen gestartet haben, auch nicht bei einem echten Wiederherstellungsereignis. Wenn Sie die Verbindung trennen, werden alle Replikationsressourcen im Zusammenhang mit diesen Quellservern beendet, einschließlich Ihrer point-in-time (PIT-) Wiederherstellungspunkte.
+ Ändern Sie die PIT-Richtlinie, um die Anzahl der Tage für die Aufbewahrung von Snapshots zu ändern.
+ Bearbeiten Sie die Startvorlage in den Starteinstellungen von Elastic Disaster Recovery, um das richtige Subnetz, die richtige Sicherheitsgruppe und den richtigen Instance-Typ für Ihren Zielserver festzulegen.
+ Automatisieren Sie den end-to-end Failover-Prozess, indem Sie Lambda oder Step Functions verwenden, um die EnterpriseOne Startskripte von JD Edwards und Änderungen am Load Balancer zu automatisieren.

**Optimierung und Überlegungen zu JD Edwards EnterpriseOne **
+ Wechseln Sie **PrintQueue**in die Datenbank.
+ Gehen Sie **MediaObjects**in die Datenbank.
+ Schließt die Protokolle und den temporären Ordner von den Batch- und Logikservern aus.
+ Schließen Sie den temporären Ordner aus Oracle aus. WebLogic
+ Erstellen Sie Skripts für den Start nach dem Failover.
+ Schließen Sie die tempdb für SQL Server aus.
+ Schließen Sie die temporäre Datei für Oracle aus.

## Epen
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-epics"></a>

### Führen Sie die ersten Aufgaben und die Konfiguration durch
<a name="perform-initial-tasks-and-configuration"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie das Replikationsnetzwerk ein.  | Implementieren Sie Ihr JD EnterpriseOne Edwards-System in der primären AWS-Region und identifizieren Sie die AWS-Region für DR. Folgen Sie den Schritten im Abschnitt [Anforderungen an das Replikationsnetzwerk](https://docs.aws.amazon.com/drs/latest/userguide/preparing-environments.html) in der Elastic Disaster Recovery-Dokumentation, um Ihr Replikations- und DR-Netzwerk zu planen und einzurichten. | AWS-Administrator | 
| Ermitteln Sie RPO und RTO. | Identifizieren Sie das Recovery Time Objective (RTO) und das Recovery Point Objective (RPO) für Ihre Anwendungsserver und Datenbank. | Cloud-Architekt, DR-Architekt | 
| Aktivieren Sie die Replikation für Amazon EFS. | Aktivieren Sie gegebenenfalls die Replikation von der AWS-Primärregion zur DR-Region für gemeinsam genutzte Dateisysteme wie Amazon Elastic File System (Amazon EFS) mithilfe von AWS DataSync, **rsync** oder einem anderen geeigneten Tool. | Cloud-Administrator | 
| DNS verwalten im Fall von DR | Identifizieren Sie den Prozess zur Aktualisierung des Domain Name Systems (DNS) während der DR-Übung oder bei der eigentlichen DR | Cloud-Administrator | 
| Erstellen Sie eine IAM-Rolle für die Einrichtung. | Folgen Sie den Anweisungen im Abschnitt [Initialisierung und Berechtigungen von Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/getting-started-initializing.html) der Elastic Disaster Recovery-Dokumentation, um eine IAM-Rolle zur Initialisierung und Verwaltung des AWS-Service zu erstellen. | Cloud-Administrator | 
| Richten Sie VPC-Peering ein. | Stellen Sie sicher, dass Quelle und Ziel per VPCs Peering miteinander verbunden sind und aufeinander zugreifen können. Anweisungen zur Konfiguration finden Sie in der [Amazon VPC-Dokumentation](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). | AWS-Administrator | 

### Konfigurieren Sie die Elastic Disaster Recovery-Replikationseinstellungen
<a name="configure-elastic-disaster-recovery-replication-settings"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Initialisieren Sie Elastic Disaster Recovery. | Öffnen Sie die [Elastic Disaster Recovery-Konsole](https://console.aws.amazon.com/drs/home), wählen Sie die AWS-Zielregion aus (in der Sie Daten replizieren und Wiederherstellungsinstanzen starten werden) und wählen Sie dann **Standard-Replikationseinstellungen festlegen** aus. | AWS-Administrator | 
| Richten Sie Replikationsserver ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | AWS-Administrator | 
| Konfigurieren Sie Volumes und Sicherheitsgruppen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | AWS-Administrator | 
| Konfigurieren Sie zusätzliche Einstellungen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | AWS-Administrator | 

### Installieren Sie den AWS Replication Agent
<a name="install-the-aws-replication-agent"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine IAM-Rolle. | Erstellen Sie eine IAM-Rolle, die die `AWSElasticDisasterRecoveryAgentInstallationPolicy` Richtlinie enthält. **Aktivieren Sie im Abschnitt AWS-Zugriffstyp** auswählen den programmatischen Zugriff. Notieren Sie sich die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel. Sie benötigen diese Informationen während der Installation des AWS Replication Agent. | AWS-Administrator | 
| Überprüfen Sie die Anforderungen. | Überprüfen und erfüllen Sie die [Voraussetzungen](https://docs.aws.amazon.com/drs/latest/userguide/installation-requiremets.html) in der Elastic Disaster Recovery-Dokumentation für die Installation des AWS Replication Agent. | AWS-Administrator | 
| Installieren Sie den AWS Replication Agent. | Folgen Sie den [Installationsanweisungen](https://docs.aws.amazon.com/drs/latest/userguide/agent-installation-instructions.html) für Ihr Betriebssystem und installieren Sie den AWS Replication Agent.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Wiederholen Sie diese Schritte für den verbleibenden Server. | AWS-Administrator | 
| Überwachen Sie die Replikation. | Kehren Sie zum Bereich Elastic Disaster Recovery **Source Servers** zurück, um den Replikationsstatus zu überwachen. Die erste Synchronisierung wird je nach Größe der Datenübertragung einige Zeit in Anspruch nehmen.Wenn der Quellserver vollständig synchronisiert ist, wird der Serverstatus auf **Bereit** aktualisiert. Das bedeutet, dass im Staging-Bereich ein Replikationsserver erstellt wurde und die EBS-Volumes vom Quellserver in den Staging-Bereich repliziert wurden. | AWS-Administrator | 

### Starteinstellungen konfigurieren
<a name="configure-launch-settings"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bearbeiten Sie die Starteinstellungen. | Um die Starteinstellungen für die Drill- und Recovery-Instances zu aktualisieren, wählen Sie in der [Elastic Disaster Recovery-Konsole](https://console.aws.amazon.com/drs/home) den Quellserver und anschließend **Aktionen**, **Starteinstellungen bearbeiten** aus. Oder Sie können Ihre replizierenden Quellcomputer auf der Seite **Quellserver** auswählen und dann den Tab **Starteinstellungen** wählen. Diese Registerkarte besteht aus zwei Abschnitten: **Allgemeine Starteinstellungen** und **EC2-Startvorlage**. | AWS-Administrator | 
| Konfigurieren Sie die allgemeinen Starteinstellungen. | Überarbeiten Sie die allgemeinen Starteinstellungen entsprechend Ihren Anforderungen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Weitere Informationen finden Sie unter [Allgemeine Starteinstellungen](https://docs.aws.amazon.com/drs/latest/userguide/launch-general-settings.html) in der Elastic Disaster Recovery-Dokumentation. | AWS-Administrator | 
| Konfigurieren Sie die Amazon EC2 EC2-Startvorlage. | Elastic Disaster Recovery verwendet Amazon EC2 EC2-Startvorlagen, um Drill- und Recovery-Instances für jeden Quellserver zu starten. Die Startvorlage wird automatisch für jeden Quellserver erstellt, den Sie nach der Installation des AWS Replication Agent zu Elastic Disaster Recovery hinzufügen.Sie müssen die Amazon EC2 EC2-Startvorlage als Standard-Startvorlage festlegen, wenn Sie sie mit Elastic Disaster Recovery verwenden möchten.Weitere Informationen finden Sie unter [EC2-Startvorlage](https://docs.aws.amazon.com/drs/latest/userguide/ec2-launch.html) in der Elastic Disaster Recovery-Dokumentation. | AWS-Administrator | 

### DR-Drill und Failover einleiten
<a name="initiate-dr-drill-and-failover"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Drill einleiten | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Weitere Informationen finden Sie unter Preparing [for Failover](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing.html) in der Elastic Disaster Recovery-Dokumentation. | AWS-Administrator | 
| Bestätigen Sie die Übung. | Im vorherigen Schritt haben Sie neue Ziel-Instances in der DR-Region gestartet. Die Ziel-Instances sind Replikate der Quellserver, die auf dem Snapshot basieren, der bei der Initiierung des Starts erstellt wurde.In diesem Verfahren stellen Sie eine Verbindung zu Ihren Amazon EC2-Zielcomputern her, um zu überprüfen, ob sie wie erwartet laufen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) |  | 
| Initiieren Sie einen Failover. | Ein Failover ist die Umleitung des Datenverkehrs von einem Primärsystem zu einem Sekundärsystem. Elastic Disaster Recovery unterstützt Sie bei der Durchführung eines Failovers, indem es Wiederherstellungsinstanzen auf AWS startet. Wenn die Wiederherstellungsinstanzen gestartet wurden, leiten Sie den Datenverkehr von Ihren Primärsystemen zu diesen Instances um.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Weitere Informationen finden Sie unter [Durchführen eines Failovers](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing-failover.html) in der Elastic Disaster Recovery-Dokumentation. | AWS-Administrator | 
| Initiieren Sie ein Failback. | Das Verfahren zum Initiieren eines Failbacks ähnelt dem Verfahren zum Initiieren eines Failovers.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Weitere Informationen finden Sie unter [Durchführen eines Failbacks](https://docs.aws.amazon.com/drs/latest/userguide/failback-performing-main.html) in der Elastic Disaster Recovery-Dokumentation. | AWS-Administrator | 
| Starten Sie die EnterpriseOne Komponenten von JD Edwards. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Sie müssen die Änderungen in Route 53 und Application Load Balancer integrieren, damit der JD EnterpriseOne Edwards-Link funktioniert.Sie können diese Schritte mithilfe von Lambda, Step Functions und Systems Manager (Run Command) automatisieren.Elastic Disaster Recovery führt die Replikation der EBS-Quellvolumes der EC2-Instance auf Blockebene durch, die das Betriebssystem und die Dateisysteme hosten. Gemeinsam genutzte Dateisysteme, die mithilfe von Amazon EFS erstellt wurden, sind nicht Teil dieser Replikation. Sie können gemeinsam genutzte Dateisysteme mithilfe von AWS in die DR-Region replizieren DataSync, wie im ersten Epos erwähnt, und diese replizierten Dateisysteme dann im DR-System mounten. | J.D. Edwards CNC EnterpriseOne  | 

## Fehlerbehebung
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Der Status der Datenreplikation auf dem Quellserver ist **Blockiert** und die Replikation verzögert sich. Wenn Sie die Details überprüfen, wird im Datenreplikationsstatus „**Agent nicht** gesehen“ angezeigt. | Vergewissern Sie sich, dass der gestoppte Quellserver läuft.Wenn der Quellserver ausfällt, wird der Replikationsserver automatisch beendet.Weitere Informationen zu Verzögerungsproblemen finden Sie unter Probleme mit der [Replikationsverzögerung](https://docs.aws.amazon.com/drs/latest/userguide/Other-Troubleshooting-Topics.html#Replication-Lag-Issues) in der Elastic Disaster Recovery-Dokumentation. | 
| Die Installation des AWS Replication Agent in der EC2-Quellinstanz schlägt in RHEL 8.2 nach dem Scannen der Festplatten fehl. `aws_replication_agent_installer.log`zeigt, dass Kernel-Header fehlen. | Bevor Sie den AWS Replication Agent auf RHEL 8, CentOS 8 oder Oracle Linux 8 installieren, führen Sie Folgendes aus:<pre>sudo yum install elfutils-libelf-devel</pre>Weitere Informationen finden Sie in den [Linux-Installationsanforderungen](https://docs.aws.amazon.com/mgn/latest/ug/installation-requirements.html#linux-requirements) in der Elastic Disaster Recovery-Dokumentation. | 
| Auf der Elastic Disaster Recovery-Konsole wird der Quellserver als **Bereit** mit einer Verzögerung und der **Datenreplikationsstatus als Blockiert** angezeigt.Je nachdem, wie lange der AWS Replication Agent nicht verfügbar war, kann der Status auf eine hohe Verzögerung hinweisen, aber das Problem bleibt dasselbe. | Verwenden Sie einen Betriebssystembefehl, um zu bestätigen, dass der AWS Replication Agent in der Quell-EC2-Instance ausgeführt wird, oder um zu bestätigen, dass die Instance läuft.Nachdem Sie alle Probleme behoben haben, startet Elastic Disaster Recovery den Scanvorgang erneut. Warten Sie, bis alle Daten synchronisiert wurden und der Replikationsstatus Fehlerfrei ist**,** bevor Sie eine DR-Übung starten. | 
| Erste Replikation mit hoher Verzögerung. Auf der Elastic Disaster Recovery-Konsole können Sie sehen, dass der anfängliche Synchronisierungsstatus für einen Quellserver extrem langsam ist. | Suchen Sie nach den Problemen mit der Replikationsverzögerung, die im Abschnitt [Probleme mit der Replikationsverzögerung](https://docs.aws.amazon.com/drs/latest/userguide/Other-Troubleshooting-Topics.html#Replication-Lag-Issues) in der Elastic Disaster Recovery-Dokumentation dokumentiert sind.Der Replikationsserver kann die Last aufgrund systemeigener Rechenoperationen möglicherweise nicht bewältigen. Versuchen Sie in diesem Fall, den Instance-Typ nach Rücksprache mit dem [technischen Support-Team von AWS](https://support.console.aws.amazon.com/support/) zu aktualisieren. | 

## Zugehörige Ressourcen
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-resources"></a>
+ [AWS Elastic Disaster Recovery-Benutzerhandbuch](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html)
+ [Erstellung eines skalierbaren Notfallwiederherstellungsplans mit AWS Elastic Disaster Recovery](https://aws.amazon.com/blogs/storage/creating-a-scalable-disaster-recovery-plan-with-aws-elastic-disaster-recovery/) (AWS-Blogbeitrag)
+ [AWS Elastic Disaster Recovery — Eine technische Einführung](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/11123/aws-elastic-disaster-recovery-a-technical-introduction) (AWS Skill Builder-Kurs; Anmeldung erforderlich)
+ [Kurzanleitung für AWS Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/quick-start-guide-gs.html)

# Richten Sie die CloudFormation Drifterkennung in einer Organisation mit mehreren Regionen und mehreren Konten ein
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization"></a>

*Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-summary"></a>

Benutzer von Amazon Web Services (AWS) suchen häufig nach einer effizienten Methode, um Diskrepanzen in der Ressourcenkonfiguration, einschließlich Abweichungen in AWS CloudFormation Stacks, zu erkennen und diese so schnell wie möglich zu beheben. Dies ist insbesondere der Fall, wenn es verwendet AWS Control Tower wird.

Dieses Muster bietet eine präskriptive Lösung, mit der das Problem effizient gelöst werden kann, indem konsolidierte Änderungen an der Ressourcenkonfiguration verwendet und auf diese Änderungen reagiert werden, um Ergebnisse zu erzielen. Die Lösung ist für Szenarien konzipiert, in denen mehrere CloudFormation Stapel in mehr als einem Konto oder in mehr als einem AWS-Region Konto oder einer Kombination aus beidem erstellt werden. Die Lösung hat folgende Ziele:
+ Vereinfachen Sie den Prozess zur Drifterkennung
+ Richten Sie Benachrichtigungen und Warnmeldungen ein
+ Richten Sie eine konsolidierte Berichterstattung ein

## Voraussetzungen und Einschränkungen
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-prereqs"></a>

**Voraussetzungen**
+ AWS Config ist in allen Regionen und Konten aktiviert, die überwacht werden müssen

**Einschränkungen**
+ Der generierte Bericht unterstützt nur die Ausgabeformate Kommagetrennte Werte (CSV) und JSON.

## Architektur
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-architecture"></a>

Das folgende Diagramm zeigt die AWS Organizations Einrichtung mit mehreren Konten. AWS Config Regeln kommunizieren zwischen den Konten.  

![\[Fünfstufiger Prozess zur Überwachung von Stacks in zwei AWS Organizations Organizations-Konten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/735d0987-b953-47f8-a9bc-b02a88957ee5/images/340cee9a-5a4e-49ea-bd73-d37dcea5e098.png)


 Der Workflow umfasst die folgenden Schritte:

1. Die AWS Config Regel erkennt Abweichungen.

1. Ergebnisse der Drift-Erkennung, die in anderen Konten gefunden wurden, werden an das Verwaltungskonto gesendet.

1. Die CloudWatch Amazon-Regel ruft eine AWS Lambda Funktion auf.

1. Die Lambda-Funktion fragt die AWS Config Regel nach aggregierten Ergebnissen ab.

1. Die Lambda-Funktion benachrichtigt Amazon Simple Notification Service (Amazon SNS), der eine E-Mail-Benachrichtigung über die Abweichung sendet.

**Automatisierung und Skalierung**

Die hier vorgestellte Lösung kann sowohl für zusätzliche Regionen als auch für Konten skaliert werden.

## Tools
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-tools"></a>

**AWS-Services**
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)bietet einen detaillierten Überblick über die Konfiguration der AWS Ressourcen in Ihrem AWS-Konto. Dazu gehört auch, wie die Ressourcen jeweils zueinander in Beziehung stehen und wie sie in der Vergangenheit konfiguriert wurden, damit Sie sehen können, wie sich die Konfigurationen und Beziehungen im Laufe der Zeit verändern.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

## Epen
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-epics"></a>

### Automatisieren Sie die Drifterkennung für CloudFormation
<a name="automate-drift-detection-for-cfn"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie den Aggregator. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.html) | Cloud-Architekt | 
| Erstellen Sie eine AWS verwaltete Regel. | Fügen Sie die `cloudformation-stack-drift-detection-check` AWS**** verwaltete Regel hinzu. Die Regel benötigt einen Parameterwert:`cloudformationArn`. Geben Sie die IAM-Rolle Amazon Resource Name (ARN) ein, die berechtigt ist, Stack-Drift zu erkennen. Die Rolle muss über eine Vertrauensrichtlinie verfügen, die es ermöglicht, die Rolle AWS Config zu übernehmen. | Cloud-Architekt | 
| Erstellen Sie den Abschnitt für erweiterte Abfragen des Aggregators. | Um driftete Stapel aus mehreren Quellen abzurufen, erstellen Sie die folgende Abfrage:<pre>SELECT resourceId, configuration.driftInformation.stackDriftStatus WHERE resourceType = 'AWS::CloudFormation::Stack'  AND configuration.driftInformation.stackDriftStatus IN ('DRIFTED')</pre> | Cloud-Architekt, Entwickler | 
| Automatisieren Sie die Ausführung der Abfrage und veröffentlichen Sie sie. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.html) | Cloud-Architekt, Entwickler | 
| Erstellen Sie eine CloudWatch Regel. | Erstellen Sie eine zeitplanbasierte CloudWatch Regel, um die Lambda-Funktion aufzurufen, die für die Alarmierung zuständig ist. | Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-resources"></a>

**Ressourcen**
+ [Was ist AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+ [Datenaggregation für mehrere Konten und mehrere Regionen](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html)
+ [Erkennung nicht verwalteter Konfigurationsänderungen an Stacks und Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html)
+ [IAM: Übergeben Sie eine IAM-Rolle an einen bestimmten AWS-Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam-passrole-service.html)
+ [Was ist Amazon SNS?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)

## Zusätzliche Informationen
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-additional"></a>

**Überlegungen**

Wir empfehlen, die in diesem Muster vorgestellte Lösung zu verwenden, anstatt benutzerdefinierte Lösungen zu verwenden, die API-Aufrufe in bestimmten Intervallen beinhalten, um die Drifterkennung für jeden CloudFormation Stack oder Stack-Set zu initiieren. Benutzerdefinierte Lösungen, die API-Aufrufe in bestimmten Intervallen verwenden, können zu einer großen Anzahl von API-Aufrufen führen und die Leistung beeinträchtigen. Aufgrund der Anzahl der API-Aufrufe kann es zu einer Drosselung kommen. Ein weiteres potenzielles Problem ist eine Verzögerung bei der Erkennung, wenn Ressourcenänderungen nur anhand eines Zeitplans erkannt werden.

Da Stack-Sets aus Stapeln bestehen, können Sie diese Lösung verwenden. Details zur Stack-Instanz sind auch als Teil der Lösung verfügbar.

## Anlagen
<a name="attachments-735d0987-b953-47f8-a9bc-b02a88957ee5"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/735d0987-b953-47f8-a9bc-b02a88957ee5/attachments/attachment.zip)

# Erfolgreicher Import eines S3-Buckets als CloudFormation AWS-Stack
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack"></a>

*Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-summary"></a>

Wenn Sie Amazon Web Services (AWS) -Ressourcen wie Amazon Simple Storage Service (Amazon S3) -Buckets verwenden und einen Infrastructure-as-Code-Ansatz (IaC) verwenden möchten, können Sie Ihre Ressourcen in AWS importieren CloudFormation und als Stack verwalten.

Dieses Muster enthält Schritte für den erfolgreichen Import eines S3-Buckets als CloudFormation AWS-Stack. Durch die Verwendung des Ansatzes dieses Musters können Sie mögliche Fehler vermeiden, die auftreten können, wenn Sie Ihren S3-Bucket in einer einzigen Aktion importieren.

## Voraussetzungen und Einschränkungen
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto.
+ Eine bestehende S3-Bucket- und S3-Bucket-Richtlinie. Weitere Informationen dazu finden Sie im AWS Knowledge Center unter [Welche S3-Bucket-Richtlinie sollte ich verwenden, um die AWS Config-Regel s3- bucket-ssl-requests-only einzuhalten](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-policy-for-config-rule/).
+ Ein vorhandener AWS Key Management Service (AWS KMS) -Schlüssel und sein Alias. Weitere Informationen dazu finden Sie unter [Working with Aliases](https://docs.aws.amazon.com/kms/latest/developerguide/programming-aliases.html) in der AWS KMS KMS-Dokumentation.
+ Die `CloudFormation-template-S3-bucket` CloudFormation AWS-Beispielvorlage (im Anhang), heruntergeladen auf Ihren lokalen Computer.

## Architektur
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-architecture"></a>

![\[Workflow zur Verwendung der CloudFormation Vorlage zum Erstellen eines CloudFormation Stacks zum Importieren eines S3-Buckets.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/aea7f6fe-8e67-46c4-8b90-1ab06b879111/images/ee143374-a0a4-42d9-b7ca-16593a597a84.png)


 

Das Diagramm zeigt den folgenden Workflow:

1. Der Benutzer erstellt eine AWS-Vorlage im JSON- oder YAML-Format. CloudFormation 

1. Die Vorlage erstellt einen CloudFormation AWS-Stack zum Importieren des S3-Buckets.

1. Der CloudFormation AWS-Stack verwaltet den S3-Bucket, den Sie in der Vorlage angegeben haben.

**Technologie-Stack**
+ AWS CloudFormation
+ AWS Identity and Access Management (IAM)
+ AWS KMS
+ Amazon S3

 

**Tools**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation hilft Ihnen dabei, AWS-Infrastrukturbereitstellungen vorhersehbar und wiederholt zu erstellen und bereitzustellen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — IAM ist ein Webservice zur sicheren Steuerung des Zugriffs auf AWS-Services.
+ [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) — AWS Key Management Service (AWS KMS) ist ein für die Cloud skalierter Verschlüsselungs- und Schlüsselverwaltungsservice.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) ist Speicher für das Internet.

## Epen
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-epics"></a>

### Importieren Sie einen S3-Bucket mit AWS KMS key basierter Verschlüsselung als CloudFormation AWS-Stack
<a name="import-an-s3-bucket-with-kms-key-long--based-encryption-as-an-aws-cloudformation-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Vorlage, um den S3-Bucket und den KMS-Schlüssel zu importieren. | Erstellen Sie auf Ihrem lokalen Computer mithilfe der folgenden Beispielvorlage eine Vorlage zum Importieren Ihres S3-Buckets und KMS-Schlüssels:<pre>AWSTemplateFormatVersion: 2010-09-09<br /><br />Parameters:<br /><br />  bucketName:<br /><br />    Type: String<br /><br />Resources:<br /><br />  S3Bucket:<br /><br />    Type: 'AWS::S3::Bucket'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties:<br /><br />      BucketName: !Ref bucketName<br /><br />      BucketEncryption:<br /><br />        ServerSideEncryptionConfiguration:<br /><br />          - ServerSideEncryptionByDefault:<br /><br />              SSEAlgorithm: 'aws:kms'<br /><br />              KMSMasterKeyID: !GetAtt <br /><br />                - KMSS3Encryption<br /><br />                - Arn<br /><br />  KMSS3Encryption:<br /><br />    Type: 'AWS::KMS::Key'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties:<br /><br />      Enabled: true<br /><br />      KeyPolicy: !Sub |-<br /><br />        {<br /><br />            "Id": "key-consolepolicy-3",<br /><br />            "Version": "2012-10-17",		 	 	 <br /><br />            "Statement": [<br /><br />                {<br /><br />                    "Sid": "Enable IAM User Permissions",<br /><br />                    "Effect": "Allow",<br /><br />                    "Principal": {<br /><br />                        "AWS": ["arn:aws:iam::${AWS::AccountId}:root"]<br /><br />                    },<br /><br />                    "Action": "kms:*",<br /><br />                    "Resource": "*"<br /><br />                }<br /><br />                }<br /><br />            ]<br /><br />        }<br /><br />      EnableKeyRotation: true</pre> | AWS DevOps | 
| Erstellen Sie den Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html) | AWS DevOps | 
| Erstellen Sie den KMS-Schlüsselalias. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>KMSS3EncryptionAlias:<br /><br />    Type: 'AWS::KMS::Alias'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties: <br /><br />    AliasName: alias/S3BucketKey<br /><br />    TargetKeyId: !Ref KMSS3Encryption</pre>Weitere Informationen dazu finden Sie unter [ CloudFormation AWS-Stack-Updates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) in der CloudFormation AWS-Dokumentation.  | AWS DevOps | 
| Aktualisieren Sie den Stack so, dass er die S3-Bucket-Richtlinie enthält. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>S3BucketPolicy:<br /><br />  Type: 'AWS::S3::BucketPolicy'<br /><br />  Properties:<br /><br />    Bucket: !Ref S3Bucket<br /><br />    PolicyDocument: !Sub |-<br /><br />      {<br /><br />                  "Version": "2008-10-17",		 	 	 <br /><br />                  "Id": "restricthttp",<br /><br />                  "Statement": [<br /><br />                      {<br /><br />                          "Sid": "denyhttp",<br /><br />                          "Effect": "Deny",<br /><br />                          "Principal": {<br /><br />                              "AWS": "*"<br /><br />                          },<br /><br />                          "Action": "s3:*",<br /><br />                          "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"],<br /><br />                          "Condition": {<br /><br />                              "Bool": {<br /><br />                                  "aws:SecureTransport": "false"<br /><br />                              }<br /><br />                          }<br /><br />                      }<br /><br />                  ]<br /><br />              }</pre>Diese S3-Bucket-Richtlinie enthält eine Deny-Anweisung, die API-Aufrufe einschränkt, die nicht sicher sind.  | AWS DevOps | 
| Aktualisieren Sie die wichtigsten Richtlinien. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)Weitere Informationen finden Sie [AWS KMS in der AWS KMS KMS-Dokumentation unter Wichtige Richtlinien](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html). | AWS-Administrator | 
| Fügen Sie Tags auf Ressourcenebene hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>Tags:<br /><br />  - Key: createdBy<br /><br />    Value: Cloudformation</pre> | AWS DevOps | 

## Zugehörige Ressourcen
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-resources"></a>
+ [Einbindung vorhandener Ressourcen in das CloudFormation AWS-Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html)
+ [AWS re:Invent 2017: Tiefer Einblick in AWS CloudFormation (Video](https://www.youtube.com/watch?v=01hy48R9Kr8))

## Anlagen
<a name="attachments-aea7f6fe-8e67-46c4-8b90-1ab06b879111"></a>

[Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip](samples/p-attach/aea7f6fe-8e67-46c4-8b90-1ab06b879111/attachments/attachment.zip)

# Synchronisieren Sie Daten zwischen Amazon EFS-Dateisystemen in verschiedenen AWS-Regionen mithilfe von AWS DataSync
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync"></a>

*Sarat Chandra Pothula und Aditya Ambati, Amazon Web Services*

## Zusammenfassung
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-summary"></a>

Diese Lösung bietet ein robustes Framework für eine effiziente und sichere Datensynchronisierung zwischen Amazon Elastic File System (Amazon EFS) -Instances in verschiedenen AWS-Regionen. Dieser Ansatz ist skalierbar und ermöglicht eine kontrollierte, regionsübergreifende Datenreplikation. Diese Lösung kann Ihre Strategien zur Notfallwiederherstellung und Datenredundanz verbessern.

Durch die Verwendung des AWS Cloud Development Kit (AWS CDK) verwendet dieses Muster einen Infrastructure-as-Code-Ansatz (IaC) zur Bereitstellung der Lösungsressourcen. Die AWS CDK-Anwendung stellt die wesentlichen Ressourcen von AWS DataSync, Amazon EFS, Amazon Virtual Private Cloud (Amazon VPC) und Amazon Elastic Compute Cloud (Amazon EC2) bereit. Dieses IaC bietet einen wiederholbaren und versionskontrollierten Bereitstellungsprozess, der vollständig auf die bewährten AWS-Methoden abgestimmt ist.

## Voraussetzungen und Einschränkungen
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [AWS-Befehlszeilenschnittstelle (AWS CLI) Version 2.9.11 oder höher, [installiert und konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)
+ [NodeJS Version 20.8.0 oder höher, installiert](https://nodejs.org/en/download)

**Einschränkungen**
+ Die Lösung erbt Einschränkungen von DataSync Amazon EFS, wie z. B. Datenübertragungsraten, Größenbeschränkungen und regionale Verfügbarkeit. Weitere Informationen finden Sie unter [ DataSync AWS-Kontingente](https://docs.aws.amazon.com/datasync/latest/userguide/datasync-limits.html) und [Amazon EFS-Kontingente](https://docs.aws.amazon.com/efs/latest/ug/limits.html).
+ Diese Lösung unterstützt nur Amazon EFS. DataSync unterstützt [andere AWS-Services](https://docs.aws.amazon.com/datasync/latest/userguide/working-with-locations.html) wie Amazon Simple Storage Service (Amazon S3) und Amazon FSx for Lustre. Diese Lösung erfordert jedoch Änderungen, um Daten mit diesen anderen Diensten zu synchronisieren.

## Architektur
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-architecture"></a>

![\[Architekturdiagramm für die Replikation von Daten in ein EFS-Dateisystem in einer anderen Region\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e28ba6c2-ab8b-4812-932e-f038106d5496/images/18b35ae9-a22e-43e7-b7a3-30e40321c44e.png)


Diese Lösung stellt die folgenden AWS-CDK-Stacks bereit:
+ **Amazon VPC-Stack** — Dieser Stack richtet Virtual Private Cloud (VPC) -Ressourcen ein, darunter Subnetze, ein Internet-Gateway und ein NAT-Gateway sowohl in der primären als auch in der sekundären AWS-Region.
+ **Amazon EFS-Stack** — Dieser Stack stellt Amazon EFS-Dateisysteme in den primären und sekundären Regionen bereit und verbindet sie mit ihren jeweiligen VPCs Regionen.
+ ** EC2 Amazon-Stack** — Dieser Stack startet EC2 Instances in der primären und sekundären Region. Diese Instances sind so konfiguriert, dass sie das Amazon EFS-Dateisystem mounten, wodurch sie auf den gemeinsam genutzten Speicher zugreifen können.
+ **DataSync Standort-Stack** — Dieser Stack verwendet ein benutzerdefiniertes Konstrukt, das aufgerufen wird`DataSyncLocationConstruct`, um DataSync Standortressourcen in den primären und sekundären Regionen zu erstellen. Diese Ressourcen definieren Endpunkte für die Datensynchronisierung.
+ **DataSync Aufgabenstapel** — Dieser Stapel verwendet ein benutzerdefiniertes Konstrukt`DataSyncTaskConstruct`, das aufgerufen wird, um eine DataSync Aufgabe in der primären Region zu erstellen. Diese Aufgabe ist so konfiguriert, dass Daten zwischen der primären und der sekundären Region mithilfe der DataSync Quell- und Zielorte synchronisiert werden.

## Tools
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-tools"></a>

**AWS-Services**
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html) ist ein Online-Datenübertragungs- und Erkennungsservice, mit dem Sie Dateien oder Objektdaten zu, von und zwischen AWS-Speicherservices verschieben können.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) unterstützt Sie bei der Erstellung und Konfiguration gemeinsam genutzter Dateisysteme in der AWS-Cloud.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) hilft Ihnen, AWS-Ressourcen in einem von Ihnen definierten virtuellen Netzwerk zu starten. Dieses virtuelle Netzwerk ähnelt einem herkömmlichen Netzwerk, das Sie in Ihrem eigenen Rechenzentrum betreiben würden, mit den Vorteilen der skalierbaren Infrastruktur von AWS.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Amazon EFS Cross-Region DataSync Project](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main) Repository verfügbar.

## Best Practices
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-best-practices"></a>

Folgen Sie den unter Bewährte Methoden [für die Verwendung des AWS-CDK bei der Erstellung von TypeScript IaC-Projekten beschriebenen bewährten](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html) Methoden.

## Epen
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-epics"></a>

### Stellen Sie die AWS CDK-App bereit
<a name="deploy-the-aws-cdk-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Projekt-Repository. | Geben Sie den folgenden Befehl ein, um das [Amazon EFS Cross-Region DataSync Project-Repository](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main) zu klonen.<pre>git clone https://github.com/aws-samples/aws-efs-crossregion-datasync.git</pre> | AWS DevOps | 
| Installieren Sie die NPM-Abhängigkeiten. | Geben Sie den folgenden Befehl ein.<pre>npm ci</pre> | AWS DevOps | 
| Wählen Sie die primäre und die sekundäre Region aus. | Navigieren Sie im geklonten Repository zum `src/infa` Verzeichnis. Aktualisieren Sie in der `Launcher.ts` Datei die `SECONDARY_AWS_REGION` Werte `PRIMARY_AWS_REGION` und. Verwenden Sie die entsprechenden [Regionalcodes](https://docs.aws.amazon.com/general/latest/gr/datasync.html#datasync-region).<pre>const primaryRegion = { account: account, region: '<PRIMARY_AWS_REGION>' };<br />const secondaryRegion = { account: account, region: '<SECONDARY_AWS_REGION>' };</pre> | AWS DevOps | 
| Bootstrapping für die Umgebung. | Geben Sie den folgenden Befehl ein, um das AWS-Konto und die AWS-Region, die Sie verwenden möchten, zu booten.<pre>cdk bootstrap <aws_account>/<aws_region></pre>Weitere Informationen finden Sie unter [Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) in der AWS CDK-Dokumentation. | AWS DevOps | 
| Listet die AWS-CDK-Stacks auf. | Geben Sie den folgenden Befehl ein, um eine Liste der AWS CDK-Stacks in der App anzuzeigen.<pre>cdk ls</pre> | AWS DevOps | 
| Synthetisieren Sie die AWS-CDK-Stacks. | Geben Sie den folgenden Befehl ein, um eine CloudFormation AWS-Vorlage für jeden in der AWS CDK-App definierten Stack zu erstellen.<pre>cdk synth</pre> | AWS DevOps | 
| Stellen Sie die AWS CDK-App bereit. | Geben Sie den folgenden Befehl ein, um alle Stacks auf Ihrem AWS-Konto bereitzustellen, ohne dass eine manuelle Genehmigung für Änderungen erforderlich ist.<pre>cdk deploy --all --require-approval never</pre> | AWS DevOps | 

### Validieren Sie die Bereitstellung
<a name="validate-the-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Melden Sie sich bei der EC2 Instanz in der primären Region an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| Erstellen Sie eine temporäre Datei. | Geben Sie den folgenden Befehl ein, um eine temporäre Datei im Amazon EFS-Mountpfad zu erstellen.<pre>sudo dd if=/dev/zero \<br />of=tmptst.dat \<br />bs=1G \<br />seek=5 \<br />count=0<br /><br />ls -lrt tmptst.dat</pre> | AWS DevOps | 
| Starten Sie die DataSync Aufgabe. | Geben Sie den folgenden Befehl ein, um die temporäre Datei von der primären Region in die sekundäre Region zu replizieren. Dabei `<ARN-task>` handelt es sich um den Amazon-Ressourcennamen (ARN) Ihrer DataSync Aufgabe.<pre>aws datasync start-task-execution \<br />    --task-arn <ARN-task></pre>Der Befehl gibt den ARN der Aufgabenausführung im folgenden Format zurück.`arn:aws:datasync:<region>:<account-ID>:task/task-execution/<exec-ID>` | AWS DevOps | 
| Überprüfen Sie den Status der Datenübertragung. | Geben Sie den folgenden Befehl ein, um die DataSync Ausführungsaufgabe zu beschreiben. Dabei `<ARN-task-execution>` handelt es sich um den ARN der Aufgabenausführung.<pre>aws datasync describe-task-execution \<br />    --task-execution-arn <ARN-task-execution></pre>Die DataSync Aufgabe ist abgeschlossen`PrepareStatus`, wenn`TransferStatus`, und `VerifyStatus` alle den Wert haben`SUCCESS`. | AWS DevOps | 
| Melden Sie sich bei der EC2 Instance in der sekundären Region an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| Validieren Sie die Replikation. | Geben Sie den folgenden Befehl ein, um zu überprüfen, ob die temporäre Datei im Amazon EFS-Dateisystem vorhanden ist.<pre>ls -lrt<br />tmptst.dat</pre> | AWS DevOps | 

## Zugehörige Ressourcen
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-resources"></a>

**AWS-Dokumentation**
+ [AWS-CDK-API-Referenz](https://docs.aws.amazon.com/cdk/api/v2/python/modules.html)
+ [Konfiguration von DataSync AWS-Übertragungen mit Amazon EFS](https://docs.aws.amazon.com/datasync/latest/userguide/create-efs-location.html)
+ [Behebung von Problemen mit DataSync AWS-Übertragungen](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync-locations-tasks.html)

**Andere AWS-Ressourcen**
+ [AWS DataSync FAQs](https://aws.amazon.com/datasync/faqs/)

# Testen Sie die AWS Infrastruktur mithilfe LocalStack von Terraform-Tests
<a name="test-aws-infra-localstack-terraform"></a>

*Ivan Girardi und Ioannis Kalyvas, Amazon Web Services*

## Zusammenfassung
<a name="test-aws-infra-localstack-terraform-summary"></a>

Dieses Muster hilft Ihnen, Infrastruktur als Code (IaC) für AWS in Terraform lokal zu testen, ohne die Infrastruktur in Ihrer Umgebung bereitstellen zu müssen. AWS Es integriert das [Terraform](https://developer.hashicorp.com/terraform/language/tests) Tests-Framework mit. [LocalStack](https://github.com/localstack/localstack) Der LocalStack Docker-Container bietet eine lokale Entwicklungsumgebung, die verschiedene emuliert. AWS-Services Auf diese Weise können Sie Infrastrukturbereitstellungen testen und iterieren, ohne dass Kosten in der entstehen. AWS Cloud

Diese Lösung bietet die folgenden Vorteile:
+ **Kostenoptimierung** — Die Durchführung von Tests gegen LocalStack macht die Verwendung überflüssig AWS-Services. Dies verhindert, dass Ihnen Kosten entstehen, die mit der Erstellung, dem Betrieb und der Änderung dieser AWS Ressourcen verbunden sind.
+ **Geschwindigkeit und Effizienz** — Lokales Testen ist in der Regel auch schneller als das Bereitstellen der AWS Ressourcen. Diese schnelle Feedback-Schleife beschleunigt Entwicklung und Debugging. Da sie lokal LocalStack ausgeführt wird, können Sie Ihre Terraform-Konfigurationsdateien ohne Internetverbindung entwickeln und testen. Sie können Terraform-Konfigurationsdateien lokal debuggen und sofort Feedback erhalten, was den Entwicklungsprozess rationalisiert.
+ **Konsistenz und Reproduzierbarkeit** — LocalStack bietet eine konsistente Testumgebung. Diese Konsistenz trägt dazu bei, dass Tests unabhängig von externen AWS Änderungen oder Netzwerkproblemen zu den gleichen Ergebnissen führen.
+ **Isolierung** — Das Testen mit LocalStack verhindert, dass Sie versehentlich AWS Live-Ressourcen oder Produktionsumgebungen beeinträchtigen. Diese Isolierung macht es sicher, verschiedene Konfigurationen zu experimentieren und zu testen.
+ **Automatisierung** [— Durch die Integration mit einer CI/CD-Pipeline (Continuous Integration and Continuous Delivery) können Sie Terraform-Konfigurationsdateien automatisch testen.](https://developer.hashicorp.com/terraform/language/files) Die Pipeline testet den IaC vor der Bereitstellung gründlich.
+ **Flexibilität** — Sie können verschiedene AWS-Regionen, und Servicekonfigurationen simulieren AWS-Konten, um sie besser an Ihre Produktionsumgebungen anzupassen.

## Voraussetzungen und Einschränkungen
<a name="test-aws-infra-localstack-terraform-prereqs"></a>

**Voraussetzungen**
+ [Installieren von Docker](https://docs.docker.com/get-started/get-docker/)
+ [Aktivieren Sie den Zugriff auf](https://docs.docker.com/reference/cli/dockerd/#daemon-socket-option) den Standard-Docker-Socket (`/var/run/docker.sock`). Weitere Informationen finden Sie in der [LocalStack -Dokumentation](https://docs.localstack.cloud/user-guide/aws/lambda/#migrating-to-lambda-v2).
+ [Installieren Sie Docker](https://docs.docker.com/compose/install/) Compose
+ [Installieren Sie](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) Terraform Version 1.6.0 oder höher
+ [Installieren Sie](https://developer.hashicorp.com/terraform/cli) Terraform CLI
+ [Konfigurieren Sie den Terraform-Anbieter](https://hashicorp.github.io/terraform-provider-aws/) AWS 
+ (Optional) [Installieren](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfigurieren](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) Sie das AWS Command Line Interface ()AWS CLI. Ein Beispiel für die Verwendung von with finden Sie in den AWS CLI GitHub [Repositorien Test AWS infrastructure using LocalStack und Terraform Tests](https://github.com/aws-samples/localstack-terraform-test). LocalStack

**Einschränkungen**
+ Dieses Muster enthält explizite Beispiele für das Testen von Amazon Simple Storage Service (Amazon S3), AWS Lambda AWS Step Functions, und Amazon DynamoDB DynamoDB-Ressourcen. Sie können diese Lösung jedoch um zusätzliche AWS Ressourcen erweitern.
+ Dieses Muster enthält Anweisungen zum lokalen Ausführen von Terraform-Tests. Sie können Tests jedoch in jede CI/CD Pipeline integrieren.
+ Dieses Muster enthält Anweisungen zur Verwendung des LocalStack Community-Images. Wenn Sie das LocalStack Pro-Image verwenden, lesen Sie in der [LocalStack Pro-Dokumentation](https://hub.docker.com/r/localstack/localstack-pro) nach.
+ LocalStack bietet Emulationsdienste für verschiedene AWS APIs. Eine vollständige Liste finden Sie unter Umfang der [AWS Servicefunktionen.](https://docs.localstack.cloud/user-guide/aws/feature-coverage/) Für einige erweiterte Funktionen ist möglicherweise ein Abonnement für LocalStack Pro erforderlich.

## Architektur
<a name="test-aws-infra-localstack-terraform-architecture"></a>

Das folgende Diagramm zeigt die Architektur für diese Lösung. Die Hauptkomponenten sind ein Quellcode-Repository, eine CI/CD Pipeline und ein LocalStack Docker-Container. Der LocalStack Docker-Container hostet lokal Folgendes: AWS-Services 
+ Ein Amazon S3 S3-Bucket zum Speichern von Dateien
+ Amazon CloudWatch für die Überwachung und Protokollierung
+ Eine AWS Lambda Funktion zum Ausführen von serverlosem Code
+ Eine AWS Step Functions Zustandsmaschine zur Orchestrierung mehrstufiger Workflows
+ Eine Amazon DynamoDB-Tabelle zum Speichern von NoSQL-Daten

![\[Eine CI/CD Pipeline erstellt und testet den LocalStack Docker-Container und die AWS-Ressourcen.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/34bfbdbf-14e7-42a0-9022-c85a9c30cdcd/images/dc61fac9-b92c-4841-9132-ff8bb865eed9.png)


Das Diagramm zeigt den folgenden Workflow:

1. Sie fügen eine Terraform-Konfigurationsdatei hinzu und übertragen sie in das Quellcode-Repository.

1. Die CI/CD Pipeline erkennt die Änderungen und leitet einen Build-Prozess für die statische Terraform-Codeanalyse ein. Die Pipeline erstellt und führt den LocalStack Docker-Container aus. Dann startet die Pipeline den Testprozess.

1. Die Pipeline lädt ein Objekt in einen Amazon S3 S3-Bucket hoch, der im LocalStack Docker-Container gehostet wird.

1. Durch das Hochladen des Objekts wird eine Funktion aufgerufen. AWS Lambda 

1. Die Lambda-Funktion speichert die Amazon S3 S3-Ereignisbenachrichtigung in einem CloudWatch Protokoll.

1. Die Lambda-Funktion startet eine AWS Step Functions Zustandsmaschine.

1. Die Zustandsmaschine schreibt den Namen des Amazon S3 S3-Objekts in eine DynamoDB-Tabelle.

1. Der Testprozess in der CI/CD Pipeline überprüft, ob der Name des hochgeladenen Objekts mit dem Eintrag in der DynamoDB-Tabelle übereinstimmt. Außerdem wird überprüft, ob der S3-Bucket mit dem angegebenen Namen bereitgestellt wurde und ob die AWS Lambda Funktion erfolgreich bereitgestellt wurde.

## Tools
<a name="test-aws-infra-localstack-terraform-tools"></a>

**AWS-Services**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Funktionen und andere Funktionen kombinieren können, um geschäftskritische AWS-Services Anwendungen zu erstellen.

**Andere Tools**
+ [Docker](https://www.docker.com/) ist eine Reihe von Platform-as-a-Service (PaaS) -Produkten, die Virtualisierung auf Betriebssystemebene nutzen, um Software in Containern bereitzustellen.
+ [Docker Compose](https://docs.docker.com/compose/) ist ein Tool zum Definieren und Ausführen von Multi-Container-Anwendungen.
+ [LocalStack](https://localstack.cloud)ist ein Cloud-Service-Emulator, der in einem einzigen Container läuft. Mithilfe LocalStack von können Sie Workloads auf Ihrem lokalen Computer ausführen, die verwenden AWS-Services, ohne eine Verbindung zu dem herzustellen. AWS Cloud
+ [Terraform](https://www.terraform.io/) ist ein IaC-Tool von HashiCorp , mit dem Sie Cloud- und lokale Ressourcen erstellen und verwalten können.
+ [Terraform Tests](https://developer.hashicorp.com/terraform/language/tests) hilft Ihnen dabei, Aktualisierungen der Terraform-Modulkonfiguration durch Tests zu validieren, die Integrations- oder Komponententests ähneln.

**Code-Repository**

Der Code für dieses Muster ist in den Repositorien GitHub [Test AWS Infrastructure using LocalStack und Terraform Tests](https://github.com/aws-samples/localstack-terraform-test) verfügbar.

## Best Practices
<a name="test-aws-infra-localstack-terraform-best-practices"></a>
+ Diese Lösung testet die AWS Infrastruktur, die in den Terraform-Konfigurationsdateien angegeben ist, und stellt diese Ressourcen nicht in der bereit. AWS Cloud Wenn Sie die Ressourcen bereitstellen möchten, folgen Sie dem [Prinzip der geringsten Rechte (IAM-Dokumentation) und konfigurieren Sie das Terraform-Backend](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) [ordnungsgemäß (Terraform-Dokumentation](https://developer.hashicorp.com/terraform/language/backend)).
+ Bei der Integration LocalStack in eine CI/CD Pipeline empfehlen wir, den Docker-Container nicht im Rechtemodus auszuführen. LocalStack Weitere Informationen finden Sie unter [Runtime-Rechte und Linux-Funktionen](https://docs.docker.com/engine/containers/run/#runtime-privilege-and-linux-capabilities) (Docker-Dokumentation) und [Sicherheit für selbstverwaltete Runner](https://docs.gitlab.com/runner/security/) (GitLab Dokumentation).

## Epen
<a name="test-aws-infra-localstack-terraform-epics"></a>

### Bereitstellen der Lösung
<a name="deploy-the-solution"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Geben Sie in einer Bash-Shell den folgenden Befehl ein. Dadurch wird die [AWS Testinfrastruktur mithilfe eines Terraform LocalStack Tests-Repositorys geklont](https://github.com/aws-samples/localstack-terraform-test) von: GitHub<pre>git clone https://github.com/aws-samples/localstack-terraform-test.git</pre> | DevOps Ingenieur | 
| Lass den LocalStack Container laufen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | DevOps Ingenieur | 
| Initialisieren Sie Terraform. | Geben Sie den folgenden Befehl ein, um Terraform zu initialisieren:<pre>terraform init</pre> | DevOps Ingenieur | 
| Führen Sie Terraform-Tests durch. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | DevOps Ingenieur | 
| Bereinigen Sie die Ressourcen. | Geben Sie den folgenden Befehl ein, um den LocalStack Container zu zerstören:<pre>docker-compose down</pre> | DevOps Ingenieur | 

## Fehlerbehebung
<a name="test-aws-infra-localstack-terraform-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| `Error: reading DynamoDB Table Item (Files\|README.md): empty`Ergebnis beim Ausführen des `terraform test` Befehls. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | 

## Zugehörige Ressourcen
<a name="test-aws-infra-localstack-terraform-resources"></a>
+ [Erste Schritte mit Terraform: Anleitungen für AWS CDK Experten (Prescriptive Guidance](https://docs.aws.amazon.com/prescriptive-guidance/latest/getting-started-terraform/introduction.html)) AWS CloudFormation AWS 
+ [Bewährte Methoden für die Verwendung des AWS Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/introduction.html) Providers (Prescriptive Guidance)AWS 
+ [Terraform CI/CD und das weitere Testen AWS mit dem neuen Terraform Test Framework](https://aws.amazon.com/blogs/devops/terraform-ci-cd-and-testing-on-aws-with-the-new-terraform-test-framework/) (Blogbeitrag)AWS 
+ [Beschleunigte Softwarebereitstellung mit LocalStack Cloud Emulator](https://aws.amazon.com/blogs/awsmarketplace/accelerating-software-delivery-localstack-cloud-emulator-aws-marketplace/) von (Blogbeitrag) AWS MarketplaceAWS 

## Zusätzliche Informationen
<a name="test-aws-infra-localstack-terraform-additional"></a>

**Integration mit Aktionen GitHub **

Mithilfe GitHub von Aktionen können Sie Tests LocalStack und Terraform-Tests in eine CI/CD Pipeline integrieren. Weitere Informationen finden Sie in der Dokumentation zu [GitHub Aktionen](https://docs.github.com/en/actions). Im Folgenden finden Sie ein Beispiel für eine GitHub Actions-Konfigurationsdatei:

```
name: LocalStack Terraform Test

on:
  push:
    branches:
      - '**'

  workflow_dispatch: {}

jobs:
  localstack-terraform-test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4

    - name: Build and Start LocalStack Container
      run: |
        docker compose up -d

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3
      with:
        terraform_version: latest

    - name: Run Terraform Init and Validation
      run: |
        terraform init
        terraform validate
        terraform fmt --recursive --check
        terraform plan
        terraform show

    - name: Run Terraform Test
      run: |
        terraform test

    - name: Stop and Delete LocalStack Container
      if: always()
      run: docker compose down
```

# Aktualisieren Sie SAP Pacemaker-Cluster von ENSA1 auf ENSA2
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2"></a>

*Gergely Cerdi und Balas Sandor Skublics, Amazon Web Services*

## Zusammenfassung
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-summary"></a>

In diesem Muster werden die Schritte und Überlegungen für das Upgrade eines SAP Pacemaker-Clusters, das auf dem Standalone Enqueue Server () basiert, auf erklärt. ENSA1 ENSA2 Die Informationen in diesem Muster gelten sowohl für die Betriebssysteme SUSE Linux Enterprise Server (SLES) als auch für Red Hat Enterprise Linux (RHEL).

Pacemaker-Cluster auf SAP NetWeaver 7.52 oder S/4HANA 1709 und früheren Versionen laufen auf einer Architektur und sind speziell für sie konfiguriert. ENSA1 ENSA1 Wenn Sie Ihre SAP-Workloads auf Amazon Web Services (AWS) ausführen und daran interessiert sind ENSA2, zu wechseln, stellen Sie möglicherweise fest, dass die SAP-, SUSE- und RHEL-Dokumentation keine umfassenden Informationen enthält. Dieses Muster beschreibt die technischen Schritte, die zur Neukonfiguration von SAP-Parametern und Pacemaker-Clustern für das Upgrade von zu erforderlich sind. ENSA1 ENSA2 Es enthält Beispiele für SUSE-Systeme, aber das Konzept ist dasselbe für RHEL-Cluster.

**Anmerkung**  
ENSA1 und ENSA2 sind Konzepte, die sich nur auf SAP-Anwendungen beziehen, sodass die Informationen in diesem Muster nicht für SAP HANA oder andere Clustertypen gelten.

**Anmerkung**  
Technisch gesehen ENSA2 kann es mit oder ohne Enqueue Replicator 2 verwendet werden. Für Hochverfügbarkeit (HA) und Failover-Automatisierung (durch eine Cluster-Lösung) ist jedoch Enqueue Replicator 2 erforderlich. In diesem Muster wird der Begriff *ENSA2 Cluster für Cluster* mit Standalone Enqueue Server 2 und Enqueue Replicator 2 verwendet.

## Voraussetzungen und Einschränkungen
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-prereqs"></a>

**Voraussetzungen**
+ Ein funktionierender ENSA1 Cluster, der Pacemaker und Corosync auf SLES oder RHEL verwendet.
+ Mindestens zwei Amazon Elastic Compute Cloud (Amazon EC2) -Instances, auf denen die (ABAP) SAP Central Services (ASCS/SCS) und Enqueue Replication Server (ERS) -Instances ausgeführt werden.
+ Kenntnisse in der Verwaltung von SAP-Anwendungen und -Clustern.
+ Zugriff auf die Linux-Umgebung als Root-Benutzer.

**Einschränkungen**
+ ENSA1basierte Cluster unterstützen nur eine Architektur mit zwei Knoten.
+ ENSA2basierte Cluster können nicht für NetWeaver SAP-Versionen vor 7.52 bereitgestellt werden.
+ EC2 Instanzen in Clustern sollten sich in verschiedenen AWS-Verfügbarkeitszonen befinden.

**Produktversionen**
+  NetWeaver SAP-Version 7.52 oder höher
+ Ab S/4HANA 2020 werden nur Cluster unterstützt ENSA2 
+ Kernel 7.53 oder höher, der Enqueue Replicator 2 unterstützt ENSA2 
+ SLES für SAP-Anwendungen Version 12 oder höher
+ RHEL für SAP mit High Availability (HA) Version 7.9 oder höher

## Architektur
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-architecture"></a>

**Quelltechnologie-Stack**
+ SAP NetWeaver 7.52 mit SAP Kernel 7.53 oder höher
+ SLES- oder RHEL-Betriebssystem

**Zieltechnologie-Stack**
+ SAP NetWeaver 7.52 mit SAP Kernel 7.53 oder höher, einschließlich S/4HANA 2020 mit ABAP-Plattform
+ SLES- oder RHEL-Betriebssystem

**Zielarchitektur**

Das folgende Diagramm zeigt eine HA-Konfiguration von ASCS/SCS und ERS-Instanzen, die auf einem ENSA2 Cluster basieren.

![\[HA-Architektur für ASCS/SCS und ERS-Instanzen auf einem ENSA2 Cluster\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/c32560de-901f-4796-a6b3-c08c109b22c8/images/19501713-0ddf-4242-9ea3-90478200a19e.png)


**Vergleich von ENSA1 und ENSA2 Clustern**

SAP wurde ENSA2 als Nachfolger von eingeführt ENSA1. Ein ENSA1 basierter Cluster unterstützt eine Architektur mit zwei Knoten, bei der die ASCS/SCS Instanz bei Auftreten eines Fehlers ein Failover zu ERS durchführt. Diese Einschränkung ergibt sich aus der Art und Weise, wie die ASCS/SCS Instance nach einem Failover die Informationen der Sperrtabelle aus dem gemeinsamen Speicher des ERS-Knotens wiedererlangt. ENSA2Auf Basis von Clustern mit Enqueue Replicator 2 entfällt diese Einschränkung, da die ASCS/SCS Instance die Sperrinformationen von der ERS-Instance über das Netzwerk sammeln kann. ENSA2basierte Cluster können mehr als zwei Knoten haben, da für die ASCS/SCS Instanz kein Failover zum ERS-Knoten mehr erforderlich ist. (In einer ENSA2 Cluster-Umgebung mit zwei Knoten führt die ASCS/SCS Instance jedoch immer noch ein Failover zum ERS-Knoten durch, da es im Cluster keine anderen Knoten gibt, auf die ein Failover durchgeführt werden kann.) ENSA2 wird ab SAP Kernel 7.50 mit einigen Einschränkungen unterstützt. Für ein HA-Setup, das Enqueue Replicator 2 unterstützt, ist die Mindestanforderung NetWeaver 7.52 (siehe [SAP OSS](https://launchpad.support.sap.com/#/notes/2630416) Hinweis 2630416). S/4HANA 1809 wird standardmäßig mit einer empfohlenen ENSA2 Architektur geliefert, wohingegen S/4HANA erst ab Version 2020 unterstützt. ENSA2 

**Automatisierung und Skalierung**

Der HA-Cluster in der Zielarchitektur sorgt dafür, dass ASCS automatisch auf andere Knoten umschaltet.

**Szenarien für die Umstellung auf ENSA2 basierte Cluster**

Es gibt zwei Hauptszenarien für das Upgrade auf ENSA2 basierte Cluster: 
+ Szenario 1: Sie entscheiden sich für ein Upgrade ENSA2 ohne begleitendes SAP-Upgrade oder S/4HANA-Konvertierung, vorausgesetzt, dass Ihr SAP-Release und Ihre Kernel-Version dies unterstützen. ENSA2
+ Szenario 2: Sie wechseln im ENSA2 Rahmen eines Upgrades oder einer Konvertierung (z. B. zu S/4HANA 1809 oder höher), indem Sie SUM verwenden.

Der Abschnitt [Epics](#upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics) behandelt die Schritte für diese beiden Szenarien. Im ersten Szenario müssen Sie SAP-bezogene Parameter manuell einrichten, bevor Sie die Clusterkonfiguration für ändern. ENSA2 Im zweiten Szenario werden die Binärdateien und SAP-bezogenen Parameter von SUM bereitgestellt, und Ihre einzige verbleibende Aufgabe besteht darin, die Clusterkonfiguration für HA zu aktualisieren. Wir empfehlen weiterhin, die SAP-Parameter zu überprüfen, nachdem Sie SUM verwendet haben. In den meisten Fällen ist die S/4HANA-Konvertierung der Hauptgrund für ein Cluster-Upgrade.

## Tools
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-tools"></a>
+ Für Betriebssystem-Paketmanager empfehlen wir die Tools Zypper (für SLES) oder YUM (für RHEL).
+ Für die Clusterverwaltung empfehlen wir crm-Shells (**für** SLES) oder **pcs-Shells** (für RHEL).
+ Tools zur SAP-Instanzverwaltung wie. SAPControl
+ (Optional) SUM-Tool für das Upgrade der S/4HANA-Konvertierung.

## Best Practices
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-best-practices"></a>
+ Bewährte Methoden für die Verwendung von SAP-Workloads auf AWS finden Sie im [SAP Lens for the](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html) AWS Well-Architected Framework.
+ Berücksichtigen Sie die Anzahl der Clusterknoten (ungerade oder gerade) in Ihrer ENSA2 Architektur mit mehreren Knoten.
+ Richten Sie den ENSA2 Cluster für SLES 15 gemäß dem SAP S/4-HA-CLU 1.0-Zertifizierungsstandard ein.
+ Speichern oder sichern Sie immer Ihren vorhandenen Cluster- und Anwendungsstatus, bevor Sie ein Upgrade auf durchführen. ENSA2

## Epen
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics"></a>

### Konfigurieren Sie SAP-Parameter manuell für ENSA2 (nur Szenario 1)
<a name="configure-sap-parameters-manually-for-ensa2-scenario-1-only"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die Parameter im Standardprofil. | Wenn Sie auf dieselbe SAP-Version aktualisieren möchten ENSA2 oder wenn Ihre Zielversion standardmäßig auf die Standardversion eingestellt ist ENSA1, setzen Sie die Parameter im Standardprofil (Datei DEFAULT.PFL) auf die folgenden Werte.<pre>enq/enable=TRUE<br />enq/serverhost=sapascsvirt<br />enq/serverinst=10        (instance number of ASCS/SCS instance)<br />enque/process_location=REMOTESA<br />enq/replicatorhost=sapersvirt<br />enq/replicatorinst=11    (instance number of ERS instance)<br />  </pre>wo `sapascsvirt` ist der virtuelle Hostname für die ASCS-Instanzen und `sapersvirt` der virtuelle Hostname für die ERS-Instanzen. Sie können diese an Ihre Zielumgebung anpassen.Um diese Upgrade-Option verwenden zu können, müssen Ihr SAP-Release und Ihre Kernel-Version Enqueue Replicator 2 unterstützen ENSA2 . | SAP | 
| Konfigurieren Sie das ASCS/SCS Instanzprofil. | Wenn Sie auf dieselbe SAP-Version aktualisieren möchten ENSA2 oder wenn Ihre Zielversion standardmäßig auf die Standardversion eingestellt ist ENSA1, legen Sie die folgenden Parameter im ASCS/SCS Instanzprofil fest. Der Abschnitt des Profils, in dem definiert ENSA1 ist, sieht ungefähr wie folgt aus.<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_EN = en.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_EN) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enserver$(FT_EXE) $(_EN) <br />Start_Program_01 = local $(_EN) pf=$(_PF)<br />  </pre>Um diesen Abschnitt neu zu konfigurieren für ENSA2:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)Dieser Profilbereich würde nach Ihren Änderungen etwa wie folgt aussehen.<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_ENQ = enq.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_ENQ) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enq_server$(FT_EXE) $(_ENQ) <br />Start_Program_01 = local $(_ENQ) pf=$(_PF) <br />... <br />enq/server/replication/enable = TRUE <br />Autostart = 0</pre>`_ENQ`Die Neustartoption darf nicht aktiviert sein. Wenn auf eingestellt `RestartProgram_01` ist`_ENQ`, ändern Sie es in`StartProgram_01`. Dadurch wird verhindert, dass SAP den Dienst neu startet oder die clusterverwalteten Ressourcen beeinträchtigt. | SAP | 
| Konfigurieren Sie das ERS-Profil. | Wenn Sie auf dieselbe SAP-Version aktualisieren möchten ENSA2 oder wenn Ihre Zielversion standardmäßig auf die Standardversion eingestellt ist ENSA1, legen Sie die folgenden Parameter im ERS-Instanzprofil fest.Suchen Sie den Abschnitt, in dem der Enqueue-Replikator definiert ist. Er wird dem Folgenden ähnlich sein.<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ER = er.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_03 = local rm -f $(_ER) <br />Execute_04 = local ln -s -f $(DIR_EXECUTABLE)/enrepserver$(FT_EXE) $(_ER) <br />Start_Program_00 = local $(_ER) pf=$(_PF) NR=$(SCSID)<br />  </pre>Um diesen Abschnitt für Enqueue Replicator 2 neu zu konfigurieren:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)Dieser Profilbereich sollte nach Ihren Änderungen etwa wie folgt aussehen.<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ENQR = enqr.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_01 = local rm -f $(_ENQR) <br />Execute_02 = local ln -s -f $(DIR_EXECUTABLE)/enq_replicator$(FT_EXE) $(_ENQR) <br />Start_Program_00 = local $(_ENQR) pf=$(_PF) NR=$(SCSID) <br />… <br />Autostart = 0</pre>`_ENQR`Die Neustartoption darf nicht aktiviert sein. Wenn auf eingestellt `RestartProgram_01` ist`_ENQR`, ändern Sie es in`StartProgram_01`. Dadurch wird verhindert, dass SAP den Dienst neu startet oder die clusterverwalteten Dienste beeinträchtigt. | SAP | 
| Starten Sie SAP Start Services neu. | Nachdem Sie die zuvor in diesem Epic beschriebenen Profile geändert haben, starten Sie SAP Start Services für beide ASCS/SCS und ERS neu.`sapcontrol -nr 10 -function RestartService SCT``sapcontrol -nr 11 -function RestartService SCT`wobei `SCT` auf die SAP-System-ID Bezug genommen wird, wobei davon ausgegangen wird, dass 10 und 11 die Instanznummern für ASCS/SCS bzw. ERS-Instanzen sind. | SAP | 

### Konfigurieren Sie den Cluster für neu ENSA2 (für beide Szenarien erforderlich)
<a name="reconfigure-the-cluster-for-ensa2-required-for-both-scenarios"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überprüfen Sie die Versionsnummern in den SAP-Ressourcenagenten. | Wenn Sie SUM verwenden, um SAP auf S/4HANA 1809 oder höher zu aktualisieren, verarbeitet SUM die Parameteränderungen in den SAP-Profilen. Nur der Cluster muss manuell angepasst werden. Wir empfehlen jedoch, die Parametereinstellungen zu überprüfen, bevor Sie Änderungen am Cluster vornehmen.Bei den Beispielen in diesem Epos wird davon ausgegangen, dass Sie das SUSE-Betriebssystem verwenden. **Wenn Sie RHEL verwenden, müssen Sie Tools wie YUM und die **PCS-Shell** anstelle von Zypper und crm verwenden.**Überprüfen Sie beide Knoten in der Architektur, um sicherzustellen, dass das `resource-agents` Paket der von SAP empfohlenen Mindestversion entspricht. Informationen zu SLES finden Sie in der SAP-OSS-Anmerkung 2641019. Informationen zu RHEL finden Sie im SAP OSS-Hinweis 2641322. (Für SAP-Hinweise ist ein [SAP ONE Support Launchpad-Benutzerkonto](https://support.sap.com/en/my-support/knowledge-base.html) erforderlich.)<pre>sapers:sctadm 23> zypper search -s -i resource-agents<br />Loading repository data...<br />Reading installed packages...<br />S | Name | Type | Version | Arch | Repository<br />--+-----------------+---------+------------------------------------+--------+-----------------------------<br />i | resource-agents | package | 4.8.0+git30.d0077df0-150300.8.28.1 | x86_64 | SLE-Product-HA15-SP3-Updates</pre>Aktualisieren Sie die `resource-agents` Version, falls erforderlich. | AWS-Systemadministrator | 
| Sichern Sie die Cluster-Konfiguration. | Sichern Sie die CRM-Clusterkonfiguration wie folgt.`crm configure show > /tmp/cluster_config_backup.txt` | AWS-Systemadministrator | 
| Stellen Sie den Wartungsmodus ein. | Stellen Sie den Cluster in den Wartungsmodus.`crm configure property maintenance-mode="true"` | AWS-Systemadministrator | 
| Überprüfen Sie die Cluster-Konfiguration. | Überprüfen Sie die aktuelle Clusterkonfiguration.`crm configure show`Hier ist ein Auszug aus der vollständigen Ausgabe:<pre>node 1: sapascs<br />node 2: sapers<br />...<br />primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \ <br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10<br />primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000<br />...<br />colocation col_sap_SCT_no_both -5000: grp_SCT_ERS11 grp_SCT_ASCS10<br />location loc_sap_SCT_failover_to_ers rsc_sap_SCT_ASCS10 \<br />rule 2000: runs_ers_SCT eq 1<br />order ord_sap_SCT_first_start_ascs Optional: rsc_sap_SCT_ASCS10:start rsc_sap_SCT_ERS11:stop symmetrical=false<br />...</pre>wo `sapascsvirt` sich auf den virtuellen Hostnamen für die ASCS-Instanzen `sapersvirt` bezieht, sich auf den virtuellen Hostnamen für die ERS-Instanzen bezieht und `SCT` sich auf die SAP-System-ID bezieht. | AWS-Systemadministrator | 
| Entfernen Sie die Failover-Colocation-Einschränkung. | Im vorherigen Beispiel `loc_sap_SCT_failover_to_ers` gibt die Standortbeschränkung an, dass die ENSA1 ASCS-Funktion beim Failover immer der ERS-Instanz folgen soll. Mit sollte ASCS in der Lage sein ENSA2, ungehindert ein Failover zu allen beteiligten Knoten durchzuführen, sodass Sie diese Einschränkung aufheben können.`crm configure delete loc_sap_SCT_failover_to_ers` | AWS-Systemadministrator | 
| Passen Sie die Primitive an. | Sie müssen auch geringfügige Änderungen an den ASCS SAPInstance - und ERS-Primitiven vornehmen.Hier ist ein Beispiel für ein SAPInstance ASCS-Primitiv, für das konfiguriert ist. ENSA1<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10</pre>Um ein Upgrade auf durchzuführen ENSA2, ändern Sie diese Konfiguration wie folgt.<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=3000 </pre>Dies ist ein Beispiel für ein SAPInstance ERS-Primitiv, für das konfiguriert ist ENSA1.<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000</pre>Um ein Upgrade durchzuführen ENSA2, ändern Sie diese Konfiguration wie folgt.<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true</pre>Sie können Primitive auf verschiedene Arten ändern. Sie können sie beispielsweise in einem Editor wie vi überarbeiten, wie im folgenden Beispiel.`crm configure edit rsc_sap_SCT_ERS11` | AWS-Systemadministrator | 
| Deaktivieren Sie den Wartungsmodus. | Deaktivieren Sie den Wartungsmodus auf dem Cluster.`crm configure property maintenance-mode="false"`Wenn sich der Cluster außerhalb des Wartungsmodus befindet, versucht er, die ASCS- und ERS-Instances mit den neuen ENSA2 Einstellungen online zu schalten. | AWS-Systemadministrator | 

### (Optional) Fügen Sie Clusterknoten hinzu
<a name="optional-add-cluster-nodes"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Informieren Sie sich über bewährte Verfahren. | Bevor Sie weitere Knoten hinzufügen, sollten Sie sich mit den bewährten Methoden vertraut machen, z. B. ob Sie eine ungerade oder eine gerade Anzahl von Knoten verwenden sollten. | AWS-Systemadministrator | 
| Knoten hinzufügen. | Das Hinzufügen weiterer Knoten umfasst eine Reihe von Aufgaben, wie z. B. die Aktualisierung des Betriebssystems, die Installation von Softwarepaketen, die den vorhandenen Knoten entsprechen, und die Bereitstellung von Halterungen. Sie können die Option „**Zusätzlichen Host vorbereiten**“ im SAP Software Provisioning Manager (SWPM) verwenden, um eine SAP-spezifische Baseline des Hosts zu erstellen. Weitere Informationen finden Sie in den SAP-Leitfäden, die im nächsten Abschnitt aufgeführt sind. | AWS-Systemadministrator | 

## Zugehörige Ressourcen
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-resources"></a>

**SAP- und SUSE-Referenzen**

Um auf SAP Notes zugreifen zu können, benötigen Sie ein SAP ONE Support Launchpad-Benutzerkonto. Weitere Informationen finden Sie auf der [SAP-Supportwebsite](https://support.sap.com/en/my-support/knowledge-base.html).
+ [SAP-Hinweis 2501860 ‒ Dokumentation für den NetWeaver SAP-Anwendungsserver für ABAP 7.52](https://launchpad.support.sap.com/#/notes/2501860)
+ [SAP-Hinweis 2641019 ‒ Installation von ENSA2 und Update von bis ENSA1 in der SUSE HA-Umgebung ENSA2 ](https://launchpad.support.sap.com/#/notes/2641019)
+ [SAP-Hinweis 2641322 ‒ Installation von ENSA2 und Update von ENSA1 bis ENSA2 bei Verwendung der Red Hat HA-Lösungen für SAP](https://launchpad.support.sap.com/#/notes/2641322)
+ [SAP-Hinweis 2711036 ‒ Verwendung des Standalone Enqueue Servers 2 in einer HA-Umgebung](https://launchpad.support.sap.com/#/notes/2711036)
+ [Eigenständiger Enqueue-Server 2 (SAP-Dokumentation)](https://help.sap.com/docs/ABAP_PLATFORM/cff8531bc1d9416d91bb6781e628d4e0/902412f09e134f5bb875adb6db585c92.html)
+ [SAP S/4 HANA ‒ Hochverfügbarkeitscluster von Enqueue Replication 2 — Einrichtungshandbuch](https://documentation.suse.com/sbp/all/html/SAP_S4HA10_SetupGuide-SLE12/index.html) (SUSE-Dokumentation)

**AWS-Referenzen**
+ [SAP HANA on AWS: Leitfaden zur Hochverfügbarkeitskonfiguration für SLES und RHEL](https://docs.aws.amazon.com/sap/latest/sap-hana/sap-hana-on-aws-ha-configuration.html)
+ [SAP Lens — AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html)

# Verwenden Sie konsistente Availability Zones VPCs für verschiedene AWS-Konten
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts"></a>

*Adam Spicer, Amazon Web Services*

## Zusammenfassung
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-summary"></a>

In der Amazon Web Services (AWS) -Cloud hat eine Availability Zone einen Namen, der je nach Ihren AWS-Konten variieren kann, und eine [Availability Zone ID (AZ ID)](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html), die ihren Standort identifiziert. Wenn Sie AWS verwenden CloudFormation , um virtuelle private Clouds (VPCs) zu erstellen, müssen Sie beim Erstellen der Subnetze den Namen oder die ID der Availability Zone angeben. Wenn Sie mehrere Konten erstellen VPCs , wird der Name der Availability Zone nach dem Zufallsprinzip ausgewählt, was bedeutet, dass Subnetze in jedem Konto unterschiedliche Availability Zones verwenden. 

Um dieselbe Availability Zone für Ihre Konten zu verwenden, müssen Sie den Availability Zone-Namen in jedem Konto derselben AZ-ID zuordnen. Das folgende Diagramm zeigt beispielsweise, dass die `use1-az6` AZ-ID `us-east-1a` in AWS-Konto A und `us-east-1c` AWS-Konto Z benannt ist.

![\[Die use1-az6 AZ-ID heißt us-east-1a in AWS-Konto A und us-east-1c in AWS-Konto Z.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/23c8a37b-2408-4534-a1e0-bccfa4d7fbe3.png)


 

Dieses Muster trägt dazu bei, die zonale Konsistenz sicherzustellen, indem es eine kontoübergreifende, skalierbare Lösung für die Verwendung derselben Availability Zones in Ihren Subnetzen bietet. Durch die zonale Konsistenz wird sichergestellt, dass Ihr kontenübergreifender Netzwerkverkehr Netzwerkpfade zwischen Availability Zones vermeidet, wodurch die Datenübertragungskosten gesenkt und die Netzwerklatenz zwischen Ihren Workloads verringert wird.

Dieses Muster ist ein alternativer Ansatz zur CloudFormation [AvailabilityZoneId AWS-Eigenschaft](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-availabilityzoneid).

## Voraussetzungen und Einschränkungen
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-prereqs"></a>

**Voraussetzungen**
+ Mindestens zwei aktive AWS-Konten in derselben AWS-Region.
+ Prüfen Sie, wie viele Availability Zones zur Unterstützung Ihrer VPC-Anforderungen in der Region erforderlich sind.
+ Identifizieren und notieren Sie die AZ-ID für jede Availability Zone, die Sie unterstützen müssen. Weitere Informationen dazu finden Sie unter [Availability Zone IDs für Ihre AWS-Ressourcen](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) in der AWS Resource Access Manager-Dokumentation.  
+ Eine geordnete, durch Kommas getrennte Liste Ihrer AZ. IDs Beispielsweise wird die erste Availability Zone auf Ihrer Liste als zugeordnet`az1`, die zweite Availability Zone als, und diese Zuordnungsstruktur wird fortgesetzt`az2`, bis Ihre kommagetrennte Liste vollständig zugeordnet ist. Es gibt keine maximale Anzahl von AZ, die zugeordnet werden können. IDs  
+ Die `az-mapping.yaml` Datei aus dem [Mapping-Repository für die Availability Zone mit GitHub mehreren Konten](https://github.com/aws-samples/multi-account-az-mapping/), die auf Ihren lokalen Computer kopiert wurde

## Architektur
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-architecture"></a>

Das folgende Diagramm zeigt die Architektur, die in einem Konto bereitgestellt wird und die Werte für den AWS Systems Manager Parameter Store erstellt. Diese Parameter Store-Werte werden verwendet, wenn Sie eine VPC im Konto erstellen.

![\[Workflow zum Erstellen von Systems Manager Manager-Parameterspeicher-Werten für jede AZ-ID und zum Speichern des AZ-Namens.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/f1168464-55f8-4efc-9b28-6a0cda668b9e.png)


Das Diagramm zeigt den folgenden Workflow:

1. Die Lösung dieses Musters wird für alle Konten bereitgestellt, die zonale Konsistenz für eine VPC erfordern. 

1. Die Lösung erstellt Parameter Store-Werte für jede AZ-ID und speichert den neuen Availability Zone-Namen. 

1. Die CloudFormation AWS-Vorlage verwendet den Availability Zone-Namen, der in jedem Parameter Store-Wert gespeichert ist, und dies gewährleistet die zonale Konsistenz.

Das folgende Diagramm zeigt den Arbeitsablauf für die Erstellung einer VPC mit der Lösung dieses Musters.

 

![\[Der Workflow reicht eine CloudFormation Vorlage ein, um eine VPC mit der richtigen AZ zu erstellen. IDs\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/cd859430-ac25-479f-b56a-21da24cddf21.png)


 

Das Diagramm zeigt den folgenden Workflow:

1. Reichen Sie eine Vorlage für die Erstellung einer VPC an AWS CloudFormation ein.

1. AWS CloudFormation löst die Parameter Store-Werte für jede Availability Zone auf und gibt den Availability Zone-Namen für jede AZ-ID zurück.

1. Eine VPC wird mit der richtigen AZ erstellt, die für die zonale Konsistenz IDs erforderlich ist.

Nachdem Sie die Lösung für dieses Muster bereitgestellt haben, können Sie Subnetze erstellen, die auf die Parameter Store-Werte verweisen. Wenn Sie AWS verwenden CloudFormation, können Sie auf die Werte der Availability Zone-Zuordnungsparameter aus dem folgenden YAML-formatierten Beispielcode verweisen:

```
Resources:
    PrivateSubnet1AZ1: 
        Type: AWS::EC2::Subnet 
        Properties: 
            VpcId: !Ref VPC
            CidrBlock: !Ref PrivateSubnetAZ1CIDR
            AvailabilityZone: 
                !Join 
                    - ''
                    - - '{{resolve:ssm:/az-mapping/az1:1}}'
```

Dieser Beispielcode ist in der `vpc-example.yaml ` Datei aus dem Mapping-Repository für GitHub [mehrere Accounts Availability Zone](https://github.com/aws-samples/multi-account-az-mapping/) enthalten. Es zeigt Ihnen, wie Sie eine VPC und Subnetze erstellen, die sich aus Gründen der zonalen Konsistenz an den Werten des Parameterspeichers orientieren.

**Technologie-Stack**
+ AWS CloudFormation
+ AWS Lambda
+ AWS Systems Manager Parameter Store

**Automatisierung und Skalierung**

Sie können dieses Muster mithilfe von AWS CloudFormation StackSets oder der Lösung Customizations for AWS Control Tower für all Ihre AWS-Konten bereitstellen. Weitere Informationen finden Sie unter [Working with AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) in der AWS Cloudformation-Dokumentation und unter [Anpassungen für AWS Control Tower](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) in der AWS-Lösungsbibliothek. 

Nachdem Sie die CloudFormation AWS-Vorlage bereitgestellt haben, können Sie sie so aktualisieren, dass sie die Parameter Store-Werte verwendet und Ihre VPCs In-Pipelines oder gemäß Ihren Anforderungen bereitstellen. 

## Tools
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, Ihre AWS-Ressourcen zu modellieren und einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus zu verwalten. Sie können eine Vorlage verwenden, um Ihre Ressourcen und ihre Abhängigkeiten zu beschreiben und sie zusammen als Stapel zu starten und zu konfigurieren, anstatt Ressourcen einzeln zu verwalten. Sie können Stacks für mehrere AWS-Konten und AWS-Regionen verwalten und bereitstellen.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. Sie bezahlen nur für die Datenverarbeitungszeit, die Sie wirklich nutzen und es werden keine Gebühren in Rechnung gestellt, wenn Ihr Code nicht ausgeführt wird.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) ist eine Funktion von AWS Systems Manager. Es bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.

**Code**

Der Code für dieses Muster befindet sich im [Mapping-Repository für die Availability Zone mit GitHub mehreren Konten](https://github.com/aws-samples/multi-account-az-mapping/).

## Epen
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-epics"></a>

### Stellen Sie die Datei az-mapping.yaml bereit
<a name="deploy-the-az-mapping-yaml-file"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ermitteln Sie die erforderlichen Availability Zones für die Region. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.html) | Cloud-Architekt | 
| Stellen Sie die Datei az-mapping.yaml bereit. | Verwenden Sie die `az-mapping.yaml` Datei, um einen CloudFormation AWS-Stack in allen erforderlichen AWS-Konten zu erstellen. Verwenden Sie im `AZIds` Parameter die kommagetrennte Liste, die Sie zuvor erstellt haben. Wir empfehlen Ihnen, [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) oder die [Customizations for AWS Control Tower Solution](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) zu verwenden. | Cloud-Architekt | 

### Stellen Sie das VPCs in Ihren Konten bereit
<a name="deploy-the-vpcs-in-your-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Passen Sie die CloudFormation AWS-Vorlagen an. | Wenn Sie die Subnetze mit AWS erstellen CloudFormation, passen Sie die Vorlagen so an, dass sie die Parameter Store-Werte verwenden, die Sie zuvor erstellt haben.Eine Beispielvorlage finden Sie in der `vpc-example.yaml` Datei im [Mapping-Repository für die Availability Zone mit GitHub mehreren Konten](https://github.com/aws-samples/multi-account-az-mapping/). | Cloud-Architekt | 
| Stellen Sie das bereit VPCs. | Stellen Sie die benutzerdefinierten CloudFormation AWS-Vorlagen in Ihren Konten bereit. Jede VPC in der Region hat dann zonale Konsistenz in den Availability Zones, die für die Subnetze verwendet werden. | Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-resources"></a>
+ [Availability Zone IDs für Ihre AWS-Ressourcen](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) (AWS Resource Access Manager-Dokumentation)
+ [AWS::EC2::Subnet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html)( CloudFormation AWS-Dokumentation)

# Verwenden Sie Benutzer IDs in IAM-Richtlinien für Zugriffskontrolle und Automatisierung
<a name="use-user-ids-iam-policies-access-control-automation"></a>

*Srinivas Ananda Babu und Ram Kandaswamy, Amazon Web Services*

## Zusammenfassung
<a name="use-user-ids-iam-policies-access-control-automation-summary"></a>

Dieses Muster erklärt die potenziellen Fallstricke bei der Verwendung von benutzernamenbasierten Richtlinien in AWS Identity and Access Management (IAM), die Vorteile der Verwendung von Benutzern und die Integration dieses Ansatzes in die Automatisierung. IDs AWS CloudFormation 

In der hilft Ihnen der IAM-Dienst dabei AWS Cloud, Benutzeridentitäten und Zugriffskontrolle präzise zu verwalten. Wenn Sie sich bei der Erstellung von IAM-Richtlinien auf Benutzernamen verlassen, kann dies jedoch zu unvorhergesehenen Sicherheitsrisiken und Problemen mit der Zugriffskontrolle führen. Stellen Sie sich zum Beispiel dieses Szenario vor: Ein neuer Mitarbeiter, John Doe, tritt Ihrem Team bei, und Sie erstellen ein IAM-Benutzerkonto mit dem Benutzernamen, der ihm über IAM-Richtlinien`j.doe`, die auf Benutzernamen verweisen, Berechtigungen gewährt. Wenn John das Unternehmen verlässt, wird das Konto gelöscht. Das Problem beginnt, wenn eine neue Mitarbeiterin, Jane Doe, Ihrem Team beitritt und der `j.doe` Benutzername neu erstellt wird. Die bestehenden Richtlinien gewähren Jane Doe jetzt dieselben Berechtigungen wie John Doe. Dies führt zu einem potenziellen Sicherheits- und Compliance-Albtraum.

Die manuelle Aktualisierung jeder Richtlinie, um neue Benutzerdaten zu berücksichtigen, ist ein zeitaufwändiger und fehleranfälliger Prozess, insbesondere wenn Ihr Unternehmen wächst. Die Lösung besteht darin, eine eindeutige und unveränderliche Benutzer-ID zu verwenden. Wenn Sie ein IAM-Benutzerkonto erstellen, AWS weist Sie dem IAM-Benutzer eine eindeutige Benutzer-ID (oder Prinzipal-ID) zu. Sie können diese Benutzer IDs in Ihren IAM-Richtlinien verwenden, um eine konsistente und zuverlässige Zugriffskontrolle zu gewährleisten, die nicht durch Änderungen oder Wiederverwendung von Benutzernamen beeinträchtigt wird.

Eine IAM-Richtlinie, die eine Benutzer-ID verwendet, könnte beispielsweise so aussehen:

```
{ 
    "Version": "2012-10-17",		 	 	  
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": "s3:ListBucket", 
            "Resource": "arn:aws:s3:::example-bucket", 
            "Principal": { "AWS": "arn:aws:iam::123456789012:user/abcdef01234567890" } 
        } 
      ] 
}
```

Die Verwendung von Usern IDs in IAM-Richtlinien bietet unter anderem folgende Vorteile:
+ **Einzigartigkeit.** Benutzer IDs sind in allen AWS-Konten Bereichen einzigartig und bieten daher eine korrekte und konsistente Berechtigungsanwendung.
+ **Unveränderlichkeit.** Der Benutzer IDs kann nicht geändert werden, daher bieten sie eine stabile Kennung für die Referenzierung von Benutzern in Richtlinien.
+ **Prüfung und Einhaltung der Vorschriften.** AWS-Services nehmen häufig Benutzer IDs in Logs und Audit-Trails auf, sodass Aktionen leicht auf bestimmte Benutzer zurückgeführt werden können.
+ **Automatisierung und Integration.** Durch die Verwendung von IDs AWS APIs SDKs Benutzerprogrammierungsskripten oder Automatisierungsskripten wird sichergestellt, dass Prozesse von Benutzernamenänderungen nicht beeinträchtigt werden.
+ **Zukunftssicherheit.** Durch die Verwendung von IDs Benutzerrichtlinien von Anfang an können potenzielle Probleme mit der Zugriffskontrolle oder umfangreiche Richtlinienaktualisierungen vermieden werden.

**Automation**

Wenn Sie IaC-Tools (Infrastructure as Code) verwenden AWS CloudFormation, können die Fallstricke benutzernamenbasierter IAM-Richtlinien immer noch zu Problemen führen. Die IAM-Benutzerressource gibt den Benutzernamen zurück, wenn Sie die systeminterne Funktion aufrufen. `Ref` Im Zuge der Weiterentwicklung der Infrastruktur Ihres Unternehmens kann der Zyklus des Erstellens und Löschens von Ressourcen, einschließlich IAM-Benutzerkonten, zu unbeabsichtigten Problemen bei der Zugriffskontrolle führen, wenn Sie Benutzernamen wiederverwenden.

Um dieses Problem zu beheben, empfehlen wir Ihnen, Benutzer IDs in Ihre Vorlagen zu integrieren. CloudFormation Es kann jedoch schwierig sein, Benutzer IDs für diesen Zweck zu finden. Hier können benutzerdefinierte Ressourcen hilfreich sein. Sie können CloudFormation benutzerdefinierte Ressourcen verwenden, um die Funktionalität des Dienstes zu erweitern, indem Sie ihn mit AWS APIs oder mit externen Diensten integrieren. Indem Sie eine benutzerdefinierte Ressource erstellen, die die Benutzer-ID für einen bestimmten IAM-Benutzer abruft, können Sie die Benutzer-ID in Ihren CloudFormation Vorlagen verfügbar machen. Dieser Ansatz rationalisiert den Prozess der Benutzerreferenzierung IDs und stellt sicher, dass Ihre Automatisierungsworkflows robust und zukunftssicher bleiben.

## Voraussetzungen und Einschränkungen
<a name="use-user-ids-iam-policies-access-control-automation-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Eine IAM-Rolle für einen Cloud-Administrator zum Ausführen der Vorlage CloudFormation 

**Einschränkungen**
+ Einige AWS-Services sind nicht in allen AWS-Regionen verfügbar. Informationen zur Verfügbarkeit in den einzelnen Regionen finden Sie [AWS-Services unter Nach Regionen](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Informationen zu bestimmten Endpunkten finden Sie auf der Seite [Dienstendpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html). Wählen Sie dort den Link für den Dienst aus.

## Architektur
<a name="use-user-ids-iam-policies-access-control-automation-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt, wie eine benutzerdefinierte Ressource, unterstützt von, CloudFormation verwendet wird AWS Lambda , um die IAM-Benutzer-ID abzurufen.

![\[Abrufen der IAM-Benutzer-ID mithilfe einer CloudFormation benutzerdefinierten Ressource.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/71698647-274e-4911-92f0-549e444b53f6/images/7e507df4-f597-499e-bd5b-6d7a55e64146.png)


**Automatisierung und Skalierung**

Sie können die CloudFormation Vorlage mehrfach für verschiedene AWS-Regionen Konten verwenden. Sie müssen sie in jeder Region oder jedem Konto nur einmal ausführen.

## Tools
<a name="use-user-ids-iam-policies-access-control-automation-tools"></a>

**AWS-Services**
+ [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) ist ein Webservice, mit dem Sie den Zugriff AWS auf Ressourcen sicher kontrollieren können. Sie verwenden IAM, um zu steuern, wer authentifiziert (angemeldet) und autorisiert (Berechtigungen besitzt) ist, Ressourcen zu nutzen.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)— AWS CloudFormation unterstützt Sie bei der Modellierung und Einrichtung Ihrer AWS Ressourcen, sodass Sie weniger Zeit mit der Verwaltung dieser Ressourcen verbringen und sich mehr auf Ihre Anwendungen konzentrieren können, auf denen sie ausgeführt werden. AWS Sie erstellen eine Vorlage, die die AWS Ressourcen beschreibt, die Sie benötigen, und CloudFormation kümmert sich um die Bereitstellung und Konfiguration dieser Ressourcen für Sie.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)— AWS Lambda ist ein Rechendienst, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. 

## Best Practices
<a name="use-user-ids-iam-policies-access-control-automation-best-practices"></a>

Wenn Sie bei Null anfangen oder eine Implementierung auf der grünen Wiese planen, empfehlen wir Ihnen dringend, eine zentralisierte [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)Benutzerverwaltung zu verwenden. IAM Identity Center lässt sich in Ihre vorhandenen Identitätsanbieter (wie Active Directory oder Okta) integrieren, um Benutzeridentitäten zu bündeln AWS, sodass Sie IAM-Benutzer nicht mehr direkt erstellen und verwalten müssen. Dieser Ansatz gewährleistet nicht nur eine konsistente Zugriffskontrolle, sondern vereinfacht auch die Verwaltung des Benutzerlebenszyklus und trägt zur Verbesserung von Sicherheit und Compliance in Ihrer gesamten Umgebung bei. AWS 

## Epen
<a name="use-user-ids-iam-policies-access-control-automation-epics"></a>

### Bestätigen Sie die Berechtigungen
<a name="validate-permissions"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie Ihre AWS-Konto und Ihre IAM-Rolle. | Vergewissern Sie sich, dass Sie über eine IAM-Rolle mit Berechtigungen zum Bereitstellen von CloudFormation Vorlagen in Ihrem verfügen. AWS-KontoWenn Sie planen, die Vorlage im letzten Schritt dieses Verfahrens AWS CLI anstelle der CloudFormation Konsole bereitzustellen, sollten Sie auch temporäre Anmeldeinformationen für die Ausführung von AWS CLI Befehlen einrichten. Anweisungen finden Sie in der [IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli). | Cloud-Architekt | 

### Erstellen Sie eine CloudFormation Vorlage
<a name="build-a-cfnshort-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine CloudFormation Vorlage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html) | AWS DevOps, Cloud-Architekt | 
| Fügen Sie einen Eingabeparameter für den Benutzernamen hinzu. | Fügen Sie dem `Parameters` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>Parameters:<br />  NewIamUserName:<br />    Type: String<br />    Description: Unique username for the new IAM user<br /></pre>Dieser Parameter fordert den Benutzer zur Eingabe des Benutzernamens auf. | AWS DevOps, Cloud-Architekt | 
| Fügen Sie eine benutzerdefinierte Ressource hinzu, um einen IAM-Benutzer zu erstellen. | Fügen Sie dem `Resources` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>Resources:<br />  rNewIamUser:<br />    Type: 'AWS::IAM::User'<br />    Properties:<br />      UserName: !Ref NewIamUserName<br /></pre>Dieser Code fügt eine CloudFormation Ressource hinzu, die einen IAM-Benutzer mit dem durch den `NewIamUserName` Parameter angegebenen Namen erstellt. | AWS DevOps, Cloud-Architekt | 
| Fügen Sie eine Ausführungsrolle für die Lambda-Funktion hinzu. | In diesem Schritt erstellen Sie eine IAM-Rolle, die einer AWS Lambda Funktion die Berechtigung zum Abrufen des IAM erteilt. `UserId` Geben Sie die folgenden Mindestberechtigungen an, die für die Ausführung von Lambda erforderlich sind:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html)Anweisungen zum Erstellen einer Ausführungsrolle finden Sie in der [Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Sie werden im nächsten Schritt, wenn Sie die Lambda-Funktion erstellen, auf diese Rolle verweisen. | AWS-Administrator, Cloud-Architekt | 
| Fügen Sie eine Lambda-Funktion hinzu, um das eindeutige `UserId` IAM zu erhalten. | In diesem Schritt definieren Sie eine Lambda-Funktion mit einer Python-Laufzeit, um das eindeutige `UserId` IAM zu erhalten. Fügen Sie dazu dem `Resources` Abschnitt der Vorlage den folgenden Code hinzu. CloudFormation `<<ROLENAME>>`Ersetzen Sie ihn durch den Namen der Ausführungsrolle, die Sie im letzten Schritt erstellt haben.<pre>  GetUserLambdaFunction:<br />    Type: 'AWS::Lambda::Function'<br />    Properties:<br />      Handler: index.handler<br />      Role: <<ROLENAME>><br />      Timeout: 30<br />      Runtime: python3.11<br />      Code:<br />        ZipFile: |<br />          import cfnresponse, boto3<br />          def handler(event, context):<br />            try:<br />              print(event)<br />              user = boto3.client('iam').get_user(UserName=event['ResourceProperties']['NewIamUserName'])['User']<br />              cfnresponse.send(event, context, cfnresponse.SUCCESS, {'NewIamUserId': user['UserId'], 'NewIamUserPath': user['Path'], 'NewIamUserArn': user['Arn']})<br />            except Exception as e:<br />              cfnresponse.send(event, context, cfnresponse.FAILED, {'NewIamUser': str(e)})<br /></pre> | AWS DevOps, Cloud-Architekt | 
| Fügen Sie eine benutzerdefinierte Ressource hinzu. | Fügen Sie dem `Resources` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>  rCustomGetUniqueUserId:<br />    Type: 'Custom::rCustomGetUniqueUserIdWithLambda'<br />    Properties:<br />      ServiceToken: !GetAtt GetUserLambdaFunction.Arn<br />      NewIamUserName: !Ref NewIamUserName<br /></pre>Diese benutzerdefinierte Ressource ruft die Lambda-Funktion auf, um das `UserID` IAM abzurufen. | AWS DevOps, Cloud-Architekt | 
| Definieren Sie CloudFormation Ausgaben. | Fügen Sie dem `Outputs` Abschnitt der CloudFormation Vorlage den folgenden Code hinzu:<pre>Outputs:<br />  NewIamUserId:<br />    Value: !GetAtt rCustomGetUniqueUserId.NewIamUserId<br /></pre>Dadurch wird das IAM `UserID` für den neuen IAM-Benutzer angezeigt. | AWS DevOps, Cloud-Architekt | 
| Speichern Sie die Vorlage. | Speichern Sie Ihre Änderungen an der CloudFormation Vorlage. | AWS DevOps, Cloud-Architekt | 

### Stellen Sie die CloudFormation Vorlage bereit
<a name="deploy-the-cfnshort-template"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die CloudFormation Vorlage bereit. | Folgen Sie den Anweisungen in der [CloudFormation Dokumentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html), um die `get_unique_user_id.yaml` Vorlage mithilfe der CloudFormation Konsole bereitzustellen.Alternativ können Sie den folgenden AWS CLI Befehl ausführen, um die Vorlage bereitzustellen:<pre>aws cloudformation create-stack \<br />--stack-name DemoNewUser \<br />--template-body file://get_unique_user_id.yaml \<br />--parameters ParameterKey=NewIamUserName,ParameterValue=demouser \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps, Cloud-Architekt | 

## Zugehörige Ressourcen
<a name="use-user-ids-iam-policies-access-control-automation-resources"></a>
+ [Erstellen Sie einen Stack von der CloudFormation Konsole](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) aus (CloudFormation Dokumentation)
+ [Lambda-gestützte benutzerdefinierte Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html) (Dokumentation) CloudFormation 
+ [Eindeutige Identifikatoren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) (IAM-Dokumentation)
+ [Verwenden Sie temporäre Anmeldeinformationen mit AWS Ressourcen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) (IAM-Dokumentation)

# Validieren Sie den Code von Account Factory for Terraform (AFT) lokal
<a name="validate-account-factory-for-terraform-aft-code-locally"></a>

*Alexandru Pop und Michal Gorniak, Amazon Web Services*

## Zusammenfassung
<a name="validate-account-factory-for-terraform-aft-code-locally-summary"></a>

Dieses Muster zeigt, wie HashiCorp Terraform-Code, der von AWS Control Tower Account Factory for Terraform (AFT) verwaltet wird, lokal getestet wird. Terraform ist ein IaC-Tool (Infrastructure as Code), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. AFT richtet eine Terraform-Pipeline ein, mit der Sie mehrere Eingänge bereitstellen und anpassen können. AWS-Konten AWS Control Tower

Während der Codeentwicklung kann es hilfreich sein, Ihre Terraform-Infrastruktur als Code (IaC) lokal außerhalb der AFT-Pipeline zu testen. Dieses Muster zeigt, wie Sie Folgendes tun können:
+ Rufen Sie eine lokale Kopie des Terraform-Codes ab, der in den AWS CodeCommit Repositorys Ihres AFT-Verwaltungskontos gespeichert ist.
+ Simulieren Sie die AFT-Pipeline lokal mithilfe des abgerufenen Codes.

Dieses Verfahren kann auch verwendet werden, um Terraform-Befehle auszuführen, die nicht Teil der normalen AFT-Pipeline sind. Sie können diese Methode beispielsweise verwenden, um Befehle wie`terraform validate`, `terraform plan``terraform destroy`, und auszuführen. `terraform import`

## Voraussetzungen und Einschränkungen
<a name="validate-account-factory-for-terraform-aft-code-locally-prereqs"></a>

**Voraussetzungen**
+ Eine aktive Umgebung AWS mit mehreren Konten, die Folgendes verwendet [AWS Control Tower](https://aws.amazon.com/controltower)
+ Eine vollständig bereitgestellte [AFT-Umgebung](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html)
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [AWS CLI Credential Helper für AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html), installiert und konfiguriert
+ Python 3.x
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), auf Ihrem lokalen Computer installiert und konfiguriert
+ `git-remote-commit`Hilfsprogramm, [installiert und konfiguriert](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install)
+ [Terraform](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS), installiert und konfiguriert (die lokale Terraform-Paketversion muss mit der Version übereinstimmen, die in der AFT-Bereitstellung verwendet wird)

**Einschränkungen**
+ Dieses Muster deckt nicht die Bereitstellungsschritte ab AWS Control Tower, die für AFT oder bestimmte Terraform-Module erforderlich sind.
+ Die Ausgabe, die während dieses Vorgangs lokal generiert wird, wird nicht in den Laufzeitprotokollen der AFT-Pipeline gespeichert.

## Architektur
<a name="validate-account-factory-for-terraform-aft-code-locally-architecture"></a>

**Zieltechnologie-Stack**
+ AFT-Infrastruktur, die innerhalb einer AWS Control Tower Bereitstellung bereitgestellt wird
+ Terraform
+ Git
+ AWS CLI Version 2

**Automatisierung und Skalierung**

Dieses Muster zeigt, wie Terraform-Code für globale AFT-Kontoanpassungen in einem einzigen von AFT verwalteten System lokal aufgerufen wird. AWS-Konto Nachdem Ihr Terraform-Code validiert wurde, können Sie ihn auf die verbleibenden Konten in Ihrer Umgebung mit mehreren Konten anwenden. Weitere Informationen finden Sie in der Dokumentation unter [Anpassungen erneut aufrufen](https://docs.aws.amazon.com/controltower/latest/userguide/aft-account-customization-options.html#aft-re-invoke-customizations). AWS Control Tower 

Sie können auch einen ähnlichen Prozess verwenden, um AFT-Kontoanpassungen in einem lokalen Terminal auszuführen. Um Terraform-Code lokal aus AFT-Kontoanpassungen aufzurufen, klonen Sie das **aft-account-customizations**Repository anstelle des Repositorys CodeCommit in Ihrem **aft-global-account-customizations**AFT-Verwaltungskonto.

## Tools
<a name="validate-account-factory-for-terraform-aft-code-locally-tools"></a>

**AWS-Services**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)hilft Ihnen bei der Einrichtung und Verwaltung einer Umgebung mit AWS mehreren Konten und folgt dabei den vorgeschriebenen Best Practices.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.

**Andere Dienste**
+ [HashiCorp Terraform](https://www.terraform.io/docs) ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem.

**Code**

Im Folgenden finden Sie ein Beispiel für ein Bash-Skript, mit dem Terraform-Code, der von AFT verwaltet wird, lokal ausgeführt werden kann. Folgen Sie den Anweisungen im Abschnitt [Epics](#validate-account-factory-for-terraform-aft-code-locally-epics) dieses Musters, um das Skript zu verwenden.

```
#! /bin/bash
# Version: 1.1 2022-06-24 Unsetting AWS_PROFILE since, when set, it interferes with script operation
#          1.0 2022-02-02 Initial Version
#
# Purpose: For use with AFT: This script runs the local copy of TF code as if it were running within AFT pipeline.
#        * Facilitates testing of what the AFT pipline will do 
#           * Provides the ability to run terraform with custom arguments (like 'plan' or 'move') which are currently not supported within the pipeline.
#
# © 2021 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.
# This AWS Content is provided subject to the terms of the AWS Customer Agreement
# available at http://aws.amazon.com/agreement or other written agreement between
# Customer and either Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.
#
# Note: Arguments to this script are passed directly to 'terraform' without parsing nor validation by this script.
#
# Prerequisites:
#    1. local copy of ct GIT repositories
#    2. local backend.tf and aft-providers.tf filled with data for the target account on which terraform is to be run
#       Hint: The contents of above files can be obtain from the logs of a previous execution of the AFT pipeline for the target account.
#    3. 'terraform' binary is available in local PATH
#    4. Recommended: .gitignore file containing 'backend.tf', 'aft_providers.tf' so the local copy of these files are not pushed back to git

readonly credentials=$(aws sts assume-role \
    --role-arn arn:aws:iam::$(aws sts get-caller-identity --query "Account" --output text ):role/AWSAFTAdmin \
    --role-session-name AWSAFT-Session \
    --query Credentials )

unset AWS_PROFILE
export AWS_ACCESS_KEY_ID=$(echo $credentials | jq -r '.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $credentials | jq -r '.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $credentials | jq -r '.SessionToken')
terraform "$@"
```

## Epen
<a name="validate-account-factory-for-terraform-aft-code-locally-epics"></a>

### Speichern Sie den Beispielcode als lokale Datei
<a name="save-the-example-code-as-a-local-file"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Speichern Sie den Beispielcode als lokale Datei. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | AWS-Administrator | 
| Machen Sie den Beispielcode lauffähig. | Öffnen Sie ein Terminalfenster und authentifizieren Sie sich AWS bei Ihrem AFT-Verwaltungskonto, indem Sie einen der folgenden Schritte ausführen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)Ihre Organisation verfügt möglicherweise auch über ein benutzerdefiniertes Tool, mit dem Sie Anmeldeinformationen für Ihre AWS Umgebung bereitstellen können. | AWS-Administrator | 
| Überprüfen Sie den korrekten Zugriff auf das AFT-Verwaltungskonto AWS-Region. | Stellen Sie sicher, dass Sie dieselbe Terminalsitzung verwenden, mit der Sie sich bei Ihrem AFT-Verwaltungskonto authentifiziert haben.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | AWS-Administrator | 
| Erstellen Sie ein neues, lokales Verzeichnis zum Speichern des AFT-Repository-Codes. | Führen Sie in derselben Terminalsitzung die folgenden Befehle aus:<pre>mkdir my_aft <br />cd my_aft</pre> | AWS-Administrator | 
| Klonen Sie den Remote-AFT-Repository-Code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | AWS-Administrator | 

### Erstellen Sie die Terraform-Konfigurationsdateien, die für die lokale Ausführung der AFT-Pipeline erforderlich sind
<a name="create-the-terraform-configuration-files-required-for-the-aft-pipeline-to-run-locally"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Öffnen Sie eine zuvor ausgeführte AFT-Pipeline und kopieren Sie die Terraform-Konfigurationsdateien in einen lokalen Ordner. | Die `backend.tf` in diesem Epos erstellten `aft-providers.tf` Konfigurationsdateien werden benötigt, damit die AFT-Pipeline lokal ausgeführt werden kann. Diese Dateien werden automatisch innerhalb der cloudbasierten AFT-Pipeline erstellt, müssen aber manuell erstellt werden, damit die Pipeline lokal ausgeführt werden kann. Für die lokale Ausführung der AFT-Pipeline ist ein Satz von Dateien erforderlich, die den Betrieb der Pipeline innerhalb einer einzigen Datei repräsentieren AWS-Konto.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)**Beispiel für eine automatisch generierte backend.tf-Anweisung**<pre>## Autogenerated backend.tf ##<br />## Updated on: 2022-05-31 16:27:45 ##<br />terraform {<br />  required_version = ">= 0.15.0"<br />  backend "s3" {<br />    region         = "us-east-2"<br />    bucket         = "aft-backend-############-primary-region"<br />    key            = "############-aft-global-customizations/terraform.tfstate"<br />    dynamodb_table = "aft-backend-############"<br />    encrypt        = "true"<br />    kms_key_id     = "########-####-####-####-############"<br />    role_arn       = "arn:aws:iam::#############:role/AWSAFTExecution"<br />  }<br />}</pre>****Die `aft-providers.tf` Dateien `backend.tf` und sind an eine bestimmte AFT-Bereitstellung und einen bestimmten AWS-Konto Ordner gebunden. Diese Dateien unterscheiden sich auch, je nachdem, ob sie sich im **aft-global-customizations**aft-account-customizations****and-Repository innerhalb derselben AFT-Bereitstellung befinden. Stellen Sie sicher, dass Sie beide Dateien aus derselben Runtime-Liste generieren. | AWS-Administrator | 

### Führen Sie die AFT-Pipeline lokal aus, indem Sie das Bash-Beispielskript verwenden
<a name="run-the-aft-pipeline-locally-by-using-the-example-bash-script"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Implementieren Sie die Terraform-Konfigurationsänderungen, die Sie validieren möchten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | AWS-Administrator | 
| Führen Sie das `ct_terraform.sh` Skript aus und überprüfen Sie die Ausgabe. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)** **[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | AWS-Administrator | 

### Übertragen Sie Ihre lokalen Codeänderungen zurück in das AFT-Repository
<a name="push-your-local-code-changes-back-to-the-aft-repository"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie Verweise auf die `aft-providers.tf` Dateien `backend.tf` und zu einer `.gitignore` Datei hinzu. | Fügen Sie die `aft-providers.tf` Dateien `backend.tf`**** und, die Sie erstellt haben, zu einer `.gitignore` Datei hinzu, indem Sie die folgenden Befehle ausführen:<pre>echo backend.tf >> .gitignore<br />echo aft-providers.tf >>.gitignore</pre>Durch das Verschieben der Dateien in die `.gitignore`**** Datei wird sichergestellt, dass sie nicht festgeschrieben und in das Remote-AFT-Repository zurückgeschickt werden. | AWS-Administrator | 
| Übergeben Sie Ihre Codeänderungen und übertragen Sie sie an das Remote-AFT-Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)Die Codeänderungen, die Sie vornehmen, wenn Sie dieses Verfahren bis zu diesem Zeitpunkt befolgen, gelten AWS-Konto nur für eine. | AWS-Administrator | 

### Führen Sie die Änderungen auf mehrere Konten aus
<a name="roll-out-the-changes-to-multiple-accounts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Nehmen Sie die Änderungen auf all Ihre Konten vor, die von AFT verwaltet werden. | Folgen Sie den Anweisungen in der Dokumentation unter [Anpassungen erneut aufrufen AWS-Konten](https://docs.aws.amazon.com/controltower/latest/userguide/aft-account-customization-options.html#aft-re-invoke-customizations), um die Änderungen auf mehrere, die von AFT verwaltet werden, anzuwenden. AWS Control Tower  | AWS-Administrator | 

# Mehr Muster
<a name="infrastructure-more-patterns-pattern-list"></a>

**Topics**
+ [Fügen Sie HA mithilfe einer Read Replica zu Oracle PeopleSoft auf Amazon RDS Custom hinzu](add-ha-to-oracle-peoplesoft-on-amazon-rds-custom-by-using-a-read-replica.md)
+ [Automatisches AWS Überwachen von Sicherheitsgruppen, die den Zugriff von öffentlichen IP-Adressen aus ermöglichen](audit-security-groups-access-public-ip.md)
+ [Automatisieren Sie die Kontoerstellung mit dem Landing Zone Accelerator auf AWS](automate-account-creation-lza.md)
+ [Automatisieren Sie das Hinzufügen oder Aktualisieren von Windows-Registrierungseinträgen mit AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatisieren Sie die AWS-Ressourcenbewertung](automate-aws-resource-assessment.md)
+ [Automatisieren Sie das AWS Service Catalog-Portfolio und die Produktbereitstellung mithilfe von AWS CDK](automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.md)
+ [Automatisieren Sie regionsübergreifendes Failover und Failback mithilfe des DR Orchestrator Framework](automate-cross-region-failover-and-failback-by-using-dr-orchestrator-framework.md)
+ [Automatisieren Sie das Löschen von AWS CloudFormation Stacks und zugehörigen Ressourcen](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatisieren Sie die Erfassung und Visualisierung von benutzerdefinierten Amazon MWAA-Metriken auf Amazon Managed Grafana mithilfe von Terraform](automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.md)
+ [Automatisieren Sie die RabbitMQ-Konfiguration in Amazon MQ](automate-rabbitmq-configuration-in-amazon-mq.md)
+ [Automatisieren Sie die Bereitstellung von AWS Supply Chain Data Lakes in einem Multi-Repository-Setup mithilfe von GitHub Actions, Artifactory und Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatisieren Sie die Replikation von Amazon RDS-Instances auf AWS-Konten](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Automatisches Hinzufügen einer von AWS verwalteten Richtlinie für Systems Manager zu EC2 Instanzprofilen mithilfe von Cloud Custodian und AWS CDK](automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.md)
+ [Automatisches Erstellen von CI/CD Pipelines und Amazon ECS-Clustern für Microservices mithilfe von AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Automatische Erkennung von Änderungen und Initiierung verschiedener CodePipeline Pipelines für ein Monorepo in CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Erstellen Sie mit dem AWS DataOps Development Kit eine Datenpipeline, um Google Analytics-Daten aufzunehmen, zu transformieren und zu analysieren](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Erstellen Sie ein Micro Focus Enterprise Server PAC mit Amazon EC2 Auto Scaling und Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Erstellen und übertragen Sie Docker-Images mithilfe von GitHub Actions und Terraform auf Amazon ECR](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Erstellen Sie eine AWS landing zone, die MongoDB Atlas enthält](build-aws-landing-zone-that-includes-mongodb-atlas.md)
+ [Zentralisieren Sie die Verwaltung von IAM-Zugriffsschlüsseln in AWS Organizations mithilfe von Terraform](centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.md)
+ [Zentralisieren Sie die Verteilung von Softwarepaketen in AWS Organizations mithilfe von Terraform](centralize-software-package-distribution-in-aws-organizations-by-using-terraform.md)
+ [Konfigurieren Sie die Protokollierung von Modellaufrufen in Amazon Bedrock mithilfe von AWS CloudFormation](configure-bedrock-invocation-logging-cloudformation.md)
+ [Konfigurieren Sie das schreibgeschützte Routing in einer Always-On-Verfügbarkeitsgruppe in SQL Server auf AWS](configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.md)
+ [Erstellen Sie ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation](create-amplify-micro-frontend-portal.md)
+ [Erstellen Sie mit Actions und Terragrunt ein API-gesteuertes Framework GitHub zur Ressourcenorchestrierung](create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.md)
+ [Erstellen Sie eine kontoübergreifende EventBridge Amazon-Verbindung in einer Organisation](create-cross-account-amazon-eventbridge-connection-organization.md)
+ [Automatisches Erstellen dynamischer CI-Pipelines für Java- und Python-Projekte](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Implementieren und verwalten Sie AWS Control Tower Kontrollen mithilfe von AWS CDK und CloudFormation](deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.md)
+ [Stellen Sie AWS Control Tower Kontrollen mithilfe von Terraform bereit und verwalten Sie sie](deploy-and-manage-aws-control-tower-controls-by-using-terraform.md)
+ [Stellen Sie CloudWatch Synthetics Canaries mithilfe von Terraform bereit](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Stellen Sie mithilfe von Terraform einen CockroachDB-Cluster in Amazon EKS bereit](deploy-cockroachdb-on-eks-using-terraform.md)
+ [Stellen Sie mithilfe von Terraform und DRA ein Lustre-Dateisystem für die Hochleistungsdatenverarbeitung bereit](deploy-lustre-file-system-for-high-performance-data-processing-with-terraform-dra.md)
+ [Stellen Sie mithilfe AWS von Terraform und Amazon Bedrock einen RAG-Anwendungsfall bereit](deploy-rag-use-case-on-aws.md)
+ [Bereitstellen von Ressourcen in einer AWS Wavelength Zone mithilfe von Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Stellen Sie mithilfe von Terraform SQL Server-Failover-Cluster-Instances auf Amazon EC2 und Amazon FSx bereit](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Stellen Sie die Security Automations for AWS WAF Solution mithilfe von Terraform bereit](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Erkennen Sie Amazon RDS- und Aurora-Datenbank-Instances mit ablaufenden CA-Zertifikaten](detect-rds-instances-expiring-certificates.md)
+ [Dokumentieren Sie Ihr AWS-Landingzone-Design](document-your-aws-landing-zone-design.md)
+ [Exportieren Sie AWS Backup Backup-Berichte aus einer gesamten Organisation in AWS Organizations als CSV-Datei](export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.md)
+ [Generieren Sie mit Amazon Personalize personalisierte und neu eingestufte Empfehlungen](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Steuern Sie Berechtigungssätze für mehrere Konten mithilfe von Account Factory for Terraform](govern-permission-sets-aft.md)
+ [Identifizieren und benachrichtigen Sie, wenn Amazon Data Firehose-Ressourcen nicht mit einem AWS KMS Schlüssel verschlüsselt sind](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Implementieren Sie Account Factory for Terraform (AFT) mithilfe einer Bootstrap-Pipeline](implement-account-factory-for-terraform-aft-by-using-a-bootstrap-pipeline.md)
+ [Implementieren Sie die pfadbasierte API-Versionierung mithilfe benutzerdefinierter Domains in Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Installieren Sie SSM Agent mithilfe von Kubernetes auf Amazon EKS-Worker-Knoten DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Installieren Sie den SSM-Agent und den CloudWatch Agenten auf Amazon EKS-Worker-Knoten mit preBootstrapCommands](install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.md)
+ [Verwalten Sie AWS IAM Identity Center Berechtigungssätze als Code, indem Sie AWS CodePipeline](manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.md)
+ [Dynamisches Verwalten von AWS Berechtigungssätzen mithilfe von Terraform](manage-aws-permission-sets-dynamically-by-using-terraform.md)
+ [AWS Service Catalog-Produkte in mehreren AWS-Konten und AWS-Regionen verwalten](manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions.md)
+ [Verwalten Sie lokale Containeranwendungen, indem Sie Amazon ECS Anywhere mit dem AWS CDK einrichten](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [AWS Organizations Richtlinien mithilfe AWS CodePipeline von Amazon Bedrock als Code verwalten](manage-organizations-policies-as-code.md)
+ [Massenmigrieren von DNS-Einträgen in eine private gehostete Zone von Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Migrieren Sie Oracle PeopleSoft zu Amazon RDS Custom](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Migrieren Sie RHEL-BYOL-Systeme mithilfe von AWS MGN zu Instances mit AWS-Lizenz](migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.md)
+ [Richten Sie einen nutzbaren Mindestdatenraum für die gemeinsame Nutzung von Daten zwischen Organisationen ein](minimum-viable-data-space-share-data-organizations.md)
+ [Überwachen Sie ElastiCache Amazon-Cluster auf Verschlüsselung im Ruhezustand](monitor-amazon-elasticache-clusters-for-at-rest-encryption.md)
+ [Überwachen Sie die Anwendungsaktivität mithilfe von CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Überwachen Sie SAP RHEL Pacemaker-Cluster mithilfe von AWS-Services](monitor-sap-rhel-pacemaker-clusters-by-using-aws-services.md)
+ [Erstellen Sie mithilfe von Terraform eine hierarchische IPAM-Architektur mit mehreren Regionen AWS](multi-region-ipam-architecture.md)
+ [Optimieren Sie serverlose Bereitstellungen mit mehreren Konten mithilfe der AWS CDK Workflows und Aktionen GitHub](optimize-multi-account-serverless-deployments.md)
+ [Bereitstellen von AWS Service Catalog Produkten auf der Grundlage von AWS CloudFormation Vorlagen mithilfe von GitHub Aktionen](provision-aws-service-catalog-products-using-github-actions.md)
+ [Stellen Sie IAM-Rollen mit den geringsten Rechten bereit, indem Sie eine Rollenautomatenlösung bereitstellen](provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.md)
+ [Entfernen Sie EC2 Amazon-Einträge AWS Managed Microsoft AD mithilfe AWS-Konten von AWS Lambda Automatisierung](remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.md)
+ [Entfernen Sie EC2 Amazon-Einträge in derselben AWS-Konto Form AWS Managed Microsoft AD mithilfe von AWS Lambda Automatisierung](remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.md)
+ [Sichere Dateiübertragungen mithilfe von Transfer Family, Amazon Cognito und GuardDuty](secure-file-transfers.md)
+ [Eine Benachrichtigung senden, wenn ein IAM-Benutzer erstellt wird](send-a-notification-when-an-iam-user-is-created.md)
+ [Richten Sie einen serverlosen Mobilfunkrouter für eine zellenbasierte Architektur ein](serverless-cell-router-architecture.md)
+ [Richten Sie mithilfe von AWS CDK eine CI/CD Pipeline für Hybrid-Workloads auf Amazon ECS Anywhere ein und GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Richten Sie eine HA/DR Architektur für Oracle E-Business Suite auf Amazon RDS Custom mit einer aktiven Standby-Datenbank ein](set-up-an-ha-dr-architecture-for-oracle-e-business-suite-on-amazon-rds-custom-with-an-active-standby-database.md)
+ [Richten Sie die DNS-Auflösung für Hybridnetzwerke in einer Umgebung mit mehreren Konten AWS ein](set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.md)
+ [Richten Sie mithilfe von Amazon eine Multi-AZ-Infrastruktur für einen SQL Server Always On FCI ein FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Richten Sie die Oracle UTL\$1FILE-Funktionalität auf Aurora PostgreSQL-Compatible ein](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Vereinfachen Sie die Anwendungsauthentifizierung mit gegenseitigem TLS in Amazon ECS mithilfe von Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Vereinfachen Sie die Verwaltung privater Zertifikate mithilfe von AWS Private CA und AWS RAM](simplify-private-certificate-management-by-using-aws-private-ca-and-aws-ram.md)
+ [Optimieren Sie mithilfe von SageMaker KI und Hydra Workflows für maschinelles Lernen — von der lokalen Entwicklung bis hin zu skalierbaren Experimenten](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Automatisches Taggen Transit Gateway Gateway-Anhängen mithilfe von AWS Organizations](tag-transit-gateway-attachments-automatically-using-aws-organizations.md)
+ [Rollen für eine PeopleSoft Oracle-Anwendung auf Amazon RDS Custom for Oracle wechseln](transition-roles-for-an-oracle-peoplesoft-application-on-amazon-rds-custom-for-oracle.md)
+ [Verwenden Sie Amazon Q Developer als Programmierassistenten, um Ihre Produktivität zu steigern](use-q-developer-as-coding-assistant-to-increase-productivity.md)

# Web- und mobile Apps
<a name="websitesandwebapps-pattern-list"></a>

**Topics**
+ [Authentifizieren Sie bestehende Benutzer von React-Anwendungen mithilfe von Amazon Cognito und AWS Amplify UI](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Erstellen Sie eine React-App mithilfe von AWS Amplify und fügen Sie die Authentifizierung mit Amazon Cognito hinzu](create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.md)
+ [Erstellen Sie ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation](create-amplify-micro-frontend-portal.md)
+ [Stellen Sie eine React-basierte Einzelseitenanwendung auf Amazon S3 bereit und CloudFront](deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.md)
+ [Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Integrieren Sie visuelle Komponenten von Amazon Quick Sight mithilfe von Amazon Cognito und IaC-Automatisierung in Webanwendungen](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Entdecken Sie die Full-Stack-Entwicklung von cloudnativen Webanwendungen mit Green Boost](explore-full-stack-cloud-native-web-application-development-with-green-boost.md)
+ [Führen Sie Komponententests für eine Node.js -Anwendung mithilfe GitHub von AWS aus CodeBuild](run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.md)
+ [Strukturieren Sie ein Python-Projekt in hexagonaler Architektur mit AWS Lambda](structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.md)
+ [Mehr Muster](websitesandwebapps-more-patterns-pattern-list.md)

# Authentifizieren Sie bestehende Benutzer von React-Anwendungen mithilfe von Amazon Cognito und AWS Amplify UI
<a name="authenticate-react-app-users-cognito-amplify-ui"></a>

*Daniel Kozhemyako, Amazon Web Services*

## Zusammenfassung
<a name="authenticate-react-app-users-cognito-amplify-ui-summary"></a>

Dieses Muster zeigt, wie einer vorhandenen Frontend-React-Anwendung mithilfe einer AWS Amplify UI-Bibliothek und eines Amazon Cognito Cognito-Benutzerpools Authentifizierungsfunktionen hinzugefügt werden.

Das Muster verwendet Amazon Cognito, um Authentifizierung, Autorisierung und Benutzerverwaltung für die Anwendung bereitzustellen. Es verwendet auch eine Komponente aus [Amplify UI](https://ui.docs.amplify.aws/react/getting-started/introduction), einer Open-Source-Bibliothek, die die Funktionen der AWS Amplify Benutzeroberflächenentwicklung (UI) erweitert. Die [Authenticator-UI-Komponente](https://ui.docs.amplify.aws/react/connected-components/authenticator/advanced) verwaltet Anmeldesitzungen und führt den mit der Cloud verbundenen Workflow aus, der Benutzer über Amazon Cognito authentifiziert.

Nachdem Sie dieses Muster implementiert haben, können sich Benutzer mit beliebigen der folgenden Anmeldeinformationen anmelden:
+ Benutzername und Passwort
+ Anbieter sozialer Identitäten wie Apple, Facebook, Google und Amazon
+ Identitätsanbieter für Unternehmen, die entweder SAML 2.0-kompatibel oder OpenID Connect (OIDC) kompatibel sind

**Anmerkung**  
Um eine benutzerdefinierte Authentifizierungs-UI-Komponente zu erstellen, können Sie die Authenticator-Benutzeroberflächenkomponente im Headless-Modus ausführen.

## Voraussetzungen und Einschränkungen
<a name="authenticate-react-app-users-cognito-amplify-ui-prereqs"></a>

**Voraussetzungen**
+ Eine aktive AWS-Konto
+ Eine Webanwendung mit React 18.2.0 oder höher
+ [Node.js und npm 6.14.4 oder höher, installiert](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)

**Einschränkungen**
+ Dieses Muster gilt nur für React-Webanwendungen.
+ Dieses Muster verwendet eine vorgefertigte Amplify-UI-Komponente. Die Lösung deckt nicht die Schritte ab, die zur Implementierung einer benutzerdefinierten UI-Komponente erforderlich sind.

**Produktversionen**
+ Amplify UI 6.1.3 oder höher (Gen 1)
+ Amplify 6.0.16 oder höher (Gen 1)

## Architektur
<a name="authenticate-react-app-users-cognito-amplify-ui-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt eine Architektur, die Amazon Cognito verwendet, um Benutzer für eine React-Webanwendung zu authentifizieren.

![\[Amazon Cognito authentifiziert Benutzer für eine React-Webanwendung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/b2cea053-6931-4404-8aa8-c623ce2024ac/images/b7f69f20-a39d-4a78-8605-7dab73c59052.png)


## Tools
<a name="authenticate-react-app-users-cognito-amplify-ui-tools"></a>

**AWS-Services**
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.

**Andere Tools**
+ [Amplify UI](https://ui.docs.amplify.aws/react/getting-started/introduction) ist eine Open-Source-UI-Bibliothek, die anpassbare Komponenten bereitstellt, die Sie mit der Cloud verbinden können.
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde.
+ [npm](https://docs.npmjs.com/about-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.

## Best Practices
<a name="authenticate-react-app-users-cognito-amplify-ui-best-practices"></a>

Wenn Sie eine neue Anwendung erstellen, empfehlen wir Ihnen, Amplify Gen 2 zu verwenden.

## Epen
<a name="authenticate-react-app-users-cognito-amplify-ui-epics"></a>

### Erstellen Sie einen Amazon Cognito Cognito-Benutzerpool
<a name="create-an-cog-user-pool"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen Benutzerpool. | [Erstellen Sie einen Amazon Cognito Cognito-Benutzerpool](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html). Konfigurieren Sie die Anmeldeoptionen und Sicherheitsanforderungen des Benutzerpools entsprechend Ihrem Anwendungsfall. | App-Developer | 
| Fügen Sie einen App-Client hinzu. | [Konfigurieren Sie einen Benutzerpool-App-Client](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html). Dieser Client ist erforderlich, damit Ihre Anwendung mit dem Amazon Cognito Cognito-Benutzerpool interagieren kann. | App-Developer | 

### Integrieren Sie Ihren Amazon Cognito Cognito-Benutzerpool in die Authenticator-UI-Komponente
<a name="integrate-your-cog-user-pool-with-the-authenticator-ui-component"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Abhängigkeiten. | Um die `@aws-amplify/ui-react` Pakete `aws-amplify` und zu installieren, führen Sie den folgenden Befehl im Stammverzeichnis Ihrer Anwendung aus:<pre>npm i @aws-amplify/ui-react aws-amplify</pre> | App-Developer | 
| Konfigurieren Sie den Benutzerpool. | Erstellen Sie anhand des folgenden Beispiels eine `aws-exports.js` Datei und speichern Sie sie im `src` Ordner. Die Datei sollte die folgenden Informationen enthalten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)<pre>// replace the user pool region, id, and app client id details<br />const awsmobile = {<br />    "aws_project_region": "put_your_region_here",<br />    "aws_cognito_region": "put_your_region_here",<br />    "aws_user_pools_id": "put_your_user_pool_id_here",<br />    "aws_user_pools_web_client_id": "put_your_user_pool_app_id_here"<br />}<br /><br />export default awsmobile;</pre> | App-Developer | 
| Importieren und konfigurieren Sie den Amplify-Dienst. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | App-Developer | 
| Fügen Sie die Authenticator-UI-Komponente hinzu. | Um die `Authenticator` UI-Komponente anzuzeigen, fügen Sie der Einstiegspunktdatei (`App.js`) der Anwendung die folgenden Codezeilen hinzu:<pre>import { Authenticator } from '@aws-amplify/ui-react';<br />import '@aws-amplify/ui-react/styles.css';</pre>Das Beispielcode-Snippet importiert die `Authenticator` UI-Komponente und die Amplify UI-Datei styles.css, die erforderlich ist, wenn die vorgefertigten Designs der Komponente verwendet werden.Die `Authenticator` UI-Komponente bietet zwei Rückgabewerte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)Sehen Sie sich die folgende Beispielkomponente an:<pre>function App() {<br />    return (<br />        <Authenticator><br />            {({ signOut, user }) => (<br />                <div><br />                    <p>Welcome {user.username}</p><br />                    <button onClick={signOut}>Sign out</button><br />                </div><br />            )}<br />        </Authenticator><br />    );<br />}</pre>Eine `App.js` Beispieldatei finden Sie im Abschnitt [Zusätzliche Informationen](#authenticate-react-app-users-cognito-amplify-ui-additional) dieses Musters. | App-Developer | 
| (Optional) Rufen Sie Sitzungsinformationen ab. | Nachdem ein Benutzer authentifiziert wurde, können Sie vom Amplify-Client Daten über seine Sitzung abrufen. Sie können beispielsweise das JSON-Webtoken (JWT) aus der Sitzung eines Benutzers abrufen, sodass Sie die Anfragen aus seiner Sitzung an eine Backend-API authentifizieren können.Sehen Sie sich das folgende Beispiel für einen Anforderungsheader an, der ein JWT enthält:<pre>import { fetchAuthSession } from 'aws-amplify/auth';<br />(await fetchAuthSession()).tokens?.idToken?.toString();</pre> | App-Developer | 

## Fehlerbehebung
<a name="authenticate-react-app-users-cognito-amplify-ui-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Neue Benutzer können sich nicht für die Anwendung registrieren. | Stellen Sie wie folgt sicher, dass Ihr Amazon Cognito Cognito-Benutzerpool so konfiguriert ist, dass Benutzer sich selbst für den Benutzerpool anmelden können:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | 
| Die Auth-Komponente funktionierte nach dem Upgrade von Version 5 auf Version 6 nicht mehr. | Die `Auth` Kategorie wurde in Amplify v6 auf einen funktionalen Ansatz umgestellt und Parameter benannt. Sie müssen die Funktion jetzt APIs direkt aus dem `aws-amplify/auth` Pfad importieren. Weitere Informationen finden Sie unter [Migration von v5 zu v6](https://docs.amplify.aws/gen1/react/build-a-backend/auth/auth-migration-guide/) in der Amplify-Dokumentation. | 

## Zugehörige Ressourcen
<a name="authenticate-react-app-users-cognito-amplify-ui-resources"></a>
+ [Erste Schritte mit Amazon Cognito](https://aws.amazon.com/cognito/getting-started/) (AWS Website)
+ [Erstellen Sie eine neue React-App](https://reactjs.org/docs/create-a-new-react-app.html) (React-Dokumentation)
+ [Was ist Amazon Cognito?](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) (Amazon Cognito Cognito-Dokumentation)
+ [Amplify-UI-Bibliothek](https://ui.docs.amplify.aws/) (Amplify-Dokumentation)

## Zusätzliche Informationen
<a name="authenticate-react-app-users-cognito-amplify-ui-additional"></a>

Die `App.js` Datei sollte den folgenden Code enthalten:

```
import './App.css';
import { Amplify } from 'aws-amplify';
import awsExports from './aws-exports';
import { fetchAuthSession } from 'aws-amplify/auth';
import { Authenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';
Amplify.configure({ ...awsExports });
let token = (await fetchAuthSession()).tokens?.idToken?.toString();
function App() {
  return (
      <Authenticator>
        {({ signOut, user }) => (
            <div>
              <p>Welcome {user.username}</p>
                <p>Your token is: {token}</p>
              <button onClick={signOut}>Sign out</button>
            </div>
        )}
      </Authenticator>
  );
}

export default App;
```

# Erstellen Sie eine React-App mithilfe von AWS Amplify und fügen Sie die Authentifizierung mit Amazon Cognito hinzu
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito"></a>

*Rishi Singla, Amazon Web Services*

## Zusammenfassung
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-summary"></a>

Dieses Muster zeigt, wie Sie mit AWS Amplify eine React-basierte App erstellen und wie Sie mithilfe von Amazon Cognito Authentifizierung zum Frontend hinzufügen. AWS Amplify besteht aus einer Reihe von Tools (Open-Source-Framework, visuelle Entwicklungsumgebung, Konsole) und Services (Web-App und statisches Website-Hosting), um die Entwicklung von Mobil- und Web-Apps auf AWS zu beschleunigen. 

## Voraussetzungen und Einschränkungen
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [Node.js](https://nodejs.org/en/download/) und [npm](https://www.npmjs.com/get-npm) sind auf Ihrem Computer installiert

**Produktversionen**
+ Node.js Version 10.x oder höher (um Ihre Version zu überprüfen, führen Sie es `node -v` in einem Terminalfenster aus)
+ npm Version 6.x oder höher (um Ihre Version zu überprüfen, führen Sie es `npm -v` in einem Terminalfenster aus)

## Architektur
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-architecture"></a>

**Zieltechnologie-Stack**
+ AWS Amplify
+ Amazon Cognito

## Tools
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-tools"></a>
+ [Befehlszeilenschnittstelle (CLI) Amplify](https://docs.amplify.aws/cli/)
+ [Amplify Libraries](https://docs.amplify.aws/lib/q/platform/react-native/) (Open-Source-Clientbibliotheken)
+ [Amplify Studio](https://docs.amplify.aws/console/) (visuelle Oberfläche)

## Epen
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-epics"></a>

### Installieren Sie AWS Amplify CLI
<a name="install-aws-amplify-cli"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Amplify CLI. | Die Amplify CLI ist eine einheitliche Toolchain zur Erstellung von AWS-Cloud-Services für Ihre React-App. Führen Sie Folgendes aus, um die Amplify-CLI zu installieren:<pre>npm install -g @aws-amplify/cli</pre>npm benachrichtigt Sie, wenn eine neue Hauptversion verfügbar ist. Wenn ja, verwenden Sie den folgenden Befehl, um Ihre Version von npm zu aktualisieren:<pre>npm install -g npm@9.8.0</pre>wobei sich 9.8.0 auf die Version bezieht, die Sie installieren möchten. | App-Developer | 

### Erstelle eine React-App
<a name="create-a-react-app"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine React-App. | Verwenden Sie den folgenden Befehl, um eine neue React-App zu erstellen:<pre>npx create-react-app amplify-react-application</pre>wo `ampify-react-application` ist der Name der App.Wenn die App erfolgreich erstellt wurde, wird die Meldung angezeigt:<pre>Success! Created amplify-react-application</pre>Für die React-App wird ein Verzeichnis mit verschiedenen Unterordnern erstellt. | App-Developer | 
| Starten Sie die App auf Ihrem lokalen Computer. | Gehen Sie zu dem Verzeichnis`amplify-react-application`, das im vorherigen Schritt erstellt wurde, und führen Sie den folgenden Befehl aus:<pre>amplify-react-application% npm start</pre>Dadurch wird die React-App auf Ihrem lokalen Computer gestartet. | App-Developer | 

### Konfigurieren Sie die Amplify CLI
<a name="configure-the-amplify-cli"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie Amplify so, dass es eine Verbindung zu Ihrem AWS-Konto herstellt. | Konfigurieren Sie Amplify, indem Sie den folgenden Befehl ausführen:<pre>amplify-react-application % amplify configure</pre>Die Amplify CLI fordert Sie auf, die folgenden Schritte auszuführen, um den Zugriff auf Ihr AWS-Konto einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html)Für dieses Szenario sind IAM-Benutzer mit programmatischem Zugriff und langfristigen Anmeldeinformationen erforderlich, was ein Sicherheitsrisiko darstellt. Um dieses Risiko zu minimieren, empfehlen wir, diesen Benutzern nur die Berechtigungen zu gewähren, die sie für die Ausführung der Aufgabe benötigen, und diese Benutzer zu entfernen, wenn sie nicht mehr benötigt werden. Die Zugriffsschlüssel können bei Bedarf aktualisiert werden. Weitere Informationen finden Sie im *IAM-Benutzerhandbuch* unter [Aktualisieren von Zugriffsschlüsseln](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey).Diese Schritte werden im Terminal wie folgt angezeigt.<pre>Follow these steps to set up access to your AWS account:<br />Sign in to your AWS administrator account:<br />https://console.aws.amazon.com/<br />Press Enter to continue<br />Specify the AWS Region<br />? region:  us-east-1<br />Follow the instructions at<br />https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli<br />to complete the user creation in the AWS console<br />https://console.aws.amazon.com/iamv2/home#/users/create<br />Press Enter to continue<br />Enter the access key of the newly created user:<br />? accessKeyId:  ********************<br />? secretAccessKey:  ****************************************<br />This would update/create the AWS Profile in your local machine<br />? Profile Name:  new<br /><br />Successfully set up the new user.</pre>Weitere Informationen zu diesen Schritten finden Sie in der [Dokumentation](https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli) im Amplify Dev Center. | Allgemein AWS, App-Entwickler | 

### Amplify initialisieren
<a name="initialize-amplify"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Initialisieren Sie Amplify. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html) | App-Entwickler, General AWS | 

### Fügen Sie dem Frontend eine Authentifizierung hinzu
<a name="add-authentication-to-the-frontend"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Authentifizierung hinzufügen. | Sie können den `amplify add <category>` Befehl verwenden, um Funktionen wie eine Benutzeranmeldung oder eine Backend-API hinzuzufügen. In diesem Schritt verwenden Sie den Befehl, um die Authentifizierung hinzuzufügen.Amplify bietet einen Backend-Authentifizierungsservice mit Amazon Cognito, Frontend-Bibliotheken und einer Drop-In-Authenticator-UI-Komponente. Zu den Funktionen gehören Benutzeranmeldung, Benutzeranmeldung, Multi-Faktor-Authentifizierung, Benutzerabmeldung und passwortlose Anmeldung. Sie können Benutzer auch authentifizieren, indem Sie föderierte Identitätsanbieter wie Amazon, Google und Facebook integrieren. Die Amplify-Authentifizierungskategorie lässt sich nahtlos in andere Amplify-Kategorien wie API, Analytik und Speicher integrieren, sodass Sie Autorisierungsregeln für authentifizierte und nicht authentifizierte Benutzer definieren können.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html) | App-Entwickler, General AWS | 

### Ändern Sie die Datei App.js
<a name="change-the-app-js-file"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Ändern Sie die Datei App.js. | Öffnen und überarbeiten Sie die `App.js` Datei in dem `src` Ordner. Die geänderte Datei sollte wie folgt aussehen:<pre>{  App.Js File after modifications:<br />import React from 'react';<br />import logo from './logo.svg';<br />import './App.css';<br />import { Amplify } from 'aws-amplify';<br />import { withAuthenticator, Button, Heading } from '@aws-amplify/ui-react';<br />import awsconfig from './aws-exports';<br />Amplify.configure(awsconfig);<br />function App({ signOut }) {<br />  return (<br />      <div><br />      <h1>Thankyou for doing verification</h1><br />      <h2>My Content</h2><br />       <button onClick={signOut}>Sign out</button><br />    </div><br />  );<br />}<br />export default withAuthenticator(App);</pre> | App-Developer | 
| Importiere React-Pakete. | Die `App.js` Datei importiert zwei React-Pakete. Installieren Sie diese Pakete mit dem folgenden Befehl:<pre>amplify-react-application1 % npm install --save aws-amplify @aws-amplify/ui-react</pre> | App-Developer | 

### Starten Sie die React-App und überprüfen Sie die Authentifizierung
<a name="launch-the-react-app-and-check-authentication"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Starte die App. | Starten Sie die React-App auf Ihrem lokalen Computer:<pre>amplify-react-application1 % npm start</pre> | App-Entwickler, General AWS | 
| Überprüfen Sie die Authentifizierung. | Prüfen Sie, ob die App zur Eingabe von Authentifizierungsparametern auffordert. (In unserem Beispiel haben wir E-Mail als Anmeldemethode konfiguriert.)Die Frontend-Benutzeroberfläche sollte Sie zur Eingabe der Anmeldeinformationen auffordern und eine Option zum Erstellen eines Kontos bieten.Sie können den Amplify-Build-Prozess auch so konfigurieren, dass das Backend als Teil eines kontinuierlichen Bereitstellungsworkflows hinzugefügt wird. Dieses Muster deckt diese Option jedoch nicht ab. | App-Entwickler, General AWS | 

## Zugehörige Ressourcen
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-resources"></a>
+ [Erste Schritte](https://docs.npmjs.com/getting-started) (npm-Dokumentation)
+ [Ein eigenständiges AWS-Konto erstellen](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) (Dokumentation zur AWS-Kontoverwaltung) 
+ [Dokumentation zu AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html)
+ [Amazon Cognito Cognito-Dokumentation](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html)

# Erstellen Sie ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation
<a name="create-amplify-micro-frontend-portal"></a>

*Milena Godau und Pedro Garcia, Amazon Web Services*

## Zusammenfassung
<a name="create-amplify-micro-frontend-portal-summary"></a>

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](https://angular.dev/overview) und der [AWS Amplify](https://docs.amplify.aws/gen1/angular/)Module Federation eine Mikro-Frontend-Architektur erstellen.](https://webpack.js.org/concepts/module-federation/) *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](https://www.npmjs.com/package/@angular-architects/module-federation) 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
<a name="create-amplify-micro-frontend-portal-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ [Node.js und npm, installiert](https://nodejs.org/en/download/)
+ [Amplify CLI, installiert](https://docs.amplify.aws/gen1/angular/tools/cli/)
+ Angular CLI, [installiert](https://angular.io/cli)
+ Zu verwendende [Berechtigungen](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsamplify.html) AWS Amplify
+ Vertrautheit mit Angular

**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](https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html)

## Architektur
<a name="create-amplify-micro-frontend-portal-architecture"></a>

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.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/ddf82a69-bf1b-4ad1-8e60-3dd375699936/images/cf045bf1-11ea-46d9-93cb-3c603122450d.png)


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.

1. 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.

1. Der Endbenutzer authentifiziert sich mithilfe von Amazon Cognito.

1. 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
<a name="create-amplify-micro-frontend-portal-tools"></a>

**AWS-Services**
+ [AWS Amplify](https://docs.amplify.aws/angular/start/)ist 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 die Amplify-CLI, um die Amplify-Micro-Frontend-Anwendungen bereitzustellen.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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](https://github.com/angular-architects/module-federation-plugin) ist ein Plugin, das Angular in Module Federation integriert.
+ [Angular](https://angular.dev/overview) 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](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen konzipiert wurde.
+ [npm](https://docs.npmjs.com/about-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](https://webpack.js.org/concepts/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](https://github.com/aws-samples/angular-module-federation-mfe) verfügbar. Dieses Repository enthält die folgenden zwei Ordner:
+ `shell-app`enthält den Code für die Shell-Anwendung.
+ `feature1-app`enthält ein Beispiel-Mikrofrontend. Die Shell-Anwendung ruft dieses Mikro-Frontend ab und zeigt es als Seite innerhalb der Portalanwendung an.

## Best Practices
<a name="create-amplify-micro-frontend-portal-best-practices"></a>

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
<a name="create-amplify-micro-frontend-portal-epics"></a>

### Erstellen Sie die Shell-Anwendung
<a name="create-the-shell-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die Shell-Anwendung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Installieren Sie das -Plug-in. | Geben Sie in der Angular-CLI den folgenden Befehl ein, um das [@angular -architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation) Plugin zu installieren:<pre>ng add @angular-architects/module-federation --project shell --port 4200</pre> | App-Developer | 
| Fügen Sie die Micro-Frontend-URL als Umgebungsvariable hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Definieren Sie das Routing. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| `mfe1`Deklarieren Sie das Modul. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Passen Sie den HTML-Inhalt an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 

### Erstellen Sie die Micro-Frontend-Anwendung
<a name="create-the-micro-frontend-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie das Mikro-Frontend. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Installieren Sie das -Plug-in. | Geben Sie den folgenden Befehl ein, um das @angular -architects/module-federation Plugin zu installieren:<pre>ng add @angular-architects/module-federation --project mfe1 --port 5000</pre> | 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:<pre>ng g module mfe1 --routing<br />ng g c mfe1</pre> | App-Developer | 
| Legen Sie den Standard-Routingpfad fest. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Fügen `mfe1` Sie die Route hinzu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Bearbeiten **Sie** die Datei webpack.config.js. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Passen Sie den HTML-Inhalt an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 

### Führen Sie die Anwendungen lokal aus
<a name="run-the-applications-locally"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie die `mfe1` Anwendung aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Führen Sie die Shell-Anwendung aus. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 

### Refaktorieren Sie die Shell-Anwendung, um einen Fehler beim Laden des Mikro-Frontends zu beheben
<a name="refactor-the-shell-application-to-handle-a-micro-frontend-loading-error"></a>


| Aufgabe | Description | Erforderliche 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:<pre>ng g module error-page --routing<br />ng g c error-page</pre> | App-Developer | 
| Passen Sie den HTML-Inhalt an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Legen Sie den Standard-Routing-Pfad fest. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Erstellen Sie eine Funktion zum Laden von Mikro-Frontends. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 
| Testen Sie die Fehlerbehandlung. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 

### Stellen Sie die Anwendungen bereit, indem Sie AWS Amplify
<a name="deploy-the-applications-by-using-amplifylong"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie das Mikro-Frontend bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Entwickler, AWS DevOps | 
| Stellen Sie die Shell-Anwendung bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | 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 Cross-Origin Resource Sharing (CORS) auf dem Mikrofrontend aktivieren. Dadurch kann die Shell-Anwendung den Inhalt von einem anderen Ursprung laden. Um CORS zu aktivieren, fügen Sie benutzerdefinierte Header hinzu.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | 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 von der aktuellen URL 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Entwickler, AWS DevOps | 
| Testen Sie das Webportal. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | App-Developer | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Allgemeines AWS | 

## Fehlerbehebung
<a name="create-amplify-micro-frontend-portal-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Bei der Ausführung 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | 
| 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 die URL des Mikrofrontends sein. | 
| 404-Fehler beim Zugriff auf das Micro-Frontend | Wenn Sie beim Versuch, auf das lokale Micro-Frontend zuzugreifen, einen 404-Fehler erhalten, z. B. unter`http://localhost:4200/mfe1`, überprüfen Sie Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | 

## Zusätzliche Informationen
<a name="create-amplify-micro-frontend-portal-additional"></a>

**AWS Dokumentation**
+ [Mikrofrontends verstehen und implementieren auf AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html) (AWS Prescriptive Guidance)
+ [Amplify CLI](https://docs.amplify.aws/gen1/angular/tools/cli/) (Amplify-Dokumentation)
+ [Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) (Amplify-Dokumentation)

**Andere Referenzen**
+ [Modul Federation](https://webpack.js.org/concepts/module-federation/)
+ [Node.js](https://nodejs.org/en/)
+ [Eckig](https://angular.io/)
+ [@angular -architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation)

# Stellen Sie eine React-basierte Einzelseitenanwendung auf Amazon S3 bereit und CloudFront
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront"></a>

*Jean-Baptiste Guillois, Amazon Web Services*

## Zusammenfassung
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-summary"></a>

Eine Single-Page-Anwendung (SPA) ist eine Website oder Webanwendung, die den Inhalt einer angezeigten Webseite dynamisch aktualisiert, indem sie JavaScript APIs Dieser Ansatz verbessert die Benutzererfahrung und Leistung einer Website, da nur neue Daten aktualisiert werden, anstatt die gesamte Webseite vom Server neu zu laden.

Dieses Muster bietet einen step-by-step Ansatz zum Codieren und Hosten eines SPA, das in React auf Amazon Simple Storage Service (Amazon S3) und Amazon geschrieben ist CloudFront. Das SPA in diesem Muster verwendet eine REST-API, die in Amazon API Gateway konfiguriert und über eine CloudFront Amazon-Distribution verfügbar gemacht wird, um das [Cross-Origin Resource Sharing (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html) -Management zu vereinfachen.

## Voraussetzungen und Einschränkungen
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver. AWS-Konto
+ Node.js und`npm`, installiert und konfiguriert. Weitere Informationen finden Sie im Abschnitt [Downloads](https://nodejs.org/en/download/) der Dokumentation zu Node.js.
+ Yarn, installiert und konfiguriert. Weitere Informationen finden Sie in der [Yarn-Dokumentation](https://classic.yarnpkg.com/lang/en/docs/install/#windows-stable).
+ Git, installiert und konfiguriert. Weitere Informationen finden Sie in der [Git-Dokumentation](https://github.com/git-guides/install-git).

## Architektur
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-architecture"></a>

![\[Architektur für die Bereitstellung eines React-basierten SPA auf Amazon S3 und CloudFront\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/970a9d13-e8a2-44ac-aca5-a066e4be60e8/images/96061e05-8ac8-446e-b1da-baa6fc1cc7b6.png)


Diese Architektur wird automatisch mithilfe von AWS CloudFormation (Infrastruktur als Code) bereitgestellt. Es verwendet regionale Dienste wie Amazon S3 zum Speichern der statischen Ressourcen und Amazon CloudFront mit Amazon API Gateway, um regionale API-Endpunkte (REST) verfügbar zu machen. Die Anwendungsprotokolle werden mithilfe von Amazon gesammelt CloudWatch. Alle AWS API-Aufrufe werden geprüft. AWS CloudTrail Die gesamte Sicherheitskonfiguration (z. B. Identitäten und Berechtigungen) wird in AWS Identity and Access Management (IAM) verwaltet. Statische Inhalte werden über das Amazon CloudFront Content Delivery Network (CDN) bereitgestellt, und DNS-Abfragen werden von Amazon Route 53 bearbeitet.

## Tools
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend AWS-Konten zu verwalten.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) beschleunigt die Verteilung Ihrer Webinhalte, indem es sie über ein weltweites Netzwerk von Rechenzentren bereitstellt, was die Latenz senkt und die Leistung verbessert.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)hilft Ihnen bei der Prüfung der Unternehmensführung, der Einhaltung von Vorschriften und des betrieblichen Risikos Ihrer AWS-Konto.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Kennzahlen Ihrer AWS Ressourcen und der Anwendungen, auf denen Sie laufen, AWS in Echtzeit zu überwachen.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Code**

Der Beispielanwendungscode dieses Musters ist im GitHub [React-basierten einseitigen CORS-Anwendungs-Repository](https://github.com/aws-samples/react-cors-spa) verfügbar.

## Best Practices
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-best-practices"></a>

Mithilfe des Amazon S3 S3-Objektspeichers können Sie die statischen Ressourcen Ihrer Anwendung auf sichere, hochbelastbare, leistungsstarke und kostengünstige Weise speichern. Für diese Aufgabe ist es nicht erforderlich, einen dedizierten Container oder eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance zu verwenden.

Durch die Nutzung des Amazon CloudFront Content Delivery Network können Sie die Latenz reduzieren, die Ihren Benutzern beim Zugriff auf Ihre Anwendung entstehen kann. Sie können auch eine Firewall für Webanwendungen ([AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/cloudfront-features.html)) anbringen, um Ihre Ressourcen vor böswilligen Angriffen zu schützen.

## Epen
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-epics"></a>

### Erstellen und implementieren Sie Ihre Anwendung lokal
<a name="locally-build-and-deploy-your-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Führen Sie den folgenden Befehl aus, um das Repository der Beispielanwendung zu klonen:<pre>git clone https://github.com/aws-samples/react-cors-spa react-cors-spa && cd react-cors-spa</pre> | App-Entwickler, AWS DevOps | 
| Stellen Sie die Anwendung lokal bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | App-Entwickler, AWS DevOps | 
|  Lokaler Zugriff auf die Anwendung. | Öffnen Sie ein Browserfenster und geben Sie die `http://localhost:3000` URL für den Zugriff auf die Anwendung ein. | App-Entwickler, AWS DevOps | 

### Bereitstellen der Anwendung
<a name="deploy-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die AWS CloudFormation Vorlage bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | App-Entwickler, AWS DevOps | 
| Passen Sie Ihre Anwendungsquelldateien an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | App-Developer | 
| Erstellen Sie das Anwendungspaket. | Führen Sie in Ihrem Projektverzeichnis den `yarn build` Befehl aus, um das Anwendungspaket zu erstellen. | App-Developer | 
| Stellen Sie das Anwendungspaket bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | App-Entwickler, AWS DevOps | 

### Testen der Anwendung
<a name="test-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Greifen Sie auf die Anwendung zu und testen Sie sie. | Öffnen Sie ein Browserfenster und fügen Sie dann die CloudFront Verteilungsdomäne (die `SPADomain` Ausgabe des CloudFormation Stacks, den Sie zuvor bereitgestellt haben) ein, um auf die Anwendung zuzugreifen. | App-Entwickler, AWS DevOps | 

### Säubere die Ressourcen
<a name="clean-up-the-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie den Inhalt des S3-Buckets. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | AWS DevOps, App-Entwickler | 
| Löschen Sie den CloudFormation Stack. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | AWS DevOps, App-Entwickler | 

## Zugehörige Ressourcen
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-resources"></a>

Um Ihre Webanwendung bereitzustellen und zu hosten, können Sie auch [AWS Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/getting-started.html) verwenden, das einen Git-basierten Workflow für das Hosten serverloser Full-Stack-Web-Apps mit kontinuierlicher Bereitstellung bietet. Amplify Hosting ist Teil von [AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html), das eine Reihe von speziell entwickelten Tools und Funktionen bietet, mit denen Frontend-Web- und Mobilentwickler schnell und einfach Full-Stack-Anwendungen erstellen können. AWS

## Zusätzliche Informationen
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-additional"></a>

Um ungültige Anfragen URLs des Benutzers zu behandeln, die zu 403-Fehlern führen könnten, fängt eine benutzerdefinierte Fehlerseite, die in der CloudFront Distribution konfiguriert ist, 403-Fehler ab und leitet sie an den Einstiegspunkt der Anwendung weiter (). `index.html`

Um die Verwaltung von CORS zu vereinfachen, wird die REST-API über eine CloudFront Distribution verfügbar gemacht.

# Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer"></a>

*Saurabh Kothari, Amazon Web Services*

## Zusammenfassung
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-summary"></a>

Dieses Muster zeigt Ihnen, wie Sie eine Amazon API Gateway Gateway-API auf einer internen Website bereitstellen, auf die von einem lokalen Netzwerk aus zugegriffen werden kann. Sie lernen, einen benutzerdefinierten Domainnamen für eine private API zu erstellen, indem Sie eine Architektur verwenden, die mit privaten Endpunkten, einem Application Load Balancer PrivateLink, AWS und Amazon Route 53 konzipiert ist. Diese Architektur verhindert die unbeabsichtigten Folgen der Verwendung eines benutzerdefinierten Domainnamens und eines Proxyservers zur Unterstützung des domänenbasierten Routing auf einer API. Wenn Sie beispielsweise einen VPC-Endpunkt (Virtual Private Cloud) in einem nicht routbaren Subnetz bereitstellen, kann Ihr Netzwerk das API Gateway nicht erreichen. Eine gängige Lösung besteht darin, einen benutzerdefinierten Domainnamen zu verwenden und dann die API in einem routingfähigen Subnetz bereitzustellen. Dies kann jedoch andere interne Websites beschädigen, wenn die Proxykonfiguration Traffic (`execute-api.{region}.vpce.amazonaws.com`) an AWS Direct Connect weiterleitet. Schließlich kann Ihnen dieses Muster dabei helfen, die organisatorischen Anforderungen für die Verwendung einer privaten API, die vom Internet aus nicht erreichbar ist, und eines benutzerdefinierten Domainnamens zu erfüllen.

## Voraussetzungen und Einschränkungen
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein Server Name Indication (SNI) -Zertifikat für Ihre Website und API
+ Eine Verbindung von einer lokalen Umgebung zu einem AWS-Konto, das mithilfe von AWS Direct Connect oder AWS Site-to-Site VPN eingerichtet wurde
+ Eine [private gehostete Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) mit einer entsprechenden Domain (z. B. domain.com), die von einem lokalen Netzwerk aus aufgelöst wird und DNS-Abfragen an Route 53 weiterleitet
+ Ein routbares privates Subnetz, das von einem lokalen Netzwerk aus erreichbar ist

**Einschränkungen**

Weitere Informationen zu Kontingenten (früher als Limits bezeichnet) für Load Balancer, Regeln und andere Ressourcen finden Sie unter [Kontingente für Ihre Application Load Balancers in der Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) Balancing-Dokumentation.

## Architektur
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-architecture"></a>

**Technologie-Stack**
+ Amazon API Gateway
+ Amazon Route 53
+ Application Load Balancer
+ AWS Certificate Manager
+ AWS PrivateLink

**Zielarchitektur**

Das folgende Diagramm zeigt, wie ein Application Load Balancer in einer VPC bereitgestellt wird, der Web-Traffic auf der Grundlage von Application Load Balancer Balancer-Listener-Regeln an eine Website-Zielgruppe oder API-Gateway-Zielgruppe weiterleitet. Die API Gateway-Zielgruppe ist eine Liste von IP-Adressen für den VPC-Endpunkt in API Gateway. API Gateway ist so konfiguriert, dass die API mit ihrer Ressourcenrichtlinie privat ist. Die Richtlinie lehnt alle Anrufe ab, die nicht von einem bestimmten VPC-Endpunkt stammen. Benutzerdefinierte Domainnamen im API-Gateway werden aktualisiert und verwenden nun api.domain.com für die API und ihre Phase. Application Load Balancer Balancer-Regeln werden hinzugefügt, um den Datenverkehr auf der Grundlage des Hostnamens weiterzuleiten.

![\[Architektur, die Application Load Balancer Balancer-Listener-Regeln verwendet, um den Web-Traffic zu leiten.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/83145062-4535-4ad0-8947-4ea8950cd174/images/12715186-26ea-4123-b9ef-e3105a934ff3.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein Benutzer aus einem lokalen Netzwerk versucht, auf eine interne Website zuzugreifen. Die Anfrage wird an ui.domain.com und api.domain.com gesendet. Anschließend wird die Anfrage an den internen Application Load Balancer des routbaren privaten Subnetzes weitergeleitet. Das SSL wird am Application Load Balancer für ui.domain.com und api.domain.com beendet.

1. Listener-Regeln, die auf dem Application Load Balancer konfiguriert sind, suchen nach dem Host-Header.

   a. Wenn der Host-Header api.domain.com lautet, wird die Anfrage an die API Gateway Gateway-Zielgruppe weitergeleitet. Der Application Load Balancer initiiert eine neue Verbindung zum API Gateway über Port 443.

   b. Wenn der Host-Header ui.domain.com lautet, wird die Anfrage an die Zielgruppe der Website weitergeleitet.

1. Wenn die Anfrage API Gateway erreicht, bestimmt die in API Gateway konfigurierte benutzerdefinierte Domänenzuordnung den Hostnamen und die auszuführende API.

**Automatisierung und Skalierung**

Die Schritte in diesem Muster können mithilfe von AWS CloudFormation oder dem AWS Cloud Development Kit (AWS CDK) automatisiert werden. Um die Zielgruppe der API-Gateway-Aufrufe zu konfigurieren, müssen Sie eine benutzerdefinierte Ressource verwenden, um die IP-Adresse des VPC-Endpunkts abzurufen. API-Aufrufe an die IP-Adressen [describe-vpc-endpoints](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-vpc-endpoints.html)und die Sicherheitsgruppe und geben diese [describe-network-interfaces](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-network-interfaces.html)zurück. Diese können verwendet werden, um die API-Zielgruppe von IP-Adressen zu erstellen.

## Tools
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-tools"></a>
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) ist ein hochverfügbarer und skalierbarer DNS-Web-Service.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung öffentlicher und privater SSL/TLS X.509-Zertifikate und -Schlüssel, die Ihre AWS-Websites und -Anwendungen schützen.
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) hilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren VPCs zu Services außerhalb der VPC herzustellen.

## Epen
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-epics"></a>

### Erstellen Sie ein SNI-Zertifikat
<a name="create-an-sni-certificate"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein SNI-Zertifikat und importieren Sie das Zertifikat in ACM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Netzwerkadministrator | 

### Stellen Sie einen VPC-Endpunkt in einem nicht routbaren privaten Subnetz bereit
<a name="deploy-a-vpc-endpoint-in-a-non-routable-private-subnet"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen VPC-Schnittstellen-Endpunkt in API Gateway. | Um einen VPC-Schnittstellen-Endpunkt zu erstellen, folgen Sie den Anweisungen unter [Zugreifen auf einen AWS-Service mithilfe eines Schnittstellen-VPC-Endpunkts](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) in der Dokumentation zu Amazon Virtual Private Cloud (Amazon VPC). | Cloud-Administrator | 

### Den Application Load Balancer konfigurieren
<a name="configure-the-application-load-balancer"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine Zielgruppe für Ihre Bewerbung. | [Erstellen Sie eine Zielgruppe](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) für die UI-Ressourcen Ihrer Anwendung. | Cloud-Administrator | 
| Erstellen Sie eine Zielgruppe für den API-Gateway-Endpunkt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie einen Application Load Balancer. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Cloud-Administrator | 
| Erstellen Sie Regeln für Zuhörer. | Erstellen Sie [Listener-Regeln](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules), um Folgendes zu tun:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Cloud-Administrator | 

### Route 53 konfigurieren
<a name="configure-route-53"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine private gehostete Zone. | [Erstellen Sie eine private gehostete Zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) für domain.com. | Cloud-Administrator | 
| Domaineinträge erstellen. | [Erstellen Sie CNAME-Einträge](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) für Folgendes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Cloud-Administrator | 

### Erstellen Sie einen privaten API-Endpunkt in API Gateway
<a name="create-a-private-api-endpoint-in-api-gateway"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen und konfigurieren Sie einen privaten API-Endpunkt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | App-Entwickler, Cloud-Administrator | 
| Erstellen Sie einen benutzerdefinierten Domainnamen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Cloud-Administrator | 

## Zugehörige Ressourcen
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-resources"></a>
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)

# Integrieren Sie visuelle Komponenten von Amazon Quick Sight mithilfe von Amazon Cognito und IaC-Automatisierung in Webanwendungen
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac"></a>

*Ishita Gupta, Saurabh Singh und Srishti Wadhwa, Amazon Web Services*

## Zusammenfassung
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-summary"></a>

Dieses Muster bietet einen speziellen Ansatz für die Einbettung der visuellen Komponenten von Amazon Quick Sight in React-Anwendungen, indem die Einbettung registrierter Benutzer mit optimierter Amazon Cognito Cognito-Authentifizierung verwendet wird. Diese Ressourcen werden dann über eine IaC-Vorlage (Infrastructure as Code) bereitgestellt. Im Gegensatz zur herkömmlichen Dashboard-Einbettung isoliert diese Lösung spezifische Diagramme und Grafiken für die direkte Integration in React-Anwendungen, wodurch sowohl die Leistung als auch die Benutzererfahrung erheblich verbessert werden.

Die Architektur sorgt für einen effizienten Authentifizierungsfluss zwischen der Amazon Cognito-Benutzerverwaltung und den Quick Sight-Berechtigungen: Benutzer authentifizieren sich über Amazon Cognito und greifen auf ihre autorisierten Visualisierungen auf der Grundlage der Dashboard-Freigaberegeln in Quick Sight zu. Dieser optimierte Ansatz macht den direkten Zugriff auf die Quick Sight-Konsole überflüssig und gewährleistet gleichzeitig robuste Sicherheitskontrollen.

Die gesamte Umgebung wird über eine einzige AWS CloudFormation Vorlage bereitgestellt, die alle erforderlichen Infrastrukturkomponenten bereitstellt, darunter:
+ Ein serverloses Backend, das ein Amazon AWS Lambda API Gateway verwendet
+ Sicheres Frontend-Hosting über Amazon CloudFront, Amazon Simple Storage Service (Amazon S3) und AWS WAF
+ Identitätsmanagement mithilfe von Amazon Cognito

Alle Komponenten werden gemäß den bewährten Sicherheitsmethoden mit IAM-Richtlinien AWS Identity and Access Management (Least-Privilege), AWS WAF Schutz und Verschlüsselung konfiguriert. end-to-end

Diese Lösung ist ideal für Entwicklungsteams und Unternehmen, die sichere, interaktive Analysen in ihre Anwendungen integrieren und gleichzeitig die genaue Kontrolle über den Benutzerzugriff behalten möchten. Die Lösung nutzt AWS verwaltete Dienste und Automatisierung, um den Einbettungsprozess zu vereinfachen, die Sicherheit zu erhöhen und Skalierbarkeit zu gewährleisten, um den sich ändernden Geschäftsanforderungen gerecht zu werden.

Zielgruppe und Anwendungsfälle:
+ **Frontend-Entwickler**, die Analysen in React-Apps einbetten möchten
+ **Software-as-a-Service (SaaS) -Produktteams**, die benutzerspezifische oder rollenbasierte Datenvisualisierungen anbieten möchten
+ **Lösungsarchitekten**, die an der Integration von Analysen in benutzerdefinierte Portale interessiert sind AWS 
+ **Entwickler von Business Intelligence (BI)**, die authentifizierten Benutzern Grafiken zur Verfügung stellen möchten, ohne vollen Zugriff auf das Dashboard zu benötigen
+ **Unternehmensteams**, die interaktive Quick Sight-Diagramme in interne Tools einbetten möchten

## Voraussetzungen und Einschränkungen
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-prereqs"></a>

**Voraussetzungen**

Um dieses Muster erfolgreich zu implementieren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
+ **Aktiv AWS-Konto** — Ein AWS-Konto mit Berechtigungen zum Bereitstellen von CloudFormation Stacks und zum Erstellen von Lambda-, API Gateway-, Amazon Cognito- und Amazon S3 CloudFront S3-Ressourcen.
+ **Amazon Quick Sight-Konto** — Ein aktives Quick Sight-Konto mit mindestens einem Dashboard, das Bildmaterial enthält. Anweisungen zur Einrichtung finden Sie unter [Tutorial: Erstellen Sie ein Amazon Quick Sight-Dashboard mithilfe von Beispieldaten](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html) in der Amazon Quick-Dokumentation.
+ **Eine Entwicklungsumgebung**, die aus folgenden Komponenten besteht:
  + Node.js (Version 16 oder höher)
  + npm oder yarn installiert
  + Vite als React-Build-Tool
  + React (Version 19.1.1)
+ **Teilen von Dashboards** — Dashboards müssen in Quick Sight geteilt werden und der Implementierer muss sich anmelden, um auf die eingebetteten Grafiken oder Dashboards zugreifen zu können.

**Einschränkungen**
+ Dieses Muster verwendet die Methode zur Einbettung registrierter Benutzer, was voraussetzt, dass Implementierer über ein aktives Quick Sight-Konto verfügen.
+ Der Zugriff ist auf die Dashboards und Grafiken beschränkt, die explizit mit dem authentifizierten Quick Sight-Benutzer geteilt werden, der dieses Muster implementiert. Wenn der Implementierer nicht über die richtigen Zugriffsrechte verfügt, schlägt die Generierung der Einbettungs-URL fehl und die Grafiken werden nicht geladen.
+ Der CloudFormation Stack muss in einem System bereitgestellt werden, in AWS-Region dem Quick Sight, API Gateway und Amazon Cognito unterstützt werden. Informationen zur Verfügbarkeit nach Regionen finden Sie unter [AWS-Services Nach Regionen.](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

**Versionen der Produkte**
+ Version 2.10.1 des [SDK zum Einbetten von Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk)
+ [React-Version 19.1.1](https://www.npmjs.com/package/react)
+ [Node.js](https://nodejs.org/en/download) Version 16 oder höher, um die Kompatibilität mit den neuesten in dieser Lösung verwendeten React- und Vite-Versionen sicherzustellen

## Architektur
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-architecture"></a>

**Zielarchitektur**

Das folgende Diagramm zeigt die Architektur und den Arbeitsablauf für dieses Muster.

![\[Architektur und Workflow für die Einbettung von Quick Sight-Grafiken in eine React-Anwendung.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/75ad12b1-caaa-4532-b709-8f3eaf3f9cc0/images/d0905f61-9055-49cf-887d-f46f5ca6c871.png)


In diesem Workflow:

1. **Der Benutzer greift auf die Anwendung zu**. Der Benutzer öffnet die React-Webanwendung mithilfe eines Browsers. Die Anfrage wird an eine CloudFront Distribution weitergeleitet, die als Netzwerk zur Bereitstellung von Inhalten für die Anwendung fungiert.

1. **AWS WAF filtert bösartige Anfragen**. ****Bevor die Anfrage eintrifft CloudFront, wird sie weitergeleitet AWS WAF. AWS WAF untersucht den Datenverkehr und blockiert alle böswilligen oder verdächtigen Anfragen auf der Grundlage von Sicherheitsregeln.

1. **Amazon S3 stellt statische Dateien bereit**. Wenn die Anfrage sauber ist, CloudFront ruft die statischen Frontend-Assets (HTML, JS, CSS) mithilfe von Origin Access Control (OAC) aus einem privaten S3-Bucket ab und übermittelt sie an den Browser.

1. **Der Benutzer meldet sich an**. Nachdem die Anwendung geladen wurde, meldet sich der Benutzer über Amazon Cognito an, das den Benutzer authentifiziert und ein sicheres JSON-Web-Token (JWT) für den autorisierten API-Zugriff zurückgibt.

1. **Die Anwendung stellt eine API-Anfrage**. Nach der Anmeldung ruft die React-Anwendung den `/get-embed-url` Endpunkt auf API Gateway sicher auf und übergibt das JWT-Token im Anforderungsheader zur Authentifizierung.

1. **Das Token ist validiert**. API Gateway validiert das Token mithilfe eines Amazon Cognito Cognito-Autorisierers. Wenn das Token gültig ist, wird die Anfrage fortgesetzt; andernfalls wird sie mit einer 401-Antwort (nicht autorisiert) abgelehnt.

1. **Die Anfrage wird zur Bearbeitung an Lambda weitergeleitet**. Die validierte Anfrage wird dann an eine Backend-Lambda-Funktion weitergeleitet. Diese Funktion ist für die Generierung der Einbettungs-URL für das angeforderte Quick Sight-Visual verantwortlich.

1. **Lambda generiert die Einbettungs-URL aus Quick Sight**. IAM verwendet eine IAM-Rolle mit den entsprechenden Berechtigungen, um die Quick `GenerateEmbedUrlForRegisteredUser` Sight-API aufzurufen und eine sichere, benutzerspezifische visuelle URL zu generieren.

1. **Lambda gibt die Einbettungs-URL an API Gateway zurück**. Lambda sendet die generierte Einbettungs-URL als Teil einer JSON-Antwort zurück an API Gateway. Diese Antwort wird dann für die Übermittlung an das Frontend vorbereitet.

1. **Die Einbettungs-URL wird an den Browser gesendet**. Die Einbettungs-URL wird als API-Antwort an den Browser zurückgegeben.

1. **Das Bild wird dem Benutzer angezeigt**. ****Die React-Anwendung empfängt die Antwort und verwendet das Quick Sight Embedding SDK, um das spezifische Bild für den Benutzer zu rendern.

**Automatisierung und Skalierung**

Backend- und Frontend-Bereitstellungen sind vollständig automatisiert durch die Verwendung CloudFormation, wodurch alle erforderlichen AWS Ressourcen bereitgestellt werden, einschließlich Amazon Cognito, Lambda, API Gateway, Amazon S3,, CloudFront AWS WAF, IAM-Rollen und Amazon in einer einzigen Bereitstellung. CloudWatch 

Diese Automatisierung gewährleistet eine konsistente und wiederholbare Infrastruktur in allen Umgebungen. Alle Komponenten werden automatisch skaliert: Lambda passt sich Funktionsaufrufen an, CloudFront stellt zwischengespeicherte Inhalte global bereit und API Gateway skaliert mit eingehenden Anfragen.

## Tools
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-tools"></a>

**AWS-Services**
+ [Amazon Quick Sight](https://aws.amazon.com/quicksuite/quicksight/) ist ein Cloud-nativer Business Intelligence-Service, mit dem Sie interaktive Dashboards und Grafiken erstellen, verwalten und einbetten können.
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/) verwaltet APIs diese Funktionen als Brücke zwischen der React-Anwendung und den Backend-Services.
+ [AWS Lambda](https://aws.amazon.com/lambda/)ist ein serverloser Rechendienst, den dieses Muster verwendet, um sichere Quick Sight-Einbettungen URLs dynamisch zu generieren, und der automatisch auf der Grundlage von Anfragen skaliert wird.
+ [Amazon Cognito](https://aws.amazon.com/cognito/) bietet Authentifizierung und Autorisierung für Benutzer und stellt sichere Token für den API-Zugriff aus.
+ [Amazon S3](https://aws.amazon.com/s3/) hostet statische Frontend-Ressourcen für dieses Muster und stellt sie sicher bereit. CloudFront
+ [Amazon CloudFront ](https://aws.amazon.com/cloudfront/getting-started/) stellt Frontend-Inhalte weltweit mit geringer Latenz bereit und integriert sie AWS WAF zur Filterung des Datenverkehrs.
+ [AWS WAF](https://aws.amazon.com/waf/)schützt die Webanwendung vor bösartigem Datenverkehr durch Anwendung von Sicherheitsregeln und Ratenbegrenzung.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)automatisiert die Bereitstellung und Konfiguration aller Anwendungsressourcen in einer einzigen Bereitstellung.
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) sammelt Protokolle und Metriken von Lambda, API Gateway und AWS WAF zur Überwachung und Fehlerbehebung.

**Tools für die Entwicklung**
+ [React JS](https://react.dev/) ist ein Frontend-Framework, das dieses Muster verwendet, um die Webanwendung zu erstellen und eingebettete Quick Sight-Grafiken zu integrieren.
+ [Vite](https://vite.dev/) ist ein Build-Tool, das für die schnelle Entwicklung und optimierte Produktions-Builds der React-Anwendung verwendet wird.
+ Das [Quick Sight Embedding SDK](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk/v/2.10.1) erleichtert das Einbetten von Quick Sight-Grafiken in die React-Anwendung und ermöglicht eine nahtlose Interaktion zwischen der Anwendung und den Grafiken.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [Amazon Quick Sight Visual Embedding in React-Repository](https://github.com/aws-samples/sample-quicksight-visual-embedding) verfügbar.

## Best Practices
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-best-practices"></a>

Dieses Muster implementiert automatisch die folgenden bewährten Sicherheitsmethoden:
+ Verwendet Amazon Cognito Cognito-Benutzerpools für die JWT-basierte Authentifizierung mit optionaler Multi-Faktor-Authentifizierung (MFA).
+ Schützt APIs mit Amazon Cognito Cognito-Autorisierern und setzt IAM-Richtlinien mit den geringsten Rechten für alle Services durch.
+ Implementiert die Einbettung registrierter Benutzer in Quick Sight und stellt Benutzern automatisch die Leserrolle zu.
+ Erzwingt eine Verschlüsselung bei der Übertragung, die TLS 1.2 und spätere Versionen über CloudFront HTTPS unterstützt.
+ Verschlüsselt Daten im Ruhezustand mithilfe von AES-256 für Amazon S3 mit Versionierung und OAC.
+ Konfiguriert API Gateway Gateway-Nutzungspläne mit Drosselung und Kontingenten.
+ Schützt Lambda mit reservierter Parallelität und Schutz vor Umgebungsvariablen.
+ Aktiviert die Protokollierung für Amazon S3 CloudFront, Lambda und API Gateway; überwacht Dienste mithilfe CloudWatch von.
+ Verschlüsselt Protokolle, wendet Zugriffskontrollen an und setzt Ablehnungsrichtlinien für Nicht-HTTPS-basierte oder unverschlüsselte Uploads durch.

Darüber hinaus empfehlen wir Folgendes:
+ Wird verwendet CloudFormation , um Bereitstellungen zu automatisieren und konsistente Konfigurationen in allen Umgebungen aufrechtzuerhalten.
+ Stellen Sie sicher, dass jeder Benutzer über die richtigen Quick Sight-Berechtigungen für den Zugriff auf eingebettete Grafiken verfügt.
+ Schützen Sie API Gateway Gateway-Endpunkte mit Amazon Cognito Cognito-Autorisierern und setzen Sie das Prinzip der geringsten Rechte für alle IAM-Rollen durch.
+ Speichern Sie vertrauliche Informationen wie Amazon Resource Names (ARNs) und IDs in Umgebungsvariablen, anstatt sie fest zu codieren.
+ Optimieren Sie Lambda-Funktionen, indem Sie Abhängigkeiten reduzieren und die Kaltstartleistung verbessern. Weitere Informationen finden Sie im AWS Blogbeitrag [Optimierung der Kaltstartleistung beim AWS Lambda Einsatz fortschrittlicher Priming-Strategien](https://aws.amazon.com/blogs/compute/optimizing-cold-start-performance-of-aws-lambda-using-advanced-priming-strategies-with-snapstart/) mit. SnapStart
+ Fügen Sie Ihre CloudFront Domain zur Quick Sight-Zulassungsliste hinzu, um eine sichere visuelle Einbettung zu ermöglichen.
+ Überwachen Sie Leistung und Sicherheit, indem Sie CloudWatch Protokollierung, Warnmeldungen und Datenverkehrsschutz verwenden. AWS WAF 

**Weitere empfohlene bewährte Methoden**
+ Verwenden Sie benutzerdefinierte Domains mit SSL-Zertifikaten von AWS Certificate Manager , um ein sicheres und markenspezifisches Benutzererlebnis zu bieten.
+ Verschlüsseln Sie Amazon S3 S3-Daten und CloudWatch -Protokolle mithilfe von vom Kunden verwalteten AWS Key Management Service (AWS KMS) Schlüsseln, um mehr Kontrolle über die Verschlüsselung zu haben.
+ Erweitern Sie die AWS WAF Regeln um Geoblocking, SQL-Injection (SQLi), Cross-Site Scripting (XSS) -Schutz und benutzerdefinierte Filter für eine verbesserte Bedrohungsabwehr.
+ Aktivieren Sie CloudWatch Alarme und sorgen Sie AWS CloudTrail für Überwachung AWS Config, Prüfung und Einhaltung von Konfigurationen in Echtzeit.
+ Wenden Sie detaillierte IAM-Richtlinien an, erzwingen Sie die Rotation von API-Schlüsseln und gewähren Sie kontoübergreifenden Zugriff nur dann, wenn dies unbedingt erforderlich ist.
+ Führen Sie regelmäßige Sicherheitsbewertungen durch, um die Einhaltung von Compliance-Rahmenbedingungen wie System and Organization Controls 2 (SOC 2), General Data Protection Regulation (GDPR) und Health Insurance Portability and Accountability Act (HIPAA) sicherzustellen.

## Epen
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-epics"></a>

### Bereite die Umgebung vor
<a name="prepare-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | Klonen Sie das GitHub Repository für diese Lösung auf Ihr lokales System und navigieren Sie zum Projektverzeichnis:<pre>git clone https://github.com/aws-samples/sample-quicksight-visual-embedding.git<br /><br />cd sample-quicksight-visual-embedding</pre>Dieses Repository enthält die CloudFormation Vorlage und den React-Quellcode, die für die Bereitstellung der Lösung erforderlich sind. | App-Developer | 

### Stellen Sie den CloudFormation Stack bereit
<a name="deploy-the-cfn-stack"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie die Vorlage bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) Weitere Informationen finden Sie in der CloudFormation Dokumentation unter [Stacks erstellen und verwalten](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html). | AWS-Administrator | 
| Überwachen Sie die Stack-Erstellung. | Überwachen Sie den Stack auf der Registerkarte **Ereignisse**, bis sein Status **CREATE\$1COMPLETE** lautet. | AWS-Administrator | 
| Rufen Sie die Stack-Ausgaben ab. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | AWS-Administrator | 

### Konfigurieren Sie die Frontend-Umgebung
<a name="configure-the-frontend-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Rufen Sie die visuellen Kennungen von Quick Sight ab. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Quick Sight-Administrator | 
| Konfigurieren Sie Ihre lokale React-Umgebung. | Um Ihre lokale React-Umgebung einzurichten und sie mit AWS Ressourcen zu verknüpfen, erstellen Sie eine `.env` Datei im `my-app/` Ordner Ihres lokalen GitHub Repositorys. Füllen Sie die Datei mit:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Hier ist eine `.env` Beispieldatei:<pre>VITE_AWS_REGION=us-east-1<br /><br /># Cognito Configuration (from CloudFormation outputs)<br />VITE_USER_POOL_ID=us-east-1_xxxxxxxxx VITE_USER_POOL_WEB_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx<br /><br /># API Configuration (from CloudFormation outputs)<br />VITE_API_URL=https:/your-api-id.execute-api.us-east-1.amazonaws.com/prod<br /><br /># QuickSight Visual Configuration<br />VITE_DASHBOARD_ID=your-dashboard-id <br />VITE_SHEET_ID=your-sheet-id <br />VITE_VISUAL_ID=your-visual-id</pre> | App-Developer | 

### Richten Sie die Benutzerauthentifizierung ein
<a name="set-up-user-authentication"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Benutzer in Cognito erstellen oder verwalten | Um authentifizierten Benutzerzugriff auf eingebettete Quick Sight-Grafiken zu ermöglichen, erstellen Sie zunächst Benutzer in Amazon Cognito:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | AWS-Administrator | 
| Bieten Sie Zugriff auf das Quick Sight Dashboard | Um Zugriff auf Quick Sight-Grafiken zu gewähren, gewähren Sie authentifizierten Benutzern Viewer-Zugriffsrechte:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Jeder Benutzer erhält eine E-Mail mit einem Link zum Dashboard. Sie können die Berechtigungen jederzeit über das Menü **Teilen** ändern.Weitere Informationen finden Sie in der [Amazon Quick-Dokumentation unter Gewähren einzelner Amazon Quick Sight-Benutzer und -Gruppen Zugriff auf ein Dashboard in Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/share-a-dashboard-grant-access-users.html). | Quick Sight-Administrator | 

### Erstellen und implementieren Sie das React-Frontend
<a name="build-and-deploy-the-react-frontend"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie Abhängigkeiten und erstellen Sie das Projekt. | Führen Sie im React-Anwendungsverzeichnis die folgenden Befehle aus, um optimierte Produktionsdateien zu generieren:<pre>cd my-app<br />npm install<br />npm run build</pre> | App-Developer | 
| Laden Sie die Build-Dateien auf Amazon S3 hoch. | Laden Sie alle Dateien aus dem `my-app/dist/` Verzeichnis in den S3-Bucket hoch, der von bereitgestellt wird CloudFormation (laden Sie nicht den Ordner selbst hoch). | App-Developer | 
| Erstellen Sie eine CloudFront Ungültigerklärung. | Erstellen Sie auf der [CloudFront Konsole](https://console.aws.amazon.com/cloudfront/v4/home) eine Invalidierung für den Pfad, um den zwischengespeicherten Inhalt `/*` nach der Bereitstellung zu aktualisieren. Anweisungen finden Sie in der Dokumentation unter [Dateien für ungültig erklären](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation_Requests.html). CloudFront  | AWS-Administrator | 

### Konfigurieren Sie die Quick Sight-Zulassungsliste
<a name="configure-the-qsight-allowlist"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fügen Sie die CloudFront Domain zur Quick Sight-Zulassungsliste hinzu. | So ermöglichen Sie es Ihrer CloudFront Domain, Quick Sight-Grafiken sicher einzubetten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Quick Sight-Administrator | 

### Greifen Sie auf die Anwendung zu und überprüfen Sie die Funktionalität
<a name="access-the-application-and-verify-functionality"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Öffnen Sie die React-Anwendung. | Verwenden Sie die **CloudFront Domain** (aus den CloudFormation Ausgaben), um die bereitgestellte React-Webanwendung in einem Browser zu öffnen. | Besitzer der App | 
| Verifizieren Sie die Authentifizierung. | Melden Sie sich mit Amazon Cognito Cognito-Anmeldeinformationen bei der Anwendung an, um den Authentifizierungsablauf und die JWT-Validierung über API Gateway zu überprüfen. | Besitzer der App | 
| Überprüfen Sie die eingebetteten Grafiken. | Stellen Sie sicher, dass die Quick Sight-Grafiken auf der Grundlage benutzerspezifischer Zugriffsberechtigungen ordnungsgemäß in der Anwendung geladen werden. | Besitzer der App | 
| Validieren Sie die API- und Lambda-Konnektivität. | Vergewissern Sie sich, dass die Anwendung die `/get-embed-url` API erfolgreich aufrufen und eine gültige Quick Sight-Einbettung URLs ohne Fehler abrufen kann. | Besitzer der App | 

### Überwachen und warten Sie die Anwendung
<a name="monitor-and-maintain-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Überwachen Sie mit CloudWatch. | Sie können AWS Observability-Tools verwenden, um die Anwendung zu überwachen und eine sichere, skalierbare Leistung in der Produktion aufrechtzuerhalten.Überprüfen Sie Lambda-Protokolle, API Gateway Gateway-Metriken und Amazon Cognito Cognito-Authentifizierungsereignisse CloudWatch , um den Zustand der Anwendung sicherzustellen und Anomalien zu erkennen. | AWS-Administrator | 
| Nachverfolgen AWS WAF und CloudFront protokollieren. | Untersuchen Sie die AWS WAF Protokolle auf blockierte oder verdächtige Anfragen und die CloudFront Zugriffsprotokolle auf Leistungs- und Caching-Metriken. | AWS-Administrator | 

## Fehlerbehebung
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Fehler „Domain nicht erlaubt“ | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Authentifizierungsfehler | Mögliche Ursachen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Lösungen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| API-Gateway-Fehler | Mögliche Ursachen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Lösungen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Die Grafiken von Quick Sight werden nicht geladen | Mögliche Ursachen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Lösungen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Fehler „Benutzer hat keinen Zugriff“ | Mögliche Ursachen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Lösung:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 

## Zugehörige Ressourcen
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-resources"></a>

** AWS Dokumentation**
+ [Melden Sie sich für ein Amazon Quick-Abonnement an](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html)
+ [Integrierte Analytik für Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/embedded-analytics.html)
+ [Quick Sight API-Referenz — GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)
+ [Amazon-Cognito-Benutzerpools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html)
+ [AWS Lambda Entwicklerhandbuch](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Amazon API Gateway Gateway-Entwicklerhandbuch](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html)
+ [Grundlegende Überwachung und detaillierte Überwachung in CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)
+ [AWS CloudFormation Benutzerhandbuch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [ CloudFront Amazon-Entwicklerhandbuch](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)
+ [AWS WAF Entwicklerhandbuch](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)

**Tutorials und Videos**
+ [Integrierte Analytik für Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html)
+ [ YouTube Anleitungen zu Amazon Quick Sight](https://www.youtube.com/results?search_query=amazon+quicksight+embedding)

# Entdecken Sie die Full-Stack-Entwicklung von cloudnativen Webanwendungen mit Green Boost
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost"></a>

*Ben Stickley und Amiin Samatar, Amazon Web Services*

## Zusammenfassung
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-summary"></a>

Als Reaktion auf die sich wandelnden Bedürfnisse von Entwicklern ist sich Amazon Web Services (AWS) der dringenden Nachfrage nach einem effizienten Ansatz für die Entwicklung cloudnativer Webanwendungen bewusst. Der Schwerpunkt von AWS liegt darauf, Sie bei der Überwindung häufiger Hindernisse im Zusammenhang mit der Bereitstellung von Web-Apps in der AWS-Cloud zu unterstützen. Durch die Nutzung der Funktionen moderner Technologien wie AWS Cloud Development Kit (AWS CDK) TypeScript, React und Node.js zielt dieses Muster darauf ab, den Entwicklungsprozess zu rationalisieren und zu beschleunigen.

Das Muster basiert auf dem Green Boost (GB) -Toolkit und bietet einen praktischen Leitfaden für die Erstellung von Webanwendungen, die die umfangreichen Funktionen von AWS in vollem Umfang nutzen. Es dient als umfassende Roadmap, die Sie durch den Prozess der Bereitstellung einer grundlegenden CRUD-Webanwendung (Create, Read, Update, Delete) führt, die in die Amazon Aurora PostgreSQL-Compatible Edition integriert ist. Dies wird durch die Verwendung der Green Boost-Befehlszeilenschnittstelle (Green Boost CLI) und die Einrichtung einer lokalen Entwicklungsumgebung erreicht.

Nach der erfolgreichen Bereitstellung der Anwendung befasst sich das Pattern mit den wichtigsten Komponenten der Web-App, einschließlich Infrastrukturdesign, Backend- und Frontend-Entwicklung sowie mit wichtigen Tools wie cdk-dia für die Visualisierung, die ein effizientes Projektmanagement ermöglichen.

## Voraussetzungen und Einschränkungen
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-prereqs"></a>

**Voraussetzungen**
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installiert
+ [Visual Studio Code (VS Code)](https://code.visualstudio.com/download) ist installiert
+ [AWS-Befehlszeilenschnittstelle (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installiert
+ Das [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) ist installiert
+ [Node.js 18](https://nodejs.org/en/download) installiert oder [Node.js 18 mit](https://pnpm.io/cli/env) aktiviertem pnpm
+ [pnpm](https://pnpm.io/installation) ist installiert, falls es nicht Teil Ihrer Node.js Installation ist
+ Grundkenntnisse in AWS CDK TypeScript, Node.js und React
+ Ein [aktives AWS-Konto](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html)
+ [Ein AWS-Konto, das mithilfe von AWS CDK in gestartet](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) wurde. `us-east-1` Die `us-east-1` AWS-Region**** ist für die Unterstützung der Amazon CloudFront Lambda @Edge -Funktionen erforderlich.
+ [AWS-Sicherheitsanmeldedaten`AWS_ACCESS_KEY_ID`, einschließlich korrekt konfigurierter Anmeldeinformationen](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) in Ihrer Terminalumgebung
+ Für Windows-Benutzer ein Terminal im Administratormodus (um der Art und Weise Rechnung zu tragen, wie pnpm mit Knotenmodulen umgeht)

**Produktversionen**
+ AWS-SDK für JavaScript Version 3
+ AWS CDK Version 2
+ AWS-CLI Version 2.2
+ Node.js, Version 18
+ React-Version 18

## Architektur
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon Aurora PostgreSQL-Compatible Edition
+ Amazon CloudFront
+ Amazon CloudWatch
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ AWS Lambda
+ AWS Secrets Manager
+ Amazon-Simple-Notification-Service (Amazon-SNS)
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS WAF

**Zielarchitektur**

Das folgende Diagramm zeigt, dass Benutzeranfragen Amazon CloudFront, AWS WAF und AWS Lambda durchlaufen, bevor sie mit einem S3-Bucket, einer Aurora-Datenbank, einer EC2 Instance interagieren und letztendlich Entwickler erreichen. Administratoren hingegen verwenden Amazon SNS und Amazon CloudWatch für Benachrichtigungen und Überwachungszwecke.

![\[Prozess zur Bereitstellung einer in Amazon Aurora PostgreSQL integrierten CRUD-Web-App mithilfe der Green Boost CLI.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/bacafc47-07c0-494b-8bbf-24bdc9b54f6a/images/129691e9-7fd3-4208-ab8c-05b9f40a5c4c.png)


Um nach der Bereitstellung einen tieferen Einblick in die Anwendung zu erhalten, können Sie ein Diagramm mithilfe von [cdk-dia](https://github.com/pistazie/cdk-dia) erstellen, wie im folgenden Beispiel gezeigt.

![\[Das erste Diagramm zeigt eine benutzerorientierte Ansicht; das CDK-Dia-Diagramm zeigt die Ansicht der technischen Infrastruktur.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/bacafc47-07c0-494b-8bbf-24bdc9b54f6a/images/5e4c3321-47bd-44e7-bf14-f470eed984c1.png)


Diese Diagramme zeigen die Architektur der Webanwendung aus zwei unterschiedlichen Blickwinkeln. Das cdk-dia-Diagramm bietet einen detaillierten technischen Überblick über die AWS-CDK-Infrastruktur und hebt bestimmte AWS-Services wie Amazon Aurora PostgreSQL-Compatible und AWS Lambda hervor. Im Gegensatz dazu nimmt das andere Diagramm eine breitere Perspektive ein und betont den logischen Datenfluss und die Benutzerinteraktionen. Der Hauptunterschied liegt im Detaillierungsgrad: Das cdk-dia befasst sich mit technischen Feinheiten, während das erste Diagramm eine eher benutzerorientierte Ansicht bietet.

Die Erstellung des cdk-dia-Diagramms wird im Epos *Verstehen der App-Infrastruktur mithilfe von AWS* CDK behandelt.

## Tools
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-tools"></a>

**AWS-Services**
+ [Amazon Aurora PostgreSQL-Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) ist eine vollständig verwaltete, ACID-konforme relationale Datenbank-Engine, die Sie bei der Einrichtung, dem Betrieb und der Skalierung von PostgreSQL-Bereitstellungen unterstützt.
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) beschleunigt die Verteilung Ihrer Webinhalte, indem es sie über ein weltweites Netzwerk von Rechenzentren bereitstellt, was die Latenz senkt und die Leistung verbessert.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) hilft Ihnen dabei, die Metriken Ihrer AWS-Ressourcen und der Anwendungen, die Sie auf AWS ausführen, in Echtzeit zu überwachen.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) bietet skalierbare Rechenkapazität in der AWS-Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) hilft Ihnen dabei, hartcodierte Anmeldeinformationen in Ihrem Code, einschließlich Passwörter, durch einen API-Aufruf an Secrets Manager zu ersetzen, um das Geheimnis programmgesteuert abzurufen.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) unterstützt Sie bei der Verwaltung Ihrer Anwendungen und Infrastruktur, die in der AWS-Cloud ausgeführt werden. Es vereinfacht das Anwendungs- und Ressourcenmanagement, verkürzt die Zeit für die Erkennung und Lösung betrieblicher Probleme und hilft Ihnen, Ihre AWS-Ressourcen sicher und skalierbar zu verwalten. Dieses Muster verwendet AWS Systems Manager Session Manager.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, mit dem Sie beliebige Datenmengen speichern, schützen und abrufen können. [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) ist eine Firewall für Webanwendungen, mit der Sie HTTP- und HTTPS-Anfragen überwachen können, die an Ihre geschützten Webanwendungsressourcen weitergeleitet werden.

**Andere Tools**
+ [Git](https://git-scm.com/docs) ist ein verteiltes Open-Source-Versionskontrollsystem.
+ [Green Boost](https://awslabs.github.io/green-boost/overview/intro) ist ein Toolkit für die Erstellung von Web-Apps auf AWS.
+ [Next.js](https://nextjs.org/docs) ist ein React-Framework zum Hinzufügen von Funktionen und Optimierungen.
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde.
+ [pgAdmin](https://www.pgadmin.org/) ist ein Open-Source-Verwaltungstool für PostgreSQL. Es bietet eine grafische Oberfläche, mit der Sie Datenbankobjekte erstellen, verwalten und verwenden können.
+ [pnpm](https://pnpm.io/motivation) ist ein Paketmanager für Node.js Projektabhängigkeiten.

## Best Practices
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-best-practices"></a>

Weitere Informationen zu den folgenden Empfehlungen finden Sie im Abschnitt [Epics](#explore-full-stack-cloud-native-web-application-development-with-green-boost-epics):
+ Überwachen Sie die Infrastruktur mithilfe von Amazon CloudWatch Dashboards und Alarmen.
+ Setzen Sie bewährte AWS-Verfahren durch, indem Sie cdk-nag verwenden, um statische Infrastructure-as-Code-Analysen (IaC) durchzuführen.
+ Richten Sie die DB-Portweiterleitung über SSH-Tunneling (Secure Shell) mit Systems Manager Session Manager ein. Dies ist sicherer als eine öffentlich zugängliche IP-Adresse.
+ Verwalten Sie Sicherheitslücken, indem Sie Folgendes ausführen: `pnpm audit`
+ Setzen Sie bewährte Verfahren durch [ESLint](https://eslint.org/), indem Sie statische TypeScript Codeanalysen durchführen, und [Prettier](https://prettier.io/) zur Standardisierung der Codeformatierung verwenden.

## Epen
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-epics"></a>

### Stellen Sie eine CRUD-Web-App mit Aurora PostgreSQL-kompatibel bereit
<a name="deploy-a-crud-web-app-with-aurora-postgresql-compatible"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie die Green Boost CLI. | Führen Sie den folgenden Befehl aus, um Green Boost CLI zu installieren.<pre>pnpm add -g gboost</pre> | App-Developer | 
| Erstellen Sie eine GB-App. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Installieren Sie Abhängigkeiten und stellen Sie die App bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Warten Sie, bis die Bereitstellung abgeschlossen ist (ca. 20 Minuten). Überwachen Sie die CloudFormation AWS-Stacks in der CloudFormation Konsole, während Sie warten. Beachten Sie, wie die im Code definierten Konstrukte der bereitgestellten Ressource zugeordnet sind. Sehen Sie sich die [CDK Construct-Strukturansicht](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html) in der CloudFormation Konsole an. | App-Developer | 
| Greifen Sie auf die App zu. | Nachdem Sie Ihre GB-App lokal bereitgestellt haben, können Sie über die CloudFront URL darauf zugreifen. Die URL wird in der Terminalausgabe gedruckt, aber es kann etwas überwältigend sein, sie zu finden. Gehen Sie wie folgt vor, um sie schneller zu finden:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Alternativ können Sie die CloudFront URL finden, indem Sie auf die CloudFront Amazon-Konsole zugreifen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Kopieren Sie den **Domainnamen**, der der Distribution zugeordnet ist. Es wird ähnlich aussehen wie`your-unique-id.cloudfront.net`. | App-Developer | 

### Überwachen Sie mithilfe von Amazon CloudWatch
<a name="monitor-by-using-amazon-cloudwatch"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Sehen Sie sich das CloudWatch Dashboard an. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Alarme aktivieren. | Ein CloudWatch Dashboard hilft Ihnen dabei, Ihre Web-App aktiv zu überwachen. Um Ihre Web-App passiv zu überwachen, können Sie Warnmeldungen aktivieren.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 

### Verstehen Sie die App-Infrastruktur mithilfe von AWS CDK
<a name="understand-the-app-infrastructure-by-using-aws-cdk"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Architekturdiagramm. | Generieren Sie mithilfe von [cdk-dia](https://github.com/pistazie/cdk-dia) ein Architekturdiagramm Ihrer Web-App. Die Visualisierung der Architektur trägt dazu bei, das Verständnis und die Kommunikation zwischen den Teammitgliedern zu verbessern. Es bietet einen klaren Überblick über die Komponenten des Systems und ihre Beziehungen.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Verwenden Sie cdk-nag, um bewährte Verfahren durchzusetzen. | Verwenden Sie [cdk-nag](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html), um eine sichere und regelkonforme Infrastruktur aufrechtzuerhalten, indem Sie bewährte Verfahren durchsetzen und so das Risiko von Sicherheitslücken und Fehlkonfigurationen verringern.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 

### Evaluieren Sie die Datenbankkonfiguration und das Schema
<a name="evaluate-the-database-configuration-and-schema"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erwerben Sie Umgebungsvariablen. | Gehen Sie wie folgt vor, um die erforderlichen Umgebungsvariablen abzurufen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Richten Sie die Portweiterleitung ein. | Gehen Sie wie folgt vor, um die Portweiterleitung einzurichten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Passen Sie das Timeout für den Systems Manager Session Manager an. | (Optional) Wenn das standardmäßige Sitzungstimeout von 20 Minuten zu kurz ist, können Sie es in der Systems Manager Manager-Konsole auf bis zu 60 Minuten erhöhen, indem Sie **Sitzungsmanager**, **Einstellungen**, **Bearbeiten**, **Timeout für Leerlaufsitzungen** wählen. | App-Developer | 
| Visualisieren Sie die Datenbank. | pgAdmin ist ein benutzerfreundliches Open-Source-Tool zur Verwaltung von PostgreSQL-Datenbanken. Es vereinfacht Datenbankaufgaben und ermöglicht es Ihnen, Datenbanken effizient zu erstellen, zu verwalten und zu optimieren. Dieser Abschnitt führt Sie durch die [Installation von pgAdmin](https://www.pgadmin.org/download/) und die Verwendung seiner Funktionen für die PostgreSQL-Datenbankverwaltung.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 

### Debuggen Sie mit Node.js
<a name="debug-with-node-js"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Debuggen Sie den Anwendungsfall „Objekt erstellen“. | Gehen Sie wie folgt vor, um den Anwendungsfall „Element erstellen“ zu debuggen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 

### Entwickeln Sie das Frontend
<a name="develop-the-frontend"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie den Entwicklungsserver ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 

### Tooling mit Green Boost
<a name="tooling-with-green-boost"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Richten Sie Monorepo und den pnpm-Paketmanager ein. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Führen Sie pnpm-Skripte aus. | Führen Sie die folgenden Befehle im Stammverzeichnis Ihres Repositorys aus:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Beachten Sie, wie diese Befehle in allen Arbeitsbereichen ausgeführt werden. Die Befehle sind in den Feldern der einzelnen Workspaces definiert. `package.json#scripts` | App-Developer | 
| Wird ESLint für die statische Codeanalyse verwendet. | Gehen Sie wie folgt vor ESLint, um die Fähigkeit zur statischen Codeanalyse von zu testen:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Verwalte Abhängigkeiten und Sicherheitslücken. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 
| Hooks mit Husky vor dem Commit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Diese Tools sind Mechanismen, die verhindern sollen, dass böser Code in Ihre Anwendung gelangt. | App-Developer | 

### Reißen Sie die Infrastruktur nieder
<a name="tear-down-the-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Entfernen Sie die Bereitstellung aus Ihrem Konto. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | App-Developer | 

## Fehlerbehebung
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Portweiterleitung konnte nicht eingerichtet werden | Stellen Sie sicher, dass Ihre AWS-Anmeldeinformationen ordnungsgemäß konfiguriert sind und über die erforderlichen Berechtigungen verfügen.Vergewissern Sie sich, dass die Umgebungsvariablen Bastion-Host-ID (`DB_BASTION_ID`) und Datenbank-Endpunkt (`DB_ENDPOINT`) korrekt gesetzt sind.Falls weiterhin Probleme auftreten, finden Sie in der AWS-Dokumentation Informationen zur [Fehlerbehebung bei SSH-Verbindungen und im Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html). | 
| Die Website wird nicht geladen `localhost:3000` | Vergewissern Sie sich, dass die Terminalausgabe eine erfolgreiche Portweiterleitung anzeigt, einschließlich der Weiterleitungsadresse.Stellen Sie sicher, dass es keine widersprüchlichen Prozesse gibt, die Port 3000 auf Ihrem lokalen Computer verwenden.Stellen Sie sicher, dass die Green Boost-Anwendung ordnungsgemäß konfiguriert ist und auf dem erwarteten Port (3000) ausgeführt wird.Überprüfen Sie Ihren Webbrowser auf Sicherheitserweiterungen oder Einstellungen, die lokale Verbindungen blockieren könnten. | 
| Fehlermeldungen bei der lokalen Bereitstellung (`pnpm deploy:local`) | Überprüfen Sie die Fehlermeldungen sorgfältig, um die Ursache des Problems zu ermitteln.Stellen Sie sicher, dass die erforderlichen Umgebungsvariablen und Konfigurationsdateien korrekt eingestellt sind. | 

## Zugehörige Ressourcen
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-resources"></a>
+ [AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Green Boost-Dokumentation](https://awslabs.github.io/green-boost/learn/m1-deploy-gb-app)
+ [Dokumentation zu Next.js](https://nextjs.org/docs)
+ [Dokumentation zu Node.js](https://nodejs.org/en/docs/)
+ [React-Dokumentation](https://reactjs.org/docs/getting-started.html)
+ [TypeScript Dokumentation](https://www.typescriptlang.org/docs/)

 

# Führen Sie Komponententests für eine Node.js -Anwendung mithilfe GitHub von AWS aus CodeBuild
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild"></a>

*Thomas Scott und Jean-Baptiste Guillois, Amazon Web Services*

## Zusammenfassung
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-summary"></a>

Dieses Muster enthält Beispielquellcode und wichtige Komponententestkomponenten für eine Spiele-API von Node.js. Es enthält auch Anweisungen zum Ausführen dieser Komponententests von einem GitHub Repository aus mithilfe von AWS CodeBuild als Teil Ihres CI/CD-Workflows (Continuous Integration and Continuous Delivery).

Unit-Tests sind ein Softwareentwicklungsprozess, bei dem verschiedene Teile einer Anwendung, sogenannte *Units*, einzeln und unabhängig voneinander auf ihren korrekten Betrieb getestet werden. Tests validieren die Qualität des Codes und bestätigen, dass er erwartungsgemäß funktioniert. Andere Entwickler können sich auch leicht mit Ihrer Codebasis vertraut machen, indem sie die Tests konsultieren. Unit-Tests reduzieren die future Refactoring-Zeit, helfen Ingenieuren dabei, sich schneller mit Ihrer Codebasis vertraut zu machen, und schaffen Vertrauen in das erwartete Verhalten.

Unit-Tests beinhalten das Testen einzelner Funktionen, einschließlich AWS Lambda Lambda-Funktionen. Um Unit-Tests zu erstellen, benötigen Sie ein Test-Framework und eine Methode zur Validierung von Tests (Assertions). Die Codebeispiele in diesem Muster verwenden das [Mocha-Testframework](https://mochajs.org/) und die [Chai-Assertionsbibliothek](https://www.chaijs.com/). 

Weitere Informationen zu Komponententests und Beispiele für Testkomponenten finden Sie im Abschnitt [Zusätzliche](#run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional) Informationen.

## Voraussetzungen und Einschränkungen
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-prereqs"></a>
+ Ein aktives AWS-Konto mit den richtigen CodeBuild Berechtigungen
+ Ein GitHub Konto (siehe [Anweisungen zur Registrierung](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account))
+ Git (siehe [Installationsanleitung](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))
+ Ein Code-Editor, in den Sie Änderungen vornehmen und Ihren Code hochladen können GitHub

## Architektur
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-architecture"></a>

Dieses Muster implementiert die Architektur, die im folgenden Diagramm dargestellt ist.

![\[AWS-Cloud-Architektur für die Ausführung von Komponententests mit CodeBuild und einem GitHub Repository\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e18428ce-9ecf-4204-9f1f-5a6683a720b2/images/4f4a3d1a-705a-45a6-b937-9212b188d226.png)


## Tools
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-tools"></a>

**Tools**
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) ist ein Versionskontrollsystem, das Sie für die Codeentwicklung verwenden können.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/) ist ein vollständig verwalteter Continuous Integration Service, der Quellcode kompiliert, Tests durchführt und Softwarepakete produziert, die sofort einsatzbereit sind. Mit CodeBuild müssen Sie Ihre eigenen Build-Server nicht bereitstellen, verwalten und skalieren. CodeBuild skaliert kontinuierlich und verarbeitet mehrere Builds gleichzeitig, sodass Ihre Builds nicht in einer Warteschlange warten müssen. Mit den vorkonfigurierten Build-Umgebungen gelingt der Einstieg leicht. Jedoch können Sie auch benutzerdefinierte Build-Umgebungen mit Ihren eigenen Entwicklungstools erstellen. Mit CodeBuild werden Ihnen die von Ihnen genutzten Rechenressourcen minutengenau berechnet.

**Code**

Der Quellcode für dieses Muster ist im Repository der [Beispielanwendung Game Unit Test](https://github.com/aws-samples/node-js-tests-sample) verfügbar. GitHub Sie können aus diesem Beispiel Ihr eigenes GitHub Repository erstellen (Option 1) oder das Beispiel-Repository direkt (Option 2) für dieses Muster verwenden. Folgen Sie den Anweisungen für jede Option im nächsten Abschnitt. Welche Option Sie wählen, hängt von Ihrem Anwendungsfall ab.

## Epen
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-epics"></a>

### Option 1 — Führen Sie Unit-Tests in Ihrem persönlichen GitHub Repository durch mit CodeBuild
<a name="option-1---run-unit-tests-on-your-personal-github-repository-with-codebuild"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Ihr eigenes GitHub Repository auf der Grundlage des Beispielprojekts. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Erstellen Sie ein neues CodeBuild Projekt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Starten Sie den Build. | Klicken Sie auf der Seite **Review (Überprüfen)** auf **Start build (Build starten)**, um den Build auszuführen. | App-Entwickler, AWS-Administrator, AWS DevOps | 

### Option 2 — Führen Sie Komponententests in einem öffentlichen Repository durch mit CodeBuild
<a name="option-2---run-unit-tests-on-a-public-repository-with-codebuild"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein neues CodeBuild Build-Projekt. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Starten Sie den Build. | Klicken Sie auf der Seite **Review (Überprüfen)** auf **Start build (Build starten)**, um den Build auszuführen. | App-Entwickler, AWS-Administrator, AWS DevOps | 

### Analysieren Sie die Komponententests
<a name="analyze-the-unit-tests"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Testergebnisse anzeigen. | Überprüfen Sie in der CodeBuild Konsole die Unit-Testergebnisse des CodeBuild Jobs. Sie sollten mit den Ergebnissen im Abschnitt [Zusätzliche Informationen](#run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional) übereinstimmen.Diese Ergebnisse validieren die GitHub Repository-Integration mit CodeBuild.  | App-Entwickler, AWS-Administrator, AWS DevOps | 
| Wenden Sie einen Webhook an. | Sie können jetzt einen Webhook anwenden, sodass Sie automatisch einen Build starten können, wenn Sie Codeänderungen in den Hauptzweig Ihres Repositorys übertragen. Anweisungen finden Sie in der [CodeBuild Dokumentation](https://docs.aws.amazon.com/codebuild/latest/userguide/github-webhook.html). | App-Entwickler, AWS-Administrator, AWS DevOps | 

## Zugehörige Ressourcen
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-resources"></a>
+ [Beispiel für eine Game-Unit-Testanwendung](https://github.com/aws-samples/node-js-tests-sample) (GitHub Repository mit Beispielcode)
+ [ CodeBuild AWS-Dokumentation](https://docs.aws.amazon.com/codebuild/)
+ [GitHub Webhook-Ereignisse](https://docs.aws.amazon.com/codebuild/latest/userguide/github-webhook.html) (CodeBuild Dokumentation)
+ [Ein neues Repository erstellen](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository) (GitHub Dokumentation)

## Zusätzliche Informationen
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional"></a>

**Ergebnisse des Komponententests**

In der CodeBuild Konsole sollten Sie die folgenden Testergebnisse sehen, nachdem das Projekt erfolgreich erstellt wurde. 

![\[Erwartete Ergebnisse des Komponententests\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/e18428ce-9ecf-4204-9f1f-5a6683a720b2/images/db861831-cfed-4e87-a498-0216606941f8.png)


**Beispiele für Komponententests**

In diesem Abschnitt werden die vier Arten von Testkomponenten beschrieben, die bei Unit-Tests verwendet werden: Assertions, Spies, Stubs und Mocks. Er enthält eine kurze Erklärung und ein Codebeispiel für jede Komponente. 

**Behauptungen**

Eine Behauptung wird verwendet, um ein erwartetes Ergebnis zu verifizieren. Dies ist eine wichtige Testkomponente, da sie die erwartete Antwort einer bestimmten Funktion validiert. Die folgende Beispiel-Assertion bestätigt, dass die zurückgegebene ID bei der Initialisierung eines neuen Spiels zwischen 0 und 1000 liegt.

```
const { expect }  = require('chai');
const { Game } = require('../src/index');

describe('Game Function Group', () => {
 it('Check that the Game ID is between 0 and 1000', function() {
      const game = new Game();
      expect(game.id).is.above(0).but.below(1000)
 });
});
```

**Spione**

Ein Spion wird verwendet, um zu beobachten, was passiert, wenn eine Funktion ausgeführt wird. Beispielsweise möchten Sie möglicherweise überprüfen, ob die Funktion korrekt aufgerufen wurde. Das folgende Beispiel zeigt, dass Start- und Stop-Methoden für ein **Game-Klassenobjekt** aufgerufen werden.

```
const { expect }  = require('chai');
const { spy } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () => {
   it('should verify that the correct function is called', () => {
      const spyStart = spy(Game.prototype, "start");
      const spyStop = spy(Game.prototype, "stop");
     
      const game = new Game();
      game.start();
      game.stop();
     
      expect(spyStart.called).to.be.true
      expect(spyStop.called).to.be.true
    });
});
```

**Stubs**

Ein Stub wird verwendet, um die Standardantwort einer Funktion zu überschreiben. Dies ist besonders nützlich, wenn die Funktion eine externe Anfrage stellt, da Sie vermeiden möchten, externe Anfragen aus Komponententests zu stellen. (Externe Anfragen eignen sich besser für Integrationstests, mit denen Anfragen zwischen verschiedenen Komponenten physisch getestet werden können.) Im folgenden Beispiel erzwingt ein Stub eine Rückgabe-ID von der **GetID-Funktion**.

```
const { expect }  = require('chai');
const {.stub } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () =>  {
   it('Check that the Game ID is between 0 and 1000', function() {
      let generateIdStub = stub(Game.prototype, 'getId').returns(999999);

      const game = new Game();

      expect(game.getId).is.equal(999999);

      generateIdStub.restore();
    });
});
```

**Verspottet**

Ein Mock ist eine gefälschte Methode mit einem vorprogrammierten Verhalten zum Testen verschiedener Szenarien. Ein Mock kann als erweiterte Form eines Stubs betrachtet werden und kann mehrere Aufgaben gleichzeitig ausführen. Im folgenden Beispiel wird ein Mock verwendet, um drei Szenarien zu validieren:
+ Die Funktion wird aufgerufen 
+ Die Funktion wird mit Argumenten aufgerufen
+ Die Funktion gibt die Ganzzahl 9 zurück

```
const { expect }  = require('chai');
const {.mock } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () =>  {
   it('Check that the Game ID is between 0 and 1000', function() {
      let mock = mock(Game.prototype).expects('getId').withArgs().returns(9);

      const game = new Game();
      const id = get.getId();

      mock.verify();
      expect(id).is.equal(9);
    });
});
```

# Strukturieren Sie ein Python-Projekt in hexagonaler Architektur mit AWS Lambda
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda"></a>

*Furkan Oruc, Dominik Goby, Darius Kunce und Michal Ploski, Amazon Web Services*

## Zusammenfassung
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-summary"></a>

Dieses Muster zeigt, wie ein Python-Projekt in hexagonaler Architektur mithilfe von AWS Lambda strukturiert wird. Das Muster verwendet das AWS Cloud Development Kit (AWS CDK) als Infrastructure-as-Code-Tool (IaC), Amazon API Gateway als REST-API und Amazon DynamoDB als Persistenzschicht. Die hexagonale Architektur folgt domänengesteuerten Designprinzipien. In der hexagonalen Architektur besteht Software aus drei Komponenten: Domäne, Ports und Adaptern. *Ausführliche Informationen zu hexagonalen Architekturen und ihren Vorteilen finden Sie im Leitfaden [Aufbau sechseckiger](https://docs.aws.amazon.com/prescriptive-guidance/latest/hexagonal-architectures/) Architekturen auf AWS.*

## Voraussetzungen und Einschränkungen
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Erfahrung in Python
+ Vertrautheit mit AWS Lambda, AWS CDK, Amazon API Gateway und DynamoDB
+ [Ein GitHub Konto (siehe Anweisungen zur Registrierung)](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account)
+ Git (siehe [Installationsanleitung](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))
+ Ein Code-Editor, mit dem Sie Änderungen vornehmen und Ihren Code übertragen können GitHub (z. B. [Visual Studio Code](https://code.visualstudio.com/) oder [JetBrains PyCharm](https://www.jetbrains.com/pycharm/))
+ Docker ist installiert und der Docker-Daemon ist betriebsbereit

**Produktversionen**
+ Git Version 2.24.3 oder höher
+ Python-Version 3.7 oder höher
+ AWS CDK v2
+ Poetry Version 1.1.13 oder höher
+ AWS Lambda Powertools für Python Version 1.25.6 oder höher
+ pytest Version 7.1.1 oder höher
+ Moto-Version 3.1.9 oder höher
+ pydantic Version 1.9.0 oder höher
+ Boto3 Version 1.22.4 oder höher
+ mypy-boto3-dynamodb Version 1.24.0 oder höher

## Architektur
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-architecture"></a>

**Zieltechnologie-Stack**

Der Zieltechnologie-Stack besteht aus einem Python-Dienst, der API Gateway, Lambda und DynamoDB verwendet. Der Dienst verwendet einen DynamoDB-Adapter, um Daten zu speichern. Es bietet eine Funktion, die Lambda als Einstiegspunkt verwendet. Der Service verwendet Amazon API Gateway, um eine REST-API verfügbar zu machen. Die API verwendet AWS Identity and Access Management (IAM) für die [Authentifizierung von Clients](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html).

**Zielarchitektur**

Zur Veranschaulichung der Implementierung wird in diesem Muster eine serverlose Zielarchitektur bereitgestellt. Clients können Anfragen an einen API-Gateway-Endpunkt senden. API Gateway leitet die Anfrage an die Lambda-Zielfunktion weiter, die das hexagonale Architekturmuster implementiert. Die Lambda-Funktion führt Erstellungs-, Lese-, Aktualisierungs- und Löschvorgänge (CRUD) in einer DynamoDB-Tabelle durch.


| 
| 
| Dieses Muster wurde in einer PoC-Umgebung getestet. Bevor Sie eine Architektur in einer Produktionsumgebung einsetzen, müssen Sie eine Sicherheitsüberprüfung durchführen, um das Bedrohungsmodell zu identifizieren und eine sichere Codebasis zu erstellen.  | 
| --- |

![\[Zielarchitektur für die Strukturierung eines Python-Projekts in hexagonaler Architektur\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/25bd7169-ea5e-4a21-a865-c91c30a3c0da/images/de0d4f0d-ad19-43ec-bd10-676b25477b64.png)


Die API unterstützt fünf Operationen an einer Produktentität:
+ `GET /products`gibt alle Produkte zurück. 
+ `POST /products`erstellt ein neues Produkt. 
+ `GET /products/{id}`gibt ein bestimmtes Produkt zurück.
+ `PUT /products/{id}`aktualisiert ein bestimmtes Produkt. 
+ `DELETE /products/{id}`löscht ein bestimmtes Produkt.

Sie können die folgende Ordnerstruktur verwenden, um Ihr Projekt so zu organisieren, dass es dem hexagonalen Architekturmuster folgt:  

```
app/  # application code
|--- adapters/  # implementation of the ports defined in the domain
     |--- tests/  # adapter unit tests
|--- entrypoints/  # primary adapters, entry points
     |--- api/  # api entry point
          |--- model/  # api model
          |--- tests/  # end to end api tests
|--- domain/  # domain to implement business logic using hexagonal architecture
     |--- command_handlers/  # handlers used to execute commands on the domain
     |--- commands/  # commands on the domain
     |--- events/  # events triggered via the domain
     |--- exceptions/  # exceptions defined on the domain
     |--- model/  # domain model
     |--- ports/  # abstractions used for external communication
     |--- tests/  # domain tests
|--- libraries/  # List of 3rd party libraries used by the Lambda function
infra/  # infrastructure code
simple-crud-app.py  # AWS CDK v2 app
```

## Tools
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-tools"></a>

**AWS-Services**
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/) ist ein vollständig verwalteter Service, der Entwicklern die Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung APIs in jeder Größenordnung erleichtert.
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) ist eine vollständig verwaltete, serverlose NoSQL-Datenbank mit Schlüsselwerten, die für die Ausführung von Hochleistungsanwendungen in jeder Größenordnung konzipiert ist.
+ [AWS Lambda](https://aws.amazon.com/lambda/) ist ein serverloser, ereignisgesteuerter Rechenservice, mit dem Sie Code für praktisch jede Art von Anwendung oder Backend-Service ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Sie können Lambda-Funktionen von über 200 AWS-Services und SaaS-Anwendungen (Software as a Service) aus starten und zahlen nur für das, was Sie tatsächlich nutzen.

**Tools**
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) wird in diesem Muster als Versionskontrollsystem für die Codeentwicklung verwendet.
+ [Python](https://www.python.org/) wird als Programmiersprache für dieses Muster verwendet. Python bietet Datenstrukturen auf hoher Ebene und einen Ansatz für objektorientierte Programmierung. AWS Lambda bietet eine integrierte Python-Laufzeit, die den Betrieb von Python-Services vereinfacht.
+ [Visual Studio Code](https://code.visualstudio.com/) wird als IDE für die Entwicklung und das Testen dieses Musters verwendet. Sie können jede IDE verwenden, die die Python-Entwicklung unterstützt (z. B. [PyCharm](https://www.jetbrains.com/pycharm/)).
+ Das [AWS Cloud Development Kit (AWS CDK](https://aws.amazon.com/cdk/)) ist ein Open-Source-Framework für die Softwareentwicklung, mit dem Sie Ihre Cloud-Anwendungsressourcen mithilfe vertrauter Programmiersprachen definieren können. Dieses Muster verwendet das CDK, um die Cloud-Infrastruktur als Code zu schreiben und bereitzustellen.
+ [Poesie](https://python-poetry.org/) wird verwendet, um Abhängigkeiten im Muster zu verwalten.
+ [Docker](https://www.docker.com/) wird vom AWS CDK verwendet, um das Lambda-Paket und die Lambda-Layer zu erstellen.

**Code**

Der Code für dieses Muster ist im Beispiel-Repository für die [hexagonale Architektur von GitHub Lambda](https://github.com/aws-samples/lambda-hexagonal-architecture-sample) verfügbar.

## Best Practices
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-best-practices"></a>

Um dieses Muster in einer Produktionsumgebung zu verwenden, folgen Sie diesen bewährten Methoden:
+ Verwenden Sie vom Kunden verwaltete Schlüssel in AWS Key Management Service (AWS KMS), um [ CloudWatch Amazon-Protokollgruppen und Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) [DynamoDB-Tabellen](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html) zu verschlüsseln.
+ Konfigurieren Sie [AWS WAF für Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html) so, dass der Zugriff nur über das Netzwerk Ihres Unternehmens möglich ist.
+ Ziehen Sie andere Optionen für die API Gateway Gateway-Autorisierung in Betracht, wenn IAM Ihre Anforderungen nicht erfüllt. Sie können beispielsweise [Amazon Cognito Cognito-Benutzerpools](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) oder [API Gateway Lambda-Autorisierer](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) verwenden.
+ Verwenden Sie [DynamoDB-Backups](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html).
+ Konfigurieren Sie Lambda-Funktionen mit einer [Virtual Private Cloud (VPC) -Bereitstellung](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html), um den Netzwerkverkehr in der Cloud zu halten.
+ Aktualisieren Sie die zulässige Ausgangskonfiguration für [Cross-Origin Resource Sharing (CORS) -Preflight](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS), um den Zugriff nur auf die anfragende Ursprungsdomäne zu beschränken.
+ Verwenden Sie [cdk-nag](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html), um den AWS-CDK-Code auf bewährte Sicherheitsmethoden zu überprüfen.
+ Erwägen Sie die Verwendung von Tools zum Scannen von Code, um häufig auftretende Sicherheitsprobleme im Code zu finden. [Bandit](https://bandit.readthedocs.io/en/latest/) ist beispielsweise ein Tool, das entwickelt wurde, um häufig auftretende Sicherheitsprobleme im Python-Code zu finden. [PIP-Audit](https://pypi.org/project/pip-audit/) durchsucht Python-Umgebungen nach Paketen, die bekannte Sicherheitslücken aufweisen.

Dieses Muster verwendet [AWS X-Ray](https://aws.amazon.com/xray/?nc1=h_ls), um Anfragen über den Einstiegspunkt, die Domäne und die Adapter der Anwendung zu verfolgen. AWS X-Ray hilft Entwicklern dabei, Engpässe zu identifizieren und hohe Latenzen zu ermitteln, um die Anwendungsleistung zu verbessern.

## Epen
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-epics"></a>

### Initialisieren Sie das Projekt
<a name="initialize-the-project"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Ihr eigenes Repository. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Installieren Sie die Abhängigkeiten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Konfigurieren Sie Ihre IDE. | Wir empfehlen Visual Studio Code, aber Sie können jede IDE Ihrer Wahl verwenden, die Python unterstützt. Die folgenden Schritte beziehen sich auf Visual Studio Code.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Führen Sie Komponententests aus, Option 1: Verwenden Sie Visual Studio Code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Führen Sie Komponententests aus, Option 2: Verwenden Sie Shell-Befehle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 

### Stellen Sie die Anwendung bereit und testen Sie sie
<a name="deploy-and-test-the-application"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Fordern Sie temporäre Anmeldeinformationen an. | Um bei der Ausführung AWS-Anmeldeinformationen auf der Shell zu haben`cdk deploy`, erstellen Sie mithilfe von AWS IAM Identity Center (Nachfolger von AWS Single Sign-On) temporäre Anmeldeinformationen. Anweisungen finden Sie im Blogbeitrag [So rufen Sie kurzfristige Anmeldeinformationen für die CLI-Verwendung mit AWS IAM Identity Center](https://aws.amazon.com/blogs/security/aws-single-sign-on-now-enables-command-line-interface-access-for-aws-accounts-using-corporate-credentials/) ab. | App-Entwickler, AWS DevOps | 
| Stellen Sie die Anwendung bereit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Entwickler, AWS DevOps | 
| Testen Sie die API, Option 1: Verwenden Sie die Konsole. | Verwenden Sie die [API Gateway Gateway-Konsole](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html), um die API zu testen. Weitere Informationen zu API-Vorgängen und request/response -Meldungen finden Sie im [Abschnitt API-Nutzung der Readme-Datei](https://github.com/aws-samples/lambda-hexagonal-architecture-sample/blob/main/README.md#api-usage) im GitHub Repository. | App-Entwickler, AWS DevOps | 
| Testen Sie die API, Option 2: Verwenden Sie Postman. | Wenn Sie ein Tool wie [Postman](https://www.postman.com/) verwenden möchten:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Entwickler, AWS DevOps | 

### Entwickeln Sie den Service
<a name="develop-the-service"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Schreiben Sie Komponententests für den Geschäftsbereich. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Implementieren Sie Befehle und Befehlshandler. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Schreiben Sie Integrationstests für sekundäre Adapter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Implementieren Sie sekundäre Adapter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Schreiben Sie end-to-end Tests. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 
| Implementieren Sie Primäradapter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | App-Developer | 

## Zugehörige Ressourcen
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-resources"></a>

**APG-Leitfaden**
+ [Aufbau sechseckiger Architekturen auf AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/hexagonal-architectures/)

**AWS-Referenzen**
+ [AWS Lambda Lambda-Dokumentation](https://docs.aws.amazon.com/lambda/)
+ [AWS-CDK-Dokumentation](https://docs.aws.amazon.com/cdk/)
  + [Ihre erste AWS CDK-App](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [API Gateway Gateway-Dokumentation](https://docs.aws.amazon.com/apigateway/)
  + [Steuern Sie den Zugriff auf eine API mit IAM-Berechtigungen](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html)
  + [Verwenden Sie die API Gateway Gateway-Konsole, um eine REST-API-Methode zu testen](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html)
+ [Amazon DynamoDB DynamoDB-Dokumentation](https://docs.aws.amazon.com/dynamodb/)

**Tools**
+ [Webseite git-scm.com](https://git-scm.com/)
+ [Git installieren](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+ [Ein neues GitHub Repository erstellen](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository)
+ [Python-Webseite](https://www.python.org/)
+ [AWS Lambda Powertools für Python](https://docs.powertools.aws.dev/lambda/python/latest/)
+ [Postman-Webseite](https://www.postman.com/)
+ [Python-Mock-Objektbibliothek](https://docs.python.org/3/library/unittest.mock.html)
+ [Poesie-Website](https://python-poetry.org/)

**IDEs**
+ [Visual Studio Code-Webseite](https://code.visualstudio.com/)
+ [PyCharm website](https://www.jetbrains.com/pycharm/)

# Mehr Muster
<a name="websitesandwebapps-more-patterns-pattern-list"></a>

**Topics**
+ [Greifen Sie privat auf Container-Anwendungen auf Amazon ECS zu, indem Sie AWS Fargate PrivateLink, AWS und einen Network Load Balancer verwenden](access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.md)
+ [Greifen Sie mithilfe von AWS PrivateLink und einem Network Load Balancer privat auf Container-Anwendungen auf Amazon ECS zu](access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Verknüpfen Sie ein AWS CodeCommit Repository in einem AWS-Konto mit Amazon SageMaker AI Studio Classic in einem anderen Konto](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Automatisieren Sie das Löschen von AWS CloudFormation Stacks und zugehörigen Ressourcen](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Beschränken Sie den Zugriff basierend auf IP-Adresse oder Geolokalisierung mithilfe von AWS WAF](aws-waf-restrict-access-geolocation.md)
+ [Erstellen Sie mithilfe von AWS Amplify eine serverlose mobile React Native-App](build-a-serverless-react-native-mobile-app-by-using-aws-amplify.md)
+ [Erstellen und testen Sie iOS-Apps mit AWS CodeCommit CodePipeline, AWS und AWS Device Farm](build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm.md)
+ [Konfigurieren Sie die Protokollierung für .NET-Anwendungen in Amazon CloudWatch Logs mithilfe von NLog](configure-logging-for-net-applications-in-amazon-cloudwatch-logs-by-using-nlog.md)
+ [Konsolidieren Sie die vorsignierte URL-Generierung und das Herunterladen von Objekten in Amazon S3 mithilfe eines Endpunkts, der statischen IP-Adressen zugeordnet ist](consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.md)
+ [Erstellen Sie eine Amazon ECS-Aufgabendefinition und mounten Sie mithilfe von Amazon EFS ein Dateisystem auf EC2 Instances](create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.md)
+ [Stellen Sie eine GRPC-basierte Anwendung auf einem Amazon EKS-Cluster bereit und greifen Sie mit einem Application Load Balancer darauf zu](deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.md)
+ [Stellen Sie eine ChatOps Lösung zur Verwaltung von SAST-Scanergebnissen bereit, indem Sie Amazon Q Developer in Chat-Anwendungen verwenden, benutzerdefinierte Aktionen und CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Stellen Sie CloudWatch Synthetics Canaries mithilfe von Terraform bereit](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Bereitstellen von Java-Microservices auf Amazon ECS mithilfe von AWS Fargate](deploy-java-microservices-on-amazon-ecs-using-aws-fargate.md)
+ [Stellen Sie mithilfe AWS von Terraform und Amazon Bedrock einen RAG-Anwendungsfall bereit](deploy-rag-use-case-on-aws.md)
+ [Bereitstellen von Ressourcen in einer AWS Wavelength Zone mithilfe von Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Implementieren Sie die pfadbasierte API-Versionierung mithilfe benutzerdefinierter Domains in Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Migrieren Sie eine Messaging-Warteschlange von Microsoft Azure Service Bus zu Amazon SQS](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [Migrieren Sie eine.NET-Anwendung von Microsoft Azure App Service zu AWS Elastic Beanstalk](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [Migrieren Sie eine lokale Go-Webanwendung mithilfe der binären Methode zu AWS Elastic Beanstalk](migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.md)
+ [Migrieren Sie einen lokalen SFTP-Server auf AWS AWS Transfer for SFTP](migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp.md)
+ [Migrieren Sie von IBM WebSphere Application Server zu Apache Tomcat auf Amazon EC2](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)
+ [Migrieren Sie EC2 mit Auto Scaling von IBM WebSphere Application Server zu Apache Tomcat auf Amazon](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [Migrieren Sie lokale Java-Anwendungen mithilfe von AWS App2Container zu AWS](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [Migrieren Sie Windows-SSL-Zertifikate mithilfe von ACM zu einem Application Load Balancer](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [Modernisieren Sie ASP.NET Web Forms-Anwendungen auf AWS](modernize-asp-net-web-forms-applications-on-aws.md)
+ [Überwachen Sie die Anwendungsaktivität mithilfe von CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Führen Sie einen ASP.NET Core-Web-API-Docker-Container auf einer Amazon EC2 Linux-Instance aus](run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.md)
+ [Senden Sie benutzerdefinierte Attribute an Amazon Cognito und fügen Sie sie in Token ein](send-custom-attributes-cognito.md)
+ [Statische Inhalte in einem Amazon S3 S3-Bucket über eine VPC mithilfe von Amazon bereitstellen CloudFront](serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.md)
+ [Richten Sie eine hochverfügbare PeopleSoft Architektur auf AWS ein](set-up-a-highly-available-peoplesoft-architecture-on-aws.md)
+ [Optimieren Sie die Entwicklung und Bereitstellung von Amazon Lex Lex-Bot mithilfe eines automatisierten Workflows](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Fehlerbehebung bei Zuständen mithilfe AWS Step Functions von Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)
+ [Verwenden Sie die Network Firewall, um die DNS-Domänennamen aus der Servernamenanzeige für ausgehenden Datenverkehr zu erfassen](use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.md)
+ [Visualisieren Sie AI/ML Modellergebnisse mit Flask und AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)