

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.

# 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)